diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..2ff037e135462bc1690f9eb990fa2bfcced4a46d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 filter=lfs diff=lfs merge=lfs -text +src/.gradio/cached_examples/9/Output/3e1643b3cd3925885fe5/balette.mp4 filter=lfs diff=lfs merge=lfs -text +src/.gradio/flagged/output/f270170a4a91ac730c49/balette.mp4 filter=lfs diff=lfs merge=lfs -text +src/.gradio/flagged/x/949d27b917ca4cf29777/balette.mp4 filter=lfs diff=lfs merge=lfs -text +src/.gradio/flagged/x/97ecfa403560d9ee017f/world.mp4 filter=lfs diff=lfs merge=lfs -text +src/demo/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 filter=lfs diff=lfs merge=lfs -text +src/files/balette.mp4 filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5dd75ecdbb6f74962bbede3376d2f1182679ec19 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.eggs/ +dist/ +*.pyc +__pycache__/ +*.py[cod] +*$py.class +__tmp/* +*.pyi +.mypycache +.ruff_cache +node_modules +backend/**/templates/ \ No newline at end of file diff --git a/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 b/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/.gradio/cached_examples/9/log.csv b/.gradio/cached_examples/9/log.csv new file mode 100644 index 0000000000000000000000000000000000000000..1c4d913937bb478d953dbf50536792c532dbb0cd --- /dev/null +++ b/.gradio/cached_examples/9/log.csv @@ -0,0 +1,2 @@ +Output,timestamp +"{""video"": {""path"": "".gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4"", ""url"": ""/gradio_api/file=/private/var/folders/wz/v3427jc170563frpfjc2z0240000gn/T/gradio/d1815483c8302d65adbf0fcd64bf7a30390181dc1a4a8175ce9b53bd3aa91971/balette.mp4"", ""size"": null, ""orig_name"": ""balette.mp4"", ""mime_type"": null, ""is_stream"": false, ""meta"": {""_type"": ""gradio.FileData""}}, ""json_data"": ""{\""video_info\"": {\""fps\"": 60, \""duration_seconds\"": 3.1166666666666667, \""width\"": 1280, \""height\"": 688, \""frame_count\"": 187}, \""fps\"": 60, \""frames\"": [{\""timestamp\"": 0, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0, \""acceleration\"": 0, \""fluidity\"": 0, \""expansion\"": 0.142, \""total_displacement\"": 0}}, {\""timestamp\"": 0.016666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""left\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 1.051, \""acceleration\"": 63.0628, \""fluidity\"": 0, \""expansion\"": 0.15, \""total_displacement\"": 0.0175, \""center_displacement\"": {\""x\"": -0.0175, \""y\"": 0.0004}}}, {\""timestamp\"": 0.03333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0654, \""acceleration\"": 59.1406, \""fluidity\"": 0, \""expansion\"": 0.149, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0011, \""y\"": -0.0002}}}, {\""timestamp\"": 0.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2949, \""acceleration\"": 30.5825, \""fluidity\"": 0.092, \""expansion\"": 0.15, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.001, \""y\"": -0.0002}}}, {\""timestamp\"": 0.06666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.36, \""acceleration\"": 38.7168, \""fluidity\"": 0.023, \""expansion\"": 0.149, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0002}}}, {\""timestamp\"": 0.08333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2096, \""acceleration\"": 33.4529, \""fluidity\"": 0.029, \""expansion\"": 0.151, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": 0.0017, \""y\"": -0.0011}}}, {\""timestamp\"": 0.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2213, \""acceleration\"": 27.1474, \""fluidity\"": 0.036, \""expansion\"": 0.152, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": -0.0003}}}, {\""timestamp\"": 0.11666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.2033, \""acceleration\"": 24.8517, \""fluidity\"": 0.16, \""expansion\"": 0.155, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0004}}}, {\""timestamp\"": 0.13333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1729, \""acceleration\"": 21.8885, \""fluidity\"": 0.056, \""expansion\"": 0.156, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": -0.0009, \""y\"": 0.0001}}}, {\""timestamp\"": 0.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1527, \""acceleration\"": 19.1312, \""fluidity\"": 0.063, \""expansion\"": 0.156, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.16666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1571, \""acceleration\"": 17.7603, \""fluidity\"": 0.07, \""expansion\"": 0.159, \""total_displacement\"": 0.0017, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0017}}}, {\""timestamp\"": 0.18333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1276, \""acceleration\"": 15.7758, \""fluidity\"": 0.047, \""expansion\"": 0.16, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0003}}}, {\""timestamp\"": 0.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1568, \""acceleration\"": 15.6038, \""fluidity\"": 0.045, \""expansion\"": 0.171, \""total_displacement\"": 0.0032, \""center_displacement\"": {\""x\"": -0.0032, \""y\"": -0.0001}}}, {\""timestamp\"": 0.21666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1198, \""acceleration\"": 14.5715, \""fluidity\"": 0.041, \""expansion\"": 0.173, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0005}}}, {\""timestamp\"": 0.23333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1172, \""acceleration\"": 11.8933, \""fluidity\"": 0.033, \""expansion\"": 0.173, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0007, \""y\"": 0.0008}}}, {\""timestamp\"": 0.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1102, \""acceleration\"": 10.778, \""fluidity\"": 0.03, \""expansion\"": 0.172, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": -0.0008, \""y\"": 0.0002}}}, {\""timestamp\"": 0.26666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0949, \""acceleration\"": 9.5334, \""fluidity\"": 0.026, \""expansion\"": 0.172, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0005}}}, {\""timestamp\"": 0.2833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0866, \""acceleration\"": 8.1758, \""fluidity\"": 0.022, \""expansion\"": 0.174, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0}}}, {\""timestamp\"": 0.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0767, \""acceleration\"": 7.2556, \""fluidity\"": 0.019, \""expansion\"": 0.175, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 0.31666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0817, \""acceleration\"": 7.042, \""fluidity\"": 0.017, \""expansion\"": 0.177, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0011, \""y\"": 0}}}, {\""timestamp\"": 0.3333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0676, \""acceleration\"": 6.2615, \""fluidity\"": 0.015, \""expansion\"": 0.179, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0003}}}, {\""timestamp\"": 0.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0607, \""acceleration\"": 5.2741, \""fluidity\"": 0.013, \""expansion\"": 0.179, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0}}}, {\""timestamp\"": 0.36666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0578, \""acceleration\"": 4.7129, \""fluidity\"": 0.011, \""expansion\"": 0.183, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0003}}}, {\""timestamp\"": 0.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0493, \""acceleration\"": 4.2135, \""fluidity\"": 0.01, \""expansion\"": 0.183, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 0.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0724, \""acceleration\"": 5.2104, \""fluidity\"": 0.008, \""expansion\"": 0.191, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": -0.0018, \""y\"": 0.0009}}}, {\""timestamp\"": 0.4166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0467, \""acceleration\"": 5.2539, \""fluidity\"": 0.007, \""expansion\"": 0.191, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 0.43333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0614, \""acceleration\"": 4.7211, \""fluidity\"": 0.006, \""expansion\"": 0.192, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": -0.0013, \""y\"": -0.0001}}}, {\""timestamp\"": 0.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0493, \""acceleration\"": 4.7025, \""fluidity\"": 0.005, \""expansion\"": 0.191, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": -0.0001}}}, {\""timestamp\"": 0.4666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0441, \""acceleration\"": 3.7031, \""fluidity\"": 0.086, \""expansion\"": 0.191, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.48333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0545, \""acceleration\"": 3.9435, \""fluidity\"": 0.024, \""expansion\"": 0.192, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0008, \""y\"": 0.0007}}}, {\""timestamp\"": 0.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0412, \""acceleration\"": 3.7837, \""fluidity\"": 0.029, \""expansion\"": 0.192, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0436, \""acceleration\"": 3.1217, \""fluidity\"": 0.035, \""expansion\"": 0.192, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0006}}}, {\""timestamp\"": 0.5333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0395, \""acceleration\"": 2.9474, \""fluidity\"": 0.022, \""expansion\"": 0.192, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 2.5603, \""fluidity\"": 0.022, \""expansion\"": 0.192, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0001}}}, {\""timestamp\"": 0.5666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 2.2634, \""fluidity\"": 0.02, \""expansion\"": 0.193, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.5833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0316, \""acceleration\"": 1.9529, \""fluidity\"": 0.215, \""expansion\"": 0.194, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0364, \""acceleration\"": 2.1029, \""fluidity\"": 0.064, \""expansion\"": 0.196, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": -0.0006, \""y\"": -0.0004}}}, {\""timestamp\"": 0.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.028, \""acceleration\"": 2.1194, \""fluidity\"": 0.075, \""expansion\"": 0.197, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0}}}, {\""timestamp\"": 0.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0276, \""acceleration\"": 1.6102, \""fluidity\"": 0.088, \""expansion\"": 0.2, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0241, \""acceleration\"": 1.6084, \""fluidity\"": 0.057, \""expansion\"": 0.201, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 0.6666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0211, \""acceleration\"": 1.3391, \""fluidity\"": 0.282, \""expansion\"": 0.201, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 0.6833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0365, \""acceleration\"": 2.1662, \""fluidity\"": 0.107, \""expansion\"": 0.205, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0011}}}, {\""timestamp\"": 0.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0301, \""acceleration\"": 1.7959, \""fluidity\"": 0.111, \""expansion\"": 0.206, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0005}}}, {\""timestamp\"": 0.7166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0458, \""acceleration\"": 2.1795, \""fluidity\"": 0.125, \""expansion\"": 0.21, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0015}}}, {\""timestamp\"": 0.7333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0477, \""acceleration\"": 1.79, \""fluidity\"": 0.086, \""expansion\"": 0.211, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0012}}}, {\""timestamp\"": 0.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.034, \""acceleration\"": 2.4349, \""fluidity\"": 0.081, \""expansion\"": 0.211, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0353, \""acceleration\"": 1.6237, \""fluidity\"": 0.21, \""expansion\"": 0.213, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 0.7833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0329, \""acceleration\"": 1.47, \""fluidity\"": 0.305, \""expansion\"": 0.214, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 0.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0299, \""acceleration\"": 1.4263, \""fluidity\"": 0.178, \""expansion\"": 0.215, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0}}}, {\""timestamp\"": 0.8166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0277, \""acceleration\"": 1.1971, \""fluidity\"": 0.173, \""expansion\"": 0.215, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0001}}}, {\""timestamp\"": 0.8333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0376, \""acceleration\"": 1.7321, \""fluidity\"": 0.164, \""expansion\"": 0.215, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0008}}}, {\""timestamp\"": 0.85, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0346, \""acceleration\"": 1.3423, \""fluidity\"": 0.129, \""expansion\"": 0.215, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0006}}}, {\""timestamp\"": 0.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0332, \""acceleration\"": 1.2208, \""fluidity\"": 0.117, \""expansion\"": 0.215, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0005}}}, {\""timestamp\"": 0.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0281, \""acceleration\"": 1.4679, \""fluidity\"": 0.102, \""expansion\"": 0.215, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0256, \""acceleration\"": 1.01, \""fluidity\"": 0.326, \""expansion\"": 0.215, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0329, \""acceleration\"": 1.495, \""fluidity\"": 0.136, \""expansion\"": 0.216, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": 0}}}, {\""timestamp\"": 0.9333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0308, \""acceleration\"": 1.1118, \""fluidity\"": 0.141, \""expansion\"": 0.217, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": 0.0001}}}, {\""timestamp\"": 0.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0273, \""acceleration\"": 1.1554, \""fluidity\"": 0.151, \""expansion\"": 0.218, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0794, \""acceleration\"": 4.0386, \""fluidity\"": 0.107, \""expansion\"": 0.22, \""total_displacement\"": 0.0038, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0038}}}, {\""timestamp\"": 0.9833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0663, \""acceleration\"": 3.06, \""fluidity\"": 0.1, \""expansion\"": 0.221, \""total_displacement\"": 0.0021, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0021}}}, {\""timestamp\"": 1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.274, \""acceleration\"": 13.9959, \""fluidity\"": 0.089, \""expansion\"": 0.223, \""total_displacement\"": 0.0154, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0154}}}, {\""timestamp\"": 1.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.141, \""acceleration\"": 16.9543, \""fluidity\"": 0.074, \""expansion\"": 0.224, \""total_displacement\"": 0.0024, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0024}}}, {\""timestamp\"": 1.0333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3349, \""acceleration\"": 19.2106, \""fluidity\"": 0.066, \""expansion\"": 0.227, \""total_displacement\"": 0.0143, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": 0.0143}}}, {\""timestamp\"": 1.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2284, \""acceleration\"": 22.9589, \""fluidity\"": 0.057, \""expansion\"": 0.227, \""total_displacement\"": 0.0027, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0027}}}, {\""timestamp\"": 1.0666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1805, \""acceleration\"": 16.9712, \""fluidity\"": 0.049, \""expansion\"": 0.227, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 1.0833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3465, \""acceleration\"": 24.1562, \""fluidity\"": 0.043, \""expansion\"": 0.231, \""total_displacement\"": 0.0107, \""center_displacement\"": {\""x\"": 0.0016, \""y\"": 0.0106}}}, {\""timestamp\"": 1.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.206, \""acceleration\"": 24.6307, \""fluidity\"": 0.037, \""expansion\"": 0.231, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0.0005}}}, {\""timestamp\"": 1.1166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2545, \""acceleration\"": 19.6865, \""fluidity\"": 0.032, \""expansion\"": 0.235, \""total_displacement\"": 0.0047, \""center_displacement\"": {\""x\"": 0.0022, \""y\"": 0.0042}}}, {\""timestamp\"": 1.1333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2361, \""acceleration\"": 19.3326, \""fluidity\"": 0.028, \""expansion\"": 0.237, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0014, \""y\"": 0.0018}}}, {\""timestamp\"": 1.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1866, \""acceleration\"": 17.2203, \""fluidity\"": 0.025, \""expansion\"": 0.237, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0007}}}, {\""timestamp\"": 1.1666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2468, \""acceleration\"": 17.9569, \""fluidity\"": 0.021, \""expansion\"": 0.242, \""total_displacement\"": 0.0052, \""center_displacement\"": {\""x\"": 0.0044, \""y\"": -0.0028}}}, {\""timestamp\"": 1.1833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1892, \""acceleration\"": 16.9628, \""fluidity\"": 0.019, \""expansion\"": 0.242, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0009}}}, {\""timestamp\"": 1.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3082, \""acceleration\"": 20.8769, \""fluidity\"": 0.016, \""expansion\"": 0.248, \""total_displacement\"": 0.0102, \""center_displacement\"": {\""x\"": 0.0062, \""y\"": -0.0081}}}, {\""timestamp\"": 1.2166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.258, \""acceleration\"": 18.7894, \""fluidity\"": 0.014, \""expansion\"": 0.249, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0047}}}, {\""timestamp\"": 1.2333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4267, \""acceleration\"": 24.1119, \""fluidity\"": 0.012, \""expansion\"": 0.252, \""total_displacement\"": 0.0159, \""center_displacement\"": {\""x\"": 0.0049, \""y\"": -0.0151}}}, {\""timestamp\"": 1.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3443, \""acceleration\"": 24.447, \""fluidity\"": 0.011, \""expansion\"": 0.252, \""total_displacement\"": 0.0064, \""center_displacement\"": {\""x\"": 0.0025, \""y\"": -0.0059}}}, {\""timestamp\"": 1.2666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2922, \""acceleration\"": 20.5096, \""fluidity\"": 0.009, \""expansion\"": 0.252, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0023}}}, {\""timestamp\"": 1.2833333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4392, \""acceleration\"": 25.5796, \""fluidity\"": 0.008, \""expansion\"": 0.251, \""total_displacement\"": 0.0116, \""center_displacement\"": {\""x\"": 0.0045, \""y\"": -0.0107}}}, {\""timestamp\"": 1.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.312, \""acceleration\"": 25.454, \""fluidity\"": 0.007, \""expansion\"": 0.252, \""total_displacement\"": 0.0029, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0027}}}, {\""timestamp\"": 1.3166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""right\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.374, \""acceleration\"": 22.0903, \""fluidity\"": 0.006, \""expansion\"": 0.25, \""total_displacement\"": 0.0075, \""center_displacement\"": {\""x\"": 0.0059, \""y\"": -0.0048}}}, {\""timestamp\"": 1.3333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3019, \""acceleration\"": 23.8408, \""fluidity\"": 0.005, \""expansion\"": 0.25, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": -0.0004}}}, {\""timestamp\"": 1.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2638, \""acceleration\"": 18.0714, \""fluidity\"": 0.005, \""expansion\"": 0.248, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0011}}}, {\""timestamp\"": 1.3666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3077, \""acceleration\"": 19.3583, \""fluidity\"": 0.004, \""expansion\"": 0.246, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0047, \""y\"": -0.0013}}}, {\""timestamp\"": 1.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2445, \""acceleration\"": 18.1099, \""fluidity\"": 0.003, \""expansion\"": 0.246, \""total_displacement\"": 0.0017, \""center_displacement\"": {\""x\"": 0.0014, \""y\"": -0.0011}}}, {\""timestamp\"": 1.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""right\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2896, \""acceleration\"": 17.4501, \""fluidity\"": 0.003, \""expansion\"": 0.245, \""total_displacement\"": 0.0057, \""center_displacement\"": {\""x\"": 0.0057, \""y\"": -0.0007}}}, {\""timestamp\"": 1.4166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2406, \""acceleration\"": 17.0553, \""fluidity\"": 0.003, \""expansion\"": 0.245, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": 0.002, \""y\"": 0.0004}}}, {\""timestamp\"": 1.4333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2684, \""acceleration\"": 15.824, \""fluidity\"": 0.002, \""expansion\"": 0.244, \""total_displacement\"": 0.005, \""center_displacement\"": {\""x\"": 0.005, \""y\"": 0.0005}}}, {\""timestamp\"": 1.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.22, \""acceleration\"": 15.8399, \""fluidity\"": 0.002, \""expansion\"": 0.245, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": 0.0004}}}, {\""timestamp\"": 1.4666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1953, \""acceleration\"": 12.62, \""fluidity\"": 0.002, \""expansion\"": 0.245, \""total_displacement\"": 0.0009, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": 0.0001}}}, {\""timestamp\"": 1.4833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.23, \""acceleration\"": 13.8316, \""fluidity\"": 0.001, \""expansion\"": 0.243, \""total_displacement\"": 0.0039, \""center_displacement\"": {\""x\"": 0.0038, \""y\"": -0.0009}}}, {\""timestamp\"": 1.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1693, \""acceleration\"": 13.6376, \""fluidity\"": 0.001, \""expansion\"": 0.242, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0001}}}, {\""timestamp\"": 1.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1981, \""acceleration\"": 12.5103, \""fluidity\"": 0.001, \""expansion\"": 0.24, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0012}}}, {\""timestamp\"": 1.5333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1657, \""acceleration\"": 11.9829, \""fluidity\"": 0.001, \""expansion\"": 0.237, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.001}}}, {\""timestamp\"": 1.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1546, \""acceleration\"": 9.8336, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0014}}}, {\""timestamp\"": 1.5666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1733, \""acceleration\"": 9.925, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.0029, \""center_displacement\"": {\""x\"": 0.0027, \""y\"": -0.001}}}, {\""timestamp\"": 1.5833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.138, \""acceleration\"": 9.6841, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0}}}, {\""timestamp\"": 1.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1584, \""acceleration\"": 8.9992, \""fluidity\"": 0.001, \""expansion\"": 0.238, \""total_displacement\"": 0.0028, \""center_displacement\"": {\""x\"": 0.0028, \""y\"": -0.0004}}}, {\""timestamp\"": 1.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.125, \""acceleration\"": 9.2114, \""fluidity\"": 0, \""expansion\"": 0.239, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0}}}, {\""timestamp\"": 1.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1201, \""acceleration\"": 7.4065, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0003}}}, {\""timestamp\"": 1.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1079, \""acceleration\"": 6.8687, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0004}}}, {\""timestamp\"": 1.6666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0935, \""acceleration\"": 5.9798, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0003}}}, {\""timestamp\"": 1.6833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0962, \""acceleration\"": 5.6971, \""fluidity\"": 0, \""expansion\"": 0.245, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0003}}}, {\""timestamp\"": 1.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0824, \""acceleration\"": 5.1041, \""fluidity\"": 0, \""expansion\"": 0.245, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0003}}}, {\""timestamp\"": 1.7166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0836, \""acceleration\"": 4.649, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0.0002}}}, {\""timestamp\"": 1.7333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0755, \""acceleration\"": 4.1983, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": 0}}}, {\""timestamp\"": 1.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0641, \""acceleration\"": 3.8633, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0}}}, {\""timestamp\"": 1.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0622, \""acceleration\"": 3.3395, \""fluidity\"": 0, \""expansion\"": 0.242, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": 0}}}, {\""timestamp\"": 1.7833333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0511, \""acceleration\"": 3.1939, \""fluidity\"": 0, \""expansion\"": 0.242, \""total_displacement\"": 0, \""center_displacement\"": {\""x\"": 0, \""y\"": 0}}}, {\""timestamp\"": 1.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0471, \""acceleration\"": 2.7221, \""fluidity\"": 0, \""expansion\"": 0.241, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0001}}}, {\""timestamp\"": 1.8166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0422, \""acceleration\"": 2.3512, \""fluidity\"": 0.063, \""expansion\"": 0.241, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 1.8333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0424, \""acceleration\"": 2.3805, \""fluidity\"": 0.016, \""expansion\"": 0.24, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0001}}}, {\""timestamp\"": 1.8499999999999999, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.037, \""acceleration\"": 2.0613, \""fluidity\"": 0.02, \""expansion\"": 0.24, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 1.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0325, \""acceleration\"": 1.8143, \""fluidity\"": 0.025, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 1.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 1.8024, \""fluidity\"": 0.015, \""expansion\"": 0.239, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0002}}}, {\""timestamp\"": 1.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0295, \""acceleration\"": 1.5649, \""fluidity\"": 0.015, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 1.9166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0265, \""acceleration\"": 1.3648, \""fluidity\"": 0.014, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0239, \""acceleration\"": 1.2534, \""fluidity\"": 0.011, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 1.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0214, \""acceleration\"": 1.0506, \""fluidity\"": 0.236, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0214, \""acceleration\"": 1.0392, \""fluidity\"": 0.065, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0182, \""acceleration\"": 0.9469, \""fluidity\"": 0.078, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0189, \""acceleration\"": 0.8829, \""fluidity\"": 0.095, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0002}}}, {\""timestamp\"": 2.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0177, \""acceleration\"": 0.7531, \""fluidity\"": 0.13, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0002}}}, {\""timestamp\"": 2.033333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0176, \""acceleration\"": 0.6967, \""fluidity\"": 0.076, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 2.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0157, \""acceleration\"": 0.6898, \""fluidity\"": 0.075, \""expansion\"": 0.238, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 2.0666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0142, \""acceleration\"": 0.5736, \""fluidity\"": 0.127, \""expansion\"": 0.238, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 2.0833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0189, \""acceleration\"": 0.8216, \""fluidity\"": 0.07, \""expansion\"": 0.238, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0004}}}, {\""timestamp\"": 2.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.017, \""acceleration\"": 0.6557, \""fluidity\"": 0.068, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 2.1166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0224, \""acceleration\"": 0.8202, \""fluidity\"": 0.066, \""expansion\"": 0.238, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0006}}}, {\""timestamp\"": 2.1333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0225, \""acceleration\"": 0.6904, \""fluidity\"": 0.051, \""expansion\"": 0.238, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0005}}}, {\""timestamp\"": 2.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0205, \""acceleration\"": 0.7196, \""fluidity\"": 0.046, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 2.1666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0175, \""acceleration\"": 0.7882, \""fluidity\"": 0.041, \""expansion\"": 0.237, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 2.183333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""slow\"", \""velocity\"": 0.016, \""acceleration\"": 0.5634, \""fluidity\"": 0.215, \""expansion\"": 0.236, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0}}}, {\""timestamp\"": 2.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0173, \""acceleration\"": 0.689, \""fluidity\"": 0.076, \""expansion\"": 0.234, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0002}}}, {\""timestamp\"": 2.216666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0143, \""acceleration\"": 0.6405, \""fluidity\"": 0.083, \""expansion\"": 0.234, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0001}}}, {\""timestamp\"": 2.2333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0686, \""acceleration\"": 3.7773, \""fluidity\"": 0.093, \""expansion\"": 0.23, \""total_displacement\"": 0.0038, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0038}}}, {\""timestamp\"": 2.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0536, \""acceleration\"": 2.9603, \""fluidity\"": 0.063, \""expansion\"": 0.229, \""total_displacement\"": 0.0019, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0019}}}, {\""timestamp\"": 2.2666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0569, \""acceleration\"": 2.1957, \""fluidity\"": 0.06, \""expansion\"": 0.229, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0015}}}, {\""timestamp\"": 2.283333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2019, \""acceleration\"": 10.2968, \""fluidity\"": 0.054, \""expansion\"": 0.227, \""total_displacement\"": 0.0105, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0105}}}, {\""timestamp\"": 2.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1156, \""acceleration\"": 11.0428, \""fluidity\"": 0.044, \""expansion\"": 0.226, \""total_displacement\"": 0.0025, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0025}}}, {\""timestamp\"": 2.3166666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2797, \""acceleration\"": 14.8018, \""fluidity\"": 0.04, \""expansion\"": 0.221, \""total_displacement\"": 0.0124, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0124}}}, {\""timestamp\"": 2.3333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2214, \""acceleration\"": 15.8765, \""fluidity\"": 0.034, \""expansion\"": 0.221, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0048}}}, {\""timestamp\"": 2.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.1555, \""acceleration\"": 14.678, \""fluidity\"": 0.03, \""expansion\"": 0.22, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0001}}}, {\""timestamp\"": 2.3666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3565, \""acceleration\"": 22.8035, \""fluidity\"": 0.026, \""expansion\"": 0.218, \""total_displacement\"": 0.0128, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0128}}}, {\""timestamp\"": 2.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2303, \""acceleration\"": 22.0639, \""fluidity\"": 0.022, \""expansion\"": 0.218, \""total_displacement\"": 0.0031, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0031}}}, {\""timestamp\"": 2.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3683, \""acceleration\"": 23.0341, \""fluidity\"": 0.019, \""expansion\"": 0.214, \""total_displacement\"": 0.0122, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": 0.0122}}}, {\""timestamp\"": 2.4166666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2725, \""acceleration\"": 25.916, \""fluidity\"": 0.017, \""expansion\"": 0.214, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0022}}}, {\""timestamp\"": 2.433333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2323, \""acceleration\"": 18.9078, \""fluidity\"": 0.015, \""expansion\"": 0.213, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0003}}}, {\""timestamp\"": 2.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2271, \""acceleration\"": 17.3051, \""fluidity\"": 0.013, \""expansion\"": 0.213, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0004}}}, {\""timestamp\"": 2.466666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1935, \""acceleration\"": 15.6304, \""fluidity\"": 0.011, \""expansion\"": 0.213, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": -0.0003}}}, {\""timestamp\"": 2.4833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2306, \""acceleration\"": 16.3765, \""fluidity\"": 0.01, \""expansion\"": 0.212, \""total_displacement\"": 0.0045, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0033}}}, {\""timestamp\"": 2.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2042, \""acceleration\"": 13.8859, \""fluidity\"": 0.008, \""expansion\"": 0.211, \""total_displacement\"": 0.0028, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0026}}}, {\""timestamp\"": 2.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3447, \""acceleration\"": 20.2457, \""fluidity\"": 0.007, \""expansion\"": 0.21, \""total_displacement\"": 0.0125, \""center_displacement\"": {\""x\"": 0.003, \""y\"": -0.0121}}}, {\""timestamp\"": 2.533333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2624, \""acceleration\"": 19.8363, \""fluidity\"": 0.006, \""expansion\"": 0.21, \""total_displacement\"": 0.0045, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0044}}}, {\""timestamp\"": 2.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2262, \""acceleration\"": 16.141, \""fluidity\"": 0.006, \""expansion\"": 0.211, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0014}}}, {\""timestamp\"": 2.5666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4216, \""acceleration\"": 25.4549, \""fluidity\"": 0.005, \""expansion\"": 0.206, \""total_displacement\"": 0.0142, \""center_displacement\"": {\""x\"": 0.0032, \""y\"": -0.0139}}}, {\""timestamp\"": 2.5833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2673, \""acceleration\"": 25.7738, \""fluidity\"": 0.004, \""expansion\"": 0.206, \""total_displacement\"": 0.0026, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0024}}}, {\""timestamp\"": 2.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3323, \""acceleration\"": 20.6687, \""fluidity\"": 0.004, \""expansion\"": 0.201, \""total_displacement\"": 0.0069, \""center_displacement\"": {\""x\"": 0.0023, \""y\"": -0.0065}}}, {\""timestamp\"": 2.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3073, \""acceleration\"": 21.0621, \""fluidity\"": 0.003, \""expansion\"": 0.2, \""total_displacement\"": 0.0035, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0033}}}, {\""timestamp\"": 2.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2991, \""acceleration\"": 18.0948, \""fluidity\"": 0.003, \""expansion\"": 0.195, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0034, \""y\"": -0.0034}}}, {\""timestamp\"": 2.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2577, \""acceleration\"": 17.9181, \""fluidity\"": 0.002, \""expansion\"": 0.194, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0014}}}, {\""timestamp\"": 2.6666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2337, \""acceleration\"": 14.5879, \""fluidity\"": 0.002, \""expansion\"": 0.194, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0011}}}, {\""timestamp\"": 2.683333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2467, \""acceleration\"": 14.5353, \""fluidity\"": 0.002, \""expansion\"": 0.191, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0009}}}, {\""timestamp\"": 2.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2213, \""acceleration\"": 12.4955, \""fluidity\"": 0.002, \""expansion\"": 0.191, \""total_displacement\"": 0.0025, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0022}}}, {\""timestamp\"": 2.716666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2164, \""acceleration\"": 10.6537, \""fluidity\"": 0.001, \""expansion\"": 0.187, \""total_displacement\"": 0.0027, \""center_displacement\"": {\""x\"": 0.0027, \""y\"": -0.0006}}}, {\""timestamp\"": 2.7333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1839, \""acceleration\"": 11.1152, \""fluidity\"": 0.001, \""expansion\"": 0.186, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0005}}}, {\""timestamp\"": 2.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1742, \""acceleration\"": 8.9315, \""fluidity\"": 0.001, \""expansion\"": 0.185, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": -0.001}}}, {\""timestamp\"": 2.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2067, \""acceleration\"": 10.3295, \""fluidity\"": 0.001, \""expansion\"": 0.18, \""total_displacement\"": 0.0042, \""center_displacement\"": {\""x\"": 0.0028, \""y\"": -0.0032}}}, {\""timestamp\"": 2.783333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1622, \""acceleration\"": 10.1212, \""fluidity\"": 0.001, \""expansion\"": 0.178, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0012, \""y\"": -0.0007}}}, {\""timestamp\"": 2.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1856, \""acceleration\"": 9.0748, \""fluidity\"": 0.001, \""expansion\"": 0.177, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0032}}}, {\""timestamp\"": 2.8166666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.156, \""acceleration\"": 9.3265, \""fluidity\"": 0.001, \""expansion\"": 0.176, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": -0.001}}}, {\""timestamp\"": 2.8333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1451, \""acceleration\"": 7.2397, \""fluidity\"": 0.001, \""expansion\"": 0.172, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": -0.0002}}}, {\""timestamp\"": 2.85, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1303, \""acceleration\"": 7.0422, \""fluidity\"": 0, \""expansion\"": 0.171, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0004}}}, {\""timestamp\"": 2.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1148, \""acceleration\"": 6.0024, \""fluidity\"": 0, \""expansion\"": 0.17, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0005}}}, {\""timestamp\"": 2.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.131, \""acceleration\"": 6.6612, \""fluidity\"": 0, \""expansion\"": 0.171, \""total_displacement\"": 0.0022, \""center_displacement\"": {\""x\"": 0.0022, \""y\"": 0.0003}}}, {\""timestamp\"": 2.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1066, \""acceleration\"": 6.179, \""fluidity\"": 0, \""expansion\"": 0.17, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": 0.0002}}}, {\""timestamp\"": 2.9166666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1063, \""acceleration\"": 5.0441, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0012, \""y\"": 0.0001}}}, {\""timestamp\"": 2.933333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0941, \""acceleration\"": 5.0755, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0005}}}, {\""timestamp\"": 2.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.082, \""acceleration\"": 4.2463, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0001}}}, {\""timestamp\"": 2.966666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0747, \""acceleration\"": 3.6591, \""fluidity\"": 0, \""expansion\"": 0.167, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 2.9833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0671, \""acceleration\"": 3.2635, \""fluidity\"": 0.159, \""expansion\"": 0.166, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0591, \""acceleration\"": 2.8652, \""fluidity\"": 0.04, \""expansion\"": 0.165, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0002}}}, {\""timestamp\"": 3.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0517, \""acceleration\"": 2.5477, \""fluidity\"": 0.05, \""expansion\"": 0.164, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 3.033333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0687, \""acceleration\"": 3.5291, \""fluidity\"": 0.062, \""expansion\"": 0.164, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": 0.0016}}}, {\""timestamp\"": 3.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0566, \""acceleration\"": 2.9811, \""fluidity\"": 0.038, \""expansion\"": 0.164, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0008}}}, {\""timestamp\"": 3.0666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0508, \""acceleration\"": 2.5782, \""fluidity\"": 0.037, \""expansion\"": 0.164, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0004}}}, {\""timestamp\"": 3.0833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0475, \""acceleration\"": 2.4533, \""fluidity\"": 0.034, \""expansion\"": 0.16, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 3.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.044, \""acceleration\"": 2.1114, \""fluidity\"": 0.027, \""expansion\"": 0.159, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0002}}}], \""capabilities\"": {\""has_joints\"": true, \""has_bones\"": true, \""has_direction_arrows\"": true, \""has_motion_trails\"": true, \""has_laban\"": true}}""}",2025-06-09 16:49:29.087331 diff --git a/README.md b/README.md index 39c7ceb02d6b45a1c3747ab4a3945b9df2fcb3ba..70a50edb382dfa2e79e72883a85d829cbada306c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,239 @@ --- -title: Gradio Overlay Video -emoji: 📚 -colorFrom: gray +tags: [gradio-custom-component, gradio-5, laban-movement-analysis, pose-visualisation, pose-estimation, movement-visualisation, visualisation, video] +title: gradio_overlay_video +emoji: 🏃 +short_description: pose data overlayed video controller +colorFrom: purple colorTo: green sdk: gradio sdk_version: 5.33.0 -app_file: app.py pinned: false +app_file: space.py --- -Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# `gradio_overlay_video` +Static Badge + +overlayed video controller + +## Installation + +```bash +pip install gradio_overlay_video +``` + +## Usage + +```python + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + """ + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + """ + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) +``` + +## `OverlayVideo` + +### Initialization + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nametypedefaultdescription
value + +```python +typing.Any +``` + +NoneNone
label + +```python +str | None +``` + +NoneNone
interactive + +```python +bool | None +``` + +NoneNone
autoplay + +```python +bool +``` + +FalseNone
loop + +```python +bool +``` + +FalseNone
mode + +```python +str +``` + +"overlay"None
+ + +### Events + +| name | description | +|:-----|:------------| +| `change` | Triggered when the value of the OverlayVideo changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. | +| `clear` | This listener is triggered when the user clears the OverlayVideo using the clear button for the component. | +| `play` | This listener is triggered when the user plays the media in the OverlayVideo. | +| `pause` | This listener is triggered when the media in the OverlayVideo stops for any reason. | +| `end` | This listener is triggered when the user reaches the end of the media playing in the OverlayVideo. | + + + +### User function + +The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). + +- When used as an Input, the component only impacts the input signature of the user function. +- When used as an output, the component only impacts the return signature of the user function. + +The code snippet below is accurate in cases where the component is used as both an input and an output. + + + + ```python + def predict( + value: str | None + ) -> typing.Optional[typing.Tuple[str | None, str | None]][ + typing.Tuple[str | None, str | None][ + str | None, str | None + ], + None, +]: + return value + ``` + diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..2abb3154c3ff3b0f8779f955d7dadaab24436bfd --- /dev/null +++ b/app.py @@ -0,0 +1,81 @@ + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + """ + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + """ + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) \ No newline at end of file diff --git a/css.css b/css.css new file mode 100644 index 0000000000000000000000000000000000000000..f7256be42f9884d89b499b0f5a6cfcbed3d54c80 --- /dev/null +++ b/css.css @@ -0,0 +1,157 @@ +html { + font-family: Inter; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + -webkit-text-size-adjust: 100%; + background: #fff; + color: #323232; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +:root { + --space: 1; + --vspace: calc(var(--space) * 1rem); + --vspace-0: calc(3 * var(--space) * 1rem); + --vspace-1: calc(2 * var(--space) * 1rem); + --vspace-2: calc(1.5 * var(--space) * 1rem); + --vspace-3: calc(0.5 * var(--space) * 1rem); +} + +.app { + max-width: 748px !important; +} + +.prose p { + margin: var(--vspace) 0; + line-height: var(--vspace * 2); + font-size: 1rem; +} + +code { + font-family: "Inconsolata", sans-serif; + font-size: 16px; +} + +h1, +h1 code { + font-weight: 400; + line-height: calc(2.5 / var(--space) * var(--vspace)); +} + +h1 code { + background: none; + border: none; + letter-spacing: 0.05em; + padding-bottom: 5px; + position: relative; + padding: 0; +} + +h2 { + margin: var(--vspace-1) 0 var(--vspace-2) 0; + line-height: 1em; +} + +h3, +h3 code { + margin: var(--vspace-1) 0 var(--vspace-2) 0; + line-height: 1em; +} + +h4, +h5, +h6 { + margin: var(--vspace-3) 0 var(--vspace-3) 0; + line-height: var(--vspace); +} + +.bigtitle, +h1, +h1 code { + font-size: calc(8px * 4.5); + word-break: break-word; +} + +.title, +h2, +h2 code { + font-size: calc(8px * 3.375); + font-weight: lighter; + word-break: break-word; + border: none; + background: none; +} + +.subheading1, +h3, +h3 code { + font-size: calc(8px * 1.8); + font-weight: 600; + border: none; + background: none; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +h2 code { + padding: 0; + position: relative; + letter-spacing: 0.05em; +} + +blockquote { + font-size: calc(8px * 1.1667); + font-style: italic; + line-height: calc(1.1667 * var(--vspace)); + margin: var(--vspace-2) var(--vspace-2); +} + +.subheading2, +h4 { + font-size: calc(8px * 1.4292); + text-transform: uppercase; + font-weight: 600; +} + +.subheading3, +h5 { + font-size: calc(8px * 1.2917); + line-height: calc(1.2917 * var(--vspace)); + + font-weight: lighter; + text-transform: uppercase; + letter-spacing: 0.15em; +} + +h6 { + font-size: calc(8px * 1.1667); + font-size: 1.1667em; + font-weight: normal; + font-style: italic; + font-family: "le-monde-livre-classic-byol", serif !important; + letter-spacing: 0px !important; +} + +#start .md > *:first-child { + margin-top: 0; +} + +h2 + h3 { + margin-top: 0; +} + +.md hr { + border: none; + border-top: 1px solid var(--block-border-color); + margin: var(--vspace-2) 0 var(--vspace-2) 0; +} +.prose ul { + margin: var(--vspace-2) 0 var(--vspace-1) 0; +} + +.gap { + gap: 0; +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..9287d1a398f383773d3ce7638c466c975498c173 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +gradio_overlay_video \ No newline at end of file diff --git a/space.py b/space.py new file mode 100644 index 0000000000000000000000000000000000000000..2c9b53e85e54c6676603d6d66555b5a8042ee13f --- /dev/null +++ b/space.py @@ -0,0 +1,206 @@ + +import gradio as gr +from app import demo as app +import os + +_docs = {'OverlayVideo': {'description': 'An output component that plays a video with an interactive, toggleable overlay of pose data.', 'members': {'__init__': {'value': {'type': 'typing.Any', 'default': 'None', 'description': None}, 'label': {'type': 'str | None', 'default': 'None', 'description': None}, 'interactive': {'type': 'bool | None', 'default': 'None', 'description': None}, 'autoplay': {'type': 'bool', 'default': 'False', 'description': None}, 'loop': {'type': 'bool', 'default': 'False', 'description': None}, 'mode': {'type': 'str', 'default': '"overlay"', 'description': None}}, 'postprocess': {'value': {'type': 'typing.Optional[typing.Tuple[str | None, str | None]][\n typing.Tuple[str | None, str | None][\n str | None, str | None\n ],\n None,\n]', 'description': None}}, 'preprocess': {'return': {'type': 'str | None', 'description': None}, 'value': None}}, 'events': {'change': {'type': None, 'default': None, 'description': 'Triggered when the value of the OverlayVideo changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input.'}, 'clear': {'type': None, 'default': None, 'description': 'This listener is triggered when the user clears the OverlayVideo using the clear button for the component.'}, 'play': {'type': None, 'default': None, 'description': 'This listener is triggered when the user plays the media in the OverlayVideo.'}, 'pause': {'type': None, 'default': None, 'description': 'This listener is triggered when the media in the OverlayVideo stops for any reason.'}, 'end': {'type': None, 'default': None, 'description': 'This listener is triggered when the user reaches the end of the media playing in the OverlayVideo.'}}}, '__meta__': {'additional_interfaces': {}, 'user_fn_refs': {'OverlayVideo': []}}} + +abs_path = os.path.join(os.path.dirname(__file__), "css.css") + +with gr.Blocks( + css=abs_path, + theme=gr.themes.Default( + font_mono=[ + gr.themes.GoogleFont("Inconsolata"), + "monospace", + ], + ), +) as demo: + gr.Markdown( +""" +# `gradio_overlay_video` + +
+Static Badge +
+ +overlayed video controller +""", elem_classes=["md-custom"], header_links=True) + app.render() + gr.Markdown( +""" +## Installation + +```bash +pip install gradio_overlay_video +``` + +## Usage + +```python + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + \"\"\" + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + \"\"\" + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) +``` +""", elem_classes=["md-custom"], header_links=True) + + + gr.Markdown(""" +## `OverlayVideo` + +### Initialization +""", elem_classes=["md-custom"], header_links=True) + + gr.ParamViewer(value=_docs["OverlayVideo"]["members"]["__init__"], linkify=[]) + + + gr.Markdown("### Events") + gr.ParamViewer(value=_docs["OverlayVideo"]["events"], linkify=['Event']) + + + + + gr.Markdown(""" + +### User function + +The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). + +- When used as an Input, the component only impacts the input signature of the user function. +- When used as an output, the component only impacts the return signature of the user function. + +The code snippet below is accurate in cases where the component is used as both an input and an output. + + + + ```python +def predict( + value: str | None +) -> typing.Optional[typing.Tuple[str | None, str | None]][ + typing.Tuple[str | None, str | None][ + str | None, str | None + ], + None, +]: + return value +``` +""", elem_classes=["md-custom", "OverlayVideo-user-fn"], header_links=True) + + + + + demo.load(None, js=r"""function() { + const refs = {}; + const user_fn_refs = { + OverlayVideo: [], }; + requestAnimationFrame(() => { + + Object.entries(user_fn_refs).forEach(([key, refs]) => { + if (refs.length > 0) { + const el = document.querySelector(`.${key}-user-fn`); + if (!el) return; + refs.forEach(ref => { + el.innerHTML = el.innerHTML.replace( + new RegExp("\\b"+ref+"\\b", "g"), + `${ref}` + ); + }) + } + }) + + Object.entries(refs).forEach(([key, refs]) => { + if (refs.length > 0) { + const el = document.querySelector(`.${key}`); + if (!el) return; + refs.forEach(ref => { + el.innerHTML = el.innerHTML.replace( + new RegExp("\\b"+ref+"\\b", "g"), + `${ref}` + ); + }) + } + }) + }) +} + +""") + +demo.launch() diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a796abe17086f37e321d9305a3ee8b5c4c79107a Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/.claude/settings.local.json b/src/.claude/settings.local.json new file mode 100644 index 0000000000000000000000000000000000000000..4d48d1c2573f386fe56a9b02392ced48f669468c --- /dev/null +++ b/src/.claude/settings.local.json @@ -0,0 +1,12 @@ +{ + "permissions": { + "allow": [ + "Bash(python:*)", + "Bash(pip install:*)", + "Bash(grep:*)", + "Bash(sed:*)", + "Bash(rm:*)" + ], + "deny": [] + } +} \ No newline at end of file diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5dd75ecdbb6f74962bbede3376d2f1182679ec19 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,12 @@ +.eggs/ +dist/ +*.pyc +__pycache__/ +*.py[cod] +*$py.class +__tmp/* +*.pyi +.mypycache +.ruff_cache +node_modules +backend/**/templates/ \ No newline at end of file diff --git a/src/.gradio/cached_examples/9/Output/3e1643b3cd3925885fe5/balette.mp4 b/src/.gradio/cached_examples/9/Output/3e1643b3cd3925885fe5/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/src/.gradio/cached_examples/9/Output/3e1643b3cd3925885fe5/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/src/.gradio/cached_examples/9/Output/6444ff5b7cd73ce6e3ac/mediapipe_full_balette.json b/src/.gradio/cached_examples/9/Output/6444ff5b7cd73ce6e3ac/mediapipe_full_balette.json new file mode 100644 index 0000000000000000000000000000000000000000..aab0191ab5988ad92c79f65359e3a95dd8cd82d7 --- /dev/null +++ b/src/.gradio/cached_examples/9/Output/6444ff5b7cd73ce6e3ac/mediapipe_full_balette.json @@ -0,0 +1,3478 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-08T15:21:19.211586", + "version": "1.0.0", + "model_info": { + "name": "mediapipe-full", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 60, + "duration_seconds": 3.1166666666666667, + "width": 1280, + "height": 688, + "frame_count": 187 + }, + "movement_analysis": { + "frame_count": 187, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0.142, + "total_displacement": 0 + } + }, + { + "frame_index": 1, + "timestamp": 0.016666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.051, + "acceleration": 63.0628, + "fluidity": 0, + "expansion": 0.15, + "total_displacement": 0.0175, + "center_displacement": { + "x": -0.0175, + "y": 0.0004 + } + } + }, + { + "frame_index": 2, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0654, + "acceleration": 59.1406, + "fluidity": 0, + "expansion": 0.149, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0011, + "y": -0.0002 + } + } + }, + { + "frame_index": 3, + "timestamp": 0.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2949, + "acceleration": 30.5825, + "fluidity": 0.092, + "expansion": 0.15, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.001, + "y": -0.0002 + } + } + }, + { + "frame_index": 4, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.36, + "acceleration": 38.7168, + "fluidity": 0.023, + "expansion": 0.149, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": -0.0002 + } + } + }, + { + "frame_index": 5, + "timestamp": 0.08333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2096, + "acceleration": 33.4529, + "fluidity": 0.029, + "expansion": 0.151, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.0017, + "y": -0.0011 + } + } + }, + { + "frame_index": 6, + "timestamp": 0.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2213, + "acceleration": 27.1474, + "fluidity": 0.036, + "expansion": 0.152, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0002, + "y": -0.0003 + } + } + }, + { + "frame_index": 7, + "timestamp": 0.11666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.2033, + "acceleration": 24.8517, + "fluidity": 0.16, + "expansion": 0.155, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0001, + "y": 0.0004 + } + } + }, + { + "frame_index": 8, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1729, + "acceleration": 21.8885, + "fluidity": 0.056, + "expansion": 0.156, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.0009, + "y": 0.0001 + } + } + }, + { + "frame_index": 9, + "timestamp": 0.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1527, + "acceleration": 19.1312, + "fluidity": 0.063, + "expansion": 0.156, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 10, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1571, + "acceleration": 17.7603, + "fluidity": 0.07, + "expansion": 0.159, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0001, + "y": -0.0017 + } + } + }, + { + "frame_index": 11, + "timestamp": 0.18333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1276, + "acceleration": 15.7758, + "fluidity": 0.047, + "expansion": 0.16, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0003, + "y": -0.0003 + } + } + }, + { + "frame_index": 12, + "timestamp": 0.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1568, + "acceleration": 15.6038, + "fluidity": 0.045, + "expansion": 0.171, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0032, + "y": -0.0001 + } + } + }, + { + "frame_index": 13, + "timestamp": 0.21666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1198, + "acceleration": 14.5715, + "fluidity": 0.041, + "expansion": 0.173, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0004, + "y": 0.0005 + } + } + }, + { + "frame_index": 14, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1172, + "acceleration": 11.8933, + "fluidity": 0.033, + "expansion": 0.173, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0007, + "y": 0.0008 + } + } + }, + { + "frame_index": 15, + "timestamp": 0.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1102, + "acceleration": 10.778, + "fluidity": 0.03, + "expansion": 0.172, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0008, + "y": 0.0002 + } + } + }, + { + "frame_index": 16, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0949, + "acceleration": 9.5334, + "fluidity": 0.026, + "expansion": 0.172, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0, + "y": 0.0005 + } + } + }, + { + "frame_index": 17, + "timestamp": 0.2833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0866, + "acceleration": 8.1758, + "fluidity": 0.022, + "expansion": 0.174, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0004, + "y": 0 + } + } + }, + { + "frame_index": 18, + "timestamp": 0.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0767, + "acceleration": 7.2556, + "fluidity": 0.019, + "expansion": 0.175, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 19, + "timestamp": 0.31666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0817, + "acceleration": 7.042, + "fluidity": 0.017, + "expansion": 0.177, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0011, + "y": 0 + } + } + }, + { + "frame_index": 20, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0676, + "acceleration": 6.2615, + "fluidity": 0.015, + "expansion": 0.179, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0003, + "y": 0.0003 + } + } + }, + { + "frame_index": 21, + "timestamp": 0.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0607, + "acceleration": 5.2741, + "fluidity": 0.013, + "expansion": 0.179, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0 + } + } + }, + { + "frame_index": 22, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0578, + "acceleration": 4.7129, + "fluidity": 0.011, + "expansion": 0.183, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0002, + "y": 0.0003 + } + } + }, + { + "frame_index": 23, + "timestamp": 0.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0493, + "acceleration": 4.2135, + "fluidity": 0.01, + "expansion": 0.183, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 24, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0724, + "acceleration": 5.2104, + "fluidity": 0.008, + "expansion": 0.191, + "total_displacement": 0.002, + "center_displacement": { + "x": -0.0018, + "y": 0.0009 + } + } + }, + { + "frame_index": 25, + "timestamp": 0.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0467, + "acceleration": 5.2539, + "fluidity": 0.007, + "expansion": 0.191, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 26, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0614, + "acceleration": 4.7211, + "fluidity": 0.006, + "expansion": 0.192, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0013, + "y": -0.0001 + } + } + }, + { + "frame_index": 27, + "timestamp": 0.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0493, + "acceleration": 4.7025, + "fluidity": 0.005, + "expansion": 0.191, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": -0.0001 + } + } + }, + { + "frame_index": 28, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0441, + "acceleration": 3.7031, + "fluidity": 0.086, + "expansion": 0.191, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 29, + "timestamp": 0.48333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0545, + "acceleration": 3.9435, + "fluidity": 0.024, + "expansion": 0.192, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0008, + "y": 0.0007 + } + } + }, + { + "frame_index": 30, + "timestamp": 0.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0412, + "acceleration": 3.7837, + "fluidity": 0.029, + "expansion": 0.192, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 31, + "timestamp": 0.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0436, + "acceleration": 3.1217, + "fluidity": 0.035, + "expansion": 0.192, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0, + "y": -0.0006 + } + } + }, + { + "frame_index": 32, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0395, + "acceleration": 2.9474, + "fluidity": 0.022, + "expansion": 0.192, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 33, + "timestamp": 0.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 2.5603, + "fluidity": 0.022, + "expansion": 0.192, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + } + }, + { + "frame_index": 34, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 2.2634, + "fluidity": 0.02, + "expansion": 0.193, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 35, + "timestamp": 0.5833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0316, + "acceleration": 1.9529, + "fluidity": 0.215, + "expansion": 0.194, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 36, + "timestamp": 0.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0364, + "acceleration": 2.1029, + "fluidity": 0.064, + "expansion": 0.196, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0006, + "y": -0.0004 + } + } + }, + { + "frame_index": 37, + "timestamp": 0.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.028, + "acceleration": 2.1194, + "fluidity": 0.075, + "expansion": 0.197, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + } + }, + { + "frame_index": 38, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0276, + "acceleration": 1.6102, + "fluidity": 0.088, + "expansion": 0.2, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 39, + "timestamp": 0.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0241, + "acceleration": 1.6084, + "fluidity": 0.057, + "expansion": 0.201, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 40, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0211, + "acceleration": 1.3391, + "fluidity": 0.282, + "expansion": 0.201, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 41, + "timestamp": 0.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0365, + "acceleration": 2.1662, + "fluidity": 0.107, + "expansion": 0.205, + "total_displacement": 0.0012, + "center_displacement": { + "x": -0.0004, + "y": 0.0011 + } + } + }, + { + "frame_index": 42, + "timestamp": 0.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0301, + "acceleration": 1.7959, + "fluidity": 0.111, + "expansion": 0.206, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0003, + "y": 0.0005 + } + } + }, + { + "frame_index": 43, + "timestamp": 0.7166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0458, + "acceleration": 2.1795, + "fluidity": 0.125, + "expansion": 0.21, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0004, + "y": 0.0015 + } + } + }, + { + "frame_index": 44, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0477, + "acceleration": 1.79, + "fluidity": 0.086, + "expansion": 0.211, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0004, + "y": 0.0012 + } + } + }, + { + "frame_index": 45, + "timestamp": 0.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.034, + "acceleration": 2.4349, + "fluidity": 0.081, + "expansion": 0.211, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 46, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0353, + "acceleration": 1.6237, + "fluidity": 0.21, + "expansion": 0.213, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 47, + "timestamp": 0.7833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0329, + "acceleration": 1.47, + "fluidity": 0.305, + "expansion": 0.214, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 48, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0299, + "acceleration": 1.4263, + "fluidity": 0.178, + "expansion": 0.215, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0 + } + } + }, + { + "frame_index": 49, + "timestamp": 0.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0277, + "acceleration": 1.1971, + "fluidity": 0.173, + "expansion": 0.215, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + } + }, + { + "frame_index": 50, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0376, + "acceleration": 1.7321, + "fluidity": 0.164, + "expansion": 0.215, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0005, + "y": -0.0008 + } + } + }, + { + "frame_index": 51, + "timestamp": 0.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0346, + "acceleration": 1.3423, + "fluidity": 0.129, + "expansion": 0.215, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0003, + "y": -0.0006 + } + } + }, + { + "frame_index": 52, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0332, + "acceleration": 1.2208, + "fluidity": 0.117, + "expansion": 0.215, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0002, + "y": -0.0005 + } + } + }, + { + "frame_index": 53, + "timestamp": 0.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0281, + "acceleration": 1.4679, + "fluidity": 0.102, + "expansion": 0.215, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + } + }, + { + "frame_index": 54, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0256, + "acceleration": 1.01, + "fluidity": 0.326, + "expansion": 0.215, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 55, + "timestamp": 0.9166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0329, + "acceleration": 1.495, + "fluidity": 0.136, + "expansion": 0.216, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": 0 + } + } + }, + { + "frame_index": 56, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0308, + "acceleration": 1.1118, + "fluidity": 0.141, + "expansion": 0.217, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0.0001 + } + } + }, + { + "frame_index": 57, + "timestamp": 0.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0273, + "acceleration": 1.1554, + "fluidity": 0.151, + "expansion": 0.218, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 58, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0794, + "acceleration": 4.0386, + "fluidity": 0.107, + "expansion": 0.22, + "total_displacement": 0.0038, + "center_displacement": { + "x": -0.0001, + "y": 0.0038 + } + } + }, + { + "frame_index": 59, + "timestamp": 0.9833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0663, + "acceleration": 3.06, + "fluidity": 0.1, + "expansion": 0.221, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0001, + "y": 0.0021 + } + } + }, + { + "frame_index": 60, + "timestamp": 1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.274, + "acceleration": 13.9959, + "fluidity": 0.089, + "expansion": 0.223, + "total_displacement": 0.0154, + "center_displacement": { + "x": 0.0002, + "y": 0.0154 + } + } + }, + { + "frame_index": 61, + "timestamp": 1.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.141, + "acceleration": 16.9543, + "fluidity": 0.074, + "expansion": 0.224, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0002, + "y": 0.0024 + } + } + }, + { + "frame_index": 62, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3349, + "acceleration": 19.2106, + "fluidity": 0.066, + "expansion": 0.227, + "total_displacement": 0.0143, + "center_displacement": { + "x": 0.0009, + "y": 0.0143 + } + } + }, + { + "frame_index": 63, + "timestamp": 1.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2284, + "acceleration": 22.9589, + "fluidity": 0.057, + "expansion": 0.227, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0003, + "y": 0.0027 + } + } + }, + { + "frame_index": 64, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1805, + "acceleration": 16.9712, + "fluidity": 0.049, + "expansion": 0.227, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 65, + "timestamp": 1.0833333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3465, + "acceleration": 24.1562, + "fluidity": 0.043, + "expansion": 0.231, + "total_displacement": 0.0107, + "center_displacement": { + "x": 0.0016, + "y": 0.0106 + } + } + }, + { + "frame_index": 66, + "timestamp": 1.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.206, + "acceleration": 24.6307, + "fluidity": 0.037, + "expansion": 0.231, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": 0.0005 + } + } + }, + { + "frame_index": 67, + "timestamp": 1.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2545, + "acceleration": 19.6865, + "fluidity": 0.032, + "expansion": 0.235, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0022, + "y": 0.0042 + } + } + }, + { + "frame_index": 68, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2361, + "acceleration": 19.3326, + "fluidity": 0.028, + "expansion": 0.237, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0014, + "y": 0.0018 + } + } + }, + { + "frame_index": 69, + "timestamp": 1.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1866, + "acceleration": 17.2203, + "fluidity": 0.025, + "expansion": 0.237, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0005, + "y": 0.0007 + } + } + }, + { + "frame_index": 70, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2468, + "acceleration": 17.9569, + "fluidity": 0.021, + "expansion": 0.242, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0044, + "y": -0.0028 + } + } + }, + { + "frame_index": 71, + "timestamp": 1.1833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1892, + "acceleration": 16.9628, + "fluidity": 0.019, + "expansion": 0.242, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0011, + "y": -0.0009 + } + } + }, + { + "frame_index": 72, + "timestamp": 1.2, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3082, + "acceleration": 20.8769, + "fluidity": 0.016, + "expansion": 0.248, + "total_displacement": 0.0102, + "center_displacement": { + "x": 0.0062, + "y": -0.0081 + } + } + }, + { + "frame_index": 73, + "timestamp": 1.2166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.258, + "acceleration": 18.7894, + "fluidity": 0.014, + "expansion": 0.249, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0009, + "y": -0.0047 + } + } + }, + { + "frame_index": 74, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4267, + "acceleration": 24.1119, + "fluidity": 0.012, + "expansion": 0.252, + "total_displacement": 0.0159, + "center_displacement": { + "x": 0.0049, + "y": -0.0151 + } + } + }, + { + "frame_index": 75, + "timestamp": 1.25, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3443, + "acceleration": 24.447, + "fluidity": 0.011, + "expansion": 0.252, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0025, + "y": -0.0059 + } + } + }, + { + "frame_index": 76, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2922, + "acceleration": 20.5096, + "fluidity": 0.009, + "expansion": 0.252, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0005, + "y": -0.0023 + } + } + }, + { + "frame_index": 77, + "timestamp": 1.2833333333333332, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4392, + "acceleration": 25.5796, + "fluidity": 0.008, + "expansion": 0.251, + "total_displacement": 0.0116, + "center_displacement": { + "x": 0.0045, + "y": -0.0107 + } + } + }, + { + "frame_index": 78, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.312, + "acceleration": 25.454, + "fluidity": 0.007, + "expansion": 0.252, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.001, + "y": -0.0027 + } + } + }, + { + "frame_index": 79, + "timestamp": 1.3166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.374, + "acceleration": 22.0903, + "fluidity": 0.006, + "expansion": 0.25, + "total_displacement": 0.0075, + "center_displacement": { + "x": 0.0059, + "y": -0.0048 + } + } + }, + { + "frame_index": 80, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3019, + "acceleration": 23.8408, + "fluidity": 0.005, + "expansion": 0.25, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0013, + "y": -0.0004 + } + } + }, + { + "frame_index": 81, + "timestamp": 1.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2638, + "acceleration": 18.0714, + "fluidity": 0.005, + "expansion": 0.248, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0, + "y": -0.0011 + } + } + }, + { + "frame_index": 82, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3077, + "acceleration": 19.3583, + "fluidity": 0.004, + "expansion": 0.246, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0047, + "y": -0.0013 + } + } + }, + { + "frame_index": 83, + "timestamp": 1.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2445, + "acceleration": 18.1099, + "fluidity": 0.003, + "expansion": 0.246, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0014, + "y": -0.0011 + } + } + }, + { + "frame_index": 84, + "timestamp": 1.4, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2896, + "acceleration": 17.4501, + "fluidity": 0.003, + "expansion": 0.245, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0057, + "y": -0.0007 + } + } + }, + { + "frame_index": 85, + "timestamp": 1.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2406, + "acceleration": 17.0553, + "fluidity": 0.003, + "expansion": 0.245, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.002, + "y": 0.0004 + } + } + }, + { + "frame_index": 86, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2684, + "acceleration": 15.824, + "fluidity": 0.002, + "expansion": 0.244, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.005, + "y": 0.0005 + } + } + }, + { + "frame_index": 87, + "timestamp": 1.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.22, + "acceleration": 15.8399, + "fluidity": 0.002, + "expansion": 0.245, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0013, + "y": 0.0004 + } + } + }, + { + "frame_index": 88, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1953, + "acceleration": 12.62, + "fluidity": 0.002, + "expansion": 0.245, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": 0.0001 + } + } + }, + { + "frame_index": 89, + "timestamp": 1.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.23, + "acceleration": 13.8316, + "fluidity": 0.001, + "expansion": 0.243, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.0038, + "y": -0.0009 + } + } + }, + { + "frame_index": 90, + "timestamp": 1.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1693, + "acceleration": 13.6376, + "fluidity": 0.001, + "expansion": 0.242, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": -0.0001 + } + } + }, + { + "frame_index": 91, + "timestamp": 1.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1981, + "acceleration": 12.5103, + "fluidity": 0.001, + "expansion": 0.24, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0031, + "y": -0.0012 + } + } + }, + { + "frame_index": 92, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1657, + "acceleration": 11.9829, + "fluidity": 0.001, + "expansion": 0.237, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0005, + "y": -0.001 + } + } + }, + { + "frame_index": 93, + "timestamp": 1.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1546, + "acceleration": 9.8336, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0001, + "y": -0.0014 + } + } + }, + { + "frame_index": 94, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1733, + "acceleration": 9.925, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0027, + "y": -0.001 + } + } + }, + { + "frame_index": 95, + "timestamp": 1.5833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.138, + "acceleration": 9.6841, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.001, + "y": 0 + } + } + }, + { + "frame_index": 96, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1584, + "acceleration": 8.9992, + "fluidity": 0.001, + "expansion": 0.238, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0028, + "y": -0.0004 + } + } + }, + { + "frame_index": 97, + "timestamp": 1.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.125, + "acceleration": 9.2114, + "fluidity": 0, + "expansion": 0.239, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": 0 + } + } + }, + { + "frame_index": 98, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1201, + "acceleration": 7.4065, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": -0.0003 + } + } + }, + { + "frame_index": 99, + "timestamp": 1.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1079, + "acceleration": 6.8687, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0003, + "y": -0.0004 + } + } + }, + { + "frame_index": 100, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0935, + "acceleration": 5.9798, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": -0.0003 + } + } + }, + { + "frame_index": 101, + "timestamp": 1.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0962, + "acceleration": 5.6971, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": -0.0003 + } + } + }, + { + "frame_index": 102, + "timestamp": 1.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0824, + "acceleration": 5.1041, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": -0.0003 + } + } + }, + { + "frame_index": 103, + "timestamp": 1.7166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0836, + "acceleration": 4.649, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.001, + "y": 0.0002 + } + } + }, + { + "frame_index": 104, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0755, + "acceleration": 4.1983, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": 0 + } + } + }, + { + "frame_index": 105, + "timestamp": 1.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0641, + "acceleration": 3.8633, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + } + }, + { + "frame_index": 106, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0622, + "acceleration": 3.3395, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0004, + "y": 0 + } + } + }, + { + "frame_index": 107, + "timestamp": 1.7833333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0511, + "acceleration": 3.1939, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + } + }, + { + "frame_index": 108, + "timestamp": 1.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0471, + "acceleration": 2.7221, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + } + }, + { + "frame_index": 109, + "timestamp": 1.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0422, + "acceleration": 2.3512, + "fluidity": 0.063, + "expansion": 0.241, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 110, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0424, + "acceleration": 2.3805, + "fluidity": 0.016, + "expansion": 0.24, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": 0.0001 + } + } + }, + { + "frame_index": 111, + "timestamp": 1.8499999999999999, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.037, + "acceleration": 2.0613, + "fluidity": 0.02, + "expansion": 0.24, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 112, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0325, + "acceleration": 1.8143, + "fluidity": 0.025, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 113, + "timestamp": 1.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 1.8024, + "fluidity": 0.015, + "expansion": 0.239, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + } + }, + { + "frame_index": 114, + "timestamp": 1.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0295, + "acceleration": 1.5649, + "fluidity": 0.015, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 115, + "timestamp": 1.9166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0265, + "acceleration": 1.3648, + "fluidity": 0.014, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + } + }, + { + "frame_index": 116, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0239, + "acceleration": 1.2534, + "fluidity": 0.011, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 117, + "timestamp": 1.95, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0214, + "acceleration": 1.0506, + "fluidity": 0.236, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 118, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0214, + "acceleration": 1.0392, + "fluidity": 0.065, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 119, + "timestamp": 1.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0182, + "acceleration": 0.9469, + "fluidity": 0.078, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 120, + "timestamp": 2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0189, + "acceleration": 0.8829, + "fluidity": 0.095, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + } + }, + { + "frame_index": 121, + "timestamp": 2.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0177, + "acceleration": 0.7531, + "fluidity": 0.13, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0002 + } + } + }, + { + "frame_index": 122, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0176, + "acceleration": 0.6967, + "fluidity": 0.076, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 123, + "timestamp": 2.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0157, + "acceleration": 0.6898, + "fluidity": 0.075, + "expansion": 0.238, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 124, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0142, + "acceleration": 0.5736, + "fluidity": 0.127, + "expansion": 0.238, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 125, + "timestamp": 2.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0189, + "acceleration": 0.8216, + "fluidity": 0.07, + "expansion": 0.238, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0003, + "y": 0.0004 + } + } + }, + { + "frame_index": 126, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.017, + "acceleration": 0.6557, + "fluidity": 0.068, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 127, + "timestamp": 2.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0224, + "acceleration": 0.8202, + "fluidity": 0.066, + "expansion": 0.238, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0003, + "y": 0.0006 + } + } + }, + { + "frame_index": 128, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0225, + "acceleration": 0.6904, + "fluidity": 0.051, + "expansion": 0.238, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0001, + "y": 0.0005 + } + } + }, + { + "frame_index": 129, + "timestamp": 2.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0205, + "acceleration": 0.7196, + "fluidity": 0.046, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 130, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0175, + "acceleration": 0.7882, + "fluidity": 0.041, + "expansion": 0.237, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 131, + "timestamp": 2.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.016, + "acceleration": 0.5634, + "fluidity": 0.215, + "expansion": 0.236, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + } + }, + { + "frame_index": 132, + "timestamp": 2.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0173, + "acceleration": 0.689, + "fluidity": 0.076, + "expansion": 0.234, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + } + }, + { + "frame_index": 133, + "timestamp": 2.216666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0143, + "acceleration": 0.6405, + "fluidity": 0.083, + "expansion": 0.234, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + } + }, + { + "frame_index": 134, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0686, + "acceleration": 3.7773, + "fluidity": 0.093, + "expansion": 0.23, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0, + "y": 0.0038 + } + } + }, + { + "frame_index": 135, + "timestamp": 2.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0536, + "acceleration": 2.9603, + "fluidity": 0.063, + "expansion": 0.229, + "total_displacement": 0.0019, + "center_displacement": { + "x": -0.0001, + "y": 0.0019 + } + } + }, + { + "frame_index": 136, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0569, + "acceleration": 2.1957, + "fluidity": 0.06, + "expansion": 0.229, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0, + "y": 0.0015 + } + } + }, + { + "frame_index": 137, + "timestamp": 2.283333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2019, + "acceleration": 10.2968, + "fluidity": 0.054, + "expansion": 0.227, + "total_displacement": 0.0105, + "center_displacement": { + "x": -0.0003, + "y": 0.0105 + } + } + }, + { + "frame_index": 138, + "timestamp": 2.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1156, + "acceleration": 11.0428, + "fluidity": 0.044, + "expansion": 0.226, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0002, + "y": 0.0025 + } + } + }, + { + "frame_index": 139, + "timestamp": 2.3166666666666664, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2797, + "acceleration": 14.8018, + "fluidity": 0.04, + "expansion": 0.221, + "total_displacement": 0.0124, + "center_displacement": { + "x": -0.0003, + "y": 0.0124 + } + } + }, + { + "frame_index": 140, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2214, + "acceleration": 15.8765, + "fluidity": 0.034, + "expansion": 0.221, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0, + "y": 0.0048 + } + } + }, + { + "frame_index": 141, + "timestamp": 2.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1555, + "acceleration": 14.678, + "fluidity": 0.03, + "expansion": 0.22, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + } + }, + { + "frame_index": 142, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3565, + "acceleration": 22.8035, + "fluidity": 0.026, + "expansion": 0.218, + "total_displacement": 0.0128, + "center_displacement": { + "x": 0, + "y": 0.0128 + } + } + }, + { + "frame_index": 143, + "timestamp": 2.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2303, + "acceleration": 22.0639, + "fluidity": 0.022, + "expansion": 0.218, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0001, + "y": 0.0031 + } + } + }, + { + "frame_index": 144, + "timestamp": 2.4, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3683, + "acceleration": 23.0341, + "fluidity": 0.019, + "expansion": 0.214, + "total_displacement": 0.0122, + "center_displacement": { + "x": 0.0008, + "y": 0.0122 + } + } + }, + { + "frame_index": 145, + "timestamp": 2.4166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2725, + "acceleration": 25.916, + "fluidity": 0.017, + "expansion": 0.214, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0001, + "y": 0.0022 + } + } + }, + { + "frame_index": 146, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2323, + "acceleration": 18.9078, + "fluidity": 0.015, + "expansion": 0.213, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": -0.0003 + } + } + }, + { + "frame_index": 147, + "timestamp": 2.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2271, + "acceleration": 17.3051, + "fluidity": 0.013, + "expansion": 0.213, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": 0.0004 + } + } + }, + { + "frame_index": 148, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1935, + "acceleration": 15.6304, + "fluidity": 0.011, + "expansion": 0.213, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0006, + "y": -0.0003 + } + } + }, + { + "frame_index": 149, + "timestamp": 2.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2306, + "acceleration": 16.3765, + "fluidity": 0.01, + "expansion": 0.212, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0031, + "y": -0.0033 + } + } + }, + { + "frame_index": 150, + "timestamp": 2.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2042, + "acceleration": 13.8859, + "fluidity": 0.008, + "expansion": 0.211, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0009, + "y": -0.0026 + } + } + }, + { + "frame_index": 151, + "timestamp": 2.5166666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3447, + "acceleration": 20.2457, + "fluidity": 0.007, + "expansion": 0.21, + "total_displacement": 0.0125, + "center_displacement": { + "x": 0.003, + "y": -0.0121 + } + } + }, + { + "frame_index": 152, + "timestamp": 2.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2624, + "acceleration": 19.8363, + "fluidity": 0.006, + "expansion": 0.21, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0011, + "y": -0.0044 + } + } + }, + { + "frame_index": 153, + "timestamp": 2.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2262, + "acceleration": 16.141, + "fluidity": 0.006, + "expansion": 0.211, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0007, + "y": -0.0014 + } + } + }, + { + "frame_index": 154, + "timestamp": 2.5666666666666664, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4216, + "acceleration": 25.4549, + "fluidity": 0.005, + "expansion": 0.206, + "total_displacement": 0.0142, + "center_displacement": { + "x": 0.0032, + "y": -0.0139 + } + } + }, + { + "frame_index": 155, + "timestamp": 2.5833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2673, + "acceleration": 25.7738, + "fluidity": 0.004, + "expansion": 0.206, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0011, + "y": -0.0024 + } + } + }, + { + "frame_index": 156, + "timestamp": 2.6, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3323, + "acceleration": 20.6687, + "fluidity": 0.004, + "expansion": 0.201, + "total_displacement": 0.0069, + "center_displacement": { + "x": 0.0023, + "y": -0.0065 + } + } + }, + { + "frame_index": 157, + "timestamp": 2.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3073, + "acceleration": 21.0621, + "fluidity": 0.003, + "expansion": 0.2, + "total_displacement": 0.0035, + "center_displacement": { + "x": 0.001, + "y": -0.0033 + } + } + }, + { + "frame_index": 158, + "timestamp": 2.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2991, + "acceleration": 18.0948, + "fluidity": 0.003, + "expansion": 0.195, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0034, + "y": -0.0034 + } + } + }, + { + "frame_index": 159, + "timestamp": 2.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2577, + "acceleration": 17.9181, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0007, + "y": -0.0014 + } + } + }, + { + "frame_index": 160, + "timestamp": 2.6666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2337, + "acceleration": 14.5879, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0005, + "y": -0.0011 + } + } + }, + { + "frame_index": 161, + "timestamp": 2.683333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2467, + "acceleration": 14.5353, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0031, + "y": -0.0009 + } + } + }, + { + "frame_index": 162, + "timestamp": 2.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2213, + "acceleration": 12.4955, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.0011, + "y": -0.0022 + } + } + }, + { + "frame_index": 163, + "timestamp": 2.716666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2164, + "acceleration": 10.6537, + "fluidity": 0.001, + "expansion": 0.187, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0027, + "y": -0.0006 + } + } + }, + { + "frame_index": 164, + "timestamp": 2.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1839, + "acceleration": 11.1152, + "fluidity": 0.001, + "expansion": 0.186, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0007, + "y": -0.0005 + } + } + }, + { + "frame_index": 165, + "timestamp": 2.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1742, + "acceleration": 8.9315, + "fluidity": 0.001, + "expansion": 0.185, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0008, + "y": -0.001 + } + } + }, + { + "frame_index": 166, + "timestamp": 2.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2067, + "acceleration": 10.3295, + "fluidity": 0.001, + "expansion": 0.18, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0028, + "y": -0.0032 + } + } + }, + { + "frame_index": 167, + "timestamp": 2.783333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1622, + "acceleration": 10.1212, + "fluidity": 0.001, + "expansion": 0.178, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0012, + "y": -0.0007 + } + } + }, + { + "frame_index": 168, + "timestamp": 2.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1856, + "acceleration": 9.0748, + "fluidity": 0.001, + "expansion": 0.177, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0007, + "y": -0.0032 + } + } + }, + { + "frame_index": 169, + "timestamp": 2.8166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.156, + "acceleration": 9.3265, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0006, + "y": -0.001 + } + } + }, + { + "frame_index": 170, + "timestamp": 2.8333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1451, + "acceleration": 7.2397, + "fluidity": 0.001, + "expansion": 0.172, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0013, + "y": -0.0002 + } + } + }, + { + "frame_index": 171, + "timestamp": 2.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1303, + "acceleration": 7.0422, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0004, + "y": -0.0004 + } + } + }, + { + "frame_index": 172, + "timestamp": 2.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1148, + "acceleration": 6.0024, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0001, + "y": -0.0005 + } + } + }, + { + "frame_index": 173, + "timestamp": 2.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.131, + "acceleration": 6.6612, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0022, + "y": 0.0003 + } + } + }, + { + "frame_index": 174, + "timestamp": 2.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1066, + "acceleration": 6.179, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0008, + "y": 0.0002 + } + } + }, + { + "frame_index": 175, + "timestamp": 2.9166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1063, + "acceleration": 5.0441, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0.0001 + } + } + }, + { + "frame_index": 176, + "timestamp": 2.933333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0941, + "acceleration": 5.0755, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0001, + "y": -0.0005 + } + } + }, + { + "frame_index": 177, + "timestamp": 2.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.082, + "acceleration": 4.2463, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": -0.0001 + } + } + }, + { + "frame_index": 178, + "timestamp": 2.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0747, + "acceleration": 3.6591, + "fluidity": 0, + "expansion": 0.167, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 179, + "timestamp": 2.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0671, + "acceleration": 3.2635, + "fluidity": 0.159, + "expansion": 0.166, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 180, + "timestamp": 3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0591, + "acceleration": 2.8652, + "fluidity": 0.04, + "expansion": 0.165, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + } + }, + { + "frame_index": 181, + "timestamp": 3.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0517, + "acceleration": 2.5477, + "fluidity": 0.05, + "expansion": 0.164, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 182, + "timestamp": 3.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0687, + "acceleration": 3.5291, + "fluidity": 0.062, + "expansion": 0.164, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0004, + "y": 0.0016 + } + } + }, + { + "frame_index": 183, + "timestamp": 3.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0566, + "acceleration": 2.9811, + "fluidity": 0.038, + "expansion": 0.164, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0001, + "y": 0.0008 + } + } + }, + { + "frame_index": 184, + "timestamp": 3.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0508, + "acceleration": 2.5782, + "fluidity": 0.037, + "expansion": 0.164, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0, + "y": 0.0004 + } + } + }, + { + "frame_index": 185, + "timestamp": 3.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0475, + "acceleration": 2.4533, + "fluidity": 0.034, + "expansion": 0.16, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 186, + "timestamp": 3.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.044, + "acceleration": 2.1114, + "fluidity": 0.027, + "expansion": 0.159, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + } + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 170, + "left": 1, + "down": 7, + "up": 7, + "right": 2 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 4, + "high": 177, + "medium": 6 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 21, + "fast": 166 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 0.139, + "std": 0.1266, + "min": 0, + "max": 1.051 + }, + "acceleration": { + "mean": 10.2417, + "std": 9.9677, + "min": 0, + "max": 63.0628 + }, + "fluidity": { + "mean": 0.044, + "std": 0.06 + }, + "expansion": { + "mean": 0.21, + "std": 0.03 + }, + "movement_segments": [ + { + "start_frame": 7, + "start_time": 0.11666666666666667, + "peak_velocity": 0.2033, + "dominant_direction": "stationary", + "end_frame": 7, + "end_time": 0.11666666666666667, + "duration": 0 + }, + { + "start_frame": 35, + "start_time": 0.5833333333333334, + "peak_velocity": 0.0316, + "dominant_direction": "stationary", + "end_frame": 35, + "end_time": 0.5833333333333334, + "duration": 0 + }, + { + "start_frame": 46, + "start_time": 0.7666666666666666, + "peak_velocity": 0.0353, + "dominant_direction": "stationary", + "end_frame": 47, + "end_time": 0.7833333333333333, + "duration": 0.01666666666666672 + }, + { + "start_frame": 131, + "start_time": 2.183333333333333, + "peak_velocity": 0.016, + "dominant_direction": "stationary", + "end_frame": 131, + "end_time": 2.183333333333333, + "duration": 0 + }, + { + "start_frame": 179, + "start_time": 2.9833333333333334, + "peak_velocity": 0.0671, + "dominant_direction": "stationary", + "end_frame": 179, + "end_time": 2.9833333333333334, + "duration": 0 + } + ] + } + } + } \ No newline at end of file diff --git a/src/.gradio/cached_examples/9/Output/67da006c6e22d7f3b1b0/mediapipe_full_balette.json b/src/.gradio/cached_examples/9/Output/67da006c6e22d7f3b1b0/mediapipe_full_balette.json new file mode 100644 index 0000000000000000000000000000000000000000..aab0191ab5988ad92c79f65359e3a95dd8cd82d7 --- /dev/null +++ b/src/.gradio/cached_examples/9/Output/67da006c6e22d7f3b1b0/mediapipe_full_balette.json @@ -0,0 +1,3478 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-08T15:21:19.211586", + "version": "1.0.0", + "model_info": { + "name": "mediapipe-full", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 60, + "duration_seconds": 3.1166666666666667, + "width": 1280, + "height": 688, + "frame_count": 187 + }, + "movement_analysis": { + "frame_count": 187, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0.142, + "total_displacement": 0 + } + }, + { + "frame_index": 1, + "timestamp": 0.016666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.051, + "acceleration": 63.0628, + "fluidity": 0, + "expansion": 0.15, + "total_displacement": 0.0175, + "center_displacement": { + "x": -0.0175, + "y": 0.0004 + } + } + }, + { + "frame_index": 2, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0654, + "acceleration": 59.1406, + "fluidity": 0, + "expansion": 0.149, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0011, + "y": -0.0002 + } + } + }, + { + "frame_index": 3, + "timestamp": 0.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2949, + "acceleration": 30.5825, + "fluidity": 0.092, + "expansion": 0.15, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.001, + "y": -0.0002 + } + } + }, + { + "frame_index": 4, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.36, + "acceleration": 38.7168, + "fluidity": 0.023, + "expansion": 0.149, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": -0.0002 + } + } + }, + { + "frame_index": 5, + "timestamp": 0.08333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2096, + "acceleration": 33.4529, + "fluidity": 0.029, + "expansion": 0.151, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.0017, + "y": -0.0011 + } + } + }, + { + "frame_index": 6, + "timestamp": 0.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2213, + "acceleration": 27.1474, + "fluidity": 0.036, + "expansion": 0.152, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0002, + "y": -0.0003 + } + } + }, + { + "frame_index": 7, + "timestamp": 0.11666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.2033, + "acceleration": 24.8517, + "fluidity": 0.16, + "expansion": 0.155, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0001, + "y": 0.0004 + } + } + }, + { + "frame_index": 8, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1729, + "acceleration": 21.8885, + "fluidity": 0.056, + "expansion": 0.156, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.0009, + "y": 0.0001 + } + } + }, + { + "frame_index": 9, + "timestamp": 0.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1527, + "acceleration": 19.1312, + "fluidity": 0.063, + "expansion": 0.156, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 10, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1571, + "acceleration": 17.7603, + "fluidity": 0.07, + "expansion": 0.159, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0001, + "y": -0.0017 + } + } + }, + { + "frame_index": 11, + "timestamp": 0.18333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1276, + "acceleration": 15.7758, + "fluidity": 0.047, + "expansion": 0.16, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0003, + "y": -0.0003 + } + } + }, + { + "frame_index": 12, + "timestamp": 0.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1568, + "acceleration": 15.6038, + "fluidity": 0.045, + "expansion": 0.171, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0032, + "y": -0.0001 + } + } + }, + { + "frame_index": 13, + "timestamp": 0.21666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1198, + "acceleration": 14.5715, + "fluidity": 0.041, + "expansion": 0.173, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0004, + "y": 0.0005 + } + } + }, + { + "frame_index": 14, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1172, + "acceleration": 11.8933, + "fluidity": 0.033, + "expansion": 0.173, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0007, + "y": 0.0008 + } + } + }, + { + "frame_index": 15, + "timestamp": 0.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1102, + "acceleration": 10.778, + "fluidity": 0.03, + "expansion": 0.172, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0008, + "y": 0.0002 + } + } + }, + { + "frame_index": 16, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0949, + "acceleration": 9.5334, + "fluidity": 0.026, + "expansion": 0.172, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0, + "y": 0.0005 + } + } + }, + { + "frame_index": 17, + "timestamp": 0.2833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0866, + "acceleration": 8.1758, + "fluidity": 0.022, + "expansion": 0.174, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0004, + "y": 0 + } + } + }, + { + "frame_index": 18, + "timestamp": 0.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0767, + "acceleration": 7.2556, + "fluidity": 0.019, + "expansion": 0.175, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 19, + "timestamp": 0.31666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0817, + "acceleration": 7.042, + "fluidity": 0.017, + "expansion": 0.177, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0011, + "y": 0 + } + } + }, + { + "frame_index": 20, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0676, + "acceleration": 6.2615, + "fluidity": 0.015, + "expansion": 0.179, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0003, + "y": 0.0003 + } + } + }, + { + "frame_index": 21, + "timestamp": 0.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0607, + "acceleration": 5.2741, + "fluidity": 0.013, + "expansion": 0.179, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0 + } + } + }, + { + "frame_index": 22, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0578, + "acceleration": 4.7129, + "fluidity": 0.011, + "expansion": 0.183, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0002, + "y": 0.0003 + } + } + }, + { + "frame_index": 23, + "timestamp": 0.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0493, + "acceleration": 4.2135, + "fluidity": 0.01, + "expansion": 0.183, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 24, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0724, + "acceleration": 5.2104, + "fluidity": 0.008, + "expansion": 0.191, + "total_displacement": 0.002, + "center_displacement": { + "x": -0.0018, + "y": 0.0009 + } + } + }, + { + "frame_index": 25, + "timestamp": 0.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0467, + "acceleration": 5.2539, + "fluidity": 0.007, + "expansion": 0.191, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 26, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0614, + "acceleration": 4.7211, + "fluidity": 0.006, + "expansion": 0.192, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0013, + "y": -0.0001 + } + } + }, + { + "frame_index": 27, + "timestamp": 0.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0493, + "acceleration": 4.7025, + "fluidity": 0.005, + "expansion": 0.191, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": -0.0001 + } + } + }, + { + "frame_index": 28, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0441, + "acceleration": 3.7031, + "fluidity": 0.086, + "expansion": 0.191, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 29, + "timestamp": 0.48333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0545, + "acceleration": 3.9435, + "fluidity": 0.024, + "expansion": 0.192, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0008, + "y": 0.0007 + } + } + }, + { + "frame_index": 30, + "timestamp": 0.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0412, + "acceleration": 3.7837, + "fluidity": 0.029, + "expansion": 0.192, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 31, + "timestamp": 0.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0436, + "acceleration": 3.1217, + "fluidity": 0.035, + "expansion": 0.192, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0, + "y": -0.0006 + } + } + }, + { + "frame_index": 32, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0395, + "acceleration": 2.9474, + "fluidity": 0.022, + "expansion": 0.192, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 33, + "timestamp": 0.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 2.5603, + "fluidity": 0.022, + "expansion": 0.192, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + } + }, + { + "frame_index": 34, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 2.2634, + "fluidity": 0.02, + "expansion": 0.193, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 35, + "timestamp": 0.5833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0316, + "acceleration": 1.9529, + "fluidity": 0.215, + "expansion": 0.194, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + } + }, + { + "frame_index": 36, + "timestamp": 0.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0364, + "acceleration": 2.1029, + "fluidity": 0.064, + "expansion": 0.196, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0006, + "y": -0.0004 + } + } + }, + { + "frame_index": 37, + "timestamp": 0.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.028, + "acceleration": 2.1194, + "fluidity": 0.075, + "expansion": 0.197, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + } + }, + { + "frame_index": 38, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0276, + "acceleration": 1.6102, + "fluidity": 0.088, + "expansion": 0.2, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 39, + "timestamp": 0.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0241, + "acceleration": 1.6084, + "fluidity": 0.057, + "expansion": 0.201, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 40, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0211, + "acceleration": 1.3391, + "fluidity": 0.282, + "expansion": 0.201, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 41, + "timestamp": 0.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0365, + "acceleration": 2.1662, + "fluidity": 0.107, + "expansion": 0.205, + "total_displacement": 0.0012, + "center_displacement": { + "x": -0.0004, + "y": 0.0011 + } + } + }, + { + "frame_index": 42, + "timestamp": 0.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0301, + "acceleration": 1.7959, + "fluidity": 0.111, + "expansion": 0.206, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0003, + "y": 0.0005 + } + } + }, + { + "frame_index": 43, + "timestamp": 0.7166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0458, + "acceleration": 2.1795, + "fluidity": 0.125, + "expansion": 0.21, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0004, + "y": 0.0015 + } + } + }, + { + "frame_index": 44, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0477, + "acceleration": 1.79, + "fluidity": 0.086, + "expansion": 0.211, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0004, + "y": 0.0012 + } + } + }, + { + "frame_index": 45, + "timestamp": 0.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.034, + "acceleration": 2.4349, + "fluidity": 0.081, + "expansion": 0.211, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 46, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0353, + "acceleration": 1.6237, + "fluidity": 0.21, + "expansion": 0.213, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 47, + "timestamp": 0.7833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0329, + "acceleration": 1.47, + "fluidity": 0.305, + "expansion": 0.214, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 48, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0299, + "acceleration": 1.4263, + "fluidity": 0.178, + "expansion": 0.215, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0 + } + } + }, + { + "frame_index": 49, + "timestamp": 0.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0277, + "acceleration": 1.1971, + "fluidity": 0.173, + "expansion": 0.215, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + } + }, + { + "frame_index": 50, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0376, + "acceleration": 1.7321, + "fluidity": 0.164, + "expansion": 0.215, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0005, + "y": -0.0008 + } + } + }, + { + "frame_index": 51, + "timestamp": 0.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0346, + "acceleration": 1.3423, + "fluidity": 0.129, + "expansion": 0.215, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0003, + "y": -0.0006 + } + } + }, + { + "frame_index": 52, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0332, + "acceleration": 1.2208, + "fluidity": 0.117, + "expansion": 0.215, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0002, + "y": -0.0005 + } + } + }, + { + "frame_index": 53, + "timestamp": 0.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0281, + "acceleration": 1.4679, + "fluidity": 0.102, + "expansion": 0.215, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + } + }, + { + "frame_index": 54, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0256, + "acceleration": 1.01, + "fluidity": 0.326, + "expansion": 0.215, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 55, + "timestamp": 0.9166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0329, + "acceleration": 1.495, + "fluidity": 0.136, + "expansion": 0.216, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": 0 + } + } + }, + { + "frame_index": 56, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0308, + "acceleration": 1.1118, + "fluidity": 0.141, + "expansion": 0.217, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0.0001 + } + } + }, + { + "frame_index": 57, + "timestamp": 0.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0273, + "acceleration": 1.1554, + "fluidity": 0.151, + "expansion": 0.218, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 58, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0794, + "acceleration": 4.0386, + "fluidity": 0.107, + "expansion": 0.22, + "total_displacement": 0.0038, + "center_displacement": { + "x": -0.0001, + "y": 0.0038 + } + } + }, + { + "frame_index": 59, + "timestamp": 0.9833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0663, + "acceleration": 3.06, + "fluidity": 0.1, + "expansion": 0.221, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0001, + "y": 0.0021 + } + } + }, + { + "frame_index": 60, + "timestamp": 1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.274, + "acceleration": 13.9959, + "fluidity": 0.089, + "expansion": 0.223, + "total_displacement": 0.0154, + "center_displacement": { + "x": 0.0002, + "y": 0.0154 + } + } + }, + { + "frame_index": 61, + "timestamp": 1.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.141, + "acceleration": 16.9543, + "fluidity": 0.074, + "expansion": 0.224, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0002, + "y": 0.0024 + } + } + }, + { + "frame_index": 62, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3349, + "acceleration": 19.2106, + "fluidity": 0.066, + "expansion": 0.227, + "total_displacement": 0.0143, + "center_displacement": { + "x": 0.0009, + "y": 0.0143 + } + } + }, + { + "frame_index": 63, + "timestamp": 1.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2284, + "acceleration": 22.9589, + "fluidity": 0.057, + "expansion": 0.227, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0003, + "y": 0.0027 + } + } + }, + { + "frame_index": 64, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1805, + "acceleration": 16.9712, + "fluidity": 0.049, + "expansion": 0.227, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 65, + "timestamp": 1.0833333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3465, + "acceleration": 24.1562, + "fluidity": 0.043, + "expansion": 0.231, + "total_displacement": 0.0107, + "center_displacement": { + "x": 0.0016, + "y": 0.0106 + } + } + }, + { + "frame_index": 66, + "timestamp": 1.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.206, + "acceleration": 24.6307, + "fluidity": 0.037, + "expansion": 0.231, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": 0.0005 + } + } + }, + { + "frame_index": 67, + "timestamp": 1.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2545, + "acceleration": 19.6865, + "fluidity": 0.032, + "expansion": 0.235, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0022, + "y": 0.0042 + } + } + }, + { + "frame_index": 68, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2361, + "acceleration": 19.3326, + "fluidity": 0.028, + "expansion": 0.237, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0014, + "y": 0.0018 + } + } + }, + { + "frame_index": 69, + "timestamp": 1.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1866, + "acceleration": 17.2203, + "fluidity": 0.025, + "expansion": 0.237, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0005, + "y": 0.0007 + } + } + }, + { + "frame_index": 70, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2468, + "acceleration": 17.9569, + "fluidity": 0.021, + "expansion": 0.242, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0044, + "y": -0.0028 + } + } + }, + { + "frame_index": 71, + "timestamp": 1.1833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1892, + "acceleration": 16.9628, + "fluidity": 0.019, + "expansion": 0.242, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0011, + "y": -0.0009 + } + } + }, + { + "frame_index": 72, + "timestamp": 1.2, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3082, + "acceleration": 20.8769, + "fluidity": 0.016, + "expansion": 0.248, + "total_displacement": 0.0102, + "center_displacement": { + "x": 0.0062, + "y": -0.0081 + } + } + }, + { + "frame_index": 73, + "timestamp": 1.2166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.258, + "acceleration": 18.7894, + "fluidity": 0.014, + "expansion": 0.249, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0009, + "y": -0.0047 + } + } + }, + { + "frame_index": 74, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4267, + "acceleration": 24.1119, + "fluidity": 0.012, + "expansion": 0.252, + "total_displacement": 0.0159, + "center_displacement": { + "x": 0.0049, + "y": -0.0151 + } + } + }, + { + "frame_index": 75, + "timestamp": 1.25, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3443, + "acceleration": 24.447, + "fluidity": 0.011, + "expansion": 0.252, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0025, + "y": -0.0059 + } + } + }, + { + "frame_index": 76, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2922, + "acceleration": 20.5096, + "fluidity": 0.009, + "expansion": 0.252, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0005, + "y": -0.0023 + } + } + }, + { + "frame_index": 77, + "timestamp": 1.2833333333333332, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4392, + "acceleration": 25.5796, + "fluidity": 0.008, + "expansion": 0.251, + "total_displacement": 0.0116, + "center_displacement": { + "x": 0.0045, + "y": -0.0107 + } + } + }, + { + "frame_index": 78, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.312, + "acceleration": 25.454, + "fluidity": 0.007, + "expansion": 0.252, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.001, + "y": -0.0027 + } + } + }, + { + "frame_index": 79, + "timestamp": 1.3166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.374, + "acceleration": 22.0903, + "fluidity": 0.006, + "expansion": 0.25, + "total_displacement": 0.0075, + "center_displacement": { + "x": 0.0059, + "y": -0.0048 + } + } + }, + { + "frame_index": 80, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3019, + "acceleration": 23.8408, + "fluidity": 0.005, + "expansion": 0.25, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0013, + "y": -0.0004 + } + } + }, + { + "frame_index": 81, + "timestamp": 1.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2638, + "acceleration": 18.0714, + "fluidity": 0.005, + "expansion": 0.248, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0, + "y": -0.0011 + } + } + }, + { + "frame_index": 82, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3077, + "acceleration": 19.3583, + "fluidity": 0.004, + "expansion": 0.246, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0047, + "y": -0.0013 + } + } + }, + { + "frame_index": 83, + "timestamp": 1.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2445, + "acceleration": 18.1099, + "fluidity": 0.003, + "expansion": 0.246, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0014, + "y": -0.0011 + } + } + }, + { + "frame_index": 84, + "timestamp": 1.4, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2896, + "acceleration": 17.4501, + "fluidity": 0.003, + "expansion": 0.245, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0057, + "y": -0.0007 + } + } + }, + { + "frame_index": 85, + "timestamp": 1.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2406, + "acceleration": 17.0553, + "fluidity": 0.003, + "expansion": 0.245, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.002, + "y": 0.0004 + } + } + }, + { + "frame_index": 86, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2684, + "acceleration": 15.824, + "fluidity": 0.002, + "expansion": 0.244, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.005, + "y": 0.0005 + } + } + }, + { + "frame_index": 87, + "timestamp": 1.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.22, + "acceleration": 15.8399, + "fluidity": 0.002, + "expansion": 0.245, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0013, + "y": 0.0004 + } + } + }, + { + "frame_index": 88, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1953, + "acceleration": 12.62, + "fluidity": 0.002, + "expansion": 0.245, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": 0.0001 + } + } + }, + { + "frame_index": 89, + "timestamp": 1.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.23, + "acceleration": 13.8316, + "fluidity": 0.001, + "expansion": 0.243, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.0038, + "y": -0.0009 + } + } + }, + { + "frame_index": 90, + "timestamp": 1.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1693, + "acceleration": 13.6376, + "fluidity": 0.001, + "expansion": 0.242, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": -0.0001 + } + } + }, + { + "frame_index": 91, + "timestamp": 1.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1981, + "acceleration": 12.5103, + "fluidity": 0.001, + "expansion": 0.24, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0031, + "y": -0.0012 + } + } + }, + { + "frame_index": 92, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1657, + "acceleration": 11.9829, + "fluidity": 0.001, + "expansion": 0.237, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0005, + "y": -0.001 + } + } + }, + { + "frame_index": 93, + "timestamp": 1.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1546, + "acceleration": 9.8336, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0001, + "y": -0.0014 + } + } + }, + { + "frame_index": 94, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1733, + "acceleration": 9.925, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0027, + "y": -0.001 + } + } + }, + { + "frame_index": 95, + "timestamp": 1.5833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.138, + "acceleration": 9.6841, + "fluidity": 0.001, + "expansion": 0.236, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.001, + "y": 0 + } + } + }, + { + "frame_index": 96, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1584, + "acceleration": 8.9992, + "fluidity": 0.001, + "expansion": 0.238, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0028, + "y": -0.0004 + } + } + }, + { + "frame_index": 97, + "timestamp": 1.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.125, + "acceleration": 9.2114, + "fluidity": 0, + "expansion": 0.239, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": 0 + } + } + }, + { + "frame_index": 98, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1201, + "acceleration": 7.4065, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": -0.0003 + } + } + }, + { + "frame_index": 99, + "timestamp": 1.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1079, + "acceleration": 6.8687, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0003, + "y": -0.0004 + } + } + }, + { + "frame_index": 100, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0935, + "acceleration": 5.9798, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": -0.0003 + } + } + }, + { + "frame_index": 101, + "timestamp": 1.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0962, + "acceleration": 5.6971, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": -0.0003 + } + } + }, + { + "frame_index": 102, + "timestamp": 1.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0824, + "acceleration": 5.1041, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": -0.0003 + } + } + }, + { + "frame_index": 103, + "timestamp": 1.7166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0836, + "acceleration": 4.649, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.001, + "y": 0.0002 + } + } + }, + { + "frame_index": 104, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0755, + "acceleration": 4.1983, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": 0 + } + } + }, + { + "frame_index": 105, + "timestamp": 1.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0641, + "acceleration": 3.8633, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + } + }, + { + "frame_index": 106, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0622, + "acceleration": 3.3395, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0004, + "y": 0 + } + } + }, + { + "frame_index": 107, + "timestamp": 1.7833333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0511, + "acceleration": 3.1939, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + } + }, + { + "frame_index": 108, + "timestamp": 1.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0471, + "acceleration": 2.7221, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + } + }, + { + "frame_index": 109, + "timestamp": 1.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0422, + "acceleration": 2.3512, + "fluidity": 0.063, + "expansion": 0.241, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 110, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0424, + "acceleration": 2.3805, + "fluidity": 0.016, + "expansion": 0.24, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": 0.0001 + } + } + }, + { + "frame_index": 111, + "timestamp": 1.8499999999999999, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.037, + "acceleration": 2.0613, + "fluidity": 0.02, + "expansion": 0.24, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + } + }, + { + "frame_index": 112, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0325, + "acceleration": 1.8143, + "fluidity": 0.025, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 113, + "timestamp": 1.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0341, + "acceleration": 1.8024, + "fluidity": 0.015, + "expansion": 0.239, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + } + }, + { + "frame_index": 114, + "timestamp": 1.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0295, + "acceleration": 1.5649, + "fluidity": 0.015, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 115, + "timestamp": 1.9166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0265, + "acceleration": 1.3648, + "fluidity": 0.014, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + } + }, + { + "frame_index": 116, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0239, + "acceleration": 1.2534, + "fluidity": 0.011, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 117, + "timestamp": 1.95, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0214, + "acceleration": 1.0506, + "fluidity": 0.236, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 118, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0214, + "acceleration": 1.0392, + "fluidity": 0.065, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + } + }, + { + "frame_index": 119, + "timestamp": 1.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0182, + "acceleration": 0.9469, + "fluidity": 0.078, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + } + }, + { + "frame_index": 120, + "timestamp": 2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0189, + "acceleration": 0.8829, + "fluidity": 0.095, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + } + }, + { + "frame_index": 121, + "timestamp": 2.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0177, + "acceleration": 0.7531, + "fluidity": 0.13, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0002 + } + } + }, + { + "frame_index": 122, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0176, + "acceleration": 0.6967, + "fluidity": 0.076, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 123, + "timestamp": 2.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0157, + "acceleration": 0.6898, + "fluidity": 0.075, + "expansion": 0.238, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 124, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0142, + "acceleration": 0.5736, + "fluidity": 0.127, + "expansion": 0.238, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + } + }, + { + "frame_index": 125, + "timestamp": 2.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0189, + "acceleration": 0.8216, + "fluidity": 0.07, + "expansion": 0.238, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0003, + "y": 0.0004 + } + } + }, + { + "frame_index": 126, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.017, + "acceleration": 0.6557, + "fluidity": 0.068, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 127, + "timestamp": 2.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0224, + "acceleration": 0.8202, + "fluidity": 0.066, + "expansion": 0.238, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0003, + "y": 0.0006 + } + } + }, + { + "frame_index": 128, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0225, + "acceleration": 0.6904, + "fluidity": 0.051, + "expansion": 0.238, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0001, + "y": 0.0005 + } + } + }, + { + "frame_index": 129, + "timestamp": 2.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0205, + "acceleration": 0.7196, + "fluidity": 0.046, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": 0.0003 + } + } + }, + { + "frame_index": 130, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0175, + "acceleration": 0.7882, + "fluidity": 0.041, + "expansion": 0.237, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 131, + "timestamp": 2.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.016, + "acceleration": 0.5634, + "fluidity": 0.215, + "expansion": 0.236, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + } + }, + { + "frame_index": 132, + "timestamp": 2.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0173, + "acceleration": 0.689, + "fluidity": 0.076, + "expansion": 0.234, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + } + }, + { + "frame_index": 133, + "timestamp": 2.216666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0143, + "acceleration": 0.6405, + "fluidity": 0.083, + "expansion": 0.234, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + } + }, + { + "frame_index": 134, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0686, + "acceleration": 3.7773, + "fluidity": 0.093, + "expansion": 0.23, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0, + "y": 0.0038 + } + } + }, + { + "frame_index": 135, + "timestamp": 2.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0536, + "acceleration": 2.9603, + "fluidity": 0.063, + "expansion": 0.229, + "total_displacement": 0.0019, + "center_displacement": { + "x": -0.0001, + "y": 0.0019 + } + } + }, + { + "frame_index": 136, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0569, + "acceleration": 2.1957, + "fluidity": 0.06, + "expansion": 0.229, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0, + "y": 0.0015 + } + } + }, + { + "frame_index": 137, + "timestamp": 2.283333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2019, + "acceleration": 10.2968, + "fluidity": 0.054, + "expansion": 0.227, + "total_displacement": 0.0105, + "center_displacement": { + "x": -0.0003, + "y": 0.0105 + } + } + }, + { + "frame_index": 138, + "timestamp": 2.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1156, + "acceleration": 11.0428, + "fluidity": 0.044, + "expansion": 0.226, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0002, + "y": 0.0025 + } + } + }, + { + "frame_index": 139, + "timestamp": 2.3166666666666664, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2797, + "acceleration": 14.8018, + "fluidity": 0.04, + "expansion": 0.221, + "total_displacement": 0.0124, + "center_displacement": { + "x": -0.0003, + "y": 0.0124 + } + } + }, + { + "frame_index": 140, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2214, + "acceleration": 15.8765, + "fluidity": 0.034, + "expansion": 0.221, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0, + "y": 0.0048 + } + } + }, + { + "frame_index": 141, + "timestamp": 2.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1555, + "acceleration": 14.678, + "fluidity": 0.03, + "expansion": 0.22, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + } + }, + { + "frame_index": 142, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3565, + "acceleration": 22.8035, + "fluidity": 0.026, + "expansion": 0.218, + "total_displacement": 0.0128, + "center_displacement": { + "x": 0, + "y": 0.0128 + } + } + }, + { + "frame_index": 143, + "timestamp": 2.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2303, + "acceleration": 22.0639, + "fluidity": 0.022, + "expansion": 0.218, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0001, + "y": 0.0031 + } + } + }, + { + "frame_index": 144, + "timestamp": 2.4, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3683, + "acceleration": 23.0341, + "fluidity": 0.019, + "expansion": 0.214, + "total_displacement": 0.0122, + "center_displacement": { + "x": 0.0008, + "y": 0.0122 + } + } + }, + { + "frame_index": 145, + "timestamp": 2.4166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2725, + "acceleration": 25.916, + "fluidity": 0.017, + "expansion": 0.214, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0001, + "y": 0.0022 + } + } + }, + { + "frame_index": 146, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2323, + "acceleration": 18.9078, + "fluidity": 0.015, + "expansion": 0.213, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": -0.0003 + } + } + }, + { + "frame_index": 147, + "timestamp": 2.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2271, + "acceleration": 17.3051, + "fluidity": 0.013, + "expansion": 0.213, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": 0.0004 + } + } + }, + { + "frame_index": 148, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1935, + "acceleration": 15.6304, + "fluidity": 0.011, + "expansion": 0.213, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0006, + "y": -0.0003 + } + } + }, + { + "frame_index": 149, + "timestamp": 2.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2306, + "acceleration": 16.3765, + "fluidity": 0.01, + "expansion": 0.212, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0031, + "y": -0.0033 + } + } + }, + { + "frame_index": 150, + "timestamp": 2.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2042, + "acceleration": 13.8859, + "fluidity": 0.008, + "expansion": 0.211, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0009, + "y": -0.0026 + } + } + }, + { + "frame_index": 151, + "timestamp": 2.5166666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3447, + "acceleration": 20.2457, + "fluidity": 0.007, + "expansion": 0.21, + "total_displacement": 0.0125, + "center_displacement": { + "x": 0.003, + "y": -0.0121 + } + } + }, + { + "frame_index": 152, + "timestamp": 2.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2624, + "acceleration": 19.8363, + "fluidity": 0.006, + "expansion": 0.21, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0011, + "y": -0.0044 + } + } + }, + { + "frame_index": 153, + "timestamp": 2.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2262, + "acceleration": 16.141, + "fluidity": 0.006, + "expansion": 0.211, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0007, + "y": -0.0014 + } + } + }, + { + "frame_index": 154, + "timestamp": 2.5666666666666664, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4216, + "acceleration": 25.4549, + "fluidity": 0.005, + "expansion": 0.206, + "total_displacement": 0.0142, + "center_displacement": { + "x": 0.0032, + "y": -0.0139 + } + } + }, + { + "frame_index": 155, + "timestamp": 2.5833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2673, + "acceleration": 25.7738, + "fluidity": 0.004, + "expansion": 0.206, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0011, + "y": -0.0024 + } + } + }, + { + "frame_index": 156, + "timestamp": 2.6, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3323, + "acceleration": 20.6687, + "fluidity": 0.004, + "expansion": 0.201, + "total_displacement": 0.0069, + "center_displacement": { + "x": 0.0023, + "y": -0.0065 + } + } + }, + { + "frame_index": 157, + "timestamp": 2.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3073, + "acceleration": 21.0621, + "fluidity": 0.003, + "expansion": 0.2, + "total_displacement": 0.0035, + "center_displacement": { + "x": 0.001, + "y": -0.0033 + } + } + }, + { + "frame_index": 158, + "timestamp": 2.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2991, + "acceleration": 18.0948, + "fluidity": 0.003, + "expansion": 0.195, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0034, + "y": -0.0034 + } + } + }, + { + "frame_index": 159, + "timestamp": 2.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2577, + "acceleration": 17.9181, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0007, + "y": -0.0014 + } + } + }, + { + "frame_index": 160, + "timestamp": 2.6666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2337, + "acceleration": 14.5879, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0005, + "y": -0.0011 + } + } + }, + { + "frame_index": 161, + "timestamp": 2.683333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2467, + "acceleration": 14.5353, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0031, + "y": -0.0009 + } + } + }, + { + "frame_index": 162, + "timestamp": 2.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2213, + "acceleration": 12.4955, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.0011, + "y": -0.0022 + } + } + }, + { + "frame_index": 163, + "timestamp": 2.716666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2164, + "acceleration": 10.6537, + "fluidity": 0.001, + "expansion": 0.187, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0027, + "y": -0.0006 + } + } + }, + { + "frame_index": 164, + "timestamp": 2.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1839, + "acceleration": 11.1152, + "fluidity": 0.001, + "expansion": 0.186, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0007, + "y": -0.0005 + } + } + }, + { + "frame_index": 165, + "timestamp": 2.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1742, + "acceleration": 8.9315, + "fluidity": 0.001, + "expansion": 0.185, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0008, + "y": -0.001 + } + } + }, + { + "frame_index": 166, + "timestamp": 2.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2067, + "acceleration": 10.3295, + "fluidity": 0.001, + "expansion": 0.18, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0028, + "y": -0.0032 + } + } + }, + { + "frame_index": 167, + "timestamp": 2.783333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1622, + "acceleration": 10.1212, + "fluidity": 0.001, + "expansion": 0.178, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0012, + "y": -0.0007 + } + } + }, + { + "frame_index": 168, + "timestamp": 2.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1856, + "acceleration": 9.0748, + "fluidity": 0.001, + "expansion": 0.177, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0007, + "y": -0.0032 + } + } + }, + { + "frame_index": 169, + "timestamp": 2.8166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.156, + "acceleration": 9.3265, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0006, + "y": -0.001 + } + } + }, + { + "frame_index": 170, + "timestamp": 2.8333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1451, + "acceleration": 7.2397, + "fluidity": 0.001, + "expansion": 0.172, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0013, + "y": -0.0002 + } + } + }, + { + "frame_index": 171, + "timestamp": 2.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1303, + "acceleration": 7.0422, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0004, + "y": -0.0004 + } + } + }, + { + "frame_index": 172, + "timestamp": 2.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1148, + "acceleration": 6.0024, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0001, + "y": -0.0005 + } + } + }, + { + "frame_index": 173, + "timestamp": 2.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.131, + "acceleration": 6.6612, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0022, + "y": 0.0003 + } + } + }, + { + "frame_index": 174, + "timestamp": 2.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1066, + "acceleration": 6.179, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0008, + "y": 0.0002 + } + } + }, + { + "frame_index": 175, + "timestamp": 2.9166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1063, + "acceleration": 5.0441, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0.0001 + } + } + }, + { + "frame_index": 176, + "timestamp": 2.933333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0941, + "acceleration": 5.0755, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0001, + "y": -0.0005 + } + } + }, + { + "frame_index": 177, + "timestamp": 2.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.082, + "acceleration": 4.2463, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": -0.0001 + } + } + }, + { + "frame_index": 178, + "timestamp": 2.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0747, + "acceleration": 3.6591, + "fluidity": 0, + "expansion": 0.167, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + } + }, + { + "frame_index": 179, + "timestamp": 2.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0671, + "acceleration": 3.2635, + "fluidity": 0.159, + "expansion": 0.166, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + } + }, + { + "frame_index": 180, + "timestamp": 3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0591, + "acceleration": 2.8652, + "fluidity": 0.04, + "expansion": 0.165, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + } + }, + { + "frame_index": 181, + "timestamp": 3.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0517, + "acceleration": 2.5477, + "fluidity": 0.05, + "expansion": 0.164, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + } + }, + { + "frame_index": 182, + "timestamp": 3.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0687, + "acceleration": 3.5291, + "fluidity": 0.062, + "expansion": 0.164, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0004, + "y": 0.0016 + } + } + }, + { + "frame_index": 183, + "timestamp": 3.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0566, + "acceleration": 2.9811, + "fluidity": 0.038, + "expansion": 0.164, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0001, + "y": 0.0008 + } + } + }, + { + "frame_index": 184, + "timestamp": 3.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0508, + "acceleration": 2.5782, + "fluidity": 0.037, + "expansion": 0.164, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0, + "y": 0.0004 + } + } + }, + { + "frame_index": 185, + "timestamp": 3.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0475, + "acceleration": 2.4533, + "fluidity": 0.034, + "expansion": 0.16, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + } + }, + { + "frame_index": 186, + "timestamp": 3.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.044, + "acceleration": 2.1114, + "fluidity": 0.027, + "expansion": 0.159, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + } + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 170, + "left": 1, + "down": 7, + "up": 7, + "right": 2 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 4, + "high": 177, + "medium": 6 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 21, + "fast": 166 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 0.139, + "std": 0.1266, + "min": 0, + "max": 1.051 + }, + "acceleration": { + "mean": 10.2417, + "std": 9.9677, + "min": 0, + "max": 63.0628 + }, + "fluidity": { + "mean": 0.044, + "std": 0.06 + }, + "expansion": { + "mean": 0.21, + "std": 0.03 + }, + "movement_segments": [ + { + "start_frame": 7, + "start_time": 0.11666666666666667, + "peak_velocity": 0.2033, + "dominant_direction": "stationary", + "end_frame": 7, + "end_time": 0.11666666666666667, + "duration": 0 + }, + { + "start_frame": 35, + "start_time": 0.5833333333333334, + "peak_velocity": 0.0316, + "dominant_direction": "stationary", + "end_frame": 35, + "end_time": 0.5833333333333334, + "duration": 0 + }, + { + "start_frame": 46, + "start_time": 0.7666666666666666, + "peak_velocity": 0.0353, + "dominant_direction": "stationary", + "end_frame": 47, + "end_time": 0.7833333333333333, + "duration": 0.01666666666666672 + }, + { + "start_frame": 131, + "start_time": 2.183333333333333, + "peak_velocity": 0.016, + "dominant_direction": "stationary", + "end_frame": 131, + "end_time": 2.183333333333333, + "duration": 0 + }, + { + "start_frame": 179, + "start_time": 2.9833333333333334, + "peak_velocity": 0.0671, + "dominant_direction": "stationary", + "end_frame": 179, + "end_time": 2.9833333333333334, + "duration": 0 + } + ] + } + } + } \ No newline at end of file diff --git a/src/.gradio/cached_examples/9/log.csv b/src/.gradio/cached_examples/9/log.csv new file mode 100644 index 0000000000000000000000000000000000000000..5f2053f67749e198472d76cb2f50d0fd4f4cf793 --- /dev/null +++ b/src/.gradio/cached_examples/9/log.csv @@ -0,0 +1,3 @@ +Output,timestamp +"{""json_file"": {""path"": "".gradio/cached_examples/9/Output/6444ff5b7cd73ce6e3ac/mediapipe_full_balette.json"", ""url"": ""/gradio_api/file=/private/var/folders/wz/v3427jc170563frpfjc2z0240000gn/T/gradio/bf1e2669e09e83253c3e09a2dc343da3ab9e39adce656e201a4288d05210f036/mediapipe_full_balette.json"", ""size"": null, ""orig_name"": ""mediapipe_full_balette.json"", ""mime_type"": null, ""is_stream"": false, ""meta"": {""_type"": ""gradio.FileData""}}, ""video"": {""path"": "".gradio/cached_examples/9/Output/3e1643b3cd3925885fe5/balette.mp4"", ""url"": ""/gradio_api/file=/private/var/folders/wz/v3427jc170563frpfjc2z0240000gn/T/gradio/3a7815d060e9046b7a136f4c135a1e8f1ae2173d66391ee985e7c786cc13643d/balette.mp4"", ""size"": null, ""orig_name"": ""balette.mp4"", ""mime_type"": null, ""is_stream"": false, ""meta"": {""_type"": ""gradio.FileData""}}}",2025-06-08 18:59:34.744472 +"{""json_file"": {""path"": "".gradio/cached_examples/9/Output/67da006c6e22d7f3b1b0/mediapipe_full_balette.json"", ""url"": ""/gradio_api/file=/private/var/folders/wz/v3427jc170563frpfjc2z0240000gn/T/gradio/bf1e2669e09e83253c3e09a2dc343da3ab9e39adce656e201a4288d05210f036/mediapipe_full_balette.json"", ""size"": null, ""orig_name"": ""mediapipe_full_balette.json"", ""mime_type"": null, ""is_stream"": false, ""meta"": {""_type"": ""gradio.FileData""}}, ""video"": null}",2025-06-08 18:59:34.755591 diff --git a/src/.gradio/flagged/dataset1.csv b/src/.gradio/flagged/dataset1.csv new file mode 100644 index 0000000000000000000000000000000000000000..1c21161aecbb96a1d9868bddfb3daf9f5f570cb4 --- /dev/null +++ b/src/.gradio/flagged/dataset1.csv @@ -0,0 +1,3 @@ +x,output,timestamp +"{""video"": "".gradio/flagged/x/949d27b917ca4cf29777/balette.mp4"", ""subtitles"": null}","{""video"": "".gradio/flagged/output/f270170a4a91ac730c49/balette.mp4"", ""subtitles"": null}",2025-06-08 12:30:56.261942 +"{""video"": "".gradio/flagged/x/97ecfa403560d9ee017f/world.mp4"", ""subtitles"": null}",,2025-06-08 12:49:54.452684 diff --git a/src/.gradio/flagged/output/f270170a4a91ac730c49/balette.mp4 b/src/.gradio/flagged/output/f270170a4a91ac730c49/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/src/.gradio/flagged/output/f270170a4a91ac730c49/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/src/.gradio/flagged/x/949d27b917ca4cf29777/balette.mp4 b/src/.gradio/flagged/x/949d27b917ca4cf29777/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/src/.gradio/flagged/x/949d27b917ca4cf29777/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/src/.gradio/flagged/x/97ecfa403560d9ee017f/world.mp4 b/src/.gradio/flagged/x/97ecfa403560d9ee017f/world.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9bce44c33e275d6107240a1101032a7835fd8eed --- /dev/null +++ b/src/.gradio/flagged/x/97ecfa403560d9ee017f/world.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71944d7430c461f0cd6e7fd10cee7eb72786352a3678fc7bc0ae3d410f72aece +size 1570024 diff --git a/src/CLAUDE.md b/src/CLAUDE.md new file mode 100644 index 0000000000000000000000000000000000000000..38ea9810511d9c5a1a86dd4cb951181459dfa23e --- /dev/null +++ b/src/CLAUDE.md @@ -0,0 +1,147 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a Gradio custom component called `gradio_overlay_video` that enables interactive pose visualization overlays on video content. The component processes JSON pose data from multiple keypoint formats (MediaPipe, COCO, COCO-WholeBody, Sociopticon, YOLOv11) and renders it as interactive overlays on top of video files. + +## Architecture + +### Backend (`backend/gradio_overlay_video/`) +- **overlay_video.py**: Main component class `OverlayVideo` that extends Gradio's Component base class + - Uses modular `VisualizationProcessor` to preprocess JSON data into streamlined visualization instructions + - Supports events: change, clear, play, pause, end +- **visualization_processors.py**: Modular preprocessing system with specialized processors: + - `JointsProcessor`: Extracts joint/keypoint positions for circle visualization + - `BonesProcessor`: Processes skeleton connections for line visualization with auto-format detection + - `DirectionArrowProcessor`: Creates direction arrow data from movement metrics with format-aware center calculation + - `MotionTrailProcessor`: Generates faded motion trails from pose history + - `LabanProcessor`: Extracts Laban Movement Analysis metrics for text overlay + - `VisualizationProcessor`: Main coordinator that combines all processors +- **keypoint_formats.py**: Keypoint format definitions and skeleton configurations: + - `KeypointFormat`: Enum for supported formats (MediaPipe, COCO, COCO-WholeBody, Sociopticon, YOLOv11) + - `SkeletonDefinitions`: Skeleton connection definitions for each format + - `KeypointFormatDetector`: Auto-detection logic based on keypoint count and structure + - `YOLOv11DataConverter`: Converts YOLOv11 pixel coordinates to normalized format + +### Frontend (`frontend/`) +- **Svelte-based** custom Gradio component using TypeScript +- **shared/InteractiveOverlay.svelte**: Handles file uploads for video and JSON +- **shared/OverlayPlayer.svelte**: Core video player with modular overlay rendering + - Uses streamlined visualization instructions from backend + - Supports independent toggle controls for: joints, bones, direction arrows, motion trails, Laban metrics + - FPS-aware playback using video metadata + - Dynamic control visibility based on data capabilities +- **shared/Video.svelte**: Base video component wrapper +- Uses @gradio/* dependencies and FFmpeg for video processing + +### Demo Application (`demo/`) +- **app.py**: Example Gradio app showing component usage +- **space.py**: Hugging Face Space deployment version +- Uses sample files from `files/` directory (balette.mp4 and mediapipe JSON data) + +## Common Development Commands + +### Python/Backend Development +```bash +# Install in development mode +pip install -e . + +# Run demo application +cd demo && python app.py + +# Build package +python -m build +``` + +### Frontend Development +```bash +# Install frontend dependencies +cd frontend && npm install + +# Build frontend components +# (No specific build command found - likely handled by Gradio's build system) +``` + +## Data Format Expectations + +### Input JSON Structure +The component expects JSON files with this structure: +- `video_info`: Metadata about the video including `fps`, `width`, `height`, `duration_seconds` +- `movement_analysis.frames[]`: Array of frame data containing: + - `timestamp`: Frame timing + - `keypoints[0].points[]`: Array of pose points with x/y coordinates and confidence + - `metrics`: Laban Movement Analysis metrics (direction, intensity, speed, velocity, etc.) + +### Processed Output Structure +The backend preprocesses this into streamlined visualization instructions: +- `video_info`: Original video metadata +- `fps`: Extracted frame rate for proper playback timing +- `keypoint_format`: Detected format type (mediapipe, coco, coco_wholebody, sociopticon, yolo11_pose) +- `capabilities`: Flags indicating which visualization types are available +- `frames[]`: Array of processed frame data containing: + - `timestamp`: Frame timing + - `joints`: Array of joint positions for circle rendering + - `bones`: Array of bone connections for line rendering + - `direction_arrow`: Arrow data for movement direction visualization + - `motion_trail`: Array of trail segments for motion path rendering + - `laban_metrics`: Cleaned metrics for text overlay display + +### Visualization Processors +Each processor can be individually enabled/disabled: +- **JointsProcessor**: Filters keypoints by confidence, extracts x/y positions +- **BonesProcessor**: Auto-detects keypoint format and uses appropriate skeleton definitions: + - MediaPipe Pose (33 keypoints): Full face, body, and hand landmarks + - COCO Keypoints (17 keypoints): Basic body joints + - COCO-WholeBody (133 keypoints): Body + face + hands + feet + - Sociopticon (18-21 keypoints): Enhanced torso detail + - YOLOv11 Pose (17 keypoints): Uses COCO skeleton with pixel coordinate conversion +- **DirectionArrowProcessor**: Calculates body center using format-specific core points +- **MotionTrailProcessor**: Maintains trail history with configurable length and alpha values +- **LabanProcessor**: Sanitizes and formats movement analysis metrics + +## Package Structure + +This is a Gradio custom component package with: +- Python backend component in `/backend/gradio_overlay_video/` +- Svelte frontend in `/frontend/` +- Demo applications in `/demo/` +- Build configuration in `pyproject.toml` +- Version: 0.0.7 + +## Supported Keypoint Formats + +### MediaPipe Pose (33 keypoints) +- Face landmarks (nose, eyes, ears, mouth) +- Body pose (shoulders, elbows, wrists, hips, knees, ankles) +- Hand landmarks (left and right hand keypoints) +- Auto-detected when JSON contains 33 keypoints + +### COCO Keypoints (17 keypoints) +- Standard COCO dataset format +- Basic body joints: nose, eyes, ears, shoulders, elbows, wrists, hips, knees, ankles +- Auto-detected when JSON contains 17 keypoints + +### COCO-WholeBody (133 keypoints) +- Extended COCO format with additional detail +- Body (17) + Face (68) + Left Hand (21) + Right Hand (21) + Feet (6) +- Auto-detected when JSON contains 133 keypoints + +### Sociopticon (18-21 keypoints) +- Custom format with enhanced torso detail +- Similar to COCO but with additional mid-torso points +- Auto-detected when JSON contains 18-21 keypoints + +### YOLOv11 Pose (17 keypoints) +- YOLOv11 pose estimation format with pixel coordinates +- Uses COCO keypoint structure but with different data organization +- Auto-detected based on JSON structure (metadata.model contains "yolo" and "pose") +- Automatically converts pixel coordinates to normalized values +- Designed for single-frame pose showcase + +### Format Detection +- Automatic detection based on keypoint count and structure +- Special detection for YOLOv11 based on metadata and data organization +- Fallback to MediaPipe format if detection is unclear +- Format information included in processed output for frontend reference \ No newline at end of file diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000000000000000000000000000000000000..70a50edb382dfa2e79e72883a85d829cbada306c --- /dev/null +++ b/src/README.md @@ -0,0 +1,239 @@ +--- +tags: [gradio-custom-component, gradio-5, laban-movement-analysis, pose-visualisation, pose-estimation, movement-visualisation, visualisation, video] +title: gradio_overlay_video +emoji: 🏃 +short_description: pose data overlayed video controller +colorFrom: purple +colorTo: green +sdk: gradio +sdk_version: 5.33.0 +pinned: false +app_file: space.py +--- + +# `gradio_overlay_video` +Static Badge + +overlayed video controller + +## Installation + +```bash +pip install gradio_overlay_video +``` + +## Usage + +```python + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + """ + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + """ + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) +``` + +## `OverlayVideo` + +### Initialization + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nametypedefaultdescription
value + +```python +typing.Any +``` + +NoneNone
label + +```python +str | None +``` + +NoneNone
interactive + +```python +bool | None +``` + +NoneNone
autoplay + +```python +bool +``` + +FalseNone
loop + +```python +bool +``` + +FalseNone
mode + +```python +str +``` + +"overlay"None
+ + +### Events + +| name | description | +|:-----|:------------| +| `change` | Triggered when the value of the OverlayVideo changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. | +| `clear` | This listener is triggered when the user clears the OverlayVideo using the clear button for the component. | +| `play` | This listener is triggered when the user plays the media in the OverlayVideo. | +| `pause` | This listener is triggered when the media in the OverlayVideo stops for any reason. | +| `end` | This listener is triggered when the user reaches the end of the media playing in the OverlayVideo. | + + + +### User function + +The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). + +- When used as an Input, the component only impacts the input signature of the user function. +- When used as an output, the component only impacts the return signature of the user function. + +The code snippet below is accurate in cases where the component is used as both an input and an output. + + + + ```python + def predict( + value: str | None + ) -> typing.Optional[typing.Tuple[str | None, str | None]][ + typing.Tuple[str | None, str | None][ + str | None, str | None + ], + None, +]: + return value + ``` + diff --git a/src/backend/gradio_overlay_video/__init__.py b/src/backend/gradio_overlay_video/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a727c8025a5063512585d8332b421d601498527e --- /dev/null +++ b/src/backend/gradio_overlay_video/__init__.py @@ -0,0 +1,4 @@ + +from .overlay_video import OverlayVideo + +__all__ = ['OverlayVideo'] diff --git a/src/backend/gradio_overlay_video/keypoint_formats.py b/src/backend/gradio_overlay_video/keypoint_formats.py new file mode 100644 index 0000000000000000000000000000000000000000..55d235b11fe047641ce3614b115e76ba51772cc1 --- /dev/null +++ b/src/backend/gradio_overlay_video/keypoint_formats.py @@ -0,0 +1,356 @@ +""" +Keypoint format definitions and skeleton configurations for different pose estimation models. +Supports: MediaPipe, COCO, COCO-WholeBody, and Sociopticon formats. +""" + +from typing import Dict, List, Tuple, Optional +from enum import Enum + + +class KeypointFormat(Enum): + """Supported keypoint formats.""" + MEDIAPIPE = "mediapipe" + COCO = "coco" + COCO_WHOLEBODY = "coco_wholebody" + SOCIOPTICON = "sociopticon" + YOLO11_POSE = "yolo11_pose" + + +class SkeletonDefinitions: + """Skeleton connection definitions for different keypoint formats.""" + + # MediaPipe pose skeleton connections (33 keypoints) + MEDIAPIPE_SKELETON = [ + # Face connections + (0, 1), (1, 2), (2, 3), (3, 7), # left eye region + (0, 4), (4, 5), (5, 6), (6, 8), # right eye region + (9, 10), # mouth + # Upper body + (11, 12), # shoulders + (11, 13), (13, 15), # left arm + (12, 14), (14, 16), # right arm + (11, 23), (12, 24), # shoulders to hips + (23, 24), # hips + # Lower body + (23, 25), (25, 27), (27, 29), (27, 31), # left leg + (24, 26), (26, 28), (28, 30), (28, 32), # right leg + # Hands + (15, 17), (15, 19), (15, 21), # left hand + (16, 18), (16, 20), (16, 22), # right hand + ] + + # COCO keypoint skeleton connections (17 keypoints) + # Order: nose, left_eye, right_eye, left_ear, right_ear, left_shoulder, right_shoulder, + # left_elbow, right_elbow, left_wrist, right_wrist, left_hip, right_hip, + # left_knee, right_knee, left_ankle, right_ankle + COCO_SKELETON = [ + # Head connections + (0, 1), (0, 2), # nose to eyes + (1, 3), (2, 4), # eyes to ears + # Upper body + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + # Lower body + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + ] + + # COCO-WholeBody skeleton connections (133 keypoints total) + # Body (17) + Face (68) + Left Hand (21) + Right Hand (21) + Feet (6) + COCO_WHOLEBODY_SKELETON = [ + # Body connections (same as COCO) + (0, 1), (0, 2), (1, 3), (2, 4), # head + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + + # Face outline connections (simplified from 68 points for performance) + (17, 18), (18, 19), (19, 20), (20, 21), (21, 22), (22, 23), (23, 24), (24, 25), (25, 26), # jaw + (27, 28), (28, 29), (29, 30), # nose bridge + (31, 32), (32, 33), (33, 34), (34, 35), # nose + (36, 37), (37, 38), (38, 39), (39, 40), (40, 41), (41, 36), # left eye + (42, 43), (43, 44), (44, 45), (45, 46), (46, 47), (47, 42), # right eye + (48, 49), (49, 50), (50, 51), (51, 52), (52, 53), (53, 54), (54, 55), (55, 56), (56, 57), (57, 58), (58, 59), (59, 48), # outer lip + (60, 61), (61, 62), (62, 63), (63, 64), (64, 65), (65, 66), (66, 67), (67, 60), # inner lip + + # Left hand connections (21 points starting at index 91) + (91, 92), (92, 93), (93, 94), (94, 95), # thumb + (91, 96), (96, 97), (97, 98), (98, 99), # index finger + (91, 100), (100, 101), (101, 102), (102, 103), # middle finger + (91, 104), (104, 105), (105, 106), (106, 107), # ring finger + (91, 108), (108, 109), (109, 110), (110, 111), # pinky + + # Right hand connections (21 points starting at index 112) + (112, 113), (113, 114), (114, 115), (115, 116), # thumb + (112, 117), (117, 118), (118, 119), (119, 120), # index finger + (112, 121), (121, 122), (122, 123), (123, 124), # middle finger + (112, 125), (125, 126), (126, 127), (127, 128), # ring finger + (112, 129), (129, 130), (130, 131), (131, 132), # pinky + ] + + # Sociopticon skeleton connections (assuming extended COCO-like format) + SOCIOPTICON_SKELETON = [ + # Head connections + (0, 1), (0, 2), (1, 3), (2, 4), # head structure + # Upper body with more detail + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + # Additional torso points (if available) + (5, 17), (6, 18), # shoulder to mid-torso + (17, 18), (17, 11), (18, 12), # torso connections + # Lower body + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + ] + + @classmethod + def get_skeleton(cls, format_type: KeypointFormat) -> List[Tuple[int, int]]: + """Get skeleton connections for the specified format.""" + if format_type == KeypointFormat.MEDIAPIPE: + return cls.MEDIAPIPE_SKELETON + elif format_type == KeypointFormat.COCO: + return cls.COCO_SKELETON + elif format_type == KeypointFormat.COCO_WHOLEBODY: + return cls.COCO_WHOLEBODY_SKELETON + elif format_type == KeypointFormat.SOCIOPTICON: + return cls.SOCIOPTICON_SKELETON + elif format_type == KeypointFormat.YOLO11_POSE: + return cls.COCO_SKELETON # YOLOv11 uses COCO format + else: + return cls.MEDIAPIPE_SKELETON # default + + +class KeypointFormatDetector: + """Detects keypoint format based on data structure and keypoint count.""" + + # Core body point indices for different formats (used for center calculation) + CORE_POINT_INDICES = { + KeypointFormat.MEDIAPIPE: [11, 12, 23, 24], # shoulders and hips + KeypointFormat.COCO: [5, 6, 11, 12], # shoulders and hips + KeypointFormat.COCO_WHOLEBODY: [5, 6, 11, 12], # shoulders and hips (body part) + KeypointFormat.SOCIOPTICON: [5, 6, 11, 12], # shoulders and hips + KeypointFormat.YOLO11_POSE: [5, 6, 11, 12] # shoulders and hips (COCO format) + } + + @classmethod + def detect_format(cls, points: List[Dict]) -> KeypointFormat: + """ + Detect keypoint format based on number of points and structure. + + Args: + points: List of keypoint dictionaries + + Returns: + Detected KeypointFormat + """ + num_points = len(points) + + # Detect based on keypoint count + if num_points == 17: + return KeypointFormat.COCO + elif num_points == 133: + return KeypointFormat.COCO_WHOLEBODY + elif num_points == 33: + return KeypointFormat.MEDIAPIPE + elif num_points in [18, 19, 20, 21]: # Sociopticon variations + return KeypointFormat.SOCIOPTICON + + # Additional heuristics based on keypoint names (if available) + if points and isinstance(points[0], dict): + first_point = points[0] + if 'name' in first_point: + name = first_point['name'].lower() + if 'nose' in name: + # MediaPipe uses 'nose', COCO uses indices + return KeypointFormat.MEDIAPIPE + + # Default fallback + return KeypointFormat.MEDIAPIPE + + @classmethod + def detect_yolo11_format(cls, data: Dict) -> bool: + """ + Detect if data is in YOLOv11 format based on structure. + + Args: + data: Raw JSON data dictionary + + Returns: + True if YOLOv11 format detected + """ + # Check for YOLOv11 specific structure + if 'metadata' in data and 'keypoints' in data: + metadata = data['metadata'] + if isinstance(metadata, dict) and 'model' in metadata: + model_name = metadata['model'].lower() + if 'yolo' in model_name and 'pose' in model_name: + return True + + # Check keypoints structure: should be list of lists of [x,y] coordinates + keypoints = data['keypoints'] + if isinstance(keypoints, list) and len(keypoints) > 0: + first_frame = keypoints[0] + if isinstance(first_frame, list) and len(first_frame) == 17: + # Check if points are [x,y] coordinate pairs + first_point = first_frame[0] + if isinstance(first_point, list) and len(first_point) == 2: + return True + + return False + + @classmethod + def get_core_points(cls, format_type: KeypointFormat) -> List[int]: + """Get core body point indices for center calculation.""" + return cls.CORE_POINT_INDICES.get(format_type, cls.CORE_POINT_INDICES[KeypointFormat.MEDIAPIPE]) + + @classmethod + def format_info(cls, format_type: KeypointFormat) -> Dict: + """Get information about a keypoint format.""" + info = { + KeypointFormat.MEDIAPIPE: { + "name": "MediaPipe Pose", + "keypoints": 33, + "description": "Google MediaPipe pose estimation with face, body, and hand landmarks" + }, + KeypointFormat.COCO: { + "name": "COCO Keypoints", + "keypoints": 17, + "description": "COCO dataset keypoint format with basic body joints" + }, + KeypointFormat.COCO_WHOLEBODY: { + "name": "COCO-WholeBody", + "keypoints": 133, + "description": "Extended COCO format with face, hands, and feet keypoints" + }, + KeypointFormat.SOCIOPTICON: { + "name": "Sociopticon", + "keypoints": "18-21", + "description": "Sociopticon keypoint format with enhanced torso detail" + }, + KeypointFormat.YOLO11_POSE: { + "name": "YOLOv11 Pose", + "keypoints": 17, + "description": "YOLOv11 pose estimation with COCO format keypoints and pixel coordinates" + } + } + + return info.get(format_type, info[KeypointFormat.MEDIAPIPE]) + + +class YOLOv11DataConverter: + """Converts YOLOv11 pose data to standard format.""" + + @classmethod + def convert_to_standard_format(cls, yolo_data: Dict, video_width: int = 1920, video_height: int = 1080) -> Dict: + """ + Convert YOLOv11 format to standard format expected by visualization processors. + + Args: + yolo_data: Raw YOLOv11 JSON data + video_width: Video width for coordinate normalization (default: 1920) + video_height: Video height for coordinate normalization (default: 1080) + + Returns: + Dictionary in standard format + """ + # Extract first frame keypoints (YOLOv11 data contains list of frames) + if 'keypoints' not in yolo_data or not yolo_data['keypoints']: + raise ValueError("No keypoints found in YOLOv11 data") + + first_frame_keypoints = yolo_data['keypoints'][0] + + # Convert to standard point format + points = [] + for i, point_coords in enumerate(first_frame_keypoints): + x, y = point_coords + + # Check if point is valid (YOLOv11 uses [0,0] for invalid points) + if x == 0 and y == 0: + # Invalid point - set low confidence + points.append({ + 'x': 0.0, + 'y': 0.0, + 'confidence': 0.0, + 'index': i + }) + else: + # Valid point - normalize coordinates and set high confidence + points.append({ + 'x': x / video_width, # Normalize to 0-1 range + 'y': y / video_height, # Normalize to 0-1 range + 'confidence': 0.9, # Default high confidence for valid points + 'index': i + }) + + # Create standard format structure for single frame + converted_data = { + 'video_info': { + 'fps': 30, # Default FPS for single frame + 'width': video_width, + 'height': video_height, + 'duration_seconds': 0.033 # Single frame duration + }, + 'movement_analysis': { + 'frames': [ + { + 'timestamp': 0.0, + 'keypoints': [ + { + 'points': points + } + ], + 'metrics': { + 'direction': 'stationary', + 'intensity': 0.0, + 'speed': 0.0, + 'velocity': {'x': 0, 'y': 0} + } + } + ] + } + } + + return converted_data + + @classmethod + def estimate_video_dimensions(cls, keypoints: List[List[float]]) -> Tuple[int, int]: + """ + Estimate video dimensions based on keypoint coordinates. + + Args: + keypoints: List of [x, y] coordinate pairs + + Returns: + Tuple of (width, height) estimates + """ + valid_points = [point for point in keypoints if point[0] > 0 or point[1] > 0] + + if not valid_points: + return 1920, 1080 # Default dimensions + + max_x = max(point[0] for point in valid_points) + max_y = max(point[1] for point in valid_points) + + # Add some margin and round to common video dimensions + estimated_width = int(max_x * 1.2) + estimated_height = int(max_y * 1.2) + + # Round to common video dimensions + common_widths = [1920, 1280, 854, 640] + common_heights = [1080, 720, 480, 360] + + # Find closest common dimensions + width = min(common_widths, key=lambda w: abs(w - estimated_width)) + height = min(common_heights, key=lambda h: abs(h - estimated_height)) + + return width, height \ No newline at end of file diff --git a/src/backend/gradio_overlay_video/overlay_video.py b/src/backend/gradio_overlay_video/overlay_video.py new file mode 100644 index 0000000000000000000000000000000000000000..d0b91a090effeb65835ab90519d3c83d537e9dbe --- /dev/null +++ b/src/backend/gradio_overlay_video/overlay_video.py @@ -0,0 +1,97 @@ +# backend/gradio_overlay_video/overlay_video.py + +from __future__ import annotations +from pathlib import Path +from typing import Any, Callable, Optional, Tuple +import json + +from gradio_client import handle_file +from gradio_client.documentation import document +import gradio as gr +from gradio.components.base import Component +from gradio.data_classes import FileData, GradioModel +from gradio.events import Events + +# This data model expects the raw, pre-processed JSON string +class OverlayVideoData(GradioModel): + video: Optional[FileData] = None + json_data: Optional[str] = None + + +@document() +class OverlayVideo(Component): + """An output component that plays a video with an interactive, toggleable overlay of pose data.""" + + data_model = OverlayVideoData + EVENTS = [Events.change, Events.clear, Events.play, Events.pause, Events.end] + + def __init__( + self, + value: Any = None, + *, + label: str | None = None, + interactive: bool | None = None, + autoplay: bool = False, + loop: bool = False, + mode: str = "overlay", # Custom prop for the frontend + **kwargs + ): + self.autoplay = autoplay + self.loop = loop + self.mode = mode + super().__init__(label=label, interactive=interactive, value=value, **kwargs) + + def preprocess(self, payload: OverlayVideoData | None) -> str | None: + """ + This component is output-only, so preprocess does nothing. + It is required to satisfy the abstract class requirements. + """ + # We return None because this component does not handle input. + return None + + def postprocess(self, value: Tuple[str | None, str | None] | None) -> OverlayVideoData | None: + """ + Takes video and JSON file paths, preprocesses the JSON with visualization processors, + and sends streamlined visualization instructions to the frontend. + """ + if value is None or value[1] is None: + return None + + video_path, json_path = value + + try: + with open(json_path, 'r', encoding='utf-8') as f: + full_data = json.load(f) + + # Import and use the new visualization processor + from .visualization_processors import VisualizationProcessor + + # Initialize processor with all visualization types enabled + processor = VisualizationProcessor( + enable_joints=True, + enable_bones=True, + enable_direction_arrows=True, + enable_motion_trails=True, + enable_laban=True, + trail_length=10 + ) + + # Process the JSON data into streamlined visualization instructions + visualization_data = processor.process_json_data(full_data) + + # Convert to JSON string for frontend + json_content = json.dumps(visualization_data) + + except Exception as e: + print(f"Error processing JSON file: {e}") + import traceback + print(traceback.format_exc()) + return None + + return OverlayVideoData( + video=handle_file(video_path) if video_path else None, + json_data=json_content + ) + + def example_payload(self) -> Any: return None + def example_value(self) -> Any: return None \ No newline at end of file diff --git a/src/backend/gradio_overlay_video/templates/component/assets/worker-BAOIWoxA.js b/src/backend/gradio_overlay_video/templates/component/assets/worker-BAOIWoxA.js new file mode 100644 index 0000000000000000000000000000000000000000..4be75e95ecb195ea449864292c9771494629d71b --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/component/assets/worker-BAOIWoxA.js @@ -0,0 +1 @@ +(function(){"use strict";const i="https://unpkg.com/@ffmpeg/core@0.12.9/dist/umd/ffmpeg-core.js";var E;(function(t){t.LOAD="LOAD",t.EXEC="EXEC",t.FFPROBE="FFPROBE",t.WRITE_FILE="WRITE_FILE",t.READ_FILE="READ_FILE",t.DELETE_FILE="DELETE_FILE",t.RENAME="RENAME",t.CREATE_DIR="CREATE_DIR",t.LIST_DIR="LIST_DIR",t.DELETE_DIR="DELETE_DIR",t.ERROR="ERROR",t.DOWNLOAD="DOWNLOAD",t.PROGRESS="PROGRESS",t.LOG="LOG",t.MOUNT="MOUNT",t.UNMOUNT="UNMOUNT"})(E||(E={}));const f=new Error("unknown message type"),a=new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),u=new Error("failed to import ffmpeg-core.js");let r;const O=async({coreURL:t,wasmURL:n,workerURL:e})=>{const o=!r;try{t||(t=i),importScripts(t)}catch{if((!t||t===i)&&(t=i.replace("/umd/","/esm/")),self.createFFmpegCore=(await import(t)).default,!self.createFFmpegCore)throw u}const s=t,c=n||t.replace(/.js$/g,".wasm"),p=e||t.replace(/.js$/g,".worker.js");return r=await self.createFFmpegCore({mainScriptUrlOrBlob:`${s}#${btoa(JSON.stringify({wasmURL:c,workerURL:p}))}`}),r.setLogger(R=>self.postMessage({type:E.LOG,data:R})),r.setProgress(R=>self.postMessage({type:E.PROGRESS,data:R})),o},m=({args:t,timeout:n=-1})=>{r.setTimeout(n),r.exec(...t);const e=r.ret;return r.reset(),e},l=({args:t,timeout:n=-1})=>{r.setTimeout(n),r.ffprobe(...t);const e=r.ret;return r.reset(),e},D=({path:t,data:n})=>(r.FS.writeFile(t,n),!0),S=({path:t,encoding:n})=>r.FS.readFile(t,{encoding:n}),I=({path:t})=>(r.FS.unlink(t),!0),L=({oldPath:t,newPath:n})=>(r.FS.rename(t,n),!0),N=({path:t})=>(r.FS.mkdir(t),!0),A=({path:t})=>{const n=r.FS.readdir(t),e=[];for(const o of n){const s=r.FS.stat(`${t}/${o}`),c=r.FS.isDir(s.mode);e.push({name:o,isDir:c})}return e},k=({path:t})=>(r.FS.rmdir(t),!0),w=({fsType:t,options:n,mountPoint:e})=>{const o=t,s=r.FS.filesystems[o];return s?(r.FS.mount(s,n,e),!0):!1},b=({mountPoint:t})=>(r.FS.unmount(t),!0);self.onmessage=async({data:{id:t,type:n,data:e}})=>{const o=[];let s;try{if(n!==E.LOAD&&!r)throw a;switch(n){case E.LOAD:s=await O(e);break;case E.EXEC:s=m(e);break;case E.FFPROBE:s=l(e);break;case E.WRITE_FILE:s=D(e);break;case E.READ_FILE:s=S(e);break;case E.DELETE_FILE:s=I(e);break;case E.RENAME:s=L(e);break;case E.CREATE_DIR:s=N(e);break;case E.LIST_DIR:s=A(e);break;case E.DELETE_DIR:s=k(e);break;case E.MOUNT:s=w(e);break;case E.UNMOUNT:s=b(e);break;default:throw f}}catch(c){self.postMessage({id:t,type:E.ERROR,data:c.toString()});return}s instanceof Uint8Array&&o.push(s.buffer),self.postMessage({id:t,type:n,data:s},o)}})(); diff --git a/src/backend/gradio_overlay_video/templates/component/index.js b/src/backend/gradio_overlay_video/templates/component/index.js new file mode 100644 index 0000000000000000000000000000000000000000..dec202662ce1e6ae6ea2f7f9ddc82b9b9355332a --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/component/index.js @@ -0,0 +1,40820 @@ +var v1 = Object.defineProperty; +var X0 = (n) => { + throw TypeError(n); +}; +var y1 = (n, e, t) => e in n ? v1(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t; +var et = (n, e, t) => y1(n, typeof e != "symbol" ? e + "" : e, t), ro = (n, e, t) => e.has(n) || X0("Cannot " + t); +var en = (n, e, t) => (ro(n, e, "read from private field"), t ? t.call(n) : e.get(n)), no = (n, e, t) => e.has(n) ? X0("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), Q0 = (n, e, t, i) => (ro(n, e, "write to private field"), i ? i.call(n, t) : e.set(n, t), t), Es = (n, e, t) => (ro(n, e, "access private method"), t); +var Z0; +(function(n) { + n.LOAD = "LOAD", n.EXEC = "EXEC", n.FFPROBE = "FFPROBE", n.WRITE_FILE = "WRITE_FILE", n.READ_FILE = "READ_FILE", n.DELETE_FILE = "DELETE_FILE", n.RENAME = "RENAME", n.CREATE_DIR = "CREATE_DIR", n.LIST_DIR = "LIST_DIR", n.DELETE_DIR = "DELETE_DIR", n.ERROR = "ERROR", n.DOWNLOAD = "DOWNLOAD", n.PROGRESS = "PROGRESS", n.LOG = "LOG", n.MOUNT = "MOUNT", n.UNMOUNT = "UNMOUNT"; +})(Z0 || (Z0 = {})); +var J0; +(function(n) { + n.MEMFS = "MEMFS", n.NODEFS = "NODEFS", n.NODERAWFS = "NODERAWFS", n.IDBFS = "IDBFS", n.WORKERFS = "WORKERFS", n.PROXYFS = "PROXYFS"; +})(J0 || (J0 = {})); +function _1(n, { autoplay: e }) { + async function t() { + e && await n.play(); + } + return n.addEventListener("loadeddata", t), { + destroy() { + n.removeEventListener("loadeddata", t); + } + }; +} +const { setContext: h7, getContext: b1 } = window.__gradio__svelte__internal, E1 = "WORKER_PROXY_CONTEXT_KEY"; +function S1() { + return b1(E1); +} +const T1 = "lite.local"; +function x1(n) { + return n.host === window.location.host || n.host === "localhost:7860" || n.host === "127.0.0.1:7860" || // Ref: https://github.com/gradio-app/gradio/blob/v3.32.0/js/app/src/Index.svelte#L194 + n.host === T1; +} +function A1(n, e) { + const t = e.toLowerCase(); + for (const [i, r] of Object.entries(n)) + if (i.toLowerCase() === t) + return r; +} +function D1(n) { + const e = typeof window < "u"; + if (n == null || !e) + return !1; + const t = new URL(n, window.location.href); + return !(!x1(t) || t.protocol !== "http:" && t.protocol !== "https:"); +} +let Ss; +async function w1(n) { + const e = typeof window < "u"; + if (n == null || !e || !D1(n)) + return n; + if (Ss == null) + try { + Ss = S1(); + } catch { + return n; + } + if (Ss == null) + return n; + const i = new URL(n, window.location.href).pathname; + return Ss.httpRequest({ + method: "GET", + path: i, + headers: {}, + query_string: "" + }).then((r) => { + if (r.status !== 200) + throw new Error(`Failed to get file ${i} from the Wasm worker.`); + const s = new Blob([r.body], { + type: A1(r.headers, "content-type") + }); + return URL.createObjectURL(s); + }); +} +const { + SvelteComponent: d7, + assign: f7, + check_outros: m7, + children: g7, + claim_element: p7, + compute_rest_props: v7, + create_slot: y7, + detach: _7, + element: b7, + empty: E7, + exclude_internal_props: S7, + get_all_dirty_from_scope: T7, + get_slot_changes: x7, + get_spread_update: A7, + group_outros: D7, + init: w7, + insert_hydration: k7, + listen: L7, + prevent_default: I7, + safe_not_equal: R7, + set_attributes: C7, + set_style: F7, + toggle_class: P7, + transition_in: M7, + transition_out: O7, + update_slot_base: $7 +} = window.__gradio__svelte__internal, { createEventDispatcher: B7, onMount: N7 } = window.__gradio__svelte__internal, se = Number.isFinite || function(n) { + return typeof n == "number" && isFinite(n); +}, k1 = Number.isSafeInteger || function(n) { + return typeof n == "number" && Math.abs(n) <= L1; +}, L1 = Number.MAX_SAFE_INTEGER || 9007199254740991; +let de = /* @__PURE__ */ function(n) { + return n.NETWORK_ERROR = "networkError", n.MEDIA_ERROR = "mediaError", n.KEY_SYSTEM_ERROR = "keySystemError", n.MUX_ERROR = "muxError", n.OTHER_ERROR = "otherError", n; +}({}), B = /* @__PURE__ */ function(n) { + return n.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", n.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", n.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", n.KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense", n.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", n.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed", n.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed", n.KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed", n.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted", n.KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError", n.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR = "keySystemDestroyMediaKeysError", n.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR = "keySystemDestroyCloseSessionError", n.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR = "keySystemDestroyRemoveSessionError", n.MANIFEST_LOAD_ERROR = "manifestLoadError", n.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut", n.MANIFEST_PARSING_ERROR = "manifestParsingError", n.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError", n.LEVEL_EMPTY_ERROR = "levelEmptyError", n.LEVEL_LOAD_ERROR = "levelLoadError", n.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut", n.LEVEL_PARSING_ERROR = "levelParsingError", n.LEVEL_SWITCH_ERROR = "levelSwitchError", n.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError", n.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut", n.SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError", n.SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut", n.FRAG_LOAD_ERROR = "fragLoadError", n.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut", n.FRAG_DECRYPT_ERROR = "fragDecryptError", n.FRAG_PARSING_ERROR = "fragParsingError", n.FRAG_GAP = "fragGap", n.REMUX_ALLOC_ERROR = "remuxAllocError", n.KEY_LOAD_ERROR = "keyLoadError", n.KEY_LOAD_TIMEOUT = "keyLoadTimeOut", n.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError", n.BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError", n.BUFFER_APPEND_ERROR = "bufferAppendError", n.BUFFER_APPENDING_ERROR = "bufferAppendingError", n.BUFFER_STALLED_ERROR = "bufferStalledError", n.BUFFER_FULL_ERROR = "bufferFullError", n.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole", n.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall", n.ASSET_LIST_LOAD_ERROR = "assetListLoadError", n.ASSET_LIST_LOAD_TIMEOUT = "assetListLoadTimeout", n.ASSET_LIST_PARSING_ERROR = "assetListParsingError", n.INTERSTITIAL_ASSET_ITEM_ERROR = "interstitialAssetItemError", n.INTERNAL_EXCEPTION = "internalException", n.INTERNAL_ABORTED = "aborted", n.ATTACH_MEDIA_ERROR = "attachMediaError", n.UNKNOWN = "unknown", n; +}({}), S = /* @__PURE__ */ function(n) { + return n.MEDIA_ATTACHING = "hlsMediaAttaching", n.MEDIA_ATTACHED = "hlsMediaAttached", n.MEDIA_DETACHING = "hlsMediaDetaching", n.MEDIA_DETACHED = "hlsMediaDetached", n.MEDIA_ENDED = "hlsMediaEnded", n.STALL_RESOLVED = "hlsStallResolved", n.BUFFER_RESET = "hlsBufferReset", n.BUFFER_CODECS = "hlsBufferCodecs", n.BUFFER_CREATED = "hlsBufferCreated", n.BUFFER_APPENDING = "hlsBufferAppending", n.BUFFER_APPENDED = "hlsBufferAppended", n.BUFFER_EOS = "hlsBufferEos", n.BUFFERED_TO_END = "hlsBufferedToEnd", n.BUFFER_FLUSHING = "hlsBufferFlushing", n.BUFFER_FLUSHED = "hlsBufferFlushed", n.MANIFEST_LOADING = "hlsManifestLoading", n.MANIFEST_LOADED = "hlsManifestLoaded", n.MANIFEST_PARSED = "hlsManifestParsed", n.LEVEL_SWITCHING = "hlsLevelSwitching", n.LEVEL_SWITCHED = "hlsLevelSwitched", n.LEVEL_LOADING = "hlsLevelLoading", n.LEVEL_LOADED = "hlsLevelLoaded", n.LEVEL_UPDATED = "hlsLevelUpdated", n.LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated", n.LEVELS_UPDATED = "hlsLevelsUpdated", n.AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated", n.AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching", n.AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched", n.AUDIO_TRACK_LOADING = "hlsAudioTrackLoading", n.AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded", n.AUDIO_TRACK_UPDATED = "hlsAudioTrackUpdated", n.SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated", n.SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared", n.SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch", n.SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading", n.SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded", n.SUBTITLE_TRACK_UPDATED = "hlsSubtitleTrackUpdated", n.SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed", n.CUES_PARSED = "hlsCuesParsed", n.NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound", n.INIT_PTS_FOUND = "hlsInitPtsFound", n.FRAG_LOADING = "hlsFragLoading", n.FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted", n.FRAG_LOADED = "hlsFragLoaded", n.FRAG_DECRYPTED = "hlsFragDecrypted", n.FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment", n.FRAG_PARSING_USERDATA = "hlsFragParsingUserdata", n.FRAG_PARSING_METADATA = "hlsFragParsingMetadata", n.FRAG_PARSED = "hlsFragParsed", n.FRAG_BUFFERED = "hlsFragBuffered", n.FRAG_CHANGED = "hlsFragChanged", n.FPS_DROP = "hlsFpsDrop", n.FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping", n.MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated", n.ERROR = "hlsError", n.DESTROYING = "hlsDestroying", n.KEY_LOADING = "hlsKeyLoading", n.KEY_LOADED = "hlsKeyLoaded", n.LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached", n.BACK_BUFFER_REACHED = "hlsBackBufferReached", n.STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded", n.ASSET_LIST_LOADING = "hlsAssetListLoading", n.ASSET_LIST_LOADED = "hlsAssetListLoaded", n.INTERSTITIALS_UPDATED = "hlsInterstitialsUpdated", n.INTERSTITIALS_BUFFERED_TO_BOUNDARY = "hlsInterstitialsBufferedToBoundary", n.INTERSTITIAL_ASSET_PLAYER_CREATED = "hlsInterstitialAssetPlayerCreated", n.INTERSTITIAL_STARTED = "hlsInterstitialStarted", n.INTERSTITIAL_ASSET_STARTED = "hlsInterstitialAssetStarted", n.INTERSTITIAL_ASSET_ENDED = "hlsInterstitialAssetEnded", n.INTERSTITIAL_ASSET_ERROR = "hlsInterstitialAssetError", n.INTERSTITIAL_ENDED = "hlsInterstitialEnded", n.INTERSTITIALS_PRIMARY_RESUMED = "hlsInterstitialsPrimaryResumed", n.PLAYOUT_LIMIT_REACHED = "hlsPlayoutLimitReached", n.EVENT_CUE_ENTER = "hlsEventCueEnter", n; +}({}); +var Ce = { + MANIFEST: "manifest", + LEVEL: "level", + AUDIO_TRACK: "audioTrack", + SUBTITLE_TRACK: "subtitleTrack" +}, ue = { + MAIN: "main", + AUDIO: "audio", + SUBTITLE: "subtitle" +}; +class tn { + // About half of the estimated value will be from the last |halfLife| samples by weight. + constructor(e, t = 0, i = 0) { + this.halfLife = void 0, this.alpha_ = void 0, this.estimate_ = void 0, this.totalWeight_ = void 0, this.halfLife = e, this.alpha_ = e ? Math.exp(Math.log(0.5) / e) : 0, this.estimate_ = t, this.totalWeight_ = i; + } + sample(e, t) { + const i = Math.pow(this.alpha_, e); + this.estimate_ = t * (1 - i) + i * this.estimate_, this.totalWeight_ += e; + } + getTotalWeight() { + return this.totalWeight_; + } + getEstimate() { + if (this.alpha_) { + const e = 1 - Math.pow(this.alpha_, this.totalWeight_); + if (e) + return this.estimate_ / e; + } + return this.estimate_; + } +} +class I1 { + constructor(e, t, i, r = 100) { + this.defaultEstimate_ = void 0, this.minWeight_ = void 0, this.minDelayMs_ = void 0, this.slow_ = void 0, this.fast_ = void 0, this.defaultTTFB_ = void 0, this.ttfb_ = void 0, this.defaultEstimate_ = i, this.minWeight_ = 1e-3, this.minDelayMs_ = 50, this.slow_ = new tn(e), this.fast_ = new tn(t), this.defaultTTFB_ = r, this.ttfb_ = new tn(e); + } + update(e, t) { + const { + slow_: i, + fast_: r, + ttfb_: s + } = this; + i.halfLife !== e && (this.slow_ = new tn(e, i.getEstimate(), i.getTotalWeight())), r.halfLife !== t && (this.fast_ = new tn(t, r.getEstimate(), r.getTotalWeight())), s.halfLife !== e && (this.ttfb_ = new tn(e, s.getEstimate(), s.getTotalWeight())); + } + sample(e, t) { + e = Math.max(e, this.minDelayMs_); + const i = 8 * t, r = e / 1e3, s = i / r; + this.fast_.sample(r, s), this.slow_.sample(r, s); + } + sampleTTFB(e) { + const t = e / 1e3, i = Math.sqrt(2) * Math.exp(-Math.pow(t, 2) / 2); + this.ttfb_.sample(i, Math.max(e, 5)); + } + canEstimate() { + return this.fast_.getTotalWeight() >= this.minWeight_; + } + getEstimate() { + return this.canEstimate() ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()) : this.defaultEstimate_; + } + getEstimateTTFB() { + return this.ttfb_.getTotalWeight() >= this.minWeight_ ? this.ttfb_.getEstimate() : this.defaultTTFB_; + } + get defaultEstimate() { + return this.defaultEstimate_; + } + destroy() { + } +} +function R1(n, e, t) { + return (e = F1(e)) in n ? Object.defineProperty(n, e, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : n[e] = t, n; +} +function Ye() { + return Ye = Object.assign ? Object.assign.bind() : function(n) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e]; + for (var i in t) ({}).hasOwnProperty.call(t, i) && (n[i] = t[i]); + } + return n; + }, Ye.apply(null, arguments); +} +function eu(n, e) { + var t = Object.keys(n); + if (Object.getOwnPropertySymbols) { + var i = Object.getOwnPropertySymbols(n); + e && (i = i.filter(function(r) { + return Object.getOwnPropertyDescriptor(n, r).enumerable; + })), t.push.apply(t, i); + } + return t; +} +function He(n) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e] != null ? arguments[e] : {}; + e % 2 ? eu(Object(t), !0).forEach(function(i) { + R1(n, i, t[i]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(t)) : eu(Object(t)).forEach(function(i) { + Object.defineProperty(n, i, Object.getOwnPropertyDescriptor(t, i)); + }); + } + return n; +} +function C1(n, e) { + if (typeof n != "object" || !n) return n; + var t = n[Symbol.toPrimitive]; + if (t !== void 0) { + var i = t.call(n, e); + if (typeof i != "object") return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (e === "string" ? String : Number)(n); +} +function F1(n) { + var e = C1(n, "string"); + return typeof e == "symbol" ? e : e + ""; +} +class br { + constructor(e, t) { + this.trace = void 0, this.debug = void 0, this.log = void 0, this.warn = void 0, this.info = void 0, this.error = void 0; + const i = `[${e}]:`; + this.trace = kr, this.debug = t.debug.bind(null, i), this.log = t.log.bind(null, i), this.warn = t.warn.bind(null, i), this.info = t.info.bind(null, i), this.error = t.error.bind(null, i); + } +} +const kr = function() { +}, P1 = { + trace: kr, + debug: kr, + log: kr, + warn: kr, + info: kr, + error: kr +}; +function ll() { + return Ye({}, P1); +} +function M1(n, e) { + const t = self.console[n]; + return t ? t.bind(self.console, `${e ? "[" + e + "] " : ""}[${n}] >`) : kr; +} +function tu(n, e, t) { + return e[n] ? e[n].bind(e) : M1(n, t); +} +const ul = ll(); +function O1(n, e, t) { + const i = ll(); + if (typeof console == "object" && n === !0 || typeof n == "object") { + const r = [ + // Remove out from list here to hard-disable a log-level + // 'trace', + "debug", + "log", + "info", + "warn", + "error" + ]; + r.forEach((s) => { + i[s] = tu(s, n, t); + }); + try { + i.log(`Debug logs enabled for "${e}" in hls.js version 1.6.5`); + } catch { + return ll(); + } + r.forEach((s) => { + ul[s] = tu(s, n); + }); + } else + Ye(ul, i); + return i; +} +const Ne = ul; +function Rr(n = !0) { + return typeof self > "u" ? void 0 : (n || !self.MediaSource) && self.ManagedMediaSource || self.MediaSource || self.WebKitMediaSource; +} +function $1(n) { + return typeof self < "u" && n === self.ManagedMediaSource; +} +function cd(n, e) { + const t = Object.keys(n), i = Object.keys(e), r = t.length, s = i.length; + return !r || !s || r === s && !t.some((a) => i.indexOf(a) === -1); +} +function ni(n, e = !1) { + if (typeof TextDecoder < "u") { + const u = new TextDecoder("utf-8").decode(n); + if (e) { + const c = u.indexOf("\0"); + return c !== -1 ? u.substring(0, c) : u; + } + return u.replace(/\0/g, ""); + } + const t = n.length; + let i, r, s, a = "", o = 0; + for (; o < t; ) { + if (i = n[o++], i === 0 && e) + return a; + if (i === 0 || i === 3) + continue; + switch (i >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + a += String.fromCharCode(i); + break; + case 12: + case 13: + r = n[o++], a += String.fromCharCode((i & 31) << 6 | r & 63); + break; + case 14: + r = n[o++], s = n[o++], a += String.fromCharCode((i & 15) << 12 | (r & 63) << 6 | (s & 63) << 0); + break; + } + } + return a; +} +const Ni = { + hexDump: function(n) { + let e = ""; + for (let t = 0; t < n.length; t++) { + let i = n[t].toString(16); + i.length < 2 && (i = "0" + i), e += i; + } + return e; + } +}; +function B1(n) { + return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n; +} +var so = { exports: {} }, iu; +function N1() { + return iu || (iu = 1, function(n, e) { + (function(t) { + var i = /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/, r = /^(?=([^\/?#]*))\1([^]*)$/, s = /(?:\/|^)\.(?=\/)/g, a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, o = { + // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or // + // E.g + // With opts.alwaysNormalize = false (default, spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g + // With opts.alwaysNormalize = true (not spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/g + buildAbsoluteURL: function(l, u, c) { + if (c = c || {}, l = l.trim(), u = u.trim(), !u) { + if (!c.alwaysNormalize) + return l; + var h = o.parseURL(l); + if (!h) + throw new Error("Error trying to parse base URL."); + return h.path = o.normalizePath( + h.path + ), o.buildURLFromParts(h); + } + var d = o.parseURL(u); + if (!d) + throw new Error("Error trying to parse relative URL."); + if (d.scheme) + return c.alwaysNormalize ? (d.path = o.normalizePath(d.path), o.buildURLFromParts(d)) : u; + var f = o.parseURL(l); + if (!f) + throw new Error("Error trying to parse base URL."); + if (!f.netLoc && f.path && f.path[0] !== "/") { + var m = r.exec(f.path); + f.netLoc = m[1], f.path = m[2]; + } + f.netLoc && !f.path && (f.path = "/"); + var p = { + // 2c) Otherwise, the embedded URL inherits the scheme of + // the base URL. + scheme: f.scheme, + netLoc: d.netLoc, + path: null, + params: d.params, + query: d.query, + fragment: d.fragment + }; + if (!d.netLoc && (p.netLoc = f.netLoc, d.path[0] !== "/")) + if (!d.path) + p.path = f.path, d.params || (p.params = f.params, d.query || (p.query = f.query)); + else { + var v = f.path, b = v.substring(0, v.lastIndexOf("/") + 1) + d.path; + p.path = o.normalizePath(b); + } + return p.path === null && (p.path = c.alwaysNormalize ? o.normalizePath(d.path) : d.path), o.buildURLFromParts(p); + }, + parseURL: function(l) { + var u = i.exec(l); + return u ? { + scheme: u[1] || "", + netLoc: u[2] || "", + path: u[3] || "", + params: u[4] || "", + query: u[5] || "", + fragment: u[6] || "" + } : null; + }, + normalizePath: function(l) { + for (l = l.split("").reverse().join("").replace(s, ""); l.length !== (l = l.replace(a, "")).length; ) + ; + return l.split("").reverse().join(""); + }, + buildURLFromParts: function(l) { + return l.scheme + l.netLoc + l.path + l.params + l.query + l.fragment; + } + }; + n.exports = o; + })(); + }(so)), so.exports; +} +var zl = N1(); +class ql { + constructor() { + this.aborted = !1, this.loaded = 0, this.retry = 0, this.total = 0, this.chunkCount = 0, this.bwEstimate = 0, this.loading = { + start: 0, + first: 0, + end: 0 + }, this.parsing = { + start: 0, + end: 0 + }, this.buffering = { + start: 0, + first: 0, + end: 0 + }; + } +} +var Qe = { + AUDIO: "audio", + VIDEO: "video", + AUDIOVIDEO: "audiovideo" +}; +class hd { + constructor(e) { + this._byteRange = null, this._url = null, this._stats = null, this._streams = null, this.base = void 0, this.relurl = void 0, typeof e == "string" && (e = { + url: e + }), this.base = e, G1(this, "stats"); + } + // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array + setByteRange(e, t) { + const i = e.split("@", 2); + let r; + i.length === 1 ? r = (t == null ? void 0 : t.byteRangeEndOffset) || 0 : r = parseInt(i[1]), this._byteRange = [r, parseInt(i[0]) + r]; + } + get baseurl() { + return this.base.url; + } + get byteRange() { + return this._byteRange === null ? [] : this._byteRange; + } + get byteRangeStartOffset() { + return this.byteRange[0]; + } + get byteRangeEndOffset() { + return this.byteRange[1]; + } + get elementaryStreams() { + return this._streams === null && (this._streams = { + [Qe.AUDIO]: null, + [Qe.VIDEO]: null, + [Qe.AUDIOVIDEO]: null + }), this._streams; + } + set elementaryStreams(e) { + this._streams = e; + } + get hasStats() { + return this._stats !== null; + } + get hasStreams() { + return this._streams !== null; + } + get stats() { + return this._stats === null && (this._stats = new ql()), this._stats; + } + set stats(e) { + this._stats = e; + } + get url() { + return !this._url && this.baseurl && this.relurl && (this._url = zl.buildAbsoluteURL(this.baseurl, this.relurl, { + alwaysNormalize: !0 + })), this._url || ""; + } + set url(e) { + this._url = e; + } + clearElementaryStreamInfo() { + const { + elementaryStreams: e + } = this; + e[Qe.AUDIO] = null, e[Qe.VIDEO] = null, e[Qe.AUDIOVIDEO] = null; + } +} +function Dt(n) { + return n.sn !== "initSegment"; +} +class ao extends hd { + constructor(e, t) { + super(t), this._decryptdata = null, this._programDateTime = null, this._ref = null, this._bitrate = void 0, this.rawProgramDateTime = null, this.tagList = [], this.duration = 0, this.sn = 0, this.levelkeys = void 0, this.type = void 0, this.loader = null, this.keyLoader = null, this.level = -1, this.cc = 0, this.startPTS = void 0, this.endPTS = void 0, this.startDTS = void 0, this.endDTS = void 0, this.start = 0, this.playlistOffset = 0, this.deltaPTS = void 0, this.maxStartPTS = void 0, this.minEndPTS = void 0, this.data = void 0, this.bitrateTest = !1, this.title = null, this.initSegment = null, this.endList = void 0, this.gap = void 0, this.urlId = 0, this.type = e; + } + get byteLength() { + if (this.hasStats) { + const e = this.stats.total; + if (e) + return e; + } + if (this.byteRange) { + const e = this.byteRange[0], t = this.byteRange[1]; + if (se(e) && se(t)) + return t - e; + } + return null; + } + get bitrate() { + return this.byteLength ? this.byteLength * 8 / this.duration : this._bitrate ? this._bitrate : null; + } + set bitrate(e) { + this._bitrate = e; + } + get decryptdata() { + const { + levelkeys: e + } = this; + if (!e && !this._decryptdata) + return null; + if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) { + const t = this.levelkeys.identity; + if (t) + this._decryptdata = t.getDecryptData(this.sn); + else { + const i = Object.keys(this.levelkeys); + if (i.length === 1) + return this._decryptdata = this.levelkeys[i[0]].getDecryptData(this.sn); + } + } + return this._decryptdata; + } + get end() { + return this.start + this.duration; + } + get endProgramDateTime() { + if (this.programDateTime === null) + return null; + const e = se(this.duration) ? this.duration : 0; + return this.programDateTime + e * 1e3; + } + get encrypted() { + var e; + if ((e = this._decryptdata) != null && e.encrypted) + return !0; + if (this.levelkeys) { + const t = Object.keys(this.levelkeys), i = t.length; + if (i > 1 || i === 1 && this.levelkeys[t[0]].encrypted) + return !0; + } + return !1; + } + get programDateTime() { + return this._programDateTime === null && this.rawProgramDateTime && (this.programDateTime = Date.parse(this.rawProgramDateTime)), this._programDateTime; + } + set programDateTime(e) { + if (!se(e)) { + this._programDateTime = this.rawProgramDateTime = null; + return; + } + this._programDateTime = e; + } + get ref() { + return Dt(this) ? (this._ref || (this._ref = { + base: this.base, + start: this.start, + duration: this.duration, + sn: this.sn, + programDateTime: this.programDateTime + }), this._ref) : null; + } + addStart(e) { + this.setStart(this.start + e); + } + setStart(e) { + this.start = e, this._ref && (this._ref.start = e); + } + setDuration(e) { + this.duration = e, this._ref && (this._ref.duration = e); + } + setKeyFormat(e) { + if (this.levelkeys) { + const t = this.levelkeys[e]; + t && !this._decryptdata && (this._decryptdata = t.getDecryptData(this.sn)); + } + } + abortRequests() { + var e, t; + (e = this.loader) == null || e.abort(), (t = this.keyLoader) == null || t.abort(); + } + setElementaryStreamInfo(e, t, i, r, s, a = !1) { + const { + elementaryStreams: o + } = this, l = o[e]; + if (!l) { + o[e] = { + startPTS: t, + endPTS: i, + startDTS: r, + endDTS: s, + partial: a + }; + return; + } + l.startPTS = Math.min(l.startPTS, t), l.endPTS = Math.max(l.endPTS, i), l.startDTS = Math.min(l.startDTS, r), l.endDTS = Math.max(l.endDTS, s); + } +} +class U1 extends hd { + constructor(e, t, i, r, s) { + super(i), this.fragOffset = 0, this.duration = 0, this.gap = !1, this.independent = !1, this.relurl = void 0, this.fragment = void 0, this.index = void 0, this.duration = e.decimalFloatingPoint("DURATION"), this.gap = e.bool("GAP"), this.independent = e.bool("INDEPENDENT"), this.relurl = e.enumeratedString("URI"), this.fragment = t, this.index = r; + const a = e.enumeratedString("BYTERANGE"); + a && this.setByteRange(a, s), s && (this.fragOffset = s.fragOffset + s.duration); + } + get start() { + return this.fragment.start + this.fragOffset; + } + get end() { + return this.start + this.duration; + } + get loaded() { + const { + elementaryStreams: e + } = this; + return !!(e.audio || e.video || e.audiovideo); + } +} +function dd(n, e) { + const t = Object.getPrototypeOf(n); + if (t) { + const i = Object.getOwnPropertyDescriptor(t, e); + return i || dd(t, e); + } +} +function G1(n, e) { + const t = dd(n, e); + t && (t.enumerable = !0, Object.defineProperty(n, e, t)); +} +const va = Math.pow(2, 32) - 1, z1 = [].push, fd = { + video: 1, + audio: 2, + id3: 3, + text: 4 +}; +function _t(n) { + return String.fromCharCode.apply(null, n); +} +function md(n, e) { + const t = n[e] << 8 | n[e + 1]; + return t < 0 ? 65536 + t : t; +} +function Se(n, e) { + const t = gd(n, e); + return t < 0 ? 4294967296 + t : t; +} +function ru(n, e) { + let t = Se(n, e); + return t *= Math.pow(2, 32), t += Se(n, e + 4), t; +} +function gd(n, e) { + return n[e] << 24 | n[e + 1] << 16 | n[e + 2] << 8 | n[e + 3]; +} +function oo(n, e, t) { + n[e] = t >> 24, n[e + 1] = t >> 16 & 255, n[e + 2] = t >> 8 & 255, n[e + 3] = t & 255; +} +function q1(n) { + const e = n.byteLength; + for (let t = 0; t < e; ) { + const i = Se(n, t); + if (i > 8 && n[t + 4] === 109 && n[t + 5] === 111 && n[t + 6] === 111 && n[t + 7] === 102) + return !0; + t = i > 1 ? t + i : e; + } + return !1; +} +function Le(n, e) { + const t = []; + if (!e.length) + return t; + const i = n.byteLength; + for (let r = 0; r < i; ) { + const s = Se(n, r), a = _t(n.subarray(r + 4, r + 8)), o = s > 1 ? r + s : i; + if (a === e[0]) + if (e.length === 1) + t.push(n.subarray(r + 8, o)); + else { + const l = Le(n.subarray(r + 8, o), e.slice(1)); + l.length && z1.apply(t, l); + } + r = o; + } + return t; +} +function H1(n) { + const e = [], t = n[0]; + let i = 8; + const r = Se(n, i); + i += 4; + let s = 0, a = 0; + t === 0 ? (s = Se(n, i), a = Se(n, i + 4), i += 8) : (s = ru(n, i), a = ru(n, i + 8), i += 16), i += 2; + let o = n.length + a; + const l = md(n, i); + i += 2; + for (let u = 0; u < l; u++) { + let c = i; + const h = Se(n, c); + c += 4; + const d = h & 2147483647; + if ((h & 2147483648) >>> 31 === 1) + return Ne.warn("SIDX has hierarchical references (not supported)"), null; + const m = Se(n, c); + c += 4, e.push({ + referenceSize: d, + subsegmentDuration: m, + // unscaled + info: { + duration: m / r, + start: o, + end: o + d - 1 + } + }), o += d, c += 4, i = c; + } + return { + earliestPresentationTime: s, + timescale: r, + version: t, + referencesCount: l, + references: e + }; +} +function pd(n) { + const e = [], t = Le(n, ["moov", "trak"]); + for (let r = 0; r < t.length; r++) { + const s = t[r], a = Le(s, ["tkhd"])[0]; + if (a) { + let o = a[0]; + const l = Se(a, o === 0 ? 12 : 20), u = Le(s, ["mdia", "mdhd"])[0]; + if (u) { + o = u[0]; + const c = Se(u, o === 0 ? 12 : 20), h = Le(s, ["mdia", "hdlr"])[0]; + if (h) { + const d = _t(h.subarray(8, 12)), f = { + soun: Qe.AUDIO, + vide: Qe.VIDEO + }[d], m = Le(s, ["mdia", "minf", "stbl", "stsd"])[0], p = V1(m); + f ? (e[l] = { + timescale: c, + type: f, + stsd: p + }, e[f] = He({ + timescale: c, + id: l + }, p)) : e[l] = { + timescale: c, + type: d, + stsd: p + }; + } + } + } + } + return Le(n, ["moov", "mvex", "trex"]).forEach((r) => { + const s = Se(r, 4), a = e[s]; + a && (a.default = { + duration: Se(r, 12), + flags: Se(r, 20) + }); + }), e; +} +function V1(n) { + const e = n.subarray(8), t = e.subarray(86), i = _t(e.subarray(4, 8)); + let r = i, s; + const a = i === "enca" || i === "encv"; + if (a) { + const u = Le(e, [i])[0].subarray(i === "enca" ? 28 : 78); + Le(u, ["sinf"]).forEach((h) => { + const d = Le(h, ["schm"])[0]; + if (d) { + const f = _t(d.subarray(4, 8)); + if (f === "cbcs" || f === "cenc") { + const m = Le(h, ["frma"])[0]; + m && (r = _t(m)); + } + } + }); + } + const o = r; + switch (r) { + case "avc1": + case "avc2": + case "avc3": + case "avc4": { + const l = Le(t, ["avcC"])[0]; + l && l.length > 3 && (r += "." + xs(l[1]) + xs(l[2]) + xs(l[3]), s = Ts(o === "avc1" ? "dva1" : "dvav", t)); + break; + } + case "mp4a": { + const l = Le(e, [i])[0], u = Le(l.subarray(28), ["esds"])[0]; + if (u && u.length > 7) { + let c = 4; + if (u[c++] !== 3) + break; + c = lo(u, c), c += 2; + const h = u[c++]; + if (h & 128 && (c += 2), h & 64 && (c += u[c++]), u[c++] !== 4) + break; + c = lo(u, c); + const d = u[c++]; + if (d === 64) + r += "." + xs(d); + else + break; + if (c += 12, u[c++] !== 5) + break; + c = lo(u, c); + const f = u[c++]; + let m = (f & 248) >> 3; + m === 31 && (m += 1 + ((f & 7) << 3) + ((u[c] & 224) >> 5)), r += "." + m; + } + break; + } + case "hvc1": + case "hev1": { + const l = Le(t, ["hvcC"])[0]; + if (l && l.length > 12) { + const u = l[1], c = ["", "A", "B", "C"][u >> 6], h = u & 31, d = Se(l, 2), f = (u & 32) >> 5 ? "H" : "L", m = l[12], p = l.subarray(6, 12); + r += "." + c + h, r += "." + K1(d).toString(16).toUpperCase(), r += "." + f + m; + let v = ""; + for (let b = p.length; b--; ) { + const E = p[b]; + (E || v) && (v = "." + E.toString(16).toUpperCase() + v); + } + r += v; + } + s = Ts(o == "hev1" ? "dvhe" : "dvh1", t); + break; + } + case "dvh1": + case "dvhe": + case "dvav": + case "dva1": + case "dav1": { + r = Ts(r, t) || r; + break; + } + case "vp09": { + const l = Le(t, ["vpcC"])[0]; + if (l && l.length > 6) { + const u = l[4], c = l[5], h = l[6] >> 4 & 15; + r += "." + Bi(u) + "." + Bi(c) + "." + Bi(h); + } + break; + } + case "av01": { + const l = Le(t, ["av1C"])[0]; + if (l && l.length > 2) { + const u = l[1] >>> 5, c = l[1] & 31, h = l[2] >>> 7 ? "H" : "M", d = (l[2] & 64) >> 6, f = (l[2] & 32) >> 5, m = u === 2 && d ? f ? 12 : 10 : d ? 10 : 8, p = (l[2] & 16) >> 4, v = (l[2] & 8) >> 3, b = (l[2] & 4) >> 2, E = l[2] & 3; + r += "." + u + "." + Bi(c) + h + "." + Bi(m) + "." + p + "." + v + b + E + "." + Bi(1) + "." + Bi(1) + "." + Bi(1) + "." + 0, s = Ts("dav1", t); + } + break; + } + } + return { + codec: r, + encrypted: a, + supplemental: s + }; +} +function Ts(n, e) { + const t = Le(e, ["dvvC"]), i = t.length ? t[0] : Le(e, ["dvcC"])[0]; + if (i) { + const r = i[2] >> 1 & 127, s = i[2] << 5 & 32 | i[3] >> 3 & 31; + return n + "." + Bi(r) + "." + Bi(s); + } +} +function K1(n) { + let e = 0; + for (let t = 0; t < 32; t++) + e |= (n >> t & 1) << 31 - t; + return e >>> 0; +} +function lo(n, e) { + const t = e + 5; + for (; n[e++] & 128 && e < t; ) + ; + return e; +} +function xs(n) { + return ("0" + n.toString(16).toUpperCase()).slice(-2); +} +function Bi(n) { + return (n < 10 ? "0" : "") + n; +} +function Y1(n, e) { + if (!n || !e) + return n; + const t = e.keyId; + return t && e.isCommonEncryption && Le(n, ["moov", "trak"]).forEach((r) => { + const a = Le(r, ["mdia", "minf", "stbl", "stsd"])[0].subarray(8); + let o = Le(a, ["enca"]); + const l = o.length > 0; + l || (o = Le(a, ["encv"])), o.forEach((u) => { + const c = l ? u.subarray(28) : u.subarray(78); + Le(c, ["sinf"]).forEach((d) => { + const f = vd(d); + if (f) { + const m = f.subarray(8, 24); + m.some((p) => p !== 0) || (Ne.log(`[eme] Patching keyId in 'enc${l ? "a" : "v"}>sinf>>tenc' box: ${Ni.hexDump(m)} -> ${Ni.hexDump(t)}`), f.set(t, 8)); + } + }); + }); + }), n; +} +function vd(n) { + const e = Le(n, ["schm"])[0]; + if (e) { + const t = _t(e.subarray(4, 8)); + if (t === "cbcs" || t === "cenc") + return Le(n, ["schi", "tenc"])[0]; + } + return null; +} +function W1(n, e, t) { + const i = {}, r = Le(n, ["moof", "traf"]); + for (let s = 0; s < r.length; s++) { + const a = r[s], o = Le(a, ["tfhd"])[0], l = Se(o, 4), u = e[l]; + if (!u) + continue; + const c = i[l] || (i[l] = { + start: NaN, + duration: 0, + sampleCount: 0, + timescale: u.timescale, + type: u.type + }), h = Le(a, ["tfdt"])[0]; + if (h) { + const y = h[0]; + let T = Se(h, 4); + y === 1 && (T === va ? t.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time") : (T *= va + 1, T += Se(h, 8))), se(T) && (!se(c.start) || T < c.start) && (c.start = T); + } + const d = u.default, f = Se(o, 0) | (d == null ? void 0 : d.flags); + let m = (d == null ? void 0 : d.duration) || 0; + f & 8 && (f & 2 ? m = Se(o, 12) : m = Se(o, 8)); + const p = Le(a, ["trun"]); + let v = c.start || 0, b = 0, E = m; + for (let y = 0; y < p.length; y++) { + const T = p[y], A = Se(T, 4), k = c.sampleCount; + c.sampleCount += A; + const w = T[3] & 1, L = T[3] & 4, I = T[2] & 1, R = T[2] & 2, O = T[2] & 4, z = T[2] & 8; + let ie = 8, N = A; + for (w && (ie += 4), L && A && (!(T[ie + 1] & 1) && c.keyFrameIndex === void 0 && (c.keyFrameIndex = k), ie += 4, I ? (E = Se(T, ie), ie += 4) : E = m, R && (ie += 4), z && (ie += 4), v += E, b += E, N--); N--; ) + I ? (E = Se(T, ie), ie += 4) : E = m, R && (ie += 4), O && (T[ie + 1] & 1 || c.keyFrameIndex === void 0 && (c.keyFrameIndex = c.sampleCount - (N + 1), c.keyFrameStart = v), ie += 4), z && (ie += 4), v += E, b += E; + !b && m && (b += m * A); + } + c.duration += b; + } + if (!Object.keys(i).some((s) => i[s].duration)) { + let s = 1 / 0, a = 0; + const o = Le(n, ["sidx"]); + for (let l = 0; l < o.length; l++) { + const u = H1(o[l]); + if (u != null && u.references) { + s = Math.min(s, u.earliestPresentationTime / u.timescale); + const c = u.references.reduce((h, d) => h + d.info.duration || 0, 0); + a = Math.max(a, c + u.earliestPresentationTime / u.timescale); + } + } + a && se(a) && Object.keys(i).forEach((l) => { + i[l].duration || (i[l].duration = a * i[l].timescale - i[l].start); + }); + } + return i; +} +function j1(n, e, t) { + Le(e, ["moof", "traf"]).forEach((i) => { + Le(i, ["tfhd"]).forEach((r) => { + const s = Se(r, 4), a = n[s]; + if (!a) + return; + const o = a.timescale || 9e4; + Le(i, ["tfdt"]).forEach((l) => { + const u = l[0], c = t * o; + if (c) { + let h = Se(l, 4); + if (u === 0) + h -= c, h = Math.max(h, 0), oo(l, 4, h); + else { + h *= Math.pow(2, 32), h += Se(l, 8), h -= c, h = Math.max(h, 0); + const d = Math.floor(h / (va + 1)), f = Math.floor(h % (va + 1)); + oo(l, 4, d), oo(l, 8, f); + } + } + }); + }); + }); +} +function X1(n) { + const e = { + valid: null, + remainder: null + }, t = Le(n, ["moof"]); + if (t.length < 2) + return e.remainder = n, e; + const i = t[t.length - 1]; + return e.valid = n.slice(0, i.byteOffset - 8), e.remainder = n.slice(i.byteOffset - 8), e; +} +function _i(n, e) { + const t = new Uint8Array(n.length + e.length); + return t.set(n), t.set(e, n.length), t; +} +function nu(n, e) { + const t = [], i = e.samples, r = e.timescale, s = e.id; + let a = !1; + return Le(i, ["moof"]).map((l) => { + const u = l.byteOffset - 8; + Le(l, ["traf"]).map((h) => { + const d = Le(h, ["tfdt"]).map((f) => { + const m = f[0]; + let p = Se(f, 4); + return m === 1 && (p *= Math.pow(2, 32), p += Se(f, 8)), p / r; + })[0]; + return d !== void 0 && (n = d), Le(h, ["tfhd"]).map((f) => { + const m = Se(f, 4), p = Se(f, 0) & 16777215, v = (p & 1) !== 0, b = (p & 2) !== 0, E = (p & 8) !== 0; + let y = 0; + const T = (p & 16) !== 0; + let A = 0; + const k = (p & 32) !== 0; + let w = 8; + m === s && (v && (w += 8), b && (w += 4), E && (y = Se(f, w), w += 4), T && (A = Se(f, w), w += 4), k && (w += 4), e.type === "video" && (a = Ga(e.codec)), Le(h, ["trun"]).map((L) => { + const I = L[0], R = Se(L, 0) & 16777215, O = (R & 1) !== 0; + let z = 0; + const ie = (R & 4) !== 0, N = (R & 256) !== 0; + let X = 0; + const K = (R & 512) !== 0; + let Z = 0; + const Q = (R & 1024) !== 0, H = (R & 2048) !== 0; + let Y = 0; + const U = Se(L, 4); + let te = 8; + O && (z = Se(L, te), te += 4), ie && (te += 4); + let ne = z + u; + for (let ce = 0; ce < U; ce++) { + if (N ? (X = Se(L, te), te += 4) : X = y, K ? (Z = Se(L, te), te += 4) : Z = A, Q && (te += 4), H && (I === 0 ? Y = Se(L, te) : Y = gd(L, te), te += 4), e.type === Qe.VIDEO) { + let V = 0; + for (; V < Z; ) { + const le = Se(i, ne); + if (ne += 4, Q1(a, i[ne])) { + const be = i.subarray(ne, ne + le); + Hl(be, a ? 2 : 1, n + Y / r, t); + } + ne += le, V += le + 4; + } + } + n += X / r; + } + })); + }); + }); + }), t; +} +function Ga(n) { + if (!n) + return !1; + const e = n.substring(0, 4); + return e === "hvc1" || e === "hev1" || // Dolby Vision + e === "dvh1" || e === "dvhe"; +} +function Q1(n, e) { + if (n) { + const t = e >> 1 & 63; + return t === 39 || t === 40; + } else + return (e & 31) === 6; +} +function Hl(n, e, t, i) { + const r = yd(n); + let s = 0; + s += e; + let a = 0, o = 0, l = 0; + for (; s < r.length; ) { + a = 0; + do { + if (s >= r.length) + break; + l = r[s++], a += l; + } while (l === 255); + o = 0; + do { + if (s >= r.length) + break; + l = r[s++], o += l; + } while (l === 255); + const u = r.length - s; + let c = s; + if (o < u) + s += o; + else if (o > u) { + Ne.error(`Malformed SEI payload. ${o} is too small, only ${u} bytes left to parse.`); + break; + } + if (a === 4) { + if (r[c++] === 181) { + const d = md(r, c); + if (c += 2, d === 49) { + const f = Se(r, c); + if (c += 4, f === 1195456820) { + const m = r[c++]; + if (m === 3) { + const p = r[c++], v = 31 & p, b = 64 & p, E = b ? 2 + v * 3 : 0, y = new Uint8Array(E); + if (b) { + y[0] = p; + for (let T = 1; T < E; T++) + y[T] = r[c++]; + } + i.push({ + type: m, + payloadType: a, + pts: t, + bytes: y + }); + } + } + } + } + } else if (a === 5 && o > 16) { + const h = []; + for (let m = 0; m < 16; m++) { + const p = r[c++].toString(16); + h.push(p.length == 1 ? "0" + p : p), (m === 3 || m === 5 || m === 7 || m === 9) && h.push("-"); + } + const d = o - 16, f = new Uint8Array(d); + for (let m = 0; m < d; m++) + f[m] = r[c++]; + i.push({ + payloadType: a, + pts: t, + uuid: h.join(""), + userData: ni(f), + userDataBytes: f + }); + } + } +} +function yd(n) { + const e = n.byteLength, t = []; + let i = 1; + for (; i < e - 2; ) + n[i] === 0 && n[i + 1] === 0 && n[i + 2] === 3 ? (t.push(i + 2), i += 2) : i++; + if (t.length === 0) + return n; + const r = e - t.length, s = new Uint8Array(r); + let a = 0; + for (i = 0; i < r; a++, i++) + a === t[0] && (a++, t.shift()), s[i] = n[a]; + return s; +} +function Z1(n) { + const e = n[0]; + let t = "", i = "", r = 0, s = 0, a = 0, o = 0, l = 0, u = 0; + if (e === 0) { + for (; _t(n.subarray(u, u + 1)) !== "\0"; ) + t += _t(n.subarray(u, u + 1)), u += 1; + for (t += _t(n.subarray(u, u + 1)), u += 1; _t(n.subarray(u, u + 1)) !== "\0"; ) + i += _t(n.subarray(u, u + 1)), u += 1; + i += _t(n.subarray(u, u + 1)), u += 1, r = Se(n, 12), s = Se(n, 16), o = Se(n, 20), l = Se(n, 24), u = 28; + } else if (e === 1) { + u += 4, r = Se(n, u), u += 4; + const h = Se(n, u); + u += 4; + const d = Se(n, u); + for (u += 4, a = 2 ** 32 * h + d, k1(a) || (a = Number.MAX_SAFE_INTEGER, Ne.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")), o = Se(n, u), u += 4, l = Se(n, u), u += 4; _t(n.subarray(u, u + 1)) !== "\0"; ) + t += _t(n.subarray(u, u + 1)), u += 1; + for (t += _t(n.subarray(u, u + 1)), u += 1; _t(n.subarray(u, u + 1)) !== "\0"; ) + i += _t(n.subarray(u, u + 1)), u += 1; + i += _t(n.subarray(u, u + 1)), u += 1; + } + const c = n.subarray(u, n.byteLength); + return { + schemeIdUri: t, + value: i, + timeScale: r, + presentationTime: a, + presentationTimeDelta: s, + eventDuration: o, + id: l, + payload: c + }; +} +function J1(n, ...e) { + const t = e.length; + let i = 8, r = t; + for (; r--; ) + i += e[r].byteLength; + const s = new Uint8Array(i); + for (s[0] = i >> 24 & 255, s[1] = i >> 16 & 255, s[2] = i >> 8 & 255, s[3] = i & 255, s.set(n, 4), r = 0, i = 8; r < t; r++) + s.set(e[r], i), i += e[r].byteLength; + return s; +} +function eg(n, e, t) { + if (n.byteLength !== 16) + throw new RangeError("Invalid system id"); + let i, r; + i = 0, r = new Uint8Array(); + let s; + i > 0 ? (s = new Uint8Array(4), e.length > 0 && new DataView(s.buffer).setUint32(0, e.length, !1)) : s = new Uint8Array(); + const a = new Uint8Array(4); + return t && t.byteLength > 0 && new DataView(a.buffer).setUint32(0, t.byteLength, !1), J1( + [112, 115, 115, 104], + new Uint8Array([ + i, + 0, + 0, + 0 + // Flags + ]), + n, + // 16 bytes + s, + r, + a, + t || new Uint8Array() + ); +} +function tg(n) { + const e = []; + if (n instanceof ArrayBuffer) { + const t = n.byteLength; + let i = 0; + for (; i + 32 < t; ) { + const r = new DataView(n, i), s = ig(r); + e.push(s), i += s.size; + } + } + return e; +} +function ig(n) { + const e = n.getUint32(0), t = n.byteOffset, i = n.byteLength; + if (i < e) + return { + offset: t, + size: i + }; + if (n.getUint32(4) !== 1886614376) + return { + offset: t, + size: e + }; + const s = n.getUint32(8) >>> 24; + if (s !== 0 && s !== 1) + return { + offset: t, + size: e + }; + const a = n.buffer, o = Ni.hexDump(new Uint8Array(a, t + 12, 16)), l = n.getUint32(28); + let u = null, c = null; + if (s === 0) { + if (e - 32 < l || l < 22) + return { + offset: t, + size: e + }; + c = new Uint8Array(a, t + 32, l); + } else if (s === 1) { + if (!l || i < t + 32 + l * 16 + 16) + return { + offset: t, + size: e + }; + u = []; + for (let h = 0; h < l; h++) + u.push(new Uint8Array(a, t + 32 + h * 16, 16)); + } + return { + version: s, + systemId: o, + kids: u, + data: c, + offset: t, + size: e + }; +} +const _d = () => /\(Windows.+Firefox\//i.test(navigator.userAgent), bn = { + audio: { + a3ds: 1, + "ac-3": 0.95, + "ac-4": 1, + alac: 0.9, + alaw: 1, + dra1: 1, + "dts+": 1, + "dts-": 1, + dtsc: 1, + dtse: 1, + dtsh: 1, + "ec-3": 0.9, + enca: 1, + fLaC: 0.9, + // MP4-RA listed codec entry for FLAC + flac: 0.9, + // legacy browser codec name for FLAC + FLAC: 0.9, + // some manifests may list "FLAC" with Apple's tools + g719: 1, + g726: 1, + m4ae: 1, + mha1: 1, + mha2: 1, + mhm1: 1, + mhm2: 1, + mlpa: 1, + mp4a: 1, + "raw ": 1, + Opus: 1, + opus: 1, + // browsers expect this to be lowercase despite MP4RA says 'Opus' + samr: 1, + sawb: 1, + sawp: 1, + sevc: 1, + sqcp: 1, + ssmv: 1, + twos: 1, + ulaw: 1 + }, + video: { + avc1: 1, + avc2: 1, + avc3: 1, + avc4: 1, + avcp: 1, + av01: 0.8, + dav1: 0.8, + drac: 1, + dva1: 1, + dvav: 1, + dvh1: 0.7, + dvhe: 0.7, + encv: 1, + hev1: 0.75, + hvc1: 0.75, + mjp2: 1, + mp4v: 1, + mvc1: 1, + mvc2: 1, + mvc3: 1, + mvc4: 1, + resv: 1, + rv60: 1, + s263: 1, + svc1: 1, + svc2: 1, + "vc-1": 1, + vp08: 1, + vp09: 0.9 + }, + text: { + stpp: 1, + wvtt: 1 + } +}; +function bd(n, e) { + const t = bn[e]; + return !!t && !!t[n.slice(0, 4)]; +} +function cl(n, e, t = !0) { + return !n.split(",").some((i) => !Ed(i, e, t)); +} +function Ed(n, e, t = !0) { + var i; + const r = Rr(t); + return (i = r == null ? void 0 : r.isTypeSupported(Zn(n, e))) != null ? i : !1; +} +function Zn(n, e) { + return `${e}/mp4;codecs=${n}`; +} +function su(n) { + if (n) { + const e = n.substring(0, 4); + return bn.video[e]; + } + return 2; +} +function ya(n) { + const e = _d(); + return n.split(",").reduce((t, i) => { + const s = e && Ga(i) ? 9 : bn.video[i]; + return s ? (s * 2 + t) / (t ? 3 : 2) : (bn.audio[i] + t) / (t ? 2 : 1); + }, 0); +} +const uo = {}; +function rg(n, e = !0) { + if (uo[n]) + return uo[n]; + const t = { + // Idealy fLaC and Opus would be first (spec-compliant) but + // some browsers will report that fLaC is supported then fail. + // see: https://bugs.chromium.org/p/chromium/issues/detail?id=1422728 + flac: ["flac", "fLaC", "FLAC"], + opus: ["opus", "Opus"], + // Replace audio codec info if browser does not support mp4a.40.34, + // and demuxer can fallback to 'audio/mpeg' or 'audio/mp4;codecs="mp3"' + "mp4a.40.34": ["mp3"] + }[n]; + for (let r = 0; r < t.length; r++) { + var i; + if (Ed(t[r], "audio", e)) + return uo[n] = t[r], t[r]; + if (t[r] === "mp3" && (i = Rr(e)) != null && i.isTypeSupported("audio/mpeg")) + return ""; + } + return n; +} +const ng = /flac|opus|mp4a\.40\.34/i; +function _a(n, e = !0) { + return n.replace(ng, (t) => rg(t.toLowerCase(), e)); +} +function sg(n, e) { + const t = []; + if (n) { + const i = n.split(","); + for (let r = 0; r < i.length; r++) + bd(i[r], "video") || t.push(i[r]); + } + return e && t.push(e), t.join(","); +} +function sa(n, e) { + if (n && (n.length > 4 || ["ac-3", "ec-3", "alac", "fLaC", "Opus"].indexOf(n) !== -1)) + return n; + if (e) { + const t = e.split(","); + if (t.length > 1) { + if (n) { + for (let i = t.length; i--; ) + if (t[i].substring(0, 4) === n.substring(0, 4)) + return t[i]; + } + return t[0]; + } + } + return e || n; +} +function ag(n) { + const e = n.split(","); + for (let t = 0; t < e.length; t++) { + const i = e[t].split("."); + i.length > 2 && i[0] === "avc1" && (e[t] = `avc1.${parseInt(i[1]).toString(16)}${("000" + parseInt(i[2]).toString(16)).slice(-4)}`); + } + return e.join(","); +} +function og(n) { + if (n.startsWith("av01.")) { + const e = n.split("."), t = ["0", "111", "01", "01", "01", "0"]; + for (let i = e.length; i > 4 && i < 10; i++) + e[i] = t[i - 4]; + return e.join("."); + } + return n; +} +function au(n) { + const e = Rr(n) || { + isTypeSupported: () => !1 + }; + return { + mpeg: e.isTypeSupported("audio/mpeg"), + mp3: e.isTypeSupported('audio/mp4; codecs="mp3"'), + ac3: e.isTypeSupported('audio/mp4; codecs="ac-3"') + }; +} +function Sd(n) { + return n.replace(/^.+codecs=["']?([^"']+).*$/, "$1"); +} +const Td = { + supported: !0, + configurations: [], + decodingInfoResults: [{ + supported: !0, + powerEfficient: !0, + smooth: !0 + }] +}; +function xd(n, e) { + return { + supported: !1, + configurations: e, + decodingInfoResults: [{ + supported: !1, + smooth: !1, + powerEfficient: !1 + }], + error: n + }; +} +const ou = {}; +function lg(n, e, t, i, r, s) { + const a = n.audioCodec ? n.audioGroups : null, o = s == null ? void 0 : s.audioCodec, l = s == null ? void 0 : s.channels, u = l ? parseInt(l) : o ? 1 / 0 : 2; + let c = null; + if (a != null && a.length) + try { + a.length === 1 && a[0] ? c = e.groups[a[0]].channels : c = a.reduce((h, d) => { + if (d) { + const f = e.groups[d]; + if (!f) + throw new Error(`Audio track group ${d} not found`); + Object.keys(f.channels).forEach((m) => { + h[m] = (h[m] || 0) + f.channels[m]; + }); + } + return h; + }, { + 2: 0 + }); + } catch { + return !0; + } + return n.videoCodec !== void 0 && (n.width > 1920 && n.height > 1088 || n.height > 1920 && n.width > 1088 || n.frameRate > Math.max(i, 30) || n.videoRange !== "SDR" && n.videoRange !== t || n.bitrate > Math.max(r, 8e6)) || !!c && se(u) && Object.keys(c).some((h) => parseInt(h) > u); +} +function Ad(n, e, t) { + const i = n.videoCodec, r = n.audioCodec; + if (!i && !r || !t) + return Promise.resolve(Td); + const s = []; + if (i) { + const a = { + width: n.width, + height: n.height, + bitrate: Math.ceil(Math.max(n.bitrate * 0.9, n.averageBitrate)), + // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0. + framerate: n.frameRate || 30 + }, o = n.videoRange; + o !== "SDR" && (a.transferFunction = o.toLowerCase()); + const l = i.split(","), u = navigator.userAgent; + if (l.some((c) => Ga(c)) && _d()) + return Promise.resolve(xd(new Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent sting: (${u})`), s)); + s.push.apply(s, l.map((c) => ({ + type: "media-source", + video: He(He({}, a), {}, { + contentType: Zn(og(c), "video") + }) + }))); + } + return r && n.audioGroups && n.audioGroups.forEach((a) => { + var o; + a && ((o = e.groups[a]) == null || o.tracks.forEach((l) => { + if (l.groupId === a) { + const u = l.channels || "", c = parseFloat(u); + se(c) && c > 2 && s.push.apply(s, r.split(",").map((h) => ({ + type: "media-source", + audio: { + contentType: Zn(h, "audio"), + channels: "" + c + // spatialRendering: + // audioCodec === 'ec-3' && channels.indexOf('JOC'), + } + }))); + } + })); + }), Promise.all(s.map((a) => { + const o = ug(a); + return ou[o] || (ou[o] = t.decodingInfo(a)); + })).then((a) => ({ + supported: !a.some((o) => !o.supported), + configurations: s, + decodingInfoResults: a + })).catch((a) => ({ + supported: !1, + configurations: s, + decodingInfoResults: [], + error: a + })); +} +function ug(n) { + const { + audio: e, + video: t + } = n, i = t || e; + if (i) { + const r = Sd(i.contentType); + if (t) + return `r${t.height}x${t.width}f${Math.ceil(t.framerate)}${t.transferFunction || "sd"}_${r}_${Math.ceil(t.bitrate / 1e5)}`; + if (e) + return `c${e.channels}${e.spatialRendering ? "s" : "n"}_${r}`; + } + return ""; +} +const hl = ["NONE", "TYPE-0", "TYPE-1", null]; +function cg(n) { + return hl.indexOf(n) > -1; +} +const ba = ["SDR", "PQ", "HLG"]; +function hg(n) { + return !!n && ba.indexOf(n) > -1; +} +var aa = { + No: "", + Yes: "YES", + v2: "v2" +}; +function lu(n) { + const { + canSkipUntil: e, + canSkipDateRanges: t, + age: i + } = n, r = i < e / 2; + return e && r ? t ? aa.v2 : aa.Yes : aa.No; +} +class uu { + constructor(e, t, i) { + this.msn = void 0, this.part = void 0, this.skip = void 0, this.msn = e, this.part = t, this.skip = i; + } + addDirectives(e) { + const t = new self.URL(e); + return this.msn !== void 0 && t.searchParams.set("_HLS_msn", this.msn.toString()), this.part !== void 0 && t.searchParams.set("_HLS_part", this.part.toString()), this.skip && t.searchParams.set("_HLS_skip", this.skip), t.href; + } +} +class Jn { + constructor(e) { + if (this._attrs = void 0, this.audioCodec = void 0, this.bitrate = void 0, this.codecSet = void 0, this.url = void 0, this.frameRate = void 0, this.height = void 0, this.id = void 0, this.name = void 0, this.supplemental = void 0, this.videoCodec = void 0, this.width = void 0, this.details = void 0, this.fragmentError = 0, this.loadError = 0, this.loaded = void 0, this.realBitrate = 0, this.supportedPromise = void 0, this.supportedResult = void 0, this._avgBitrate = 0, this._audioGroups = void 0, this._subtitleGroups = void 0, this._urlId = 0, this.url = [e.url], this._attrs = [e.attrs], this.bitrate = e.bitrate, e.details && (this.details = e.details), this.id = e.id || 0, this.name = e.name, this.width = e.width || 0, this.height = e.height || 0, this.frameRate = e.attrs.optionalFloat("FRAME-RATE", 0), this._avgBitrate = e.attrs.decimalInteger("AVERAGE-BANDWIDTH"), this.audioCodec = e.audioCodec, this.videoCodec = e.videoCodec, this.codecSet = [e.videoCodec, e.audioCodec].filter((i) => !!i).map((i) => i.substring(0, 4)).join(","), "supplemental" in e) { + var t; + this.supplemental = e.supplemental; + const i = (t = e.supplemental) == null ? void 0 : t.videoCodec; + i && i !== e.videoCodec && (this.codecSet += `,${i.substring(0, 4)}`); + } + this.addGroupId("audio", e.attrs.AUDIO), this.addGroupId("text", e.attrs.SUBTITLES); + } + get maxBitrate() { + return Math.max(this.realBitrate, this.bitrate); + } + get averageBitrate() { + return this._avgBitrate || this.realBitrate || this.bitrate; + } + get attrs() { + return this._attrs[0]; + } + get codecs() { + return this.attrs.CODECS || ""; + } + get pathwayId() { + return this.attrs["PATHWAY-ID"] || "."; + } + get videoRange() { + return this.attrs["VIDEO-RANGE"] || "SDR"; + } + get score() { + return this.attrs.optionalFloat("SCORE", 0); + } + get uri() { + return this.url[0] || ""; + } + hasAudioGroup(e) { + return cu(this._audioGroups, e); + } + hasSubtitleGroup(e) { + return cu(this._subtitleGroups, e); + } + get audioGroups() { + return this._audioGroups; + } + get subtitleGroups() { + return this._subtitleGroups; + } + addGroupId(e, t) { + if (t) { + if (e === "audio") { + let i = this._audioGroups; + i || (i = this._audioGroups = []), i.indexOf(t) === -1 && i.push(t); + } else if (e === "text") { + let i = this._subtitleGroups; + i || (i = this._subtitleGroups = []), i.indexOf(t) === -1 && i.push(t); + } + } + } + // Deprecated methods (retained for backwards compatibility) + get urlId() { + return 0; + } + set urlId(e) { + } + get audioGroupIds() { + return this.audioGroups ? [this.audioGroupId] : void 0; + } + get textGroupIds() { + return this.subtitleGroups ? [this.textGroupId] : void 0; + } + get audioGroupId() { + var e; + return (e = this.audioGroups) == null ? void 0 : e[0]; + } + get textGroupId() { + var e; + return (e = this.subtitleGroups) == null ? void 0 : e[0]; + } + addFallback() { + } +} +function cu(n, e) { + return !e || !n ? !1 : n.indexOf(e) !== -1; +} +function dg() { + if (typeof matchMedia == "function") { + const n = matchMedia("(dynamic-range: high)"), e = matchMedia("bad query"); + if (n.media !== e.media) + return n.matches === !0; + } + return !1; +} +function fg(n, e) { + let t = !1, i = []; + if (n && (t = n !== "SDR", i = [n]), e) { + i = e.allowedVideoRanges || ba.slice(0); + const r = i.join("") !== "SDR" && !e.videoCodec; + t = e.preferHDR !== void 0 ? e.preferHDR : r && dg(), t || (i = ["SDR"]); + } + return { + preferHDR: t, + allowedVideoRanges: i + }; +} +const mg = (n) => { + const e = /* @__PURE__ */ new WeakSet(); + return (t, i) => { + if (n && (i = n(t, i)), typeof i == "object" && i !== null) { + if (e.has(i)) + return; + e.add(i); + } + return i; + }; +}, it = (n, e) => JSON.stringify(n, mg(e)); +function gg(n, e, t, i, r) { + const s = Object.keys(n), a = i == null ? void 0 : i.channels, o = i == null ? void 0 : i.audioCodec, l = r == null ? void 0 : r.videoCodec, u = a && parseInt(a) === 2; + let c = !1, h = !1, d = 1 / 0, f = 1 / 0, m = 1 / 0, p = 1 / 0, v = 0, b = []; + const { + preferHDR: E, + allowedVideoRanges: y + } = fg(e, r); + for (let L = s.length; L--; ) { + const I = n[s[L]]; + c || (c = I.channels[2] > 0), d = Math.min(d, I.minHeight), f = Math.min(f, I.minFramerate), m = Math.min(m, I.minBitrate), y.filter((O) => I.videoRanges[O] > 0).length > 0 && (h = !0); + } + d = se(d) ? d : 0, f = se(f) ? f : 0; + const T = Math.max(1080, d), A = Math.max(30, f); + m = se(m) ? m : t, t = Math.max(m, t), h || (e = void 0); + const k = s.length > 1; + return { + codecSet: s.reduce((L, I) => { + const R = n[I]; + if (I === L) + return L; + if (b = h ? y.filter((O) => R.videoRanges[O] > 0) : [], k) { + if (R.minBitrate > t) + return Mi(I, `min bitrate of ${R.minBitrate} > current estimate of ${t}`), L; + if (!R.hasDefaultAudio) + return Mi(I, "no renditions with default or auto-select sound found"), L; + if (o && I.indexOf(o.substring(0, 4)) % 5 !== 0) + return Mi(I, `audio codec preference "${o}" not found`), L; + if (a && !u) { + if (!R.channels[a]) + return Mi(I, `no renditions with ${a} channel sound found (channels options: ${Object.keys(R.channels)})`), L; + } else if ((!o || u) && c && R.channels[2] === 0) + return Mi(I, "no renditions with stereo sound found"), L; + if (R.minHeight > T) + return Mi(I, `min resolution of ${R.minHeight} > maximum of ${T}`), L; + if (R.minFramerate > A) + return Mi(I, `min framerate of ${R.minFramerate} > maximum of ${A}`), L; + if (!b.some((O) => R.videoRanges[O] > 0)) + return Mi(I, `no variants with VIDEO-RANGE of ${it(b)} found`), L; + if (l && I.indexOf(l.substring(0, 4)) % 5 !== 0) + return Mi(I, `video codec preference "${l}" not found`), L; + if (R.maxScore < v) + return Mi(I, `max score of ${R.maxScore} < selected max of ${v}`), L; + } + return L && (ya(I) >= ya(L) || R.fragmentError > n[L].fragmentError) ? L : (p = R.minIndex, v = R.maxScore, I); + }, void 0), + videoRanges: b, + preferHDR: E, + minFramerate: f, + minBitrate: m, + minIndex: p + }; +} +function Mi(n, e) { + Ne.log(`[abr] start candidates with "${n}" ignored because ${e}`); +} +function Dd(n) { + return n.reduce((e, t) => { + let i = e.groups[t.groupId]; + i || (i = e.groups[t.groupId] = { + tracks: [], + channels: { + 2: 0 + }, + hasDefault: !1, + hasAutoSelect: !1 + }), i.tracks.push(t); + const r = t.channels || "2"; + return i.channels[r] = (i.channels[r] || 0) + 1, i.hasDefault = i.hasDefault || t.default, i.hasAutoSelect = i.hasAutoSelect || t.autoselect, i.hasDefault && (e.hasDefaultAudio = !0), i.hasAutoSelect && (e.hasAutoSelectAudio = !0), e; + }, { + hasDefaultAudio: !1, + hasAutoSelectAudio: !1, + groups: {} + }); +} +function pg(n, e, t, i) { + return n.slice(t, i + 1).reduce((r, s, a) => { + if (!s.codecSet) + return r; + const o = s.audioGroups; + let l = r[s.codecSet]; + l || (r[s.codecSet] = l = { + minBitrate: 1 / 0, + minHeight: 1 / 0, + minFramerate: 1 / 0, + minIndex: a, + maxScore: 0, + videoRanges: { + SDR: 0 + }, + channels: { + 2: 0 + }, + hasDefaultAudio: !o, + fragmentError: 0 + }), l.minBitrate = Math.min(l.minBitrate, s.bitrate); + const u = Math.min(s.height, s.width); + return l.minHeight = Math.min(l.minHeight, u), l.minFramerate = Math.min(l.minFramerate, s.frameRate), l.minIndex = Math.min(l.minIndex, a), l.maxScore = Math.max(l.maxScore, s.score), l.fragmentError += s.fragmentError, l.videoRanges[s.videoRange] = (l.videoRanges[s.videoRange] || 0) + 1, o && o.forEach((c) => { + if (!c) + return; + const h = e.groups[c]; + h && (l.hasDefaultAudio = l.hasDefaultAudio || e.hasDefaultAudio ? h.hasDefault : h.hasAutoSelect || !e.hasDefaultAudio && !e.hasAutoSelectAudio, Object.keys(h.channels).forEach((d) => { + l.channels[d] = (l.channels[d] || 0) + h.channels[d]; + })); + }), r; + }, {}); +} +function hu(n) { + if (!n) + return n; + const { + lang: e, + assocLang: t, + characteristics: i, + channels: r, + audioCodec: s + } = n; + return { + lang: e, + assocLang: t, + characteristics: i, + channels: r, + audioCodec: s + }; +} +function qi(n, e, t) { + if ("attrs" in n) { + const i = e.indexOf(n); + if (i !== -1) + return i; + } + for (let i = 0; i < e.length; i++) { + const r = e[i]; + if (qr(n, r, t)) + return i; + } + return -1; +} +function qr(n, e, t) { + const { + groupId: i, + name: r, + lang: s, + assocLang: a, + default: o + } = n, l = n.forced; + return (i === void 0 || e.groupId === i) && (r === void 0 || e.name === r) && (s === void 0 || vg(s, e.lang)) && (s === void 0 || e.assocLang === a) && (o === void 0 || e.default === o) && (l === void 0 || e.forced === l) && (!("characteristics" in n) || yg(n.characteristics || "", e.characteristics)) && (t === void 0 || t(n, e)); +} +function vg(n, e = "--") { + return n.length === e.length ? n === e : n.startsWith(e) || e.startsWith(n); +} +function yg(n, e = "") { + const t = n.split(","), i = e.split(","); + return t.length === i.length && !t.some((r) => i.indexOf(r) === -1); +} +function Gr(n, e) { + const { + audioCodec: t, + channels: i + } = n; + return (t === void 0 || (e.audioCodec || "").substring(0, 4) === t.substring(0, 4)) && (i === void 0 || i === (e.channels || "2")); +} +function _g(n, e, t, i, r) { + const s = e[i], o = e.reduce((d, f, m) => { + const p = f.uri; + return (d[p] || (d[p] = [])).push(m), d; + }, {})[s.uri]; + o.length > 1 && (i = Math.max.apply(Math, o)); + const l = s.videoRange, u = s.frameRate, c = s.codecSet.substring(0, 4), h = du(e, i, (d) => { + if (d.videoRange !== l || d.frameRate !== u || d.codecSet.substring(0, 4) !== c) + return !1; + const f = d.audioGroups, m = t.filter((p) => !f || f.indexOf(p.groupId) !== -1); + return qi(n, m, r) > -1; + }); + return h > -1 ? h : du(e, i, (d) => { + const f = d.audioGroups, m = t.filter((p) => !f || f.indexOf(p.groupId) !== -1); + return qi(n, m, r) > -1; + }); +} +function du(n, e, t) { + for (let i = e; i > -1; i--) + if (t(n[i])) + return i; + for (let i = e + 1; i < n.length; i++) + if (t(n[i])) + return i; + return -1; +} +function Ea(n, e) { + var t; + return !!n && n !== ((t = e.loadLevelObj) == null ? void 0 : t.uri); +} +class bg extends br { + constructor(e) { + super("abr", e.logger), this.hls = void 0, this.lastLevelLoadSec = 0, this.lastLoadedFragLevel = -1, this.firstSelection = -1, this._nextAutoLevel = -1, this.nextAutoLevelKey = "", this.audioTracksByGroup = null, this.codecTiers = null, this.timer = -1, this.fragCurrent = null, this.partCurrent = null, this.bitrateTestDelay = 0, this.rebufferNotice = -1, this.bwEstimator = void 0, this._abandonRulesCheck = (t) => { + var i; + const { + fragCurrent: r, + partCurrent: s, + hls: a + } = this, { + autoLevelEnabled: o, + media: l + } = a; + if (!r || !l) + return; + const u = performance.now(), c = s ? s.stats : r.stats, h = s ? s.duration : r.duration, d = u - c.loading.start, f = a.minAutoLevel, m = r.level, p = this._nextAutoLevel; + if (c.aborted || c.loaded && c.loaded === c.total || m <= f) { + this.clearTimer(), this._nextAutoLevel = -1; + return; + } + if (!o) + return; + const v = p > -1 && p !== m, b = !!t || v; + if (!b && (l.paused || !l.playbackRate || !l.readyState)) + return; + const E = a.mainForwardBufferInfo; + if (!b && E === null) + return; + const y = this.bwEstimator.getEstimateTTFB(), T = Math.abs(l.playbackRate); + if (d <= Math.max(y, 1e3 * (h / (T * 2)))) + return; + const A = E ? E.len / T : 0, k = c.loading.first ? c.loading.first - c.loading.start : -1, w = c.loaded && k > -1, L = this.getBwEstimate(), I = a.levels, R = I[m], O = Math.max(c.loaded, Math.round(h * (r.bitrate || R.averageBitrate) / 8)); + let z = w ? d - k : d; + z < 1 && w && (z = Math.min(d, c.loaded * 8 / L)); + const ie = w ? c.loaded * 1e3 / z : 0, N = y / 1e3, X = ie ? (O - c.loaded) / ie : O * 8 / L + N; + if (X <= A) + return; + const K = ie ? ie * 8 : L, Z = ((i = (t == null ? void 0 : t.details) || this.hls.latestLevelDetails) == null ? void 0 : i.live) === !0, Q = this.hls.config.abrBandWidthUpFactor; + let H = Number.POSITIVE_INFINITY, Y; + for (Y = m - 1; Y > f; Y--) { + const ce = I[Y].maxBitrate, V = !I[Y].details || Z; + if (H = this.getTimeToLoadFrag(N, K, h * ce, V), H < Math.min(A, h + N)) + break; + } + if (H >= X || H > h * 10) + return; + w ? this.bwEstimator.sample(d - Math.min(y, k), c.loaded) : this.bwEstimator.sampleTTFB(d); + const U = I[Y].maxBitrate; + this.getBwEstimate() * Q > U && this.resetEstimator(U); + const te = this.findBestLevel(U, f, Y, 0, A, 1, 1); + te > -1 && (Y = te), this.warn(`Fragment ${r.sn}${s ? " part " + s.index : ""} of level ${m} is loading too slowly; + Fragment duration: ${r.duration.toFixed(3)} + Time to underbuffer: ${A.toFixed(3)} s + Estimated load time for current fragment: ${X.toFixed(3)} s + Estimated load time for down switch fragment: ${H.toFixed(3)} s + TTFB estimate: ${k | 0} ms + Current BW estimate: ${se(L) ? L | 0 : "Unknown"} bps + New BW estimate: ${this.getBwEstimate() | 0} bps + Switching to level ${Y} @ ${U | 0} bps`), a.nextLoadLevel = a.nextAutoLevel = Y, this.clearTimer(); + const ne = () => { + if (this.clearTimer(), this.fragCurrent === r && this.hls.loadLevel === Y && Y > 0) { + const ce = this.getStarvationDelay(); + if (this.warn(`Aborting inflight request ${Y > 0 ? "and switching down" : ""} + Fragment duration: ${r.duration.toFixed(3)} s + Time to underbuffer: ${ce.toFixed(3)} s`), r.abortRequests(), this.fragCurrent = this.partCurrent = null, Y > f) { + let V = this.findBestLevel(this.hls.levels[f].bitrate, f, Y, 0, ce, 1, 1); + V === -1 && (V = f), this.hls.nextLoadLevel = this.hls.nextAutoLevel = V, this.resetEstimator(this.hls.levels[V].bitrate); + } + } + }; + v || X > H * 2 ? ne() : this.timer = self.setInterval(ne, H * 1e3), a.trigger(S.FRAG_LOAD_EMERGENCY_ABORTED, { + frag: r, + part: s, + stats: c + }); + }, this.hls = e, this.bwEstimator = this.initEstimator(), this.registerListeners(); + } + resetEstimator(e) { + e && (this.log(`setting initial bwe to ${e}`), this.hls.config.abrEwmaDefaultEstimate = e), this.firstSelection = -1, this.bwEstimator = this.initEstimator(); + } + initEstimator() { + const e = this.hls.config; + return new I1(e.abrEwmaSlowVoD, e.abrEwmaFastVoD, e.abrEwmaDefaultEstimate); + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.FRAG_LOADING, this.onFragLoading, this), e.on(S.FRAG_LOADED, this.onFragLoaded, this), e.on(S.FRAG_BUFFERED, this.onFragBuffered, this), e.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(S.LEVEL_LOADED, this.onLevelLoaded, this), e.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(S.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.FRAG_LOADING, this.onFragLoading, this), e.off(S.FRAG_LOADED, this.onFragLoaded, this), e.off(S.FRAG_BUFFERED, this.onFragBuffered, this), e.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(S.LEVEL_LOADED, this.onLevelLoaded, this), e.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(S.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.off(S.ERROR, this.onError, this)); + } + destroy() { + this.unregisterListeners(), this.clearTimer(), this.hls = this._abandonRulesCheck = null, this.fragCurrent = this.partCurrent = null; + } + onManifestLoading(e, t) { + this.lastLoadedFragLevel = -1, this.firstSelection = -1, this.lastLevelLoadSec = 0, this.fragCurrent = this.partCurrent = null, this.onLevelsUpdated(), this.clearTimer(); + } + onLevelsUpdated() { + this.lastLoadedFragLevel > -1 && this.fragCurrent && (this.lastLoadedFragLevel = this.fragCurrent.level), this._nextAutoLevel = -1, this.onMaxAutoLevelUpdated(), this.codecTiers = null, this.audioTracksByGroup = null; + } + onMaxAutoLevelUpdated() { + this.firstSelection = -1, this.nextAutoLevelKey = ""; + } + onFragLoading(e, t) { + const i = t.frag; + if (!this.ignoreFragment(i)) { + if (!i.bitrateTest) { + var r; + this.fragCurrent = i, this.partCurrent = (r = t.part) != null ? r : null; + } + this.clearTimer(), this.timer = self.setInterval(this._abandonRulesCheck, 100); + } + } + onLevelSwitching(e, t) { + this.clearTimer(); + } + onError(e, t) { + if (!t.fatal) + switch (t.details) { + case B.BUFFER_ADD_CODEC_ERROR: + case B.BUFFER_APPEND_ERROR: + this.lastLoadedFragLevel = -1, this.firstSelection = -1; + break; + case B.FRAG_LOAD_TIMEOUT: { + const i = t.frag, { + fragCurrent: r, + partCurrent: s + } = this; + if (i && r && i.sn === r.sn && i.level === r.level) { + const a = performance.now(), o = s ? s.stats : i.stats, l = a - o.loading.start, u = o.loading.first ? o.loading.first - o.loading.start : -1; + if (o.loaded && u > -1) { + const h = this.bwEstimator.getEstimateTTFB(); + this.bwEstimator.sample(l - Math.min(h, u), o.loaded); + } else + this.bwEstimator.sampleTTFB(l); + } + break; + } + } + } + getTimeToLoadFrag(e, t, i, r) { + const s = e + i / t, a = r ? e + this.lastLevelLoadSec : 0; + return s + a; + } + onLevelLoaded(e, t) { + const i = this.hls.config, { + loading: r + } = t.stats, s = r.end - r.first; + se(s) && (this.lastLevelLoadSec = s / 1e3), t.details.live ? this.bwEstimator.update(i.abrEwmaSlowLive, i.abrEwmaFastLive) : this.bwEstimator.update(i.abrEwmaSlowVoD, i.abrEwmaFastVoD), this.timer > -1 && this._abandonRulesCheck(t.levelInfo); + } + onFragLoaded(e, { + frag: t, + part: i + }) { + const r = i ? i.stats : t.stats; + if (t.type === ue.MAIN && this.bwEstimator.sampleTTFB(r.loading.first - r.loading.start), !this.ignoreFragment(t)) { + if (this.clearTimer(), t.level === this._nextAutoLevel && (this._nextAutoLevel = -1), this.firstSelection = -1, this.hls.config.abrMaxWithRealBitrate) { + const s = i ? i.duration : t.duration, a = this.hls.levels[t.level], o = (a.loaded ? a.loaded.bytes : 0) + r.loaded, l = (a.loaded ? a.loaded.duration : 0) + s; + a.loaded = { + bytes: o, + duration: l + }, a.realBitrate = Math.round(8 * o / l); + } + if (t.bitrateTest) { + const s = { + stats: r, + frag: t, + part: i, + id: t.type + }; + this.onFragBuffered(S.FRAG_BUFFERED, s), t.bitrateTest = !1; + } else + this.lastLoadedFragLevel = t.level; + } + } + onFragBuffered(e, t) { + const { + frag: i, + part: r + } = t, s = r != null && r.stats.loaded ? r.stats : i.stats; + if (s.aborted || this.ignoreFragment(i)) + return; + const a = s.parsing.end - s.loading.start - Math.min(s.loading.first - s.loading.start, this.bwEstimator.getEstimateTTFB()); + this.bwEstimator.sample(a, s.loaded), s.bwEstimate = this.getBwEstimate(), i.bitrateTest ? this.bitrateTestDelay = a / 1e3 : this.bitrateTestDelay = 0; + } + ignoreFragment(e) { + return e.type !== ue.MAIN || e.sn === "initSegment"; + } + clearTimer() { + this.timer > -1 && (self.clearInterval(this.timer), this.timer = -1); + } + get firstAutoLevel() { + const { + maxAutoLevel: e, + minAutoLevel: t + } = this.hls, i = this.getBwEstimate(), r = this.hls.config.maxStarvationDelay, s = this.findBestLevel(i, t, e, 0, r, 1, 1); + if (s > -1) + return s; + const a = this.hls.firstLevel, o = Math.min(Math.max(a, t), e); + return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${a} clamped to ${o}`), o; + } + get forcedAutoLevel() { + return this.nextAutoLevelKey ? -1 : this._nextAutoLevel; + } + // return next auto level + get nextAutoLevel() { + const e = this.forcedAutoLevel, i = this.bwEstimator.canEstimate(), r = this.lastLoadedFragLevel > -1; + if (e !== -1 && (!i || !r || this.nextAutoLevelKey === this.getAutoLevelKey())) + return e; + const s = i && r ? this.getNextABRAutoLevel() : this.firstAutoLevel; + if (e !== -1) { + const a = this.hls.levels; + if (a.length > Math.max(e, s) && a[e].loadError <= a[s].loadError) + return e; + } + return this._nextAutoLevel = s, this.nextAutoLevelKey = this.getAutoLevelKey(), s; + } + getAutoLevelKey() { + return `${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`; + } + getNextABRAutoLevel() { + const { + fragCurrent: e, + partCurrent: t, + hls: i + } = this; + if (i.levels.length <= 1) + return i.loadLevel; + const { + maxAutoLevel: r, + config: s, + minAutoLevel: a + } = i, o = t ? t.duration : e ? e.duration : 0, l = this.getBwEstimate(), u = this.getStarvationDelay(); + let c = s.abrBandWidthFactor, h = s.abrBandWidthUpFactor; + if (u) { + const v = this.findBestLevel(l, a, r, u, 0, c, h); + if (v >= 0) + return this.rebufferNotice = -1, v; + } + let d = o ? Math.min(o, s.maxStarvationDelay) : s.maxStarvationDelay; + if (!u) { + const v = this.bitrateTestDelay; + v && (d = (o ? Math.min(o, s.maxLoadingDelay) : s.maxLoadingDelay) - v, this.info(`bitrate test took ${Math.round(1e3 * v)}ms, set first fragment max fetchDuration to ${Math.round(1e3 * d)} ms`), c = h = 1); + } + const f = this.findBestLevel(l, a, r, u, d, c, h); + if (this.rebufferNotice !== f && (this.rebufferNotice = f, this.info(`${u ? "rebuffering expected" : "buffer is empty"}, optimal quality level ${f}`)), f > -1) + return f; + const m = i.levels[a], p = i.loadLevelObj; + return p && (m == null ? void 0 : m.bitrate) < p.bitrate ? a : i.loadLevel; + } + getStarvationDelay() { + const e = this.hls, t = e.media; + if (!t) + return 1 / 0; + const i = t && t.playbackRate !== 0 ? Math.abs(t.playbackRate) : 1, r = e.mainForwardBufferInfo; + return (r ? r.len : 0) / i; + } + getBwEstimate() { + return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate; + } + findBestLevel(e, t, i, r, s, a, o) { + var l; + const u = r + s, c = this.lastLoadedFragLevel, h = c === -1 ? this.hls.firstLevel : c, { + fragCurrent: d, + partCurrent: f + } = this, { + levels: m, + allAudioTracks: p, + loadLevel: v, + config: b + } = this.hls; + if (m.length === 1) + return 0; + const E = m[h], y = !!((l = this.hls.latestLevelDetails) != null && l.live), T = v === -1 || c === -1; + let A, k = "SDR", w = (E == null ? void 0 : E.frameRate) || 0; + const { + audioPreference: L, + videoPreference: I + } = b, R = this.audioTracksByGroup || (this.audioTracksByGroup = Dd(p)); + let O = -1; + if (T) { + if (this.firstSelection !== -1) + return this.firstSelection; + const K = this.codecTiers || (this.codecTiers = pg(m, R, t, i)), Z = gg(K, k, e, L, I), { + codecSet: Q, + videoRanges: H, + minFramerate: Y, + minBitrate: U, + minIndex: te, + preferHDR: ne + } = Z; + O = te, A = Q, k = ne ? H[H.length - 1] : H[0], w = Y, e = Math.max(e, U), this.log(`picked start tier ${it(Z)}`); + } else + A = E == null ? void 0 : E.codecSet, k = E == null ? void 0 : E.videoRange; + const z = f ? f.duration : d ? d.duration : 0, ie = this.bwEstimator.getEstimateTTFB() / 1e3, N = []; + for (let K = i; K >= t; K--) { + var X; + const Z = m[K], Q = K > h; + if (!Z) + continue; + if (b.useMediaCapabilities && !Z.supportedResult && !Z.supportedPromise) { + const V = navigator.mediaCapabilities; + typeof (V == null ? void 0 : V.decodingInfo) == "function" && (lg(Z, R, k, w, e, L) || Ga(Z.videoCodec)) ? (Z.supportedPromise = Ad(Z, R, V), Z.supportedPromise.then((le) => { + if (!this.hls) + return; + Z.supportedResult = le; + const be = this.hls.levels, Oe = be.indexOf(Z); + le.error ? this.warn(`MediaCapabilities decodingInfo error: "${le.error}" for level ${Oe} ${it(le)}`) : le.supported || (this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${Oe} ${it(le)}`), Oe > -1 && be.length > 1 && (this.log(`Removing unsupported level ${Oe}`), this.hls.removeLevel(Oe), this.hls.loadLevel === -1 && (this.hls.nextLoadLevel = 0))); + })) : Z.supportedResult = Td; + } + if ((A && Z.codecSet !== A || k && Z.videoRange !== k || Q && w > Z.frameRate || !Q && w > 0 && w < Z.frameRate || Z.supportedResult && !((X = Z.supportedResult.decodingInfoResults) != null && X[0].smooth)) && (!T || K !== O)) { + N.push(K); + continue; + } + const H = Z.details, Y = (f ? H == null ? void 0 : H.partTarget : H == null ? void 0 : H.averagetargetduration) || z; + let U; + Q ? U = o * e : U = a * e; + const te = z && r >= z * 2 && s === 0 ? Z.averageBitrate : Z.maxBitrate, ne = this.getTimeToLoadFrag(ie, U, te * Y, H === void 0); + if ( + // if adjusted bw is greater than level bitrate AND + U >= te && // no level change, or new level has no error history + (K === c || Z.loadError === 0 && Z.fragmentError === 0) && // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches + // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ... + // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1 + (ne <= ie || !se(ne) || y && !this.bitrateTestDelay || ne < u) + ) { + const V = this.forcedAutoLevel; + return K !== v && (V === -1 || V !== v) && (N.length && this.trace(`Skipped level(s) ${N.join(",")} of ${i} max with CODECS and VIDEO-RANGE:"${m[N[0]].codecs}" ${m[N[0]].videoRange}; not compatible with "${A}" ${k}`), this.info(`switch candidate:${h}->${K} adjustedbw(${Math.round(U)})-bitrate=${Math.round(U - te)} ttfb:${ie.toFixed(1)} avgDuration:${Y.toFixed(1)} maxFetchDuration:${u.toFixed(1)} fetchDuration:${ne.toFixed(1)} firstSelection:${T} codecSet:${Z.codecSet} videoRange:${Z.videoRange} hls.loadLevel:${v}`)), T && (this.firstSelection = K), K; + } + } + return -1; + } + set nextAutoLevel(e) { + const t = this.deriveNextAutoLevel(e); + this._nextAutoLevel !== t && (this.nextAutoLevelKey = "", this._nextAutoLevel = t); + } + deriveNextAutoLevel(e) { + const { + maxAutoLevel: t, + minAutoLevel: i + } = this.hls; + return Math.min(Math.max(e, i), t); + } +} +const wd = { + /** + * Searches for an item in an array which matches a certain condition. + * This requires the condition to only match one item in the array, + * and for the array to be ordered. + * + * @param list The array to search. + * @param comparisonFn + * Called and provided a candidate item as the first argument. + * Should return: + * > -1 if the item should be located at a lower index than the provided item. + * > 1 if the item should be located at a higher index than the provided item. + * > 0 if the item is the item you're looking for. + * + * @returns the object if found, otherwise returns null + */ + search: function(n, e) { + let t = 0, i = n.length - 1, r = null, s = null; + for (; t <= i; ) { + r = (t + i) / 2 | 0, s = n[r]; + const a = e(s); + if (a > 0) + t = r + 1; + else if (a < 0) + i = r - 1; + else + return s; + } + return null; + } +}; +function Eg(n, e, t) { + if (e === null || !Array.isArray(n) || !n.length || !se(e)) + return null; + const i = n[0].programDateTime; + if (e < (i || 0)) + return null; + const r = n[n.length - 1].endProgramDateTime; + if (e >= (r || 0)) + return null; + for (let s = 0; s < n.length; ++s) { + const a = n[s]; + if (Tg(e, t, a)) + return a; + } + return null; +} +function Hr(n, e, t = 0, i = 0, r = 5e-3) { + let s = null; + if (n) { + s = e[1 + n.sn - e[0].sn] || null; + const o = n.endDTS - t; + o > 0 && o < 15e-7 && (t += 15e-7), s && n.level !== s.level && s.end <= n.end && (s = e[2 + n.sn - e[0].sn] || null); + } else t === 0 && e[0].start === 0 && (s = e[0]); + if (s && ((!n || n.level === s.level) && fu(t, i, s) === 0 || Sg(s, n, Math.min(r, i)))) + return s; + const a = wd.search(e, fu.bind(null, t, i)); + return a && (a !== n || !s) ? a : s; +} +function Sg(n, e, t) { + if (e && e.start === 0 && e.level < n.level && (e.endPTS || 0) > 0) { + const i = e.tagList.reduce((r, s) => (s[0] === "INF" && (r += parseFloat(s[1])), r), t); + return n.start <= i; + } + return !1; +} +function fu(n = 0, e = 0, t) { + if (t.start <= n && t.start + t.duration > n) + return 0; + const i = Math.min(e, t.duration + (t.deltaPTS ? t.deltaPTS : 0)); + return t.start + t.duration - i <= n ? 1 : t.start - i > n && t.start ? -1 : 0; +} +function Tg(n, e, t) { + const i = Math.min(e, t.duration + (t.deltaPTS ? t.deltaPTS : 0)) * 1e3; + return (t.endProgramDateTime || 0) - i > n; +} +function kd(n, e, t) { + if (n && n.startCC <= e && n.endCC >= e) { + let i = n.fragments; + const { + fragmentHint: r + } = n; + r && (i = i.concat(r)); + let s; + return wd.search(i, (a) => a.cc < e ? 1 : a.cc > e ? -1 : (s = a, a.end <= t ? 1 : a.start > t ? -1 : 0)), s || null; + } + return null; +} +function Sa(n) { + switch (n.details) { + case B.FRAG_LOAD_TIMEOUT: + case B.KEY_LOAD_TIMEOUT: + case B.LEVEL_LOAD_TIMEOUT: + case B.MANIFEST_LOAD_TIMEOUT: + return !0; + } + return !1; +} +function mu(n, e) { + const t = Sa(e); + return n.default[`${t ? "timeout" : "error"}Retry`]; +} +function Vl(n, e) { + const t = n.backoff === "linear" ? 1 : Math.pow(2, e); + return Math.min(t * n.retryDelayMs, n.maxRetryDelayMs); +} +function gu(n) { + return He(He({}, n), { + errorRetry: null, + timeoutRetry: null + }); +} +function Ta(n, e, t, i) { + if (!n) + return !1; + const r = i == null ? void 0 : i.code, s = e < n.maxNumRetry && (xg(r) || !!t); + return n.shouldRetry ? n.shouldRetry(n, e, t, i, s) : s; +} +function xg(n) { + return n === 0 && navigator.onLine === !1 || !!n && (n < 400 || n > 499); +} +var Nt = { + DoNothing: 0, + SendAlternateToPenaltyBox: 2, + RemoveAlternatePermanently: 3, + RetryRequest: 5 +}, Ii = { + None: 0, + MoveAllAlternatesMatchingHost: 1, + MoveAllAlternatesMatchingHDCP: 2 +}; +class Ag extends br { + constructor(e) { + super("error-controller", e.logger), this.hls = void 0, this.playlistError = 0, this.penalizedRenditions = {}, this.hls = e, this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(S.ERROR, this.onError, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.LEVEL_UPDATED, this.onLevelUpdated, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(S.ERROR, this.onError, this), e.off(S.ERROR, this.onErrorOut, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.LEVEL_UPDATED, this.onLevelUpdated, this)); + } + destroy() { + this.unregisterListeners(), this.hls = null, this.penalizedRenditions = {}; + } + startLoad(e) { + } + stopLoad() { + this.playlistError = 0; + } + getVariantLevelIndex(e) { + return (e == null ? void 0 : e.type) === ue.MAIN ? e.level : this.hls.loadLevel; + } + onManifestLoading() { + this.playlistError = 0, this.penalizedRenditions = {}; + } + onLevelUpdated() { + this.playlistError = 0; + } + onError(e, t) { + var i; + if (t.fatal) + return; + const r = this.hls, s = t.context; + switch (t.details) { + case B.FRAG_LOAD_ERROR: + case B.FRAG_LOAD_TIMEOUT: + case B.KEY_LOAD_ERROR: + case B.KEY_LOAD_TIMEOUT: + t.errorAction = this.getFragRetryOrSwitchAction(t); + return; + case B.FRAG_PARSING_ERROR: + if ((i = t.frag) != null && i.gap) { + t.errorAction = es(); + return; + } + case B.FRAG_GAP: + case B.FRAG_DECRYPT_ERROR: { + t.errorAction = this.getFragRetryOrSwitchAction(t), t.errorAction.action = Nt.SendAlternateToPenaltyBox; + return; + } + case B.LEVEL_EMPTY_ERROR: + case B.LEVEL_PARSING_ERROR: + { + var a, o; + const u = t.parent === ue.MAIN ? t.level : r.loadLevel; + t.details === B.LEVEL_EMPTY_ERROR && ((a = t.context) != null && (o = a.levelDetails) != null && o.live) ? t.errorAction = this.getPlaylistRetryOrSwitchAction(t, u) : (t.levelRetry = !1, t.errorAction = this.getLevelSwitchAction(t, u)); + } + return; + case B.LEVEL_LOAD_ERROR: + case B.LEVEL_LOAD_TIMEOUT: + typeof (s == null ? void 0 : s.level) == "number" && (t.errorAction = this.getPlaylistRetryOrSwitchAction(t, s.level)); + return; + case B.AUDIO_TRACK_LOAD_ERROR: + case B.AUDIO_TRACK_LOAD_TIMEOUT: + case B.SUBTITLE_LOAD_ERROR: + case B.SUBTITLE_TRACK_LOAD_TIMEOUT: + if (s) { + const u = r.loadLevelObj; + if (u && (s.type === Ce.AUDIO_TRACK && u.hasAudioGroup(s.groupId) || s.type === Ce.SUBTITLE_TRACK && u.hasSubtitleGroup(s.groupId))) { + t.errorAction = this.getPlaylistRetryOrSwitchAction(t, r.loadLevel), t.errorAction.action = Nt.SendAlternateToPenaltyBox, t.errorAction.flags = Ii.MoveAllAlternatesMatchingHost; + return; + } + } + return; + case B.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED: + { + const u = r.loadLevelObj, c = u == null ? void 0 : u.attrs["HDCP-LEVEL"]; + c ? t.errorAction = { + action: Nt.SendAlternateToPenaltyBox, + flags: Ii.MoveAllAlternatesMatchingHDCP, + hdcpLevel: c + } : this.keySystemError(t); + } + return; + case B.BUFFER_ADD_CODEC_ERROR: + case B.REMUX_ALLOC_ERROR: + case B.BUFFER_APPEND_ERROR: + if (!t.errorAction) { + var l; + t.errorAction = this.getLevelSwitchAction(t, (l = t.level) != null ? l : r.loadLevel); + } + return; + case B.INTERNAL_EXCEPTION: + case B.BUFFER_APPENDING_ERROR: + case B.BUFFER_FULL_ERROR: + case B.LEVEL_SWITCH_ERROR: + case B.BUFFER_STALLED_ERROR: + case B.BUFFER_SEEK_OVER_HOLE: + case B.BUFFER_NUDGE_ON_STALL: + t.errorAction = es(); + return; + } + t.type === de.KEY_SYSTEM_ERROR && this.keySystemError(t); + } + keySystemError(e) { + const t = this.getVariantLevelIndex(e.frag); + e.levelRetry = !1, e.errorAction = this.getLevelSwitchAction(e, t); + } + getPlaylistRetryOrSwitchAction(e, t) { + const i = this.hls, r = mu(i.config.playlistLoadPolicy, e), s = this.playlistError++; + if (Ta(r, s, Sa(e), e.response)) + return { + action: Nt.RetryRequest, + flags: Ii.None, + retryConfig: r, + retryCount: s + }; + const o = this.getLevelSwitchAction(e, t); + return r && (o.retryConfig = r, o.retryCount = s), o; + } + getFragRetryOrSwitchAction(e) { + const t = this.hls, i = this.getVariantLevelIndex(e.frag), r = t.levels[i], { + fragLoadPolicy: s, + keyLoadPolicy: a + } = t.config, o = mu(e.details.startsWith("key") ? a : s, e), l = t.levels.reduce((c, h) => c + h.fragmentError, 0); + if (r && (e.details !== B.FRAG_GAP && r.fragmentError++, Ta(o, l, Sa(e), e.response))) + return { + action: Nt.RetryRequest, + flags: Ii.None, + retryConfig: o, + retryCount: l + }; + const u = this.getLevelSwitchAction(e, i); + return o && (u.retryConfig = o, u.retryCount = l), u; + } + getLevelSwitchAction(e, t) { + const i = this.hls; + t == null && (t = i.loadLevel); + const r = this.hls.levels[t]; + if (r) { + var s, a; + const u = e.details; + r.loadError++, u === B.BUFFER_APPEND_ERROR && r.fragmentError++; + let c = -1; + const { + levels: h, + loadLevel: d, + minAutoLevel: f, + maxAutoLevel: m + } = i; + !i.autoLevelEnabled && !i.config.preserveManualLevelOnError && (i.loadLevel = -1); + const p = (s = e.frag) == null ? void 0 : s.type, b = (p === ue.AUDIO && u === B.FRAG_PARSING_ERROR || e.sourceBufferName === "audio" && (u === B.BUFFER_ADD_CODEC_ERROR || u === B.BUFFER_APPEND_ERROR)) && h.some(({ + audioCodec: k + }) => r.audioCodec !== k), y = e.sourceBufferName === "video" && (u === B.BUFFER_ADD_CODEC_ERROR || u === B.BUFFER_APPEND_ERROR) && h.some(({ + codecSet: k, + audioCodec: w + }) => r.codecSet !== k && r.audioCodec === w), { + type: T, + groupId: A + } = (a = e.context) != null ? a : {}; + for (let k = h.length; k--; ) { + const w = (k + d) % h.length; + if (w !== d && w >= f && w <= m && h[w].loadError === 0) { + var o, l; + const L = h[w]; + if (u === B.FRAG_GAP && p === ue.MAIN && e.frag) { + const I = h[w].details; + if (I) { + const R = Hr(e.frag, I.fragments, e.frag.start); + if (R != null && R.gap) + continue; + } + } else { + if (T === Ce.AUDIO_TRACK && L.hasAudioGroup(A) || T === Ce.SUBTITLE_TRACK && L.hasSubtitleGroup(A)) + continue; + if (p === ue.AUDIO && (o = r.audioGroups) != null && o.some((I) => L.hasAudioGroup(I)) || p === ue.SUBTITLE && (l = r.subtitleGroups) != null && l.some((I) => L.hasSubtitleGroup(I)) || b && r.audioCodec === L.audioCodec || !b && r.audioCodec !== L.audioCodec || y && r.codecSet === L.codecSet) + continue; + } + c = w; + break; + } + } + if (c > -1 && i.loadLevel !== c) + return e.levelRetry = !0, this.playlistError = 0, { + action: Nt.SendAlternateToPenaltyBox, + flags: Ii.None, + nextAutoLevel: c + }; + } + return { + action: Nt.SendAlternateToPenaltyBox, + flags: Ii.MoveAllAlternatesMatchingHost + }; + } + onErrorOut(e, t) { + var i; + switch ((i = t.errorAction) == null ? void 0 : i.action) { + case Nt.DoNothing: + break; + case Nt.SendAlternateToPenaltyBox: + this.sendAlternateToPenaltyBox(t), !t.errorAction.resolved && t.details !== B.FRAG_GAP ? t.fatal = !0 : /MediaSource readyState: ended/.test(t.error.message) && (this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`), this.hls.recoverMediaError()); + break; + } + if (t.fatal) { + this.hls.stopLoad(); + return; + } + } + sendAlternateToPenaltyBox(e) { + const t = this.hls, i = e.errorAction; + if (!i) + return; + const { + flags: r, + hdcpLevel: s, + nextAutoLevel: a + } = i; + switch (r) { + case Ii.None: + this.switchLevel(e, a); + break; + case Ii.MoveAllAlternatesMatchingHDCP: + s && (t.maxHdcpLevel = hl[hl.indexOf(s) - 1], i.resolved = !0), this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`); + break; + } + i.resolved || this.switchLevel(e, a); + } + switchLevel(e, t) { + if (t !== void 0 && e.errorAction && (this.warn(`switching to level ${t} after ${e.details}`), this.hls.nextAutoLevel = t, e.errorAction.resolved = !0, this.hls.nextLoadLevel = this.hls.nextAutoLevel, e.details === B.BUFFER_ADD_CODEC_ERROR && e.mimeType && e.sourceBufferName !== "audiovideo")) { + const i = Sd(e.mimeType), r = this.hls.levels; + for (let s = r.length; s--; ) + r[s][`${e.sourceBufferName}Codec`] === i && this.hls.removeLevel(s); + } + } +} +function es(n) { + const e = { + action: Nt.DoNothing, + flags: Ii.None + }; + return n && (e.resolved = !0), e; +} +var bt = { + NOT_LOADED: "NOT_LOADED", + APPENDING: "APPENDING", + PARTIAL: "PARTIAL", + OK: "OK" +}; +class Dg { + constructor(e) { + this.activePartLists = /* @__PURE__ */ Object.create(null), this.endListFragments = /* @__PURE__ */ Object.create(null), this.fragments = /* @__PURE__ */ Object.create(null), this.timeRanges = /* @__PURE__ */ Object.create(null), this.bufferPadding = 0.2, this.hls = void 0, this.hasGaps = !1, this.hls = e, this._registerListeners(); + } + _registerListeners() { + const { + hls: e + } = this; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.BUFFER_APPENDED, this.onBufferAppended, this), e.on(S.FRAG_BUFFERED, this.onFragBuffered, this), e.on(S.FRAG_LOADED, this.onFragLoaded, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.BUFFER_APPENDED, this.onBufferAppended, this), e.off(S.FRAG_BUFFERED, this.onFragBuffered, this), e.off(S.FRAG_LOADED, this.onFragLoaded, this); + } + destroy() { + this._unregisterListeners(), this.fragments = // @ts-ignore + this.activePartLists = // @ts-ignore + this.endListFragments = this.timeRanges = null; + } + /** + * Return a Fragment or Part with an appended range that matches the position and levelType + * Otherwise, return null + */ + getAppendedFrag(e, t) { + const i = this.activePartLists[t]; + if (i) + for (let r = i.length; r--; ) { + const s = i[r]; + if (!s) + break; + const a = s.end; + if (s.start <= e && a !== null && e <= a) + return s; + } + return this.getBufferedFrag(e, t); + } + /** + * Return a buffered Fragment that matches the position and levelType. + * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted). + * If not found any Fragment, return null + */ + getBufferedFrag(e, t) { + return this.getFragAtPos(e, t, !0); + } + getFragAtPos(e, t, i) { + const { + fragments: r + } = this, s = Object.keys(r); + for (let a = s.length; a--; ) { + const o = r[s[a]]; + if ((o == null ? void 0 : o.body.type) === t && (!i || o.buffered)) { + const l = o.body; + if (l.start <= e && e <= l.end) + return l; + } + } + return null; + } + /** + * Partial fragments effected by coded frame eviction will be removed + * The browser will unload parts of the buffer to free up memory for new buffer data + * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable) + */ + detectEvictedFragments(e, t, i, r, s) { + this.timeRanges && (this.timeRanges[e] = t); + const a = (r == null ? void 0 : r.fragment.sn) || -1; + Object.keys(this.fragments).forEach((o) => { + const l = this.fragments[o]; + if (!l || a >= l.body.sn) + return; + if (!l.buffered && (!l.loaded || s)) { + l.body.type === i && this.removeFragment(l.body); + return; + } + const u = l.range[e]; + if (u) { + if (u.time.length === 0) { + this.removeFragment(l.body); + return; + } + u.time.some((c) => { + const h = !this.isTimeBuffered(c.startPTS, c.endPTS, t); + return h && this.removeFragment(l.body), h; + }); + } + }); + } + /** + * Checks if the fragment passed in is loaded in the buffer properly + * Partially loaded fragments will be registered as a partial fragment + */ + detectPartialFragments(e) { + const t = this.timeRanges; + if (!t || e.frag.sn === "initSegment") + return; + const i = e.frag, r = rn(i), s = this.fragments[r]; + if (!s || s.buffered && i.gap) + return; + const a = !i.relurl; + Object.keys(t).forEach((o) => { + const l = i.elementaryStreams[o]; + if (!l) + return; + const u = t[o], c = a || l.partial === !0; + s.range[o] = this.getBufferedTimes(i, e.part, c, u); + }), s.loaded = null, Object.keys(s.range).length ? (s.buffered = !0, (s.body.endList = i.endList || s.body.endList) && (this.endListFragments[s.body.type] = s), As(s) || this.removeParts(i.sn - 1, i.type)) : this.removeFragment(s.body); + } + removeParts(e, t) { + const i = this.activePartLists[t]; + i && (this.activePartLists[t] = pu(i, (r) => r.fragment.sn >= e)); + } + fragBuffered(e, t) { + const i = rn(e); + let r = this.fragments[i]; + !r && t && (r = this.fragments[i] = { + body: e, + appendedPTS: null, + loaded: null, + buffered: !1, + range: /* @__PURE__ */ Object.create(null) + }, e.gap && (this.hasGaps = !0)), r && (r.loaded = null, r.buffered = !0); + } + getBufferedTimes(e, t, i, r) { + const s = { + time: [], + partial: i + }, a = e.start, o = e.end, l = e.minEndPTS || o, u = e.maxStartPTS || a; + for (let c = 0; c < r.length; c++) { + const h = r.start(c) - this.bufferPadding, d = r.end(c) + this.bufferPadding; + if (u >= h && l <= d) { + s.time.push({ + startPTS: Math.max(a, r.start(c)), + endPTS: Math.min(o, r.end(c)) + }); + break; + } else if (a < d && o > h) { + const f = Math.max(a, r.start(c)), m = Math.min(o, r.end(c)); + m > f && (s.partial = !0, s.time.push({ + startPTS: f, + endPTS: m + })); + } else if (o <= h) + break; + } + return s; + } + /** + * Gets the partial fragment for a certain time + */ + getPartialFragment(e) { + let t = null, i, r, s, a = 0; + const { + bufferPadding: o, + fragments: l + } = this; + return Object.keys(l).forEach((u) => { + const c = l[u]; + c && As(c) && (r = c.body.start - o, s = c.body.end + o, e >= r && e <= s && (i = Math.min(e - r, s - e), a <= i && (t = c.body, a = i))); + }), t; + } + isEndListAppended(e) { + const t = this.endListFragments[e]; + return t !== void 0 && (t.buffered || As(t)); + } + getState(e) { + const t = rn(e), i = this.fragments[t]; + return i ? i.buffered ? As(i) ? bt.PARTIAL : bt.OK : bt.APPENDING : bt.NOT_LOADED; + } + isTimeBuffered(e, t, i) { + let r, s; + for (let a = 0; a < i.length; a++) { + if (r = i.start(a) - this.bufferPadding, s = i.end(a) + this.bufferPadding, e >= r && t <= s) + return !0; + if (t <= r) + return !1; + } + return !1; + } + onManifestLoading() { + this.removeAllFragments(); + } + onFragLoaded(e, t) { + if (t.frag.sn === "initSegment" || t.frag.bitrateTest) + return; + const i = t.frag, r = t.part ? null : t, s = rn(i); + this.fragments[s] = { + body: i, + appendedPTS: null, + loaded: r, + buffered: !1, + range: /* @__PURE__ */ Object.create(null) + }; + } + onBufferAppended(e, t) { + const { + frag: i, + part: r, + timeRanges: s, + type: a + } = t; + if (i.sn === "initSegment") + return; + const o = i.type; + if (r) { + let u = this.activePartLists[o]; + u || (this.activePartLists[o] = u = []), u.push(r); + } + this.timeRanges = s; + const l = s[a]; + this.detectEvictedFragments(a, l, o, r); + } + onFragBuffered(e, t) { + this.detectPartialFragments(t); + } + hasFragment(e) { + const t = rn(e); + return !!this.fragments[t]; + } + hasFragments(e) { + const { + fragments: t + } = this, i = Object.keys(t); + if (!e) + return i.length > 0; + for (let r = i.length; r--; ) { + const s = t[i[r]]; + if ((s == null ? void 0 : s.body.type) === e) + return !0; + } + return !1; + } + hasParts(e) { + var t; + return !!((t = this.activePartLists[e]) != null && t.length); + } + removeFragmentsInRange(e, t, i, r, s) { + r && !this.hasGaps || Object.keys(this.fragments).forEach((a) => { + const o = this.fragments[a]; + if (!o) + return; + const l = o.body; + l.type !== i || r && !l.gap || l.start < t && l.end > e && (o.buffered || s) && this.removeFragment(l); + }); + } + removeFragment(e) { + const t = rn(e); + e.clearElementaryStreamInfo(); + const i = this.activePartLists[e.type]; + if (i) { + const r = e.sn; + this.activePartLists[e.type] = pu(i, (s) => s.fragment.sn !== r); + } + delete this.fragments[t], e.endList && delete this.endListFragments[e.type]; + } + removeAllFragments() { + var e, t; + this.fragments = /* @__PURE__ */ Object.create(null), this.endListFragments = /* @__PURE__ */ Object.create(null), this.activePartLists = /* @__PURE__ */ Object.create(null), this.hasGaps = !1; + const i = (e = this.hls) == null || (t = e.latestLevelDetails) == null ? void 0 : t.partList; + i && i.forEach((r) => r.clearElementaryStreamInfo()); + } +} +function As(n) { + var e, t, i; + return n.buffered && (n.body.gap || ((e = n.range.video) == null ? void 0 : e.partial) || ((t = n.range.audio) == null ? void 0 : t.partial) || ((i = n.range.audiovideo) == null ? void 0 : i.partial)); +} +function rn(n) { + return `${n.type}_${n.level}_${n.sn}`; +} +function pu(n, e) { + return n.filter((t) => { + const i = e(t); + return i || t.clearElementaryStreamInfo(), i; + }); +} +var Cr = { + cbc: 0, + ctr: 1 +}; +class wg { + constructor(e, t, i) { + this.subtle = void 0, this.aesIV = void 0, this.aesMode = void 0, this.subtle = e, this.aesIV = t, this.aesMode = i; + } + decrypt(e, t) { + switch (this.aesMode) { + case Cr.cbc: + return this.subtle.decrypt({ + name: "AES-CBC", + iv: this.aesIV + }, t, e); + case Cr.ctr: + return this.subtle.decrypt( + { + name: "AES-CTR", + counter: this.aesIV, + length: 64 + }, + //64 : NIST SP800-38A standard suggests that the counter should occupy half of the counter block + t, + e + ); + default: + throw new Error(`[AESCrypto] invalid aes mode ${this.aesMode}`); + } + } +} +function kg(n) { + const e = n.byteLength, t = e && new DataView(n.buffer).getUint8(e - 1); + return t ? n.slice(0, e - t) : n; +} +class Lg { + constructor() { + this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.ksRows = 0, this.keySize = 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.initTable(); + } + // Using view.getUint32() also swaps the byte order. + uint8ArrayToUint32Array_(e) { + const t = new DataView(e), i = new Uint32Array(4); + for (let r = 0; r < 4; r++) + i[r] = t.getUint32(r * 4); + return i; + } + initTable() { + const e = this.sBox, t = this.invSBox, i = this.subMix, r = i[0], s = i[1], a = i[2], o = i[3], l = this.invSubMix, u = l[0], c = l[1], h = l[2], d = l[3], f = new Uint32Array(256); + let m = 0, p = 0, v = 0; + for (v = 0; v < 256; v++) + v < 128 ? f[v] = v << 1 : f[v] = v << 1 ^ 283; + for (v = 0; v < 256; v++) { + let b = p ^ p << 1 ^ p << 2 ^ p << 3 ^ p << 4; + b = b >>> 8 ^ b & 255 ^ 99, e[m] = b, t[b] = m; + const E = f[m], y = f[E], T = f[y]; + let A = f[b] * 257 ^ b * 16843008; + r[m] = A << 24 | A >>> 8, s[m] = A << 16 | A >>> 16, a[m] = A << 8 | A >>> 24, o[m] = A, A = T * 16843009 ^ y * 65537 ^ E * 257 ^ m * 16843008, u[b] = A << 24 | A >>> 8, c[b] = A << 16 | A >>> 16, h[b] = A << 8 | A >>> 24, d[b] = A, m ? (m = E ^ f[f[f[T ^ E]]], p ^= f[f[p]]) : m = p = 1; + } + } + expandKey(e) { + const t = this.uint8ArrayToUint32Array_(e); + let i = !0, r = 0; + for (; r < t.length && i; ) + i = t[r] === this.key[r], r++; + if (i) + return; + this.key = t; + const s = this.keySize = t.length; + if (s !== 4 && s !== 6 && s !== 8) + throw new Error("Invalid aes key size=" + s); + const a = this.ksRows = (s + 6 + 1) * 4; + let o, l; + const u = this.keySchedule = new Uint32Array(a), c = this.invKeySchedule = new Uint32Array(a), h = this.sBox, d = this.rcon, f = this.invSubMix, m = f[0], p = f[1], v = f[2], b = f[3]; + let E, y; + for (o = 0; o < a; o++) { + if (o < s) { + E = u[o] = t[o]; + continue; + } + y = E, o % s === 0 ? (y = y << 8 | y >>> 24, y = h[y >>> 24] << 24 | h[y >>> 16 & 255] << 16 | h[y >>> 8 & 255] << 8 | h[y & 255], y ^= d[o / s | 0] << 24) : s > 6 && o % s === 4 && (y = h[y >>> 24] << 24 | h[y >>> 16 & 255] << 16 | h[y >>> 8 & 255] << 8 | h[y & 255]), u[o] = E = (u[o - s] ^ y) >>> 0; + } + for (l = 0; l < a; l++) + o = a - l, l & 3 ? y = u[o] : y = u[o - 4], l < 4 || o <= 4 ? c[l] = y : c[l] = m[h[y >>> 24]] ^ p[h[y >>> 16 & 255]] ^ v[h[y >>> 8 & 255]] ^ b[h[y & 255]], c[l] = c[l] >>> 0; + } + // Adding this as a method greatly improves performance. + networkToHostOrderSwap(e) { + return e << 24 | (e & 65280) << 8 | (e & 16711680) >> 8 | e >>> 24; + } + decrypt(e, t, i) { + const r = this.keySize + 6, s = this.invKeySchedule, a = this.invSBox, o = this.invSubMix, l = o[0], u = o[1], c = o[2], h = o[3], d = this.uint8ArrayToUint32Array_(i); + let f = d[0], m = d[1], p = d[2], v = d[3]; + const b = new Int32Array(e), E = new Int32Array(b.length); + let y, T, A, k, w, L, I, R, O, z, ie, N, X, K; + const Z = this.networkToHostOrderSwap; + for (; t < b.length; ) { + for (O = Z(b[t]), z = Z(b[t + 1]), ie = Z(b[t + 2]), N = Z(b[t + 3]), w = O ^ s[0], L = N ^ s[1], I = ie ^ s[2], R = z ^ s[3], X = 4, K = 1; K < r; K++) + y = l[w >>> 24] ^ u[L >> 16 & 255] ^ c[I >> 8 & 255] ^ h[R & 255] ^ s[X], T = l[L >>> 24] ^ u[I >> 16 & 255] ^ c[R >> 8 & 255] ^ h[w & 255] ^ s[X + 1], A = l[I >>> 24] ^ u[R >> 16 & 255] ^ c[w >> 8 & 255] ^ h[L & 255] ^ s[X + 2], k = l[R >>> 24] ^ u[w >> 16 & 255] ^ c[L >> 8 & 255] ^ h[I & 255] ^ s[X + 3], w = y, L = T, I = A, R = k, X = X + 4; + y = a[w >>> 24] << 24 ^ a[L >> 16 & 255] << 16 ^ a[I >> 8 & 255] << 8 ^ a[R & 255] ^ s[X], T = a[L >>> 24] << 24 ^ a[I >> 16 & 255] << 16 ^ a[R >> 8 & 255] << 8 ^ a[w & 255] ^ s[X + 1], A = a[I >>> 24] << 24 ^ a[R >> 16 & 255] << 16 ^ a[w >> 8 & 255] << 8 ^ a[L & 255] ^ s[X + 2], k = a[R >>> 24] << 24 ^ a[w >> 16 & 255] << 16 ^ a[L >> 8 & 255] << 8 ^ a[I & 255] ^ s[X + 3], E[t] = Z(y ^ f), E[t + 1] = Z(k ^ m), E[t + 2] = Z(A ^ p), E[t + 3] = Z(T ^ v), f = O, m = z, p = ie, v = N, t = t + 4; + } + return E.buffer; + } +} +class Ig { + constructor(e, t, i) { + this.subtle = void 0, this.key = void 0, this.aesMode = void 0, this.subtle = e, this.key = t, this.aesMode = i; + } + expandKey() { + const e = Rg(this.aesMode); + return this.subtle.importKey("raw", this.key, { + name: e + }, !1, ["encrypt", "decrypt"]); + } +} +function Rg(n) { + switch (n) { + case Cr.cbc: + return "AES-CBC"; + case Cr.ctr: + return "AES-CTR"; + default: + throw new Error(`[FastAESKey] invalid aes mode ${n}`); + } +} +const Cg = 16; +class Kl { + constructor(e, { + removePKCS7Padding: t = !0 + } = {}) { + if (this.logEnabled = !0, this.removePKCS7Padding = void 0, this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null, this.useSoftware = void 0, this.enableSoftwareAES = void 0, this.enableSoftwareAES = e.enableSoftwareAES, this.removePKCS7Padding = t, t) + try { + const i = self.crypto; + i && (this.subtle = i.subtle || i.webkitSubtle); + } catch { + } + this.useSoftware = !this.subtle; + } + destroy() { + this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null; + } + isSync() { + return this.useSoftware; + } + flush() { + const { + currentResult: e, + remainderData: t + } = this; + if (!e || t) + return this.reset(), null; + const i = new Uint8Array(e); + return this.reset(), this.removePKCS7Padding ? kg(i) : i; + } + reset() { + this.currentResult = null, this.currentIV = null, this.remainderData = null, this.softwareDecrypter && (this.softwareDecrypter = null); + } + decrypt(e, t, i, r) { + return this.useSoftware ? new Promise((s, a) => { + const o = ArrayBuffer.isView(e) ? e : new Uint8Array(e); + this.softwareDecrypt(o, t, i, r); + const l = this.flush(); + l ? s(l.buffer) : a(new Error("[softwareDecrypt] Failed to decrypt data")); + }) : this.webCryptoDecrypt(new Uint8Array(e), t, i, r); + } + // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached + // data is handled in the flush() call + softwareDecrypt(e, t, i, r) { + const { + currentIV: s, + currentResult: a, + remainderData: o + } = this; + if (r !== Cr.cbc || t.byteLength !== 16) + return Ne.warn("SoftwareDecrypt: can only handle AES-128-CBC"), null; + this.logOnce("JS AES decrypt"), o && (e = _i(o, e), this.remainderData = null); + const l = this.getValidChunk(e); + if (!l.length) + return null; + s && (i = s); + let u = this.softwareDecrypter; + u || (u = this.softwareDecrypter = new Lg()), u.expandKey(t); + const c = a; + return this.currentResult = u.decrypt(l.buffer, 0, i), this.currentIV = l.slice(-16).buffer, c || null; + } + webCryptoDecrypt(e, t, i, r) { + if (this.key !== t || !this.fastAesKey) { + if (!this.subtle) + return Promise.resolve(this.onWebCryptoError(e, t, i, r)); + this.key = t, this.fastAesKey = new Ig(this.subtle, t, r); + } + return this.fastAesKey.expandKey().then((s) => this.subtle ? (this.logOnce("WebCrypto AES decrypt"), new wg(this.subtle, new Uint8Array(i), r).decrypt(e.buffer, s)) : Promise.reject(new Error("web crypto not initialized"))).catch((s) => (Ne.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`), this.onWebCryptoError(e, t, i, r))); + } + onWebCryptoError(e, t, i, r) { + const s = this.enableSoftwareAES; + if (s) { + this.useSoftware = !0, this.logEnabled = !0, this.softwareDecrypt(e, t, i, r); + const a = this.flush(); + if (a) + return a.buffer; + } + throw new Error("WebCrypto" + (s ? " and softwareDecrypt" : "") + ": failed to decrypt data"); + } + getValidChunk(e) { + let t = e; + const i = e.length - e.length % Cg; + return i !== e.length && (t = e.slice(0, i), this.remainderData = e.slice(i)), t; + } + logOnce(e) { + this.logEnabled && (Ne.log(`[decrypter]: ${e}`), this.logEnabled = !1); + } +} +const vu = Math.pow(2, 17); +class Fg { + constructor(e) { + this.config = void 0, this.loader = null, this.partLoadTimeout = -1, this.config = e; + } + destroy() { + this.loader && (this.loader.destroy(), this.loader = null); + } + abort() { + this.loader && this.loader.abort(); + } + load(e, t) { + const i = e.url; + if (!i) + return Promise.reject(new fr({ + type: de.NETWORK_ERROR, + details: B.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + error: new Error(`Fragment does not have a ${i ? "part list" : "url"}`), + networkDetails: null + })); + this.abort(); + const r = this.config, s = r.fLoader, a = r.loader; + return new Promise((o, l) => { + if (this.loader && this.loader.destroy(), e.gap) + if (e.tagList.some((m) => m[0] === "GAP")) { + l(_u(e)); + return; + } else + e.gap = !1; + const u = this.loader = s ? new s(r) : new a(r), c = yu(e); + e.loader = u; + const h = gu(r.fragLoadPolicy.default), d = { + loadPolicy: h, + timeout: h.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: e.sn === "initSegment" ? 1 / 0 : vu + }; + e.stats = u.stats; + const f = { + onSuccess: (m, p, v, b) => { + this.resetLoader(e, u); + let E = m.data; + v.resetIV && e.decryptdata && (e.decryptdata.iv = new Uint8Array(E.slice(0, 16)), E = E.slice(16)), o({ + frag: e, + part: null, + payload: E, + networkDetails: b + }); + }, + onError: (m, p, v, b) => { + this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + response: He({ + url: i, + data: void 0 + }, m), + error: new Error(`HTTP Error ${m.code} ${m.text}`), + networkDetails: v, + stats: b + })); + }, + onAbort: (m, p, v) => { + this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.INTERNAL_ABORTED, + fatal: !1, + frag: e, + error: new Error("Aborted"), + networkDetails: v, + stats: m + })); + }, + onTimeout: (m, p, v) => { + this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.FRAG_LOAD_TIMEOUT, + fatal: !1, + frag: e, + error: new Error(`Timeout after ${d.timeout}ms`), + networkDetails: v, + stats: m + })); + } + }; + t && (f.onProgress = (m, p, v, b) => t({ + frag: e, + part: null, + payload: v, + networkDetails: b + })), u.load(c, d, f); + }); + } + loadPart(e, t, i) { + this.abort(); + const r = this.config, s = r.fLoader, a = r.loader; + return new Promise((o, l) => { + if (this.loader && this.loader.destroy(), e.gap || t.gap) { + l(_u(e, t)); + return; + } + const u = this.loader = s ? new s(r) : new a(r), c = yu(e, t); + e.loader = u; + const h = gu(r.fragLoadPolicy.default), d = { + loadPolicy: h, + timeout: h.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: vu + }; + t.stats = u.stats, u.load(c, d, { + onSuccess: (f, m, p, v) => { + this.resetLoader(e, u), this.updateStatsFromPart(e, t); + const b = { + frag: e, + part: t, + payload: f.data, + networkDetails: v + }; + i(b), o(b); + }, + onError: (f, m, p, v) => { + this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + part: t, + response: He({ + url: c.url, + data: void 0 + }, f), + error: new Error(`HTTP Error ${f.code} ${f.text}`), + networkDetails: p, + stats: v + })); + }, + onAbort: (f, m, p) => { + e.stats.aborted = t.stats.aborted, this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.INTERNAL_ABORTED, + fatal: !1, + frag: e, + part: t, + error: new Error("Aborted"), + networkDetails: p, + stats: f + })); + }, + onTimeout: (f, m, p) => { + this.resetLoader(e, u), l(new fr({ + type: de.NETWORK_ERROR, + details: B.FRAG_LOAD_TIMEOUT, + fatal: !1, + frag: e, + part: t, + error: new Error(`Timeout after ${d.timeout}ms`), + networkDetails: p, + stats: f + })); + } + }); + }); + } + updateStatsFromPart(e, t) { + const i = e.stats, r = t.stats, s = r.total; + if (i.loaded += r.loaded, s) { + const l = Math.round(e.duration / t.duration), u = Math.min(Math.round(i.loaded / s), l), h = (l - u) * Math.round(i.loaded / u); + i.total = i.loaded + h; + } else + i.total = Math.max(i.loaded, i.total); + const a = i.loading, o = r.loading; + a.start ? a.first += o.first - o.start : (a.start = o.start, a.first = o.first), a.end = o.end; + } + resetLoader(e, t) { + e.loader = null, this.loader === t && (self.clearTimeout(this.partLoadTimeout), this.loader = null), t.destroy(); + } +} +function yu(n, e = null) { + const t = e || n, i = { + frag: n, + part: e, + responseType: "arraybuffer", + url: t.url, + headers: {}, + rangeStart: 0, + rangeEnd: 0 + }, r = t.byteRangeStartOffset, s = t.byteRangeEndOffset; + if (se(r) && se(s)) { + var a; + let o = r, l = s; + if (n.sn === "initSegment" && Pg((a = n.decryptdata) == null ? void 0 : a.method)) { + const u = s - r; + u % 16 && (l = s + (16 - u % 16)), r !== 0 && (i.resetIV = !0, o = r - 16); + } + i.rangeStart = o, i.rangeEnd = l; + } + return i; +} +function _u(n, e) { + const t = new Error(`GAP ${n.gap ? "tag" : "attribute"} found`), i = { + type: de.MEDIA_ERROR, + details: B.FRAG_GAP, + fatal: !1, + frag: n, + error: t, + networkDetails: null + }; + return e && (i.part = e), (e || n).stats.aborted = !0, new fr(i); +} +function Pg(n) { + return n === "AES-128" || n === "AES-256"; +} +class fr extends Error { + constructor(e) { + super(e.error.message), this.data = void 0, this.data = e; + } +} +class Ld extends br { + constructor(e, t) { + super(e, t), this._boundTick = void 0, this._tickTimer = null, this._tickInterval = null, this._tickCallCount = 0, this._boundTick = this.tick.bind(this); + } + destroy() { + this.onHandlerDestroying(), this.onHandlerDestroyed(); + } + onHandlerDestroying() { + this.clearNextTick(), this.clearInterval(); + } + onHandlerDestroyed() { + } + hasInterval() { + return !!this._tickInterval; + } + hasNextTick() { + return !!this._tickTimer; + } + /** + * @param millis - Interval time (ms) + * @eturns True when interval has been scheduled, false when already scheduled (no effect) + */ + setInterval(e) { + return this._tickInterval ? !1 : (this._tickCallCount = 0, this._tickInterval = self.setInterval(this._boundTick, e), !0); + } + /** + * @returns True when interval was cleared, false when none was set (no effect) + */ + clearInterval() { + return this._tickInterval ? (self.clearInterval(this._tickInterval), this._tickInterval = null, !0) : !1; + } + /** + * @returns True when timeout was cleared, false when none was set (no effect) + */ + clearNextTick() { + return this._tickTimer ? (self.clearTimeout(this._tickTimer), this._tickTimer = null, !0) : !1; + } + /** + * Will call the subclass doTick implementation in this main loop tick + * or in the next one (via setTimeout(,0)) in case it has already been called + * in this tick (in case this is a re-entrant call). + */ + tick() { + this._tickCallCount++, this._tickCallCount === 1 && (this.doTick(), this._tickCallCount > 1 && this.tickImmediate(), this._tickCallCount = 0); + } + tickImmediate() { + this.clearNextTick(), this._tickTimer = self.setTimeout(this._boundTick, 0); + } + /** + * For subclass to implement task logic + * @abstract + */ + doTick() { + } +} +class Yl { + constructor(e, t, i, r = 0, s = -1, a = !1) { + this.level = void 0, this.sn = void 0, this.part = void 0, this.id = void 0, this.size = void 0, this.partial = void 0, this.transmuxing = Ds(), this.buffering = { + audio: Ds(), + video: Ds(), + audiovideo: Ds() + }, this.level = e, this.sn = t, this.id = i, this.size = r, this.part = s, this.partial = a; + } +} +function Ds() { + return { + start: 0, + executeStart: 0, + executeEnd: 0, + end: 0 + }; +} +const bu = { + length: 0, + start: () => 0, + end: () => 0 +}; +class De { + /** + * Return true if `media`'s buffered include `position` + */ + static isBuffered(e, t) { + if (e) { + const i = De.getBuffered(e); + for (let r = i.length; r--; ) + if (t >= i.start(r) && t <= i.end(r)) + return !0; + } + return !1; + } + static bufferedRanges(e) { + if (e) { + const t = De.getBuffered(e); + return De.timeRangesToArray(t); + } + return []; + } + static timeRangesToArray(e) { + const t = []; + for (let i = 0; i < e.length; i++) + t.push({ + start: e.start(i), + end: e.end(i) + }); + return t; + } + static bufferInfo(e, t, i) { + if (e) { + const r = De.bufferedRanges(e); + if (r.length) + return De.bufferedInfo(r, t, i); + } + return { + len: 0, + start: t, + end: t, + bufferedIndex: -1 + }; + } + static bufferedInfo(e, t, i) { + t = Math.max(0, t), e.length > 1 && e.sort((c, h) => c.start - h.start || h.end - c.end); + let r = -1, s = []; + if (i) + for (let c = 0; c < e.length; c++) { + t >= e[c].start && t <= e[c].end && (r = c); + const h = s.length; + if (h) { + const d = s[h - 1].end; + e[c].start - d < i ? e[c].end > d && (s[h - 1].end = e[c].end) : s.push(e[c]); + } else + s.push(e[c]); + } + else + s = e; + let a = 0, o, l = t, u = t; + for (let c = 0; c < s.length; c++) { + const h = s[c].start, d = s[c].end; + if (r === -1 && t >= h && t <= d && (r = c), t + i >= h && t < d) + l = h, u = d, a = u - t; + else if (t + i < h) { + o = h; + break; + } + } + return { + len: a, + start: l || 0, + end: u || 0, + nextStart: o, + buffered: e, + bufferedIndex: r + }; + } + /** + * Safe method to get buffered property. + * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource + */ + static getBuffered(e) { + try { + return e.buffered || bu; + } catch (t) { + return Ne.log("failed to get media.buffered", t), bu; + } + } +} +const Id = /\{\$([a-zA-Z0-9-_]+)\}/g; +function Eu(n) { + return Id.test(n); +} +function dl(n, e) { + if (n.variableList !== null || n.hasVariableRefs) { + const t = n.variableList; + return e.replace(Id, (i) => { + const r = i.substring(2, i.length - 1), s = t == null ? void 0 : t[r]; + return s === void 0 ? (n.playlistParsingError || (n.playlistParsingError = new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${r}"`)), i) : s; + }); + } + return e; +} +function Su(n, e, t) { + let i = n.variableList; + i || (n.variableList = i = {}); + let r, s; + if ("QUERYPARAM" in e) { + r = e.QUERYPARAM; + try { + const a = new self.URL(t).searchParams; + if (a.has(r)) + s = a.get(r); + else + throw new Error(`"${r}" does not match any query parameter in URI: "${t}"`); + } catch (a) { + n.playlistParsingError || (n.playlistParsingError = new Error(`EXT-X-DEFINE QUERYPARAM: ${a.message}`)); + } + } else + r = e.NAME, s = e.VALUE; + r in i ? n.playlistParsingError || (n.playlistParsingError = new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${r}"`)) : i[r] = s || ""; +} +function Mg(n, e, t) { + const i = e.IMPORT; + if (t && i in t) { + let r = n.variableList; + r || (n.variableList = r = {}), r[i] = t[i]; + } else + n.playlistParsingError || (n.playlistParsingError = new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${i}"`)); +} +const Og = /^(\d+)x(\d+)$/, Tu = /(.+?)=(".*?"|.*?)(?:,|$)/g; +class st { + constructor(e, t) { + typeof e == "string" && (e = st.parseAttrList(e, t)), Ye(this, e); + } + get clientAttrs() { + return Object.keys(this).filter((e) => e.substring(0, 2) === "X-"); + } + decimalInteger(e) { + const t = parseInt(this[e], 10); + return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t; + } + hexadecimalInteger(e) { + if (this[e]) { + let t = (this[e] || "0x").slice(2); + t = (t.length & 1 ? "0" : "") + t; + const i = new Uint8Array(t.length / 2); + for (let r = 0; r < t.length / 2; r++) + i[r] = parseInt(t.slice(r * 2, r * 2 + 2), 16); + return i; + } + return null; + } + hexadecimalIntegerAsNumber(e) { + const t = parseInt(this[e], 16); + return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t; + } + decimalFloatingPoint(e) { + return parseFloat(this[e]); + } + optionalFloat(e, t) { + const i = this[e]; + return i ? parseFloat(i) : t; + } + enumeratedString(e) { + return this[e]; + } + enumeratedStringList(e, t) { + const i = this[e]; + return (i ? i.split(/[ ,]+/) : []).reduce((r, s) => (r[s.toLowerCase()] = !0, r), t); + } + bool(e) { + return this[e] === "YES"; + } + decimalResolution(e) { + const t = Og.exec(this[e]); + if (t !== null) + return { + width: parseInt(t[1], 10), + height: parseInt(t[2], 10) + }; + } + static parseAttrList(e, t) { + let i; + const r = {}, s = '"'; + for (Tu.lastIndex = 0; (i = Tu.exec(e)) !== null; ) { + const a = i[1].trim(); + let o = i[2]; + const l = o.indexOf(s) === 0 && o.lastIndexOf(s) === o.length - 1; + let u = !1; + if (l) + o = o.slice(1, -1); + else + switch (a) { + case "IV": + case "SCTE35-CMD": + case "SCTE35-IN": + case "SCTE35-OUT": + u = !0; + } + if (t && (l || u)) + o = dl(t, o); + else if (!u && !l) + switch (a) { + case "CLOSED-CAPTIONS": + if (o === "NONE") + break; + case "ALLOWED-CPC": + case "CLASS": + case "ASSOC-LANGUAGE": + case "AUDIO": + case "BYTERANGE": + case "CHANNELS": + case "CHARACTERISTICS": + case "CODECS": + case "DATA-ID": + case "END-DATE": + case "GROUP-ID": + case "ID": + case "IMPORT": + case "INSTREAM-ID": + case "KEYFORMAT": + case "KEYFORMATVERSIONS": + case "LANGUAGE": + case "NAME": + case "PATHWAY-ID": + case "QUERYPARAM": + case "RECENTLY-REMOVED-DATERANGES": + case "SERVER-URI": + case "STABLE-RENDITION-ID": + case "STABLE-VARIANT-ID": + case "START-DATE": + case "SUBTITLES": + case "SUPPLEMENTAL-CODECS": + case "URI": + case "VALUE": + case "VIDEO": + case "X-ASSET-LIST": + case "X-ASSET-URI": + Ne.warn(`${e}: attribute ${a} is missing quotes`); + } + r[a] = o; + } + return r; + } +} +const $g = "com.apple.hls.interstitial"; +function Bg(n) { + return n !== "ID" && n !== "CLASS" && n !== "CUE" && n !== "START-DATE" && n !== "DURATION" && n !== "END-DATE" && n !== "END-ON-NEXT"; +} +function Ng(n) { + return n === "SCTE35-OUT" || n === "SCTE35-IN" || n === "SCTE35-CMD"; +} +class Rd { + constructor(e, t, i = 0) { + var r; + if (this.attr = void 0, this.tagAnchor = void 0, this.tagOrder = void 0, this._startDate = void 0, this._endDate = void 0, this._dateAtEnd = void 0, this._cue = void 0, this._badValueForSameId = void 0, this.tagAnchor = (t == null ? void 0 : t.tagAnchor) || null, this.tagOrder = (r = t == null ? void 0 : t.tagOrder) != null ? r : i, t) { + const s = t.attr; + for (const a in s) + if (Object.prototype.hasOwnProperty.call(e, a) && e[a] !== s[a]) { + Ne.warn(`DATERANGE tag attribute: "${a}" does not match for tags with ID: "${e.ID}"`), this._badValueForSameId = a; + break; + } + e = Ye(new st({}), s, e); + } + if (this.attr = e, t ? (this._startDate = t._startDate, this._cue = t._cue, this._endDate = t._endDate, this._dateAtEnd = t._dateAtEnd) : this._startDate = new Date(e["START-DATE"]), "END-DATE" in this.attr) { + const s = (t == null ? void 0 : t.endDate) || new Date(this.attr["END-DATE"]); + se(s.getTime()) && (this._endDate = s); + } + } + get id() { + return this.attr.ID; + } + get class() { + return this.attr.CLASS; + } + get cue() { + const e = this._cue; + return e === void 0 ? this._cue = this.attr.enumeratedStringList(this.attr.CUE ? "CUE" : "X-CUE", { + pre: !1, + post: !1, + once: !1 + }) : e; + } + get startTime() { + const { + tagAnchor: e + } = this; + return e === null || e.programDateTime === null ? (Ne.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${e}`), NaN) : e.start + (this.startDate.getTime() - e.programDateTime) / 1e3; + } + get startDate() { + return this._startDate; + } + get endDate() { + const e = this._endDate || this._dateAtEnd; + if (e) + return e; + const t = this.duration; + return t !== null ? this._dateAtEnd = new Date(this._startDate.getTime() + t * 1e3) : null; + } + get duration() { + if ("DURATION" in this.attr) { + const e = this.attr.decimalFloatingPoint("DURATION"); + if (se(e)) + return e; + } else if (this._endDate) + return (this._endDate.getTime() - this._startDate.getTime()) / 1e3; + return null; + } + get plannedDuration() { + return "PLANNED-DURATION" in this.attr ? this.attr.decimalFloatingPoint("PLANNED-DURATION") : null; + } + get endOnNext() { + return this.attr.bool("END-ON-NEXT"); + } + get isInterstitial() { + return this.class === $g; + } + get isValid() { + return !!this.id && !this._badValueForSameId && se(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class) && (!this.attr.CUE || !this.cue.pre && !this.cue.post || this.cue.pre !== this.cue.post) && (!this.isInterstitial || "X-ASSET-URI" in this.attr || "X-ASSET-LIST" in this.attr); + } +} +const Ug = 10; +class Gg { + constructor(e) { + this.PTSKnown = !1, this.alignedSliding = !1, this.averagetargetduration = void 0, this.endCC = 0, this.endSN = 0, this.fragments = void 0, this.fragmentHint = void 0, this.partList = null, this.dateRanges = void 0, this.dateRangeTagCount = 0, this.live = !0, this.requestScheduled = -1, this.ageHeader = 0, this.advancedDateTime = void 0, this.updated = !0, this.advanced = !0, this.misses = 0, this.startCC = 0, this.startSN = 0, this.startTimeOffset = null, this.targetduration = 0, this.totalduration = 0, this.type = null, this.url = void 0, this.m3u8 = "", this.version = null, this.canBlockReload = !1, this.canSkipUntil = 0, this.canSkipDateRanges = !1, this.skippedSegments = 0, this.recentlyRemovedDateranges = void 0, this.partHoldBack = 0, this.holdBack = 0, this.partTarget = 0, this.preloadHint = void 0, this.renditionReports = void 0, this.tuneInGoal = 0, this.deltaUpdateFailed = void 0, this.driftStartTime = 0, this.driftEndTime = 0, this.driftStart = 0, this.driftEnd = 0, this.encryptedFragments = void 0, this.playlistParsingError = null, this.variableList = null, this.hasVariableRefs = !1, this.appliedTimelineOffset = void 0, this.fragments = [], this.encryptedFragments = [], this.dateRanges = {}, this.url = e; + } + reloaded(e) { + if (!e) { + this.advanced = !0, this.updated = !0; + return; + } + const t = this.lastPartSn - e.lastPartSn, i = this.lastPartIndex - e.lastPartIndex; + this.updated = this.endSN !== e.endSN || !!i || !!t || !this.live, this.advanced = this.endSN > e.endSN || t > 0 || t === 0 && i > 0, this.updated || this.advanced ? this.misses = Math.floor(e.misses * 0.6) : this.misses = e.misses + 1; + } + get hasProgramDateTime() { + return this.fragments.length ? se(this.fragments[this.fragments.length - 1].programDateTime) : !1; + } + get levelTargetDuration() { + return this.averagetargetduration || this.targetduration || Ug; + } + get drift() { + const e = this.driftEndTime - this.driftStartTime; + return e > 0 ? (this.driftEnd - this.driftStart) * 1e3 / e : 1; + } + get edge() { + return this.partEnd || this.fragmentEnd; + } + get partEnd() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].end : this.fragmentEnd; + } + get fragmentEnd() { + var e; + return (e = this.fragments) != null && e.length ? this.fragments[this.fragments.length - 1].end : 0; + } + get fragmentStart() { + var e; + return (e = this.fragments) != null && e.length ? this.fragments[0].start : 0; + } + get age() { + return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0; + } + get lastPartIndex() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].index : -1; + } + get maxPartIndex() { + const e = this.partList; + if (e) { + const t = this.lastPartIndex; + if (t !== -1) { + for (let i = e.length; i--; ) + if (e[i].index > t) + return e[i].index; + return t; + } + } + return 0; + } + get lastPartSn() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].fragment.sn : this.endSN; + } + get expired() { + if (this.live && this.age && this.misses < 3) { + const e = this.partEnd - this.fragmentStart; + return this.age > Math.max(e, this.totalduration) + this.levelTargetDuration; + } + return !1; + } +} +function gn(n) { + return n === "AES-128" || n === "AES-256" || n === "AES-256-CTR"; +} +function Wl(n) { + switch (n) { + case "AES-128": + case "AES-256": + return Cr.cbc; + case "AES-256-CTR": + return Cr.ctr; + default: + throw new Error(`invalid full segment method ${n}`); + } +} +function jl(n) { + return Uint8Array.from(atob(n), (e) => e.charCodeAt(0)); +} +function fl(n) { + return Uint8Array.from(unescape(encodeURIComponent(n)), (e) => e.charCodeAt(0)); +} +function zg(n) { + const e = fl(n).subarray(0, 16), t = new Uint8Array(16); + return t.set(e, 16 - e.length), t; +} +function qg(n) { + const e = function(i, r, s) { + const a = i[r]; + i[r] = i[s], i[s] = a; + }; + e(n, 0, 3), e(n, 1, 2), e(n, 4, 5), e(n, 6, 7); +} +function Hg(n) { + const e = n.split(":"); + let t = null; + if (e[0] === "data" && e.length === 2) { + const i = e[1].split(";"), r = i[i.length - 1].split(","); + if (r.length === 2) { + const s = r[0] === "base64", a = r[1]; + s ? (i.splice(-1, 1), t = jl(a)) : t = zg(a); + } + } + return t; +} +const xa = typeof self < "u" ? self : void 0; +var Ve = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.fps", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "com.widevine.alpha" +}, jt = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.streamingkeydelivery", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" +}; +function oa(n) { + switch (n) { + case jt.FAIRPLAY: + return Ve.FAIRPLAY; + case jt.PLAYREADY: + return Ve.PLAYREADY; + case jt.WIDEVINE: + return Ve.WIDEVINE; + case jt.CLEARKEY: + return Ve.CLEARKEY; + } +} +var ws = { + CENC: "1077efecc0b24d02ace33c1e52e2fb4b", + CLEARKEY: "e2719d58a985b3c9781ab030af78d30e", + PLAYREADY: "9a04f07998404286ab92e65be0885f95", + WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed" +}; +function co(n) { + if (n === ws.WIDEVINE) + return Ve.WIDEVINE; + if (n === ws.PLAYREADY) + return Ve.PLAYREADY; + if (n === ws.CENC || n === ws.CLEARKEY) + return Ve.CLEARKEY; +} +function ks(n) { + switch (n) { + case Ve.FAIRPLAY: + return jt.FAIRPLAY; + case Ve.PLAYREADY: + return jt.PLAYREADY; + case Ve.WIDEVINE: + return jt.WIDEVINE; + case Ve.CLEARKEY: + return jt.CLEARKEY; + } +} +function Nn(n) { + const { + drmSystems: e, + widevineLicenseUrl: t + } = n, i = e ? [Ve.FAIRPLAY, Ve.WIDEVINE, Ve.PLAYREADY, Ve.CLEARKEY].filter((r) => !!e[r]) : []; + return !i[Ve.WIDEVINE] && t && i.push(Ve.WIDEVINE), i; +} +const Cd = function(n) { + return xa != null && (n = xa.navigator) != null && n.requestMediaKeySystemAccess ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator) : null; +}(); +function Vg(n, e, t, i) { + let r; + switch (n) { + case Ve.FAIRPLAY: + r = ["cenc", "sinf"]; + break; + case Ve.WIDEVINE: + case Ve.PLAYREADY: + r = ["cenc"]; + break; + case Ve.CLEARKEY: + r = ["cenc", "keyids"]; + break; + default: + throw new Error(`Unknown key-system: ${n}`); + } + return Kg(r, e, t, i); +} +function Kg(n, e, t, i) { + return [{ + initDataTypes: n, + persistentState: i.persistentState || "optional", + distinctiveIdentifier: i.distinctiveIdentifier || "optional", + sessionTypes: i.sessionTypes || [i.sessionType || "temporary"], + audioCapabilities: e.map((s) => ({ + contentType: `audio/mp4; codecs=${s}`, + robustness: i.audioRobustness || "", + encryptionScheme: i.audioEncryptionScheme || null + })), + videoCapabilities: t.map((s) => ({ + contentType: `video/mp4; codecs=${s}`, + robustness: i.videoRobustness || "", + encryptionScheme: i.videoEncryptionScheme || null + })) + }]; +} +function Yg(n) { + var e; + return n.sessionType === "persistent-license" || !!((e = n.sessionTypes) != null && e.some((t) => t === "persistent-license")); +} +function Fd(n) { + const e = new Uint16Array(n.buffer, n.byteOffset, n.byteLength / 2), t = String.fromCharCode.apply(null, Array.from(e)), i = t.substring(t.indexOf("<"), t.length), a = new DOMParser().parseFromString(i, "text/xml").getElementsByTagName("KID")[0]; + if (a) { + const o = a.childNodes[0] ? a.childNodes[0].nodeValue : a.getAttribute("VALUE"); + if (o) { + const l = jl(o).subarray(0, 16); + return qg(l), l; + } + } + return null; +} +let Ls = {}; +class ts { + static clearKeyUriToKeyIdMap() { + Ls = {}; + } + constructor(e, t, i, r = [1], s = null) { + this.uri = void 0, this.method = void 0, this.keyFormat = void 0, this.keyFormatVersions = void 0, this.encrypted = void 0, this.isCommonEncryption = void 0, this.iv = null, this.key = null, this.keyId = null, this.pssh = null, this.method = e, this.uri = t, this.keyFormat = i, this.keyFormatVersions = r, this.iv = s, this.encrypted = e ? e !== "NONE" : !1, this.isCommonEncryption = this.encrypted && !gn(e); + } + isSupported() { + if (this.method) { + if (gn(this.method) || this.method === "NONE") + return !0; + if (this.keyFormat === "identity") + return this.method === "SAMPLE-AES"; + switch (this.keyFormat) { + case jt.FAIRPLAY: + case jt.WIDEVINE: + case jt.PLAYREADY: + case jt.CLEARKEY: + return ["ISO-23001-7", "SAMPLE-AES", "SAMPLE-AES-CENC", "SAMPLE-AES-CTR"].indexOf(this.method) !== -1; + } + } + return !1; + } + getDecryptData(e) { + if (!this.encrypted || !this.uri) + return null; + if (gn(this.method) && this.uri && !this.iv) { + typeof e != "number" && (Ne.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`), e = 0); + const i = Wg(e); + return new ts(this.method, this.uri, "identity", this.keyFormatVersions, i); + } + const t = Hg(this.uri); + if (t) + switch (this.keyFormat) { + case jt.WIDEVINE: + this.pssh = t, t.length >= 22 && (this.keyId = t.subarray(t.length - 22, t.length - 6)); + break; + case jt.PLAYREADY: { + const i = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]); + this.pssh = eg(i, null, t), this.keyId = Fd(t); + break; + } + default: { + let i = t.subarray(0, 16); + if (i.length !== 16) { + const r = new Uint8Array(16); + r.set(i, 16 - i.length), i = r; + } + this.keyId = i; + break; + } + } + if (!this.keyId || this.keyId.byteLength !== 16) { + let i = Ls[this.uri]; + if (!i) { + const r = Object.keys(Ls).length % Number.MAX_SAFE_INTEGER; + i = new Uint8Array(16), new DataView(i.buffer, 12, 4).setUint32(0, r), Ls[this.uri] = i; + } + this.keyId = i; + } + return this; + } +} +function Wg(n) { + const e = new Uint8Array(16); + for (let t = 12; t < 16; t++) + e[t] = n >> 8 * (15 - t) & 255; + return e; +} +const xu = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g, Au = /#EXT-X-MEDIA:(.*)/g, jg = /^#EXT(?:INF|-X-TARGETDURATION):/m, ho = new RegExp([ + /#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, + // duration (#EXTINF:,), group 1 => duration, group 2 => title + /(?!#) *(\S[^\r\n]*)/.source, + // segment URI, group 3 => the URI (note newline is not eaten) + /#.*/.source + // All other non-segment oriented tags will match with all groups empty +].join("|"), "g"), Xg = new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\r?\n?/.source].join("|")); +class Hi { + static findGroup(e, t) { + for (let i = 0; i < e.length; i++) { + const r = e[i]; + if (r.id === t) + return r; + } + } + static resolve(e, t) { + return zl.buildAbsoluteURL(t, e, { + alwaysNormalize: !0 + }); + } + static isMediaPlaylist(e) { + return jg.test(e); + } + static parseMasterPlaylist(e, t) { + const i = Eu(e), r = { + contentSteering: null, + levels: [], + playlistParsingError: null, + sessionData: null, + sessionKeys: null, + startTimeOffset: null, + variableList: null, + hasVariableRefs: i + }, s = []; + xu.lastIndex = 0; + let a; + for (; (a = xu.exec(e)) != null; ) + if (a[1]) { + var o; + const u = new st(a[1], r), c = dl(r, a[2]), h = { + attrs: u, + bitrate: u.decimalInteger("BANDWIDTH") || u.decimalInteger("AVERAGE-BANDWIDTH"), + name: u.NAME, + url: Hi.resolve(c, t) + }, d = u.decimalResolution("RESOLUTION"); + d && (h.width = d.width, h.height = d.height), ku(u.CODECS, h); + const f = u["SUPPLEMENTAL-CODECS"]; + f && (h.supplemental = {}, ku(f, h.supplemental)), (o = h.unknownCodecs) != null && o.length || s.push(h), r.levels.push(h); + } else if (a[3]) { + const u = a[3], c = a[4]; + switch (u) { + case "SESSION-DATA": { + const h = new st(c, r), d = h["DATA-ID"]; + d && (r.sessionData === null && (r.sessionData = {}), r.sessionData[d] = h); + break; + } + case "SESSION-KEY": { + const h = Du(c, t, r); + h.encrypted && h.isSupported() ? (r.sessionKeys === null && (r.sessionKeys = []), r.sessionKeys.push(h)) : Ne.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "${c}"`); + break; + } + case "DEFINE": { + { + const h = new st(c, r); + Su(r, h, t); + } + break; + } + case "CONTENT-STEERING": { + const h = new st(c, r); + r.contentSteering = { + uri: Hi.resolve(h["SERVER-URI"], t), + pathwayId: h["PATHWAY-ID"] || "." + }; + break; + } + case "START": { + r.startTimeOffset = wu(c); + break; + } + } + } + const l = s.length > 0 && s.length < r.levels.length; + return r.levels = l ? s : r.levels, r.levels.length === 0 && (r.playlistParsingError = new Error("no levels found in manifest")), r; + } + static parseMasterPlaylistMedia(e, t, i) { + let r; + const s = {}, a = i.levels, o = { + AUDIO: a.map((u) => ({ + id: u.attrs.AUDIO, + audioCodec: u.audioCodec + })), + SUBTITLES: a.map((u) => ({ + id: u.attrs.SUBTITLES, + textCodec: u.textCodec + })), + "CLOSED-CAPTIONS": [] + }; + let l = 0; + for (Au.lastIndex = 0; (r = Au.exec(e)) !== null; ) { + const u = new st(r[1], i), c = u.TYPE; + if (c) { + const h = o[c], d = s[c] || []; + s[c] = d; + const f = u.LANGUAGE, m = u["ASSOC-LANGUAGE"], p = u.CHANNELS, v = u.CHARACTERISTICS, b = u["INSTREAM-ID"], E = { + attrs: u, + bitrate: 0, + id: l++, + groupId: u["GROUP-ID"] || "", + name: u.NAME || f || "", + type: c, + default: u.bool("DEFAULT"), + autoselect: u.bool("AUTOSELECT"), + forced: u.bool("FORCED"), + lang: f, + url: u.URI ? Hi.resolve(u.URI, t) : "" + }; + if (m && (E.assocLang = m), p && (E.channels = p), v && (E.characteristics = v), b && (E.instreamId = b), h != null && h.length) { + const y = Hi.findGroup(h, E.groupId) || h[0]; + Lu(E, y, "audioCodec"), Lu(E, y, "textCodec"); + } + d.push(E); + } + } + return s; + } + static parseLevelPlaylist(e, t, i, r, s, a) { + var o; + const l = { + url: t + }, u = new Gg(t), c = u.fragments, h = []; + let d = null, f = 0, m = 0, p = 0, v = 0, b = 0, E = null, y = new ao(r, l), T, A, k, w = -1, L = !1, I = null, R; + if (ho.lastIndex = 0, u.m3u8 = e, u.hasVariableRefs = Eu(e), ((o = ho.exec(e)) == null ? void 0 : o[0]) !== "#EXTM3U") + return u.playlistParsingError = new Error("Missing format identifier #EXTM3U"), u; + for (; (T = ho.exec(e)) !== null; ) { + L && (L = !1, y = new ao(r, l), y.playlistOffset = p, y.start = p, y.sn = f, y.cc = v, b && (y.bitrate = b), y.level = i, d && (y.initSegment = d, d.rawProgramDateTime && (y.rawProgramDateTime = d.rawProgramDateTime, d.rawProgramDateTime = null), I && (y.setByteRange(I), I = null))); + const N = T[1]; + if (N) { + y.duration = parseFloat(N); + const X = (" " + T[2]).slice(1); + y.title = X || null, y.tagList.push(X ? ["INF", N, X] : ["INF", N]); + } else if (T[3]) { + if (se(y.duration)) { + y.playlistOffset = p, y.start = p, k && Ru(y, k, u), y.sn = f, y.level = i, y.cc = v, c.push(y); + const X = (" " + T[3]).slice(1); + y.relurl = dl(u, X), ml(y, E, h), E = y, p += y.duration, f++, m = 0, L = !0; + } + } else { + if (T = T[0].match(Xg), !T) { + Ne.warn("No matches on slow regex match for level playlist!"); + continue; + } + for (A = 1; A < T.length && T[A] === void 0; A++) + ; + const X = (" " + T[A]).slice(1), K = (" " + T[A + 1]).slice(1), Z = T[A + 2] ? (" " + T[A + 2]).slice(1) : null; + switch (X) { + case "BYTERANGE": + E ? y.setByteRange(K, E) : y.setByteRange(K); + break; + case "PROGRAM-DATE-TIME": + y.rawProgramDateTime = K, y.tagList.push(["PROGRAM-DATE-TIME", K]), w === -1 && (w = c.length); + break; + case "PLAYLIST-TYPE": + u.type && lr(u, X, T), u.type = K.toUpperCase(); + break; + case "MEDIA-SEQUENCE": + u.startSN !== 0 ? lr(u, X, T) : c.length > 0 && Cu(u, X, T), f = u.startSN = parseInt(K); + break; + case "SKIP": { + u.skippedSegments && lr(u, X, T); + const Q = new st(K, u), H = Q.decimalInteger("SKIPPED-SEGMENTS"); + if (se(H)) { + u.skippedSegments += H; + for (let U = H; U--; ) + c.push(null); + f += H; + } + const Y = Q.enumeratedString("RECENTLY-REMOVED-DATERANGES"); + Y && (u.recentlyRemovedDateranges = (u.recentlyRemovedDateranges || []).concat(Y.split(" "))); + break; + } + case "TARGETDURATION": + u.targetduration !== 0 && lr(u, X, T), u.targetduration = Math.max(parseInt(K), 1); + break; + case "VERSION": + u.version !== null && lr(u, X, T), u.version = parseInt(K); + break; + case "INDEPENDENT-SEGMENTS": + break; + case "ENDLIST": + u.live || lr(u, X, T), u.live = !1; + break; + case "#": + (K || Z) && y.tagList.push(Z ? [K, Z] : [K]); + break; + case "DISCONTINUITY": + v++, y.tagList.push(["DIS"]); + break; + case "GAP": + y.gap = !0, y.tagList.push([X]); + break; + case "BITRATE": + y.tagList.push([X, K]), b = parseInt(K) * 1e3, se(b) ? y.bitrate = b : b = 0; + break; + case "DATERANGE": { + const Q = new st(K, u), H = new Rd(Q, u.dateRanges[Q.ID], u.dateRangeTagCount); + u.dateRangeTagCount++, H.isValid || u.skippedSegments ? u.dateRanges[H.id] = H : Ne.warn(`Ignoring invalid DATERANGE tag: "${K}"`), y.tagList.push(["EXT-X-DATERANGE", K]); + break; + } + case "DEFINE": { + { + const Q = new st(K, u); + "IMPORT" in Q ? Mg(u, Q, a) : Su(u, Q, t); + } + break; + } + case "DISCONTINUITY-SEQUENCE": + u.startCC !== 0 ? lr(u, X, T) : c.length > 0 && Cu(u, X, T), u.startCC = v = parseInt(K); + break; + case "KEY": { + const Q = Du(K, t, u); + if (Q.isSupported()) { + if (Q.method === "NONE") { + k = void 0; + break; + } + k || (k = {}), k[Q.keyFormat] && (k = Ye({}, k)), k[Q.keyFormat] = Q; + } else + Ne.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: "${K}"`); + break; + } + case "START": + u.startTimeOffset = wu(K); + break; + case "MAP": { + const Q = new st(K, u); + if (y.duration) { + const H = new ao(r, l); + Iu(H, Q, i, k), d = H, y.initSegment = d, d.rawProgramDateTime && !y.rawProgramDateTime && (y.rawProgramDateTime = d.rawProgramDateTime); + } else { + const H = y.byteRangeEndOffset; + if (H) { + const Y = y.byteRangeStartOffset; + I = `${H - Y}@${Y}`; + } else + I = null; + Iu(y, Q, i, k), d = y, L = !0; + } + d.cc = v; + break; + } + case "SERVER-CONTROL": { + R && lr(u, X, T), R = new st(K), u.canBlockReload = R.bool("CAN-BLOCK-RELOAD"), u.canSkipUntil = R.optionalFloat("CAN-SKIP-UNTIL", 0), u.canSkipDateRanges = u.canSkipUntil > 0 && R.bool("CAN-SKIP-DATERANGES"), u.partHoldBack = R.optionalFloat("PART-HOLD-BACK", 0), u.holdBack = R.optionalFloat("HOLD-BACK", 0); + break; + } + case "PART-INF": { + u.partTarget && lr(u, X, T); + const Q = new st(K); + u.partTarget = Q.decimalFloatingPoint("PART-TARGET"); + break; + } + case "PART": { + let Q = u.partList; + Q || (Q = u.partList = []); + const H = m > 0 ? Q[Q.length - 1] : void 0, Y = m++, U = new st(K, u), te = new U1(U, y, l, Y, H); + Q.push(te), y.duration += te.duration; + break; + } + case "PRELOAD-HINT": { + const Q = new st(K, u); + u.preloadHint = Q; + break; + } + case "RENDITION-REPORT": { + const Q = new st(K, u); + u.renditionReports = u.renditionReports || [], u.renditionReports.push(Q); + break; + } + default: + Ne.warn(`line parsed but not handled: ${T}`); + break; + } + } + } + E && !E.relurl ? (c.pop(), p -= E.duration, u.partList && (u.fragmentHint = E)) : u.partList && (ml(y, E, h), y.cc = v, u.fragmentHint = y, k && Ru(y, k, u)), u.targetduration || (u.playlistParsingError = new Error("#EXT-X-TARGETDURATION is required")); + const O = c.length, z = c[0], ie = c[O - 1]; + if (p += u.skippedSegments * u.targetduration, p > 0 && O && ie) { + u.averagetargetduration = p / O; + const N = ie.sn; + u.endSN = N !== "initSegment" ? N : 0, u.live || (ie.endList = !0), z && u.startCC === void 0 && (u.startCC = z.cc), w > 0 && (Zg(c, w), z && h.unshift(z)); + } else + u.endSN = 0, u.startCC = 0; + return u.fragmentHint && (p += u.fragmentHint.duration), u.totalduration = p, h.length && u.dateRangeTagCount && z && Pd(h, u), u.endCC = v, u; + } +} +function Pd(n, e) { + const t = n.length; + if (!t) + return; + const i = n[t - 1], r = e.live ? 1 / 0 : e.totalduration, s = Object.keys(e.dateRanges); + for (let a = s.length; a--; ) { + const o = e.dateRanges[s[a]], l = o.startDate.getTime(); + o.tagAnchor = i.ref; + for (let u = t; u--; ) { + const c = Qg(e, l, n, u, r); + if (c !== -1) { + o.tagAnchor = e.fragments[c].ref; + break; + } + } + } +} +function Qg(n, e, t, i, r) { + const s = t[i]; + if (s) { + const o = s.programDateTime; + if (e >= o || i === 0) { + var a; + const l = (((a = t[i + 1]) == null ? void 0 : a.start) || r) - s.start; + if (e <= o + l * 1e3) { + const u = t[i].sn - n.startSN, c = n.fragments; + if (c.length > t.length) { + const d = (t[i + 1] || c[c.length - 1]).sn - n.startSN; + for (let f = d; f > u; f--) { + const m = c[f].programDateTime; + if (e >= m && e < m + c[f].duration * 1e3) + return f; + } + } + return u; + } + } + } + return -1; +} +function Du(n, e, t) { + var i, r; + const s = new st(n, t), a = (i = s.METHOD) != null ? i : "", o = s.URI, l = s.hexadecimalInteger("IV"), u = s.KEYFORMATVERSIONS, c = (r = s.KEYFORMAT) != null ? r : "identity"; + o && s.IV && !l && Ne.error(`Invalid IV: ${s.IV}`); + const h = o ? Hi.resolve(o, e) : "", d = (u || "1").split("/").map(Number).filter(Number.isFinite); + return new ts(a, h, c, d, l); +} +function wu(n) { + const t = new st(n).decimalFloatingPoint("TIME-OFFSET"); + return se(t) ? t : null; +} +function ku(n, e) { + let t = (n || "").split(/[ ,]+/).filter((i) => i); + ["video", "audio", "text"].forEach((i) => { + const r = t.filter((s) => bd(s, i)); + r.length && (e[`${i}Codec`] = r.map((s) => s.split("/")[0]).join(","), t = t.filter((s) => r.indexOf(s) === -1)); + }), e.unknownCodecs = t; +} +function Lu(n, e, t) { + const i = e[t]; + i && (n[t] = i); +} +function Zg(n, e) { + let t = n[e]; + for (let i = e; i--; ) { + const r = n[i]; + if (!r) + return; + r.programDateTime = t.programDateTime - r.duration * 1e3, t = r; + } +} +function ml(n, e, t) { + n.rawProgramDateTime ? t.push(n) : e != null && e.programDateTime && (n.programDateTime = e.endProgramDateTime); +} +function Iu(n, e, t, i) { + n.relurl = e.URI, e.BYTERANGE && n.setByteRange(e.BYTERANGE), n.level = t, n.sn = "initSegment", i && (n.levelkeys = i), n.initSegment = null; +} +function Ru(n, e, t) { + n.levelkeys = e; + const { + encryptedFragments: i + } = t; + (!i.length || i[i.length - 1].levelkeys !== e) && Object.keys(e).some((r) => e[r].isCommonEncryption) && i.push(n); +} +function lr(n, e, t) { + n.playlistParsingError = new Error(`#EXT-X-${e} must not appear more than once (${t[0]})`); +} +function Cu(n, e, t) { + n.playlistParsingError = new Error(`#EXT-X-${e} must appear before the first Media Segment (${t[0]})`); +} +function fo(n, e) { + const t = e.startPTS; + if (se(t)) { + let i = 0, r; + e.sn > n.sn ? (i = t - n.start, r = n) : (i = n.start - t, r = e), r.duration !== i && r.setDuration(i); + } else e.sn > n.sn ? n.cc === e.cc && n.minEndPTS ? e.setStart(n.start + (n.minEndPTS - n.start)) : e.setStart(n.start + n.duration) : e.setStart(Math.max(n.start - e.duration, 0)); +} +function Md(n, e, t, i, r, s) { + i - t <= 0 && (Ne.warn("Fragment should have a positive duration", e), i = t + e.duration, s = r + e.duration); + let o = t, l = i; + const u = e.startPTS, c = e.endPTS; + if (se(u)) { + const v = Math.abs(u - t); + se(e.deltaPTS) ? e.deltaPTS = Math.max(v, e.deltaPTS) : e.deltaPTS = v, o = Math.max(t, u), t = Math.min(t, u), r = Math.min(r, e.startDTS), l = Math.min(i, c), i = Math.max(i, c), s = Math.max(s, e.endDTS); + } + const h = t - e.start; + e.start !== 0 && e.setStart(t), e.setDuration(i - e.start), e.startPTS = t, e.maxStartPTS = o, e.startDTS = r, e.endPTS = i, e.minEndPTS = l, e.endDTS = s; + const d = e.sn; + if (!n || d < n.startSN || d > n.endSN) + return 0; + let f; + const m = d - n.startSN, p = n.fragments; + for (p[m] = e, f = m; f > 0; f--) + fo(p[f], p[f - 1]); + for (f = m; f < p.length - 1; f++) + fo(p[f], p[f + 1]); + return n.fragmentHint && fo(p[p.length - 1], n.fragmentHint), n.PTSKnown = n.alignedSliding = !0, h; +} +function Jg(n, e) { + if (n === e) + return; + let t = null; + const i = n.fragments; + for (let u = i.length - 1; u >= 0; u--) { + const c = i[u].initSegment; + if (c) { + t = c; + break; + } + } + n.fragmentHint && delete n.fragmentHint.endPTS; + let r; + ip(n, e, (u, c, h, d) => { + if ((!e.startCC || e.skippedSegments) && c.cc !== u.cc) { + const f = u.cc - c.cc; + for (let m = h; m < d.length; m++) + d[m].cc += f; + e.endCC = d[d.length - 1].cc; + } + se(u.startPTS) && se(u.endPTS) && (c.setStart(c.startPTS = u.startPTS), c.startDTS = u.startDTS, c.maxStartPTS = u.maxStartPTS, c.endPTS = u.endPTS, c.endDTS = u.endDTS, c.minEndPTS = u.minEndPTS, c.setDuration(u.endPTS - u.startPTS), c.duration && (r = c), e.PTSKnown = e.alignedSliding = !0), u.hasStreams && (c.elementaryStreams = u.elementaryStreams), c.loader = u.loader, u.hasStats && (c.stats = u.stats), u.initSegment && (c.initSegment = u.initSegment, t = u.initSegment); + }); + const s = e.fragments, a = e.fragmentHint ? s.concat(e.fragmentHint) : s; + if (t && a.forEach((u) => { + var c; + u && (!u.initSegment || u.initSegment.relurl === ((c = t) == null ? void 0 : c.relurl)) && (u.initSegment = t); + }), e.skippedSegments) { + if (e.deltaUpdateFailed = s.some((u) => !u), e.deltaUpdateFailed) { + Ne.warn("[level-helper] Previous playlist missing segments skipped in delta playlist"); + for (let u = e.skippedSegments; u--; ) + s.shift(); + e.startSN = s[0].sn; + } else { + e.canSkipDateRanges && (e.dateRanges = ep(n.dateRanges, e)); + const u = n.fragments.filter((c) => c.rawProgramDateTime); + if (n.hasProgramDateTime && !e.hasProgramDateTime) + for (let c = 1; c < a.length; c++) + a[c].programDateTime === null && ml(a[c], a[c - 1], u); + Pd(u, e); + } + e.endCC = s[s.length - 1].cc; + } + if (!e.startCC) { + var o; + const u = Bd(n, e.startSN - 1); + e.startCC = (o = u == null ? void 0 : u.cc) != null ? o : s[0].cc; + } + tp(n.partList, e.partList, (u, c) => { + c.elementaryStreams = u.elementaryStreams, c.stats = u.stats; + }), r ? Md(e, r, r.startPTS, r.endPTS, r.startDTS, r.endDTS) : Od(n, e), s.length && (e.totalduration = e.edge - s[0].start), e.driftStartTime = n.driftStartTime, e.driftStart = n.driftStart; + const l = e.advancedDateTime; + if (e.advanced && l) { + const u = e.edge; + e.driftStart || (e.driftStartTime = l, e.driftStart = u), e.driftEndTime = l, e.driftEnd = u; + } else + e.driftEndTime = n.driftEndTime, e.driftEnd = n.driftEnd, e.advancedDateTime = n.advancedDateTime; + e.requestScheduled === -1 && (e.requestScheduled = n.requestScheduled); +} +function ep(n, e) { + const { + dateRanges: t, + recentlyRemovedDateranges: i + } = e, r = Ye({}, n); + i && i.forEach((o) => { + delete r[o]; + }); + const a = Object.keys(r).length; + return a && Object.keys(t).forEach((o) => { + const l = r[o], u = new Rd(t[o].attr, l); + u.isValid ? (r[o] = u, l || (u.tagOrder += a)) : Ne.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${it(t[o].attr)}"`); + }), r; +} +function tp(n, e, t) { + if (n && e) { + let i = 0; + for (let r = 0, s = n.length; r <= s; r++) { + const a = n[r], o = e[r + i]; + a && o && a.index === o.index && a.fragment.sn === o.fragment.sn ? t(a, o) : i--; + } + } +} +function ip(n, e, t) { + const i = e.skippedSegments, r = Math.max(n.startSN, e.startSN) - e.startSN, s = (n.fragmentHint ? 1 : 0) + (i ? e.endSN : Math.min(n.endSN, e.endSN)) - e.startSN, a = e.startSN - n.startSN, o = e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments, l = n.fragmentHint ? n.fragments.concat(n.fragmentHint) : n.fragments; + for (let u = r; u <= s; u++) { + const c = l[a + u]; + let h = o[u]; + if (i && !h && c && (h = e.fragments[u] = c), c && h) { + if (t(c, h, u, o), c.url && c.url !== h.url) { + e.playlistParsingError = Fu(`media sequence mismatch ${h.sn}:`, n, e, c, h); + return; + } else if (c.cc !== h.cc) { + e.playlistParsingError = Fu(`discontinuity sequence mismatch (${c.cc}!=${h.cc})`, n, e, c, h); + return; + } + } + } +} +function Fu(n, e, t, i, r) { + return new Error(`${n} ${r.url} +Playlist starting @${e.startSN} +${e.m3u8} + +Playlist starting @${t.startSN} +${t.m3u8}`); +} +function Od(n, e, t = !0) { + const i = e.startSN + e.skippedSegments - n.startSN, r = n.fragments, s = i >= 0; + let a = 0; + if (s && i < r.length) + a = r[i].start; + else if (s && e.startSN === n.endSN + 1) + a = n.fragmentEnd; + else if (s && t) + a = n.fragmentStart + i * e.levelTargetDuration; + else if (!e.skippedSegments && e.fragmentStart === 0) + a = n.fragmentStart; + else + return; + gl(e, a); +} +function gl(n, e) { + if (e) { + const t = n.fragments; + for (let i = n.skippedSegments; i < t.length; i++) + t[i].addStart(e); + n.fragmentHint && n.fragmentHint.addStart(e); + } +} +function $d(n, e = 1 / 0) { + let t = 1e3 * n.targetduration; + if (n.updated) { + const i = n.fragments; + if (i.length && t * 4 > e) { + const s = i[i.length - 1].duration * 1e3; + s < t && (t = s); + } + } else + t /= 2; + return Math.round(t); +} +function Bd(n, e, t) { + if (!n) + return null; + let i = n.fragments[e - n.startSN]; + return i || (i = n.fragmentHint, i && i.sn === e) ? i : e < n.startSN && t && t.sn === e ? t : null; +} +function Pu(n, e, t) { + return n ? Nd(n.partList, e, t) : null; +} +function Nd(n, e, t) { + if (n) + for (let i = n.length; i--; ) { + const r = n[i]; + if (r.index === t && r.fragment.sn === e) + return r; + } + return null; +} +function Ud(n) { + n.forEach((e, t) => { + var i; + (i = e.details) == null || i.fragments.forEach((r) => { + r.level = t, r.initSegment && (r.initSegment.level = t); + }); + }); +} +function zn(n, e) { + for (let i = 0, r = n.length; i < r; i++) { + var t; + if (((t = n[i]) == null ? void 0 : t.cc) === e) + return n[i]; + } + return null; +} +function rp(n, e) { + return !!(n && e.startCC < n.endCC && e.endCC > n.startCC); +} +function Mu(n, e) { + if (n) { + const t = n.start + e; + n.start = n.startPTS = t, n.endPTS = t + n.duration; + } +} +function Gd(n, e) { + const t = e.fragments; + for (let i = 0, r = t.length; i < r; i++) + Mu(t[i], n); + e.fragmentHint && Mu(e.fragmentHint, n), e.alignedSliding = !0; +} +function np(n, e) { + n && (zd(e, n), !e.alignedSliding && n && Aa(e, n), !e.alignedSliding && n && !e.skippedSegments && Od(n, e, !1)); +} +function zd(n, e) { + if (!rp(e, n)) + return; + const t = Math.min(e.endCC, n.endCC), i = zn(e.fragments, t), r = zn(n.fragments, t); + if (!i || !r) + return; + Ne.log(`Aligning playlist at start of dicontinuity sequence ${t}`); + const s = i.start - r.start; + Gd(s, n); +} +function Aa(n, e) { + if (!n.hasProgramDateTime || !e.hasProgramDateTime) + return; + const t = n.fragments, i = e.fragments; + if (!t.length || !i.length) + return; + let r, s; + const a = Math.min(e.endCC, n.endCC); + e.startCC < a && n.startCC < a && (r = zn(i, a), s = zn(t, a)), (!r || !s) && (r = i[Math.floor(i.length / 2)], s = zn(t, r.cc) || t[Math.floor(t.length / 2)]); + const o = r.programDateTime, l = s.programDateTime; + if (!o || !l) + return; + const u = (l - o) / 1e3 - (s.start - r.start); + Gd(u, n); +} +const sp = { + toString: function(n) { + let e = ""; + const t = n.length; + for (let i = 0; i < t; i++) + e += `[${n.start(i).toFixed(3)}-${n.end(i).toFixed(3)}]`; + return e; + } +}, W = { + STOPPED: "STOPPED", + IDLE: "IDLE", + KEY_LOADING: "KEY_LOADING", + FRAG_LOADING: "FRAG_LOADING", + FRAG_LOADING_WAITING_RETRY: "FRAG_LOADING_WAITING_RETRY", + WAITING_TRACK: "WAITING_TRACK", + PARSING: "PARSING", + PARSED: "PARSED", + ENDED: "ENDED", + ERROR: "ERROR", + WAITING_INIT_PTS: "WAITING_INIT_PTS", + WAITING_LEVEL: "WAITING_LEVEL" +}; +class Xl extends Ld { + constructor(e, t, i, r, s) { + super(r, e.logger), this.hls = void 0, this.fragPrevious = null, this.fragCurrent = null, this.fragmentTracker = void 0, this.transmuxer = null, this._state = W.STOPPED, this.playlistType = void 0, this.media = null, this.mediaBuffer = null, this.config = void 0, this.bitrateTest = !1, this.lastCurrentTime = 0, this.nextLoadPosition = 0, this.startPosition = 0, this.startTimeOffset = null, this.retryDate = 0, this.levels = null, this.fragmentLoader = void 0, this.keyLoader = void 0, this.levelLastLoaded = null, this.startFragRequested = !1, this.decrypter = void 0, this.initPTS = [], this.buffering = !0, this.loadingParts = !1, this.loopSn = void 0, this.onMediaSeeking = () => { + const { + config: a, + fragCurrent: o, + media: l, + mediaBuffer: u, + state: c + } = this, h = l ? l.currentTime : 0, d = De.bufferInfo(u || l, h, a.maxBufferHole); + if (this.log(`media seeking to ${se(h) ? h.toFixed(3) : h}, state: ${c}`), this.state === W.ENDED) + this.resetLoadingState(); + else if (o) { + const f = a.maxFragLookUpTolerance, m = o.start - f, p = o.start + o.duration + f; + if (!d.len || p < d.start || m > d.end) { + const v = h > p; + (h < m || v) && (v && o.loader && (this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"), o.abortRequests(), this.resetLoadingState()), this.fragPrevious = null); + } + } + if (l) { + this.fragmentTracker.removeFragmentsInRange(h, 1 / 0, this.playlistType, !0); + const f = this.lastCurrentTime; + if (h > f && (this.lastCurrentTime = h), !this.loadingParts) { + const m = Math.max(d.end, h), p = this.shouldLoadParts(this.getLevelDetails(), m); + p && (this.log(`LL-Part loading ON after seeking to ${h.toFixed(2)} with buffer @${m.toFixed(2)}`), this.loadingParts = p); + } + } + !this.hls.hasEnoughToStart && !d.len && (this.log(`setting startPosition to ${h} because of seek before start`), this.nextLoadPosition = this.startPosition = h), this.tickImmediate(); + }, this.onMediaEnded = () => { + this.log("setting startPosition to 0 because media ended"), this.startPosition = this.lastCurrentTime = 0; + }, this.playlistType = s, this.hls = e, this.fragmentLoader = new Fg(e.config), this.keyLoader = i, this.fragmentTracker = t, this.config = e.config, this.decrypter = new Kl(e.config); + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(S.ERROR, this.onError, this); + } + doTick() { + this.onTickEnd(); + } + onTickEnd() { + } + startLoad(e) { + } + stopLoad() { + if (this.state === W.STOPPED) + return; + this.fragmentLoader.abort(), this.keyLoader.abort(this.playlistType); + const e = this.fragCurrent; + e != null && e.loader && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.resetTransmuxer(), this.fragCurrent = null, this.fragPrevious = null, this.clearInterval(), this.clearNextTick(), this.state = W.STOPPED; + } + get startPositionValue() { + const { + nextLoadPosition: e, + startPosition: t + } = this; + return t === -1 && e ? e : t; + } + get bufferingEnabled() { + return this.buffering; + } + pauseBuffering() { + this.buffering = !1; + } + resumeBuffering() { + this.buffering = !0; + } + get inFlightFrag() { + return { + frag: this.fragCurrent, + state: this.state + }; + } + _streamEnded(e, t) { + if (t.live || !this.media) + return !1; + const i = e.end || 0, r = this.config.timelineOffset || 0; + if (i <= r) + return !1; + const s = e.buffered; + this.config.maxBufferHole && s && s.length > 1 && (e = De.bufferedInfo(s, e.start, 0)); + const a = e.nextStart; + if (a && a > r && a < t.edge || this.media.currentTime < e.start) + return !1; + const l = t.partList; + if (l != null && l.length) { + const c = l[l.length - 1]; + return De.isBuffered(this.media, c.start + c.duration / 2); + } + const u = t.fragments[t.fragments.length - 1].type; + return this.fragmentTracker.isEndListAppended(u); + } + getLevelDetails() { + if (this.levels && this.levelLastLoaded !== null) { + var e; + return (e = this.levelLastLoaded) == null ? void 0 : e.details; + } + } + get timelineOffset() { + const e = this.config.timelineOffset; + if (e) { + var t; + return ((t = this.getLevelDetails()) == null ? void 0 : t.appliedTimelineOffset) || e; + } + return 0; + } + onMediaAttached(e, t) { + const i = this.media = this.mediaBuffer = t.media; + i.removeEventListener("seeking", this.onMediaSeeking), i.removeEventListener("ended", this.onMediaEnded), i.addEventListener("seeking", this.onMediaSeeking), i.addEventListener("ended", this.onMediaEnded); + const r = this.config; + this.levels && r.autoStartLoad && this.state === W.STOPPED && this.startLoad(r.startPosition); + } + onMediaDetaching(e, t) { + const i = !!t.transferMedia, r = this.media; + if (r !== null) { + if (r.ended && (this.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0), r.removeEventListener("seeking", this.onMediaSeeking), r.removeEventListener("ended", this.onMediaEnded), this.keyLoader && !i && this.keyLoader.detach(), this.media = this.mediaBuffer = null, this.loopSn = void 0, i) { + this.resetLoadingState(), this.resetTransmuxer(); + return; + } + this.loadingParts = !1, this.fragmentTracker.removeAllFragments(), this.stopLoad(); + } + } + onManifestLoading() { + this.initPTS = [], this.levels = this.levelLastLoaded = this.fragCurrent = null, this.lastCurrentTime = this.startPosition = 0, this.startFragRequested = !1; + } + onError(e, t) { + } + onManifestLoaded(e, t) { + this.startTimeOffset = t.startTimeOffset; + } + onHandlerDestroying() { + this.stopLoad(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), super.onHandlerDestroying(), this.hls = this.onMediaSeeking = this.onMediaEnded = null; + } + onHandlerDestroyed() { + this.state = W.STOPPED, this.fragmentLoader && this.fragmentLoader.destroy(), this.keyLoader && this.keyLoader.destroy(), this.decrypter && this.decrypter.destroy(), this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null, super.onHandlerDestroyed(); + } + loadFragment(e, t, i) { + this.startFragRequested = !0, this._loadFragForPlayback(e, t, i); + } + _loadFragForPlayback(e, t, i) { + const r = (s) => { + const a = s.frag; + if (this.fragContextChanged(a)) { + this.warn(`${a.type} sn: ${a.sn}${s.part ? " part: " + s.part.index : ""} of ${this.fragInfo(a, !1, s.part)}) was dropped during download.`), this.fragmentTracker.removeFragment(a); + return; + } + a.stats.chunkCount++, this._handleFragmentLoadProgress(s); + }; + this._doFragLoad(e, t, i, r).then((s) => { + if (!s) + return; + const a = this.state, o = s.frag; + if (this.fragContextChanged(o)) { + (a === W.FRAG_LOADING || !this.fragCurrent && a === W.PARSING) && (this.fragmentTracker.removeFragment(o), this.state = W.IDLE); + return; + } + "payload" in s && (this.log(`Loaded ${o.type} sn: ${o.sn} of ${this.playlistLabel()} ${o.level}`), this.hls.trigger(S.FRAG_LOADED, s)), this._handleFragmentLoadComplete(s); + }).catch((s) => { + this.state === W.STOPPED || this.state === W.ERROR || (this.warn(`Frag error: ${(s == null ? void 0 : s.message) || s}`), this.resetFragmentLoading(e)); + }); + } + clearTrackerIfNeeded(e) { + var t; + const { + fragmentTracker: i + } = this; + if (i.getState(e) === bt.APPENDING) { + const s = e.type, a = this.getFwdBufferInfo(this.mediaBuffer, s), o = Math.max(e.duration, a ? a.len : this.config.maxBufferLength), l = this.backtrackFragment; + ((l ? e.sn - l.sn : 0) === 1 || this.reduceMaxBufferLength(o, e.duration)) && i.removeFragment(e); + } else ((t = this.mediaBuffer) == null ? void 0 : t.buffered.length) === 0 ? i.removeAllFragments() : i.hasParts(e.type) && (i.detectPartialFragments({ + frag: e, + part: null, + stats: e.stats, + id: e.type + }), i.getState(e) === bt.PARTIAL && i.removeFragment(e)); + } + checkLiveUpdate(e) { + if (e.updated && !e.live) { + const t = e.fragments[e.fragments.length - 1]; + this.fragmentTracker.detectPartialFragments({ + frag: t, + part: null, + stats: t.stats, + id: t.type + }); + } + e.fragments[0] || (e.deltaUpdateFailed = !0); + } + waitForLive(e) { + const t = e.details; + return (t == null ? void 0 : t.live) && t.type !== "EVENT" && (this.levelLastLoaded !== e || t.expired); + } + flushMainBuffer(e, t, i = null) { + if (!(e - t)) + return; + const r = { + startOffset: e, + endOffset: t, + type: i + }; + this.hls.trigger(S.BUFFER_FLUSHING, r); + } + _loadInitSegment(e, t) { + this._doFragLoad(e, t).then((i) => { + const r = i == null ? void 0 : i.frag; + if (!r || this.fragContextChanged(r) || !this.levels) + throw new Error("init load aborted"); + return i; + }).then((i) => { + const { + hls: r + } = this, { + frag: s, + payload: a + } = i, o = s.decryptdata; + if (a && a.byteLength > 0 && o != null && o.key && o.iv && gn(o.method)) { + const l = self.performance.now(); + return this.decrypter.decrypt(new Uint8Array(a), o.key.buffer, o.iv.buffer, Wl(o.method)).catch((u) => { + throw r.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_DECRYPT_ERROR, + fatal: !1, + error: u, + reason: u.message, + frag: s + }), u; + }).then((u) => { + const c = self.performance.now(); + return r.trigger(S.FRAG_DECRYPTED, { + frag: s, + payload: u, + stats: { + tstart: l, + tdecrypt: c + } + }), i.payload = u, this.completeInitSegmentLoad(i); + }); + } + return this.completeInitSegmentLoad(i); + }).catch((i) => { + this.state === W.STOPPED || this.state === W.ERROR || (this.warn(i), this.resetFragmentLoading(e)); + }); + } + completeInitSegmentLoad(e) { + const { + levels: t + } = this; + if (!t) + throw new Error("init load aborted, missing levels"); + const i = e.frag.stats; + this.state !== W.STOPPED && (this.state = W.IDLE), e.frag.data = new Uint8Array(e.payload), i.parsing.start = i.buffering.start = self.performance.now(), i.parsing.end = i.buffering.end = self.performance.now(), this.tick(); + } + fragContextChanged(e) { + const { + fragCurrent: t + } = this; + return !e || !t || e.sn !== t.sn || e.level !== t.level; + } + fragBufferedComplete(e, t) { + const i = this.mediaBuffer ? this.mediaBuffer : this.media; + if (this.log(`Buffered ${e.type} sn: ${e.sn}${t ? " part: " + t.index : ""} of ${this.fragInfo(e, !1, t)} > buffer:${i ? sp.toString(De.getBuffered(i)) : "(detached)"})`), Dt(e)) { + var r; + if (e.type !== ue.SUBTITLE) { + const a = e.elementaryStreams; + if (!Object.keys(a).some((o) => !!a[o])) { + this.state = W.IDLE; + return; + } + } + const s = (r = this.levels) == null ? void 0 : r[e.level]; + s != null && s.fragmentError && (this.log(`Resetting level fragment error count of ${s.fragmentError} on frag buffered`), s.fragmentError = 0); + } + this.state = W.IDLE; + } + _handleFragmentLoadComplete(e) { + const { + transmuxer: t + } = this; + if (!t) + return; + const { + frag: i, + part: r, + partsLoaded: s + } = e, a = !s || s.length === 0 || s.some((l) => !l), o = new Yl(i.level, i.sn, i.stats.chunkCount + 1, 0, r ? r.index : -1, !a); + t.flush(o); + } + _handleFragmentLoadProgress(e) { + } + _doFragLoad(e, t, i = null, r) { + var s; + this.fragCurrent = e; + const a = t == null ? void 0 : t.details; + if (!this.levels || !a) + throw new Error(`frag load aborted, missing level${a ? "" : " detail"}s`); + let o = null; + e.encrypted && !((s = e.decryptdata) != null && s.key) ? (this.log(`Loading key for ${e.sn} of [${a.startSN}-${a.endSN}], ${this.playlistLabel()} ${e.level}`), this.state = W.KEY_LOADING, this.fragCurrent = e, o = this.keyLoader.load(e).then((h) => { + if (!this.fragContextChanged(h.frag)) + return this.hls.trigger(S.KEY_LOADED, h), this.state === W.KEY_LOADING && (this.state = W.IDLE), h; + }), this.hls.trigger(S.KEY_LOADING, { + frag: e + }), this.fragCurrent === null && (o = Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))) : e.encrypted || (o = this.keyLoader.loadClear(e, a.encryptedFragments), o && this.log("[eme] blocking frag load until media-keys acquired")); + const l = this.fragPrevious; + if (Dt(e) && (!l || e.sn !== l.sn)) { + const h = this.shouldLoadParts(t.details, e.end); + h !== this.loadingParts && (this.log(`LL-Part loading ${h ? "ON" : "OFF"} loading sn ${l == null ? void 0 : l.sn}->${e.sn}`), this.loadingParts = h); + } + if (i = Math.max(e.start, i || 0), this.loadingParts && Dt(e)) { + const h = a.partList; + if (h && r) { + i > e.end && a.fragmentHint && (e = a.fragmentHint); + const d = this.getNextPart(h, e, i); + if (d > -1) { + const f = h[d]; + e = this.fragCurrent = f.fragment, this.log(`Loading ${e.type} sn: ${e.sn} part: ${f.index} (${d}/${h.length - 1}) of ${this.fragInfo(e, !1, f)}) cc: ${e.cc} [${a.startSN}-${a.endSN}], target: ${parseFloat(i.toFixed(3))}`), this.nextLoadPosition = f.start + f.duration, this.state = W.FRAG_LOADING; + let m; + return o ? m = o.then((p) => !p || this.fragContextChanged(p.frag) ? null : this.doFragPartsLoad(e, f, t, r)).catch((p) => this.handleFragLoadError(p)) : m = this.doFragPartsLoad(e, f, t, r).catch((p) => this.handleFragLoadError(p)), this.hls.trigger(S.FRAG_LOADING, { + frag: e, + part: f, + targetBufferTime: i + }), this.fragCurrent === null ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")) : m; + } else if (!e.url || this.loadedEndOfParts(h, i)) + return Promise.resolve(null); + } + } + if (Dt(e) && this.loadingParts) + this.log(`LL-Part loading OFF after next part miss @${i.toFixed(2)}`), this.loadingParts = !1; + else if (!e.url) + return Promise.resolve(null); + this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e, !1)}) cc: ${e.cc} ${a ? "[" + a.startSN + "-" + a.endSN + "]" : ""}, target: ${parseFloat(i.toFixed(3))}`), se(e.sn) && !this.bitrateTest && (this.nextLoadPosition = e.start + e.duration), this.state = W.FRAG_LOADING; + const u = this.config.progressive; + let c; + return u && o ? c = o.then((h) => !h || this.fragContextChanged(h == null ? void 0 : h.frag) ? null : this.fragmentLoader.load(e, r)).catch((h) => this.handleFragLoadError(h)) : c = Promise.all([this.fragmentLoader.load(e, u ? r : void 0), o]).then(([h]) => (!u && h && r && r(h), h)).catch((h) => this.handleFragLoadError(h)), this.hls.trigger(S.FRAG_LOADING, { + frag: e, + targetBufferTime: i + }), this.fragCurrent === null ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")) : c; + } + doFragPartsLoad(e, t, i, r) { + return new Promise((s, a) => { + var o; + const l = [], u = (o = i.details) == null ? void 0 : o.partList, c = (h) => { + this.fragmentLoader.loadPart(e, h, r).then((d) => { + l[h.index] = d; + const f = d.part; + this.hls.trigger(S.FRAG_LOADED, d); + const m = Pu(i.details, e.sn, h.index + 1) || Nd(u, e.sn, h.index + 1); + if (m) + c(m); + else + return s({ + frag: e, + part: f, + partsLoaded: l + }); + }).catch(a); + }; + c(t); + }); + } + handleFragLoadError(e) { + if ("data" in e) { + const t = e.data; + e.data && t.details === B.INTERNAL_ABORTED ? this.handleFragLoadAborted(t.frag, t.part) : this.hls.trigger(S.ERROR, t); + } else + this.hls.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.INTERNAL_EXCEPTION, + err: e, + error: e, + fatal: !0 + }); + return null; + } + _handleTransmuxerFlush(e) { + const t = this.getCurrentContext(e); + if (!t || this.state !== W.PARSING) { + !this.fragCurrent && this.state !== W.STOPPED && this.state !== W.ERROR && (this.state = W.IDLE); + return; + } + const { + frag: i, + part: r, + level: s + } = t, a = self.performance.now(); + i.stats.parsing.end = a, r && (r.stats.parsing.end = a); + const o = this.getLevelDetails(), u = o && i.sn > o.endSN || this.shouldLoadParts(o, i.end); + u !== this.loadingParts && (this.log(`LL-Part loading ${u ? "ON" : "OFF"} after parsing segment ending @${i.end.toFixed(2)}`), this.loadingParts = u), this.updateLevelTiming(i, r, s, e.partial); + } + shouldLoadParts(e, t) { + if (this.config.lowLatencyMode) { + if (!e) + return this.loadingParts; + if (e != null && e.partList) { + var i; + const s = e.partList[0], a = s.end + (((i = e.fragmentHint) == null ? void 0 : i.duration) || 0); + if (t >= a) { + var r; + if ((this.hls.hasEnoughToStart ? ((r = this.media) == null ? void 0 : r.currentTime) || this.lastCurrentTime : this.getLoadPosition()) > s.start - s.fragment.duration) + return !0; + } + } + } + return !1; + } + getCurrentContext(e) { + const { + levels: t, + fragCurrent: i + } = this, { + level: r, + sn: s, + part: a + } = e; + if (!(t != null && t[r])) + return this.warn(`Levels object was unset while buffering fragment ${s} of ${this.playlistLabel()} ${r}. The current chunk will not be buffered.`), null; + const o = t[r], l = o.details, u = a > -1 ? Pu(l, s, a) : null, c = u ? u.fragment : Bd(l, s, i); + return c ? (i && i !== c && (c.stats = i.stats), { + frag: c, + part: u, + level: o + }) : null; + } + bufferFragmentData(e, t, i, r, s) { + var a; + if (!e || this.state !== W.PARSING) + return; + const { + data1: o, + data2: l + } = e; + let u = o; + if (o && l && (u = _i(o, l)), !((a = u) != null && a.length)) + return; + const c = { + type: e.type, + frag: t, + part: i, + chunkMeta: r, + parent: t.type, + data: u + }; + if (this.hls.trigger(S.BUFFER_APPENDING, c), e.dropped && e.independent && !i) { + if (s) + return; + this.flushBufferGap(t); + } + } + flushBufferGap(e) { + const t = this.media; + if (!t) + return; + if (!De.isBuffered(t, t.currentTime)) { + this.flushMainBuffer(0, e.start); + return; + } + const i = t.currentTime, r = De.bufferInfo(t, i, 0), s = e.duration, a = Math.min(this.config.maxFragLookUpTolerance * 2, s * 0.25), o = Math.max(Math.min(e.start - a, r.end - a), i + a); + e.start - o > a && this.flushMainBuffer(o, e.start); + } + getFwdBufferInfo(e, t) { + var i; + const r = this.getLoadPosition(); + if (!se(r)) + return null; + const a = this.lastCurrentTime > r || (i = this.media) != null && i.paused ? 0 : this.config.maxBufferHole; + return this.getFwdBufferInfoAtPos(e, r, t, a); + } + getFwdBufferInfoAtPos(e, t, i, r) { + const s = De.bufferInfo(e, t, r); + if (s.len === 0 && s.nextStart !== void 0) { + const a = this.fragmentTracker.getBufferedFrag(t, i); + if (a && (s.nextStart <= a.end || a.gap)) { + const o = Math.max(Math.min(s.nextStart, a.end) - t, r); + return De.bufferInfo(e, t, o); + } + } + return s; + } + getMaxBufferLength(e) { + const { + config: t + } = this; + let i; + return e ? i = Math.max(8 * t.maxBufferSize / e, t.maxBufferLength) : i = t.maxBufferLength, Math.min(i, t.maxMaxBufferLength); + } + reduceMaxBufferLength(e, t) { + const i = this.config, r = Math.max(Math.min(e - t, i.maxBufferLength), t), s = Math.max(e - t * 3, i.maxMaxBufferLength / 2, r); + return s >= r ? (i.maxMaxBufferLength = s, this.warn(`Reduce max buffer length to ${s}s`), !0) : !1; + } + getAppendedFrag(e, t = ue.MAIN) { + var i; + const r = (i = this.fragmentTracker) == null ? void 0 : i.getAppendedFrag(e, t); + return r && "fragment" in r ? r.fragment : r; + } + getNextFragment(e, t) { + const i = t.fragments, r = i.length; + if (!r) + return null; + const { + config: s + } = this, a = i[0].start, o = s.lowLatencyMode && !!t.partList; + let l = null; + if (t.live) { + const h = s.initialLiveManifestSize; + if (r < h) + return this.warn(`Not enough fragments to start playback (have: ${r}, need: ${h})`), null; + if (!t.PTSKnown && !this.startFragRequested && this.startPosition === -1 || e < a) { + var u; + o && !this.loadingParts && (this.log("LL-Part loading ON for initial live fragment"), this.loadingParts = !0), l = this.getInitialLiveFragment(t); + const d = this.hls.startPosition, f = this.hls.liveSyncPosition, m = l ? (d !== -1 && d >= a ? d : f) || l.start : e; + this.log(`Setting startPosition to ${m} to match start frag at live edge. mainStart: ${d} liveSyncPosition: ${f} frag.start: ${(u = l) == null ? void 0 : u.start}`), this.startPosition = this.nextLoadPosition = m; + } + } else e <= a && (l = i[0]); + if (!l) { + const h = this.loadingParts ? t.partEnd : t.fragmentEnd; + l = this.getFragmentAtPosition(e, h, t); + } + let c = this.filterReplacedPrimary(l, t); + if (!c && l) { + const h = l.sn - t.startSN; + c = this.filterReplacedPrimary(i[h + 1] || null, t); + } + return this.mapToInitFragWhenRequired(c); + } + isLoopLoading(e, t) { + const i = this.fragmentTracker.getState(e); + return (i === bt.OK || i === bt.PARTIAL && !!e.gap) && this.nextLoadPosition > t; + } + getNextFragmentLoopLoading(e, t, i, r, s) { + let a = null; + if (e.gap && (a = this.getNextFragment(this.nextLoadPosition, t), a && !a.gap && i.nextStart)) { + const o = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, i.nextStart, r, 0); + if (o !== null && i.len + o.len >= s) { + const l = a.sn; + return this.loopSn !== l && (this.log(`buffer full after gaps in "${r}" playlist starting at sn: ${l}`), this.loopSn = l), null; + } + } + return this.loopSn = void 0, a; + } + get primaryPrefetch() { + if (Ou(this.hls.config)) { + var e, t; + if ((e = this.hls.interstitialsManager) == null || (t = e.playingItem) == null ? void 0 : t.event) + return !0; + } + return !1; + } + filterReplacedPrimary(e, t) { + if (!e) + return e; + if (Ou(this.hls.config) && e.type !== ue.SUBTITLE) { + const i = this.hls.interstitialsManager, r = i == null ? void 0 : i.bufferingItem; + if (r) { + const a = r.event; + if (a) { + if (a.appendInPlace || Math.abs(e.start - r.start) > 1 || r.start === 0) + return null; + } else if (e.end <= r.start && (t == null ? void 0 : t.live) === !1 || e.start > r.end && r.nextEvent && (r.nextEvent.appendInPlace || e.start - r.end > 1)) + return null; + } + const s = i == null ? void 0 : i.playerQueue; + if (s) + for (let a = s.length; a--; ) { + const o = s[a].interstitial; + if (o.appendInPlace && e.start >= o.startTime && e.end <= o.resumeTime) + return null; + } + } + return e; + } + mapToInitFragWhenRequired(e) { + return e != null && e.initSegment && !(e != null && e.initSegment.data) && !this.bitrateTest ? e.initSegment : e; + } + getNextPart(e, t, i) { + let r = -1, s = !1, a = !0; + for (let o = 0, l = e.length; o < l; o++) { + const u = e[o]; + if (a = a && !u.independent, r > -1 && i < u.start) + break; + const c = u.loaded; + c ? r = -1 : (s || u.independent || a) && u.fragment === t && (r = o), s = c; + } + return r; + } + loadedEndOfParts(e, t) { + const i = e[e.length - 1]; + return i && t > i.start && i.loaded; + } + /* + This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the + "sliding" of the playlist, which is its offset from the start of playback. After sliding we can compute the real + start and end times for each fragment in the playlist (after which this method will not need to be called). + */ + getInitialLiveFragment(e) { + const t = e.fragments, i = this.fragPrevious; + let r = null; + if (i) { + if (e.hasProgramDateTime && (this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`), r = Eg(t, i.endProgramDateTime, this.config.maxFragLookUpTolerance)), !r) { + const s = i.sn + 1; + if (s >= e.startSN && s <= e.endSN) { + const a = t[s - e.startSN]; + i.cc === a.cc && (r = a, this.log(`Live playlist, switching playlist, load frag with next SN: ${r.sn}`)); + } + r || (r = kd(e, i.cc, i.end), r && this.log(`Live playlist, switching playlist, load frag with same CC: ${r.sn}`)); + } + } else { + const s = this.hls.liveSyncPosition; + s !== null && (r = this.getFragmentAtPosition(s, this.bitrateTest ? e.fragmentEnd : e.edge, e)); + } + return r; + } + /* + This method finds the best matching fragment given the provided position. + */ + getFragmentAtPosition(e, t, i) { + const { + config: r + } = this; + let { + fragPrevious: s + } = this, { + fragments: a, + endSN: o + } = i; + const { + fragmentHint: l + } = i, { + maxFragLookUpTolerance: u + } = r, c = i.partList, h = !!(this.loadingParts && c != null && c.length && l); + h && l && !this.bitrateTest && c[c.length - 1].fragment.sn === l.sn && (a = a.concat(l), o = l.sn); + let d; + if (e < t) { + var f; + const p = e < this.lastCurrentTime || e > t - u || (f = this.media) != null && f.paused || !this.startFragRequested ? 0 : u; + d = Hr(s, a, e, p); + } else + d = a[a.length - 1]; + if (d) { + const m = d.sn - i.startSN, p = this.fragmentTracker.getState(d); + if ((p === bt.OK || p === bt.PARTIAL && d.gap) && (s = d), s && d.sn === s.sn && (!h || c[0].fragment.sn > d.sn || !i.live && !h) && s && d.level === s.level) { + const b = a[m + 1]; + d.sn < o && this.fragmentTracker.getState(b) !== bt.OK ? d = b : d = null; + } + } + return d; + } + alignPlaylists(e, t, i) { + const r = e.fragments.length; + if (!r) + return this.warn("No fragments in live playlist"), 0; + const s = e.fragmentStart, a = !t, o = e.alignedSliding && se(s); + if (a || !o && !s) { + np(i, e); + const l = e.fragmentStart; + return this.log(`Live playlist sliding: ${l.toFixed(2)} start-sn: ${t ? t.startSN : "na"}->${e.startSN} fragments: ${r}`), l; + } + return s; + } + waitForCdnTuneIn(e) { + return e.live && e.canBlockReload && e.partTarget && e.tuneInGoal > Math.max(e.partHoldBack, e.partTarget * 3); + } + setStartPosition(e, t) { + let i = this.startPosition; + i < t && (i = -1); + const r = this.timelineOffset; + if (i === -1) { + const s = this.startTimeOffset !== null, a = s ? this.startTimeOffset : e.startTimeOffset; + a !== null && se(a) ? (i = t + a, a < 0 && (i += e.edge), i = Math.min(Math.max(t, i), t + e.totalduration), this.log(`Setting startPosition to ${i} for start time offset ${a} found in ${s ? "multivariant" : "media"} playlist`), this.startPosition = i) : e.live ? (i = this.hls.liveSyncPosition || t, this.log(`Setting startPosition to -1 to start at live edge ${i}`), this.startPosition = -1) : (this.log("setting startPosition to 0 by default"), this.startPosition = i = 0), this.lastCurrentTime = i + r; + } + this.nextLoadPosition = i + r; + } + getLoadPosition() { + var e; + const { + media: t + } = this; + let i = 0; + return (e = this.hls) != null && e.hasEnoughToStart && t ? i = t.currentTime : this.nextLoadPosition >= 0 && (i = this.nextLoadPosition), i; + } + handleFragLoadAborted(e, t) { + this.transmuxer && e.type === this.playlistType && Dt(e) && e.stats.aborted && (this.warn(`Fragment ${e.sn}${t ? " part " + t.index : ""} of ${this.playlistLabel()} ${e.level} was aborted`), this.resetFragmentLoading(e)); + } + resetFragmentLoading(e) { + (!this.fragCurrent || !this.fragContextChanged(e) && this.state !== W.FRAG_LOADING_WAITING_RETRY) && (this.state = W.IDLE); + } + onFragmentOrKeyLoadError(e, t) { + if (t.chunkMeta && !t.frag) { + const m = this.getCurrentContext(t.chunkMeta); + m && (t.frag = m.frag); + } + const i = t.frag; + if (!i || i.type !== e || !this.levels) + return; + if (this.fragContextChanged(i)) { + var r; + this.warn(`Frag load error must match current frag to retry ${i.url} > ${(r = this.fragCurrent) == null ? void 0 : r.url}`); + return; + } + const s = t.details === B.FRAG_GAP; + s && this.fragmentTracker.fragBuffered(i, !0); + const a = t.errorAction, { + action: o, + flags: l, + retryCount: u = 0, + retryConfig: c + } = a || {}, h = !!a && !!c, d = h && o === Nt.RetryRequest, f = h && !a.resolved && l === Ii.MoveAllAlternatesMatchingHost; + if (!d && f && Dt(i) && !i.endList) + this.resetFragmentErrors(e), this.treatAsGap(i), a.resolved = !0; + else if ((d || f) && u < c.maxNumRetry) { + this.resetStartWhenNotLoaded(this.levelLastLoaded); + const m = Vl(c, u); + this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${u + 1}/${c.maxNumRetry} in ${m}ms`), a.resolved = !0, this.retryDate = self.performance.now() + m, this.state = W.FRAG_LOADING_WAITING_RETRY; + } else if (c && a) + if (this.resetFragmentErrors(e), u < c.maxNumRetry) + !s && o !== Nt.RemoveAlternatePermanently && (a.resolved = !0); + else { + this.warn(`${t.details} reached or exceeded max retry (${u})`); + return; + } + else o === Nt.SendAlternateToPenaltyBox ? this.state = W.WAITING_LEVEL : this.state = W.ERROR; + this.tickImmediate(); + } + reduceLengthAndFlushBuffer(e) { + if (this.state === W.PARSING || this.state === W.PARSED) { + const t = e.frag, i = e.parent, r = this.getFwdBufferInfo(this.mediaBuffer, i), s = r && r.len > 0.5; + s && this.reduceMaxBufferLength(r.len, (t == null ? void 0 : t.duration) || 10); + const a = !s; + return a && this.warn(`Buffer full error while media.currentTime is not buffered, flush ${i} buffer`), t && (this.fragmentTracker.removeFragment(t), this.nextLoadPosition = t.start), this.resetLoadingState(), a; + } + return !1; + } + resetFragmentErrors(e) { + e === ue.AUDIO && (this.fragCurrent = null), this.hls.hasEnoughToStart || (this.startFragRequested = !1), this.state !== W.STOPPED && (this.state = W.IDLE); + } + afterBufferFlushed(e, t, i) { + if (!e) + return; + const r = De.getBuffered(e); + this.fragmentTracker.detectEvictedFragments(t, r, i), this.state === W.ENDED && this.resetLoadingState(); + } + resetLoadingState() { + this.log("Reset loading state"), this.fragCurrent = null, this.fragPrevious = null, this.state !== W.STOPPED && (this.state = W.IDLE); + } + resetStartWhenNotLoaded(e) { + if (!this.hls.hasEnoughToStart) { + this.startFragRequested = !1; + const t = e ? e.details : null; + t != null && t.live ? (this.log("resetting startPosition for live start"), this.startPosition = -1, this.setStartPosition(t, t.fragmentStart), this.resetLoadingState()) : this.nextLoadPosition = this.startPosition; + } + } + resetWhenMissingContext(e) { + this.warn(`The loading context changed while buffering fragment ${e.sn} of ${this.playlistLabel()} ${e.level}. This chunk will not be buffered.`), this.removeUnbufferedFrags(), this.resetStartWhenNotLoaded(this.levelLastLoaded), this.resetLoadingState(); + } + removeUnbufferedFrags(e = 0) { + this.fragmentTracker.removeFragmentsInRange(e, 1 / 0, this.playlistType, !1, !0); + } + updateLevelTiming(e, t, i, r) { + const s = i.details; + if (!s) { + this.warn("level.details undefined"); + return; + } + if (!Object.keys(e.elementaryStreams).reduce((l, u) => { + const c = e.elementaryStreams[u]; + if (c) { + const h = c.endPTS - c.startPTS; + if (h <= 0) + return this.warn(`Could not parse fragment ${e.sn} ${u} duration reliably (${h})`), l || !1; + const d = r ? 0 : Md(s, e, c.startPTS, c.endPTS, c.startDTS, c.endDTS); + return this.hls.trigger(S.LEVEL_PTS_UPDATED, { + details: s, + level: i, + drift: d, + type: u, + frag: e, + start: c.startPTS, + end: c.endPTS + }), !0; + } + return l; + }, !1)) { + var o; + if (i.fragmentError === 0 && this.treatAsGap(e, i), ((o = this.transmuxer) == null ? void 0 : o.error) === null) { + const l = new Error(`Found no media in fragment ${e.sn} of ${this.playlistLabel()} ${e.level} resetting transmuxer to fallback to playlist timing`); + if (this.warn(l.message), this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_PARSING_ERROR, + fatal: !1, + error: l, + frag: e, + reason: `Found no media in msn ${e.sn} of ${this.playlistLabel()} "${i.url}"` + }), !this.hls) + return; + this.resetTransmuxer(); + } + } + this.state = W.PARSED, this.log(`Parsed ${e.type} sn: ${e.sn}${t ? " part: " + t.index : ""} of ${this.fragInfo(e, !1, t)})`), this.hls.trigger(S.FRAG_PARSED, { + frag: e, + part: t + }); + } + playlistLabel() { + return this.playlistType === ue.MAIN ? "level" : "track"; + } + fragInfo(e, t = !0, i) { + var r, s; + return `${this.playlistLabel()} ${e.level} (${i ? "part" : "frag"}:[${((r = t && !i ? e.startPTS : (i || e).start) != null ? r : NaN).toFixed(3)}-${((s = t && !i ? e.endPTS : (i || e).end) != null ? s : NaN).toFixed(3)}]${i && e.type === "main" ? "INDEPENDENT=" + (i.independent ? "YES" : "NO") : ""}`; + } + treatAsGap(e, t) { + t && t.fragmentError++, e.gap = !0, this.fragmentTracker.removeFragment(e), this.fragmentTracker.fragBuffered(e, !0); + } + resetTransmuxer() { + var e; + (e = this.transmuxer) == null || e.reset(); + } + recoverWorkerError(e) { + e.event === "demuxerWorker" && (this.fragmentTracker.removeAllFragments(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), this.resetStartWhenNotLoaded(this.levelLastLoaded), this.resetLoadingState()); + } + set state(e) { + const t = this._state; + t !== e && (this._state = e, this.log(`${t}->${e}`)); + } + get state() { + return this._state; + } +} +function Ou(n) { + return !!n.interstitialsController && n.enableInterstitialPlayback !== !1; +} +class qd { + constructor() { + this.chunks = [], this.dataLength = 0; + } + push(e) { + this.chunks.push(e), this.dataLength += e.length; + } + flush() { + const { + chunks: e, + dataLength: t + } = this; + let i; + if (e.length) + e.length === 1 ? i = e[0] : i = ap(e, t); + else return new Uint8Array(0); + return this.reset(), i; + } + reset() { + this.chunks.length = 0, this.dataLength = 0; + } +} +function ap(n, e) { + const t = new Uint8Array(e); + let i = 0; + for (let r = 0; r < n.length; r++) { + const s = n[r]; + t.set(s, i), i += s.length; + } + return t; +} +var mo = { exports: {} }, $u; +function op() { + return $u || ($u = 1, function(n) { + var e = Object.prototype.hasOwnProperty, t = "~"; + function i() { + } + Object.create && (i.prototype = /* @__PURE__ */ Object.create(null), new i().__proto__ || (t = !1)); + function r(l, u, c) { + this.fn = l, this.context = u, this.once = c || !1; + } + function s(l, u, c, h, d) { + if (typeof c != "function") + throw new TypeError("The listener must be a function"); + var f = new r(c, h || l, d), m = t ? t + u : u; + return l._events[m] ? l._events[m].fn ? l._events[m] = [l._events[m], f] : l._events[m].push(f) : (l._events[m] = f, l._eventsCount++), l; + } + function a(l, u) { + --l._eventsCount === 0 ? l._events = new i() : delete l._events[u]; + } + function o() { + this._events = new i(), this._eventsCount = 0; + } + o.prototype.eventNames = function() { + var u = [], c, h; + if (this._eventsCount === 0) return u; + for (h in c = this._events) + e.call(c, h) && u.push(t ? h.slice(1) : h); + return Object.getOwnPropertySymbols ? u.concat(Object.getOwnPropertySymbols(c)) : u; + }, o.prototype.listeners = function(u) { + var c = t ? t + u : u, h = this._events[c]; + if (!h) return []; + if (h.fn) return [h.fn]; + for (var d = 0, f = h.length, m = new Array(f); d < f; d++) + m[d] = h[d].fn; + return m; + }, o.prototype.listenerCount = function(u) { + var c = t ? t + u : u, h = this._events[c]; + return h ? h.fn ? 1 : h.length : 0; + }, o.prototype.emit = function(u, c, h, d, f, m) { + var p = t ? t + u : u; + if (!this._events[p]) return !1; + var v = this._events[p], b = arguments.length, E, y; + if (v.fn) { + switch (v.once && this.removeListener(u, v.fn, void 0, !0), b) { + case 1: + return v.fn.call(v.context), !0; + case 2: + return v.fn.call(v.context, c), !0; + case 3: + return v.fn.call(v.context, c, h), !0; + case 4: + return v.fn.call(v.context, c, h, d), !0; + case 5: + return v.fn.call(v.context, c, h, d, f), !0; + case 6: + return v.fn.call(v.context, c, h, d, f, m), !0; + } + for (y = 1, E = new Array(b - 1); y < b; y++) + E[y - 1] = arguments[y]; + v.fn.apply(v.context, E); + } else { + var T = v.length, A; + for (y = 0; y < T; y++) + switch (v[y].once && this.removeListener(u, v[y].fn, void 0, !0), b) { + case 1: + v[y].fn.call(v[y].context); + break; + case 2: + v[y].fn.call(v[y].context, c); + break; + case 3: + v[y].fn.call(v[y].context, c, h); + break; + case 4: + v[y].fn.call(v[y].context, c, h, d); + break; + default: + if (!E) for (A = 1, E = new Array(b - 1); A < b; A++) + E[A - 1] = arguments[A]; + v[y].fn.apply(v[y].context, E); + } + } + return !0; + }, o.prototype.on = function(u, c, h) { + return s(this, u, c, h, !1); + }, o.prototype.once = function(u, c, h) { + return s(this, u, c, h, !0); + }, o.prototype.removeListener = function(u, c, h, d) { + var f = t ? t + u : u; + if (!this._events[f]) return this; + if (!c) + return a(this, f), this; + var m = this._events[f]; + if (m.fn) + m.fn === c && (!d || m.once) && (!h || m.context === h) && a(this, f); + else { + for (var p = 0, v = [], b = m.length; p < b; p++) + (m[p].fn !== c || d && !m[p].once || h && m[p].context !== h) && v.push(m[p]); + v.length ? this._events[f] = v.length === 1 ? v[0] : v : a(this, f); + } + return this; + }, o.prototype.removeAllListeners = function(u) { + var c; + return u ? (c = t ? t + u : u, this._events[c] && a(this, c)) : (this._events = new i(), this._eventsCount = 0), this; + }, o.prototype.off = o.prototype.removeListener, o.prototype.addListener = o.prototype.on, o.prefixed = t, o.EventEmitter = o, n.exports = o; + }(mo)), mo.exports; +} +var lp = op(), Ql = /* @__PURE__ */ B1(lp); +const is = "1.6.5", En = {}; +function up() { + return typeof __HLS_WORKER_BUNDLE__ == "function"; +} +function cp() { + const n = En[is]; + if (n) + return n.clientCount++, n; + const e = new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`], { + type: "text/javascript" + }), t = self.URL.createObjectURL(e), r = { + worker: new self.Worker(t), + objectURL: t, + clientCount: 1 + }; + return En[is] = r, r; +} +function hp(n) { + const e = En[n]; + if (e) + return e.clientCount++, e; + const t = new self.URL(n, self.location.href).href, r = { + worker: new self.Worker(t), + scriptURL: t, + clientCount: 1 + }; + return En[n] = r, r; +} +function dp(n) { + const e = En[n || is]; + if (e && e.clientCount-- === 1) { + const { + worker: i, + objectURL: r + } = e; + delete En[n || is], r && self.URL.revokeObjectURL(r), i.terminate(); + } +} +function Hd(n, e) { + return e + 10 <= n.length && n[e] === 51 && n[e + 1] === 68 && n[e + 2] === 73 && n[e + 3] < 255 && n[e + 4] < 255 && n[e + 6] < 128 && n[e + 7] < 128 && n[e + 8] < 128 && n[e + 9] < 128; +} +function Zl(n, e) { + return e + 10 <= n.length && n[e] === 73 && n[e + 1] === 68 && n[e + 2] === 51 && n[e + 3] < 255 && n[e + 4] < 255 && n[e + 6] < 128 && n[e + 7] < 128 && n[e + 8] < 128 && n[e + 9] < 128; +} +function za(n, e) { + let t = 0; + return t = (n[e] & 127) << 21, t |= (n[e + 1] & 127) << 14, t |= (n[e + 2] & 127) << 7, t |= n[e + 3] & 127, t; +} +function rs(n, e) { + const t = e; + let i = 0; + for (; Zl(n, e); ) { + i += 10; + const r = za(n, e + 6); + i += r, Hd(n, e + 10) && (i += 10), e += i; + } + if (i > 0) + return n.subarray(t, t + i); +} +function fp(n, e, t, i) { + const r = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], s = e[t + 2], a = s >> 2 & 15; + if (a > 12) { + const f = new Error(`invalid ADTS sampling index:${a}`); + n.emit(S.ERROR, S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_PARSING_ERROR, + fatal: !0, + error: f, + reason: f.message + }); + return; + } + const o = (s >> 6 & 3) + 1, l = e[t + 3] >> 6 & 3 | (s & 1) << 2, u = "mp4a.40." + o, c = r[a]; + let h = a; + (o === 5 || o === 29) && (h -= 3); + const d = [o << 3 | (h & 14) >> 1, (h & 1) << 7 | l << 3]; + return Ne.log(`manifest codec:${i}, parsed codec:${u}, channels:${l}, rate:${c} (ADTS object type:${o} sampling index:${a})`), { + config: d, + samplerate: c, + channelCount: l, + codec: u, + parsedCodec: u, + manifestCodec: i + }; +} +function Vd(n, e) { + return n[e] === 255 && (n[e + 1] & 246) === 240; +} +function Kd(n, e) { + return n[e + 1] & 1 ? 7 : 9; +} +function Jl(n, e) { + return (n[e + 3] & 3) << 11 | n[e + 4] << 3 | (n[e + 5] & 224) >>> 5; +} +function mp(n, e) { + return e + 5 < n.length; +} +function Da(n, e) { + return e + 1 < n.length && Vd(n, e); +} +function gp(n, e) { + return mp(n, e) && Vd(n, e) && Jl(n, e) <= n.length - e; +} +function pp(n, e) { + if (Da(n, e)) { + const t = Kd(n, e); + if (e + t >= n.length) + return !1; + const i = Jl(n, e); + if (i <= t) + return !1; + const r = e + i; + return r === n.length || Da(n, r); + } + return !1; +} +function Yd(n, e, t, i, r) { + if (!n.samplerate) { + const s = fp(e, t, i, r); + if (!s) + return; + Ye(n, s); + } +} +function Wd(n) { + return 1024 * 9e4 / n; +} +function vp(n, e) { + const t = Kd(n, e); + if (e + t <= n.length) { + const i = Jl(n, e) - t; + if (i > 0) + return { + headerLength: t, + frameLength: i + }; + } +} +function jd(n, e, t, i, r) { + const s = Wd(n.samplerate), a = i + r * s, o = vp(e, t); + let l; + if (o) { + const { + frameLength: h, + headerLength: d + } = o, f = d + h, m = Math.max(0, t + f - e.length); + m ? (l = new Uint8Array(f - d), l.set(e.subarray(t + d, e.length), 0)) : l = e.subarray(t + d, t + f); + const p = { + unit: l, + pts: a + }; + return m || n.samples.push(p), { + sample: p, + length: f, + missing: m + }; + } + const u = e.length - t; + return l = new Uint8Array(u), l.set(e.subarray(t, e.length), 0), { + sample: { + unit: l, + pts: a + }, + length: u, + missing: -1 + }; +} +function yp(n, e) { + return Zl(n, e) && za(n, e + 6) + 10 <= n.length - e; +} +function _p(n) { + return n instanceof ArrayBuffer ? n : n.byteOffset == 0 && n.byteLength == n.buffer.byteLength ? n.buffer : new Uint8Array(n).buffer; +} +function go(n, e = 0, t = 1 / 0) { + return bp(n, e, t, Uint8Array); +} +function bp(n, e, t, i) { + const r = Ep(n); + let s = 1; + "BYTES_PER_ELEMENT" in i && (s = i.BYTES_PER_ELEMENT); + const a = Sp(n) ? n.byteOffset : 0, o = (a + n.byteLength) / s, l = (a + e) / s, u = Math.floor(Math.max(0, Math.min(l, o))), c = Math.floor(Math.min(u + Math.max(t, 0), o)); + return new i(r, u, c - u); +} +function Ep(n) { + return n instanceof ArrayBuffer ? n : n.buffer; +} +function Sp(n) { + return n && n.buffer instanceof ArrayBuffer && n.byteLength !== void 0 && n.byteOffset !== void 0; +} +function Tp(n) { + const e = { + key: n.type, + description: "", + data: "", + mimeType: null, + pictureType: null + }, t = 3; + if (n.size < 2) + return; + if (n.data[0] !== t) { + console.log("Ignore frame with unrecognized character encoding"); + return; + } + const i = n.data.subarray(1).indexOf(0); + if (i === -1) + return; + const r = ni(go(n.data, 1, i)), s = n.data[2 + i], a = n.data.subarray(3 + i).indexOf(0); + if (a === -1) + return; + const o = ni(go(n.data, 3 + i, a)); + let l; + return r === "-->" ? l = ni(go(n.data, 4 + i + a)) : l = _p(n.data.subarray(4 + i + a)), e.mimeType = r, e.pictureType = s, e.description = o, e.data = l, e; +} +function xp(n) { + if (n.size < 2) + return; + const e = ni(n.data, !0), t = new Uint8Array(n.data.subarray(e.length + 1)); + return { + key: n.type, + info: e, + data: t.buffer + }; +} +function Ap(n) { + if (n.size < 2) + return; + if (n.type === "TXXX") { + let t = 1; + const i = ni(n.data.subarray(t), !0); + t += i.length + 1; + const r = ni(n.data.subarray(t)); + return { + key: n.type, + info: i, + data: r + }; + } + const e = ni(n.data.subarray(1)); + return { + key: n.type, + info: "", + data: e + }; +} +function Dp(n) { + if (n.type === "WXXX") { + if (n.size < 2) + return; + let t = 1; + const i = ni(n.data.subarray(t), !0); + t += i.length + 1; + const r = ni(n.data.subarray(t)); + return { + key: n.type, + info: i, + data: r + }; + } + const e = ni(n.data); + return { + key: n.type, + info: "", + data: e + }; +} +function wp(n) { + return n.type === "PRIV" ? xp(n) : n.type[0] === "W" ? Dp(n) : n.type === "APIC" ? Tp(n) : Ap(n); +} +function kp(n) { + const e = String.fromCharCode(n[0], n[1], n[2], n[3]), t = za(n, 4), i = 10; + return { + type: e, + size: t, + data: n.subarray(i, i + t) + }; +} +const Is = 10, Lp = 10; +function Xd(n) { + let e = 0; + const t = []; + for (; Zl(n, e); ) { + const i = za(n, e + 6); + n[e + 5] >> 6 & 1 && (e += Is), e += Is; + const r = e + i; + for (; e + Lp < r; ) { + const s = kp(n.subarray(e)), a = wp(s); + a && t.push(a), e += s.size + Is; + } + Hd(n, e) && (e += Is); + } + return t; +} +function Qd(n) { + return n && n.key === "PRIV" && n.info === "com.apple.streaming.transportStreamTimestamp"; +} +function Ip(n) { + if (n.data.byteLength === 8) { + const e = new Uint8Array(n.data), t = e[3] & 1; + let i = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7]; + return i /= 45, t && (i += 4772185884e-2), Math.round(i); + } +} +function e0(n) { + const e = Xd(n); + for (let t = 0; t < e.length; t++) { + const i = e[t]; + if (Qd(i)) + return Ip(i); + } +} +let ei = /* @__PURE__ */ function(n) { + return n.audioId3 = "org.id3", n.dateRange = "com.apple.quicktime.HLS", n.emsg = "https://aomedia.org/emsg/ID3", n.misbklv = "urn:misb:KLV:bin:1910.1", n; +}({}); +function Ui(n = "", e = 9e4) { + return { + type: n, + id: -1, + pid: -1, + inputTimeScale: e, + sequenceNumber: -1, + samples: [], + dropped: 0 + }; +} +class t0 { + constructor() { + this._audioTrack = void 0, this._id3Track = void 0, this.frameIndex = 0, this.cachedData = null, this.basePTS = null, this.initPTS = null, this.lastPTS = null; + } + resetInitSegment(e, t, i, r) { + this._id3Track = { + type: "id3", + id: 3, + pid: -1, + inputTimeScale: 9e4, + sequenceNumber: 0, + samples: [], + dropped: 0 + }; + } + resetTimeStamp(e) { + this.initPTS = e, this.resetContiguity(); + } + resetContiguity() { + this.basePTS = null, this.lastPTS = null, this.frameIndex = 0; + } + canParse(e, t) { + return !1; + } + appendFrame(e, t, i) { + } + // feed incoming data to the front of the parsing pipeline + demux(e, t) { + this.cachedData && (e = _i(this.cachedData, e), this.cachedData = null); + let i = rs(e, 0), r = i ? i.length : 0, s; + const a = this._audioTrack, o = this._id3Track, l = i ? e0(i) : void 0, u = e.length; + for ((this.basePTS === null || this.frameIndex === 0 && se(l)) && (this.basePTS = Rp(l, t, this.initPTS), this.lastPTS = this.basePTS), this.lastPTS === null && (this.lastPTS = this.basePTS), i && i.length > 0 && o.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: i, + type: ei.audioId3, + duration: Number.POSITIVE_INFINITY + }); r < u; ) { + if (this.canParse(e, r)) { + const c = this.appendFrame(a, e, r); + c ? (this.frameIndex++, this.lastPTS = c.sample.pts, r += c.length, s = r) : r = u; + } else yp(e, r) ? (i = rs(e, r), o.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: i, + type: ei.audioId3, + duration: Number.POSITIVE_INFINITY + }), r += i.length, s = r) : r++; + if (r === u && s !== u) { + const c = e.slice(s); + this.cachedData ? this.cachedData = _i(this.cachedData, c) : this.cachedData = c; + } + } + return { + audioTrack: a, + videoTrack: Ui(), + id3Track: o, + textTrack: Ui() + }; + } + demuxSampleAes(e, t, i) { + return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`)); + } + flush(e) { + const t = this.cachedData; + return t && (this.cachedData = null, this.demux(t, 0)), { + audioTrack: this._audioTrack, + videoTrack: Ui(), + id3Track: this._id3Track, + textTrack: Ui() + }; + } + destroy() { + this.cachedData = null, this._audioTrack = this._id3Track = void 0; + } +} +const Rp = (n, e, t) => { + if (se(n)) + return n * 90; + const i = t ? t.baseTime * 9e4 / t.timescale : 0; + return e * 9e4 + i; +}; +let Rs = null; +const Cp = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160], Fp = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3], Pp = [ + // MPEG 2.5 + [ + 0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ], + // Reserved + [ + 0, + // Reserved + 0, + // Layer3 + 0, + // Layer2 + 0 + // Layer1 + ], + // MPEG 2 + [ + 0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ], + // MPEG 1 + [ + 0, + // Reserved + 144, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ] +], Mp = [ + 0, + // Reserved + 1, + // Layer3 + 1, + // Layer2 + 4 + // Layer1 +]; +function Zd(n, e, t, i, r) { + if (t + 24 > e.length) + return; + const s = Jd(e, t); + if (s && t + s.frameLength <= e.length) { + const a = s.samplesPerFrame * 9e4 / s.sampleRate, o = i + r * a, l = { + unit: e.subarray(t, t + s.frameLength), + pts: o, + dts: o + }; + return n.config = [], n.channelCount = s.channelCount, n.samplerate = s.sampleRate, n.samples.push(l), { + sample: l, + length: s.frameLength, + missing: 0 + }; + } +} +function Jd(n, e) { + const t = n[e + 1] >> 3 & 3, i = n[e + 1] >> 1 & 3, r = n[e + 2] >> 4 & 15, s = n[e + 2] >> 2 & 3; + if (t !== 1 && r !== 0 && r !== 15 && s !== 3) { + const a = n[e + 2] >> 1 & 1, o = n[e + 3] >> 6, l = t === 3 ? 3 - i : i === 3 ? 3 : 4, u = Cp[l * 14 + r - 1] * 1e3, h = Fp[(t === 3 ? 0 : t === 2 ? 1 : 2) * 3 + s], d = o === 3 ? 1 : 2, f = Pp[t][i], m = Mp[i], p = f * 8 * m, v = Math.floor(f * u / h + a) * m; + if (Rs === null) { + const y = (navigator.userAgent || "").match(/Chrome\/(\d+)/i); + Rs = y ? parseInt(y[1]) : 0; + } + return !!Rs && Rs <= 87 && i === 2 && u >= 224e3 && o === 0 && (n[e + 3] = n[e + 3] | 128), { + sampleRate: h, + channelCount: d, + frameLength: v, + samplesPerFrame: p + }; + } +} +function i0(n, e) { + return n[e] === 255 && (n[e + 1] & 224) === 224 && (n[e + 1] & 6) !== 0; +} +function ef(n, e) { + return e + 1 < n.length && i0(n, e); +} +function Op(n, e) { + return i0(n, e) && 4 <= n.length - e; +} +function tf(n, e) { + if (e + 1 < n.length && i0(n, e)) { + const i = Jd(n, e); + let r = 4; + i != null && i.frameLength && (r = i.frameLength); + const s = e + r; + return s === n.length || ef(n, s); + } + return !1; +} +class $p extends t0 { + constructor(e, t) { + super(), this.observer = void 0, this.config = void 0, this.observer = e, this.config = t; + } + resetInitSegment(e, t, i, r) { + super.resetInitSegment(e, t, i, r), this._audioTrack = { + container: "audio/adts", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "aac", + samples: [], + manifestCodec: t, + duration: r, + inputTimeScale: 9e4, + dropped: 0 + }; + } + // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS + static probe(e, t) { + if (!e) + return !1; + const i = rs(e, 0); + let r = (i == null ? void 0 : i.length) || 0; + if (tf(e, r)) + return !1; + for (let s = e.length; r < s; r++) + if (pp(e, r)) + return t.log("ADTS sync word found !"), !0; + return !1; + } + canParse(e, t) { + return gp(e, t); + } + appendFrame(e, t, i) { + Yd(e, this.observer, t, i, e.manifestCodec); + const r = jd(e, t, i, this.basePTS, this.frameIndex); + if (r && r.missing === 0) + return r; + } +} +const rf = (n, e) => { + let t = 0, i = 5; + e += i; + const r = new Uint32Array(1), s = new Uint32Array(1), a = new Uint8Array(1); + for (; i > 0; ) { + a[0] = n[e]; + const o = Math.min(i, 8), l = 8 - o; + s[0] = 4278190080 >>> 24 + l << l, r[0] = (a[0] & s[0]) >> l, t = t ? t << o | r[0] : r[0], e += 1, i -= o; + } + return t; +}; +class Bp extends t0 { + constructor(e) { + super(), this.observer = void 0, this.observer = e; + } + resetInitSegment(e, t, i, r) { + super.resetInitSegment(e, t, i, r), this._audioTrack = { + container: "audio/ac-3", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "ac3", + samples: [], + manifestCodec: t, + duration: r, + inputTimeScale: 9e4, + dropped: 0 + }; + } + canParse(e, t) { + return t + 64 < e.length; + } + appendFrame(e, t, i) { + const r = nf(e, t, i, this.basePTS, this.frameIndex); + if (r !== -1) + return { + sample: e.samples[e.samples.length - 1], + length: r, + missing: 0 + }; + } + static probe(e) { + if (!e) + return !1; + const t = rs(e, 0); + if (!t) + return !1; + const i = t.length; + return e[i] === 11 && e[i + 1] === 119 && e0(t) !== void 0 && // check the bsid to confirm ac-3 + rf(e, i) < 16; + } +} +function nf(n, e, t, i, r) { + if (t + 8 > e.length || e[t] !== 11 || e[t + 1] !== 119) + return -1; + const s = e[t + 4] >> 6; + if (s >= 3) + return -1; + const o = [48e3, 44100, 32e3][s], l = e[t + 4] & 63, c = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920][l * 3 + s] * 2; + if (t + c > e.length) + return -1; + const h = e[t + 6] >> 5; + let d = 0; + h === 2 ? d += 2 : (h & 1 && h !== 1 && (d += 2), h & 4 && (d += 2)); + const f = (e[t + 6] << 8 | e[t + 7]) >> 12 - d & 1, p = [2, 1, 2, 3, 3, 4, 4, 5][h] + f, v = e[t + 5] >> 3, b = e[t + 5] & 7, E = new Uint8Array([s << 6 | v << 1 | b >> 2, (b & 3) << 6 | h << 3 | f << 2 | l >> 4, l << 4 & 224]), y = 1536 / o * 9e4, T = i + r * y, A = e.subarray(t, t + c); + return n.config = E, n.channelCount = p, n.samplerate = o, n.samples.push({ + unit: A, + pts: T + }), c; +} +class Np extends t0 { + resetInitSegment(e, t, i, r) { + super.resetInitSegment(e, t, i, r), this._audioTrack = { + container: "audio/mpeg", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "mp3", + samples: [], + manifestCodec: t, + duration: r, + inputTimeScale: 9e4, + dropped: 0 + }; + } + static probe(e) { + if (!e) + return !1; + const t = rs(e, 0); + let i = (t == null ? void 0 : t.length) || 0; + if (t && e[i] === 11 && e[i + 1] === 119 && e0(t) !== void 0 && // check the bsid to confirm ac-3 or ec-3 (not mp3) + rf(e, i) <= 16) + return !1; + for (let r = e.length; i < r; i++) + if (tf(e, i)) + return Ne.log("MPEG Audio sync word found !"), !0; + return !1; + } + canParse(e, t) { + return Op(e, t); + } + appendFrame(e, t, i) { + if (this.basePTS !== null) + return Zd(e, t, i, this.basePTS, this.frameIndex); + } +} +const Up = /\/emsg[-/]ID3/i; +class Gp { + constructor(e, t) { + this.remainderData = null, this.timeOffset = 0, this.config = void 0, this.videoTrack = void 0, this.audioTrack = void 0, this.id3Track = void 0, this.txtTrack = void 0, this.config = t; + } + resetTimeStamp() { + } + resetInitSegment(e, t, i, r) { + const s = this.videoTrack = Ui("video", 1), a = this.audioTrack = Ui("audio", 1), o = this.txtTrack = Ui("text", 1); + if (this.id3Track = Ui("id3", 1), this.timeOffset = 0, !(e != null && e.byteLength)) + return; + const l = pd(e); + if (l.video) { + const { + id: u, + timescale: c, + codec: h, + supplemental: d + } = l.video; + s.id = u, s.timescale = o.timescale = c, s.codec = h, s.supplemental = d; + } + if (l.audio) { + const { + id: u, + timescale: c, + codec: h + } = l.audio; + a.id = u, a.timescale = c, a.codec = h; + } + o.id = fd.text, s.sampleDuration = 0, s.duration = a.duration = r; + } + resetContiguity() { + this.remainderData = null; + } + static probe(e) { + return q1(e); + } + demux(e, t) { + this.timeOffset = t; + let i = e; + const r = this.videoTrack, s = this.txtTrack; + if (this.config.progressive) { + this.remainderData && (i = _i(this.remainderData, e)); + const o = X1(i); + this.remainderData = o.remainder, r.samples = o.valid || new Uint8Array(); + } else + r.samples = i; + const a = this.extractID3Track(r, t); + return s.samples = nu(t, r), { + videoTrack: r, + audioTrack: this.audioTrack, + id3Track: a, + textTrack: this.txtTrack + }; + } + flush() { + const e = this.timeOffset, t = this.videoTrack, i = this.txtTrack; + t.samples = this.remainderData || new Uint8Array(), this.remainderData = null; + const r = this.extractID3Track(t, this.timeOffset); + return i.samples = nu(e, t), { + videoTrack: t, + audioTrack: Ui(), + id3Track: r, + textTrack: Ui() + }; + } + extractID3Track(e, t) { + const i = this.id3Track; + if (e.samples.length) { + const r = Le(e.samples, ["emsg"]); + r && r.forEach((s) => { + const a = Z1(s); + if (Up.test(a.schemeIdUri)) { + const o = Bu(a, t); + let l = a.eventDuration === 4294967295 ? Number.POSITIVE_INFINITY : a.eventDuration / a.timeScale; + l <= 1e-3 && (l = Number.POSITIVE_INFINITY); + const u = a.payload; + i.samples.push({ + data: u, + len: u.byteLength, + dts: o, + pts: o, + type: ei.emsg, + duration: l + }); + } else if (this.config.enableEmsgKLVMetadata && a.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")) { + const o = Bu(a, t); + i.samples.push({ + data: a.payload, + len: a.payload.byteLength, + dts: o, + pts: o, + type: ei.misbklv, + duration: Number.POSITIVE_INFINITY + }); + } + }); + } + return i; + } + demuxSampleAes(e, t, i) { + return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption")); + } + destroy() { + this.config = null, this.remainderData = null, this.videoTrack = this.audioTrack = this.id3Track = this.txtTrack = void 0; + } +} +function Bu(n, e) { + return se(n.presentationTime) ? n.presentationTime / n.timeScale : e + n.presentationTimeDelta / n.timeScale; +} +class zp { + constructor(e, t, i) { + this.keyData = void 0, this.decrypter = void 0, this.keyData = i, this.decrypter = new Kl(t, { + removePKCS7Padding: !1 + }); + } + decryptBuffer(e) { + return this.decrypter.decrypt(e, this.keyData.key.buffer, this.keyData.iv.buffer, Cr.cbc); + } + // AAC - encrypt all full 16 bytes blocks starting from offset 16 + decryptAacSample(e, t, i) { + const r = e[t].unit; + if (r.length <= 16) + return; + const s = r.subarray(16, r.length - r.length % 16), a = s.buffer.slice(s.byteOffset, s.byteOffset + s.length); + this.decryptBuffer(a).then((o) => { + const l = new Uint8Array(o); + r.set(l, 16), this.decrypter.isSync() || this.decryptAacSamples(e, t + 1, i); + }); + } + decryptAacSamples(e, t, i) { + for (; ; t++) { + if (t >= e.length) { + i(); + return; + } + if (!(e[t].unit.length < 32) && (this.decryptAacSample(e, t, i), !this.decrypter.isSync())) + return; + } + } + // AVC - encrypt one 16 bytes block out of ten, starting from offset 32 + getAvcEncryptedData(e) { + const t = Math.floor((e.length - 48) / 160) * 16 + 16, i = new Int8Array(t); + let r = 0; + for (let s = 32; s < e.length - 16; s += 160, r += 16) + i.set(e.subarray(s, s + 16), r); + return i; + } + getAvcDecryptedUnit(e, t) { + const i = new Uint8Array(t); + let r = 0; + for (let s = 32; s < e.length - 16; s += 160, r += 16) + e.set(i.subarray(r, r + 16), s); + return e; + } + decryptAvcSample(e, t, i, r, s) { + const a = yd(s.data), o = this.getAvcEncryptedData(a); + this.decryptBuffer(o.buffer).then((l) => { + s.data = this.getAvcDecryptedUnit(a, l), this.decrypter.isSync() || this.decryptAvcSamples(e, t, i + 1, r); + }); + } + decryptAvcSamples(e, t, i, r) { + if (e instanceof Uint8Array) + throw new Error("Cannot decrypt samples of type Uint8Array"); + for (; ; t++, i = 0) { + if (t >= e.length) { + r(); + return; + } + const s = e[t].units; + for (; !(i >= s.length); i++) { + const a = s[i]; + if (!(a.data.length <= 48 || a.type !== 1 && a.type !== 5) && (this.decryptAvcSample(e, t, i, r, a), !this.decrypter.isSync())) + return; + } + } + } +} +class sf { + constructor() { + this.VideoSample = null; + } + createVideoSample(e, t, i) { + return { + key: e, + frame: !1, + pts: t, + dts: i, + units: [], + length: 0 + }; + } + getLastNalUnit(e) { + var t; + let i = this.VideoSample, r; + if ((!i || i.units.length === 0) && (i = e[e.length - 1]), (t = i) != null && t.units) { + const s = i.units; + r = s[s.length - 1]; + } + return r; + } + pushAccessUnit(e, t) { + if (e.units.length && e.frame) { + if (e.pts === void 0) { + const i = t.samples, r = i.length; + if (r) { + const s = i[r - 1]; + e.pts = s.pts, e.dts = s.dts; + } else { + t.dropped++; + return; + } + } + t.samples.push(e); + } + } + parseNALu(e, t, i) { + const r = t.byteLength; + let s = e.naluState || 0; + const a = s, o = []; + let l = 0, u, c, h, d = -1, f = 0; + for (s === -1 && (d = 0, f = this.getNALuType(t, 0), s = 0, l = 1); l < r; ) { + if (u = t[l++], !s) { + s = u ? 0 : 1; + continue; + } + if (s === 1) { + s = u ? 0 : 2; + continue; + } + if (!u) + s = 3; + else if (u === 1) { + if (c = l - s - 1, d >= 0) { + const m = { + data: t.subarray(d, c), + type: f + }; + o.push(m); + } else { + const m = this.getLastNalUnit(e.samples); + m && (a && l <= 4 - a && m.state && (m.data = m.data.subarray(0, m.data.byteLength - a)), c > 0 && (m.data = _i(m.data, t.subarray(0, c)), m.state = 0)); + } + l < r ? (h = this.getNALuType(t, l), d = l, f = h, s = 0) : s = -1; + } else + s = 0; + } + if (d >= 0 && s >= 0) { + const m = { + data: t.subarray(d, r), + type: f, + state: s + }; + o.push(m); + } + if (o.length === 0) { + const m = this.getLastNalUnit(e.samples); + m && (m.data = _i(m.data, t)); + } + return e.naluState = s, o; + } +} +class qn { + constructor(e) { + this.data = void 0, this.bytesAvailable = void 0, this.word = void 0, this.bitsAvailable = void 0, this.data = e, this.bytesAvailable = e.byteLength, this.word = 0, this.bitsAvailable = 0; + } + // ():void + loadWord() { + const e = this.data, t = this.bytesAvailable, i = e.byteLength - t, r = new Uint8Array(4), s = Math.min(4, t); + if (s === 0) + throw new Error("no bytes available"); + r.set(e.subarray(i, i + s)), this.word = new DataView(r.buffer).getUint32(0), this.bitsAvailable = s * 8, this.bytesAvailable -= s; + } + // (count:int):void + skipBits(e) { + let t; + e = Math.min(e, this.bytesAvailable * 8 + this.bitsAvailable), this.bitsAvailable > e ? (this.word <<= e, this.bitsAvailable -= e) : (e -= this.bitsAvailable, t = e >> 3, e -= t << 3, this.bytesAvailable -= t, this.loadWord(), this.word <<= e, this.bitsAvailable -= e); + } + // (size:int):uint + readBits(e) { + let t = Math.min(this.bitsAvailable, e); + const i = this.word >>> 32 - t; + if (e > 32 && Ne.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= t, this.bitsAvailable > 0) + this.word <<= t; + else if (this.bytesAvailable > 0) + this.loadWord(); + else + throw new Error("no bits available"); + return t = e - t, t > 0 && this.bitsAvailable ? i << t | this.readBits(t) : i; + } + // ():uint + skipLZ() { + let e; + for (e = 0; e < this.bitsAvailable; ++e) + if (this.word & 2147483648 >>> e) + return this.word <<= e, this.bitsAvailable -= e, e; + return this.loadWord(), e + this.skipLZ(); + } + // ():void + skipUEG() { + this.skipBits(1 + this.skipLZ()); + } + // ():void + skipEG() { + this.skipBits(1 + this.skipLZ()); + } + // ():uint + readUEG() { + const e = this.skipLZ(); + return this.readBits(e + 1) - 1; + } + // ():int + readEG() { + const e = this.readUEG(); + return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1); + } + // Some convenience functions + // :Boolean + readBoolean() { + return this.readBits(1) === 1; + } + // ():int + readUByte() { + return this.readBits(8); + } + // ():int + readUShort() { + return this.readBits(16); + } + // ():int + readUInt() { + return this.readBits(32); + } +} +class Nu extends sf { + parsePES(e, t, i, r) { + const s = this.parseNALu(e, i.data, r); + let a = this.VideoSample, o, l = !1; + i.data = null, a && s.length && !e.audFound && (this.pushAccessUnit(a, e), a = this.VideoSample = this.createVideoSample(!1, i.pts, i.dts)), s.forEach((u) => { + var c, h; + switch (u.type) { + case 1: { + let p = !1; + o = !0; + const v = u.data; + if (l && v.length > 4) { + const b = this.readSliceType(v); + (b === 2 || b === 4 || b === 7 || b === 9) && (p = !0); + } + if (p) { + var d; + (d = a) != null && d.frame && !a.key && (this.pushAccessUnit(a, e), a = this.VideoSample = null); + } + a || (a = this.VideoSample = this.createVideoSample(!0, i.pts, i.dts)), a.frame = !0, a.key = p; + break; + } + case 5: + o = !0, (c = a) != null && c.frame && !a.key && (this.pushAccessUnit(a, e), a = this.VideoSample = null), a || (a = this.VideoSample = this.createVideoSample(!0, i.pts, i.dts)), a.key = !0, a.frame = !0; + break; + case 6: { + o = !0, Hl(u.data, 1, i.pts, t.samples); + break; + } + case 7: { + var f, m; + o = !0, l = !0; + const p = u.data, v = this.readSPS(p); + if (!e.sps || e.width !== v.width || e.height !== v.height || ((f = e.pixelRatio) == null ? void 0 : f[0]) !== v.pixelRatio[0] || ((m = e.pixelRatio) == null ? void 0 : m[1]) !== v.pixelRatio[1]) { + e.width = v.width, e.height = v.height, e.pixelRatio = v.pixelRatio, e.sps = [p]; + const b = p.subarray(1, 4); + let E = "avc1."; + for (let y = 0; y < 3; y++) { + let T = b[y].toString(16); + T.length < 2 && (T = "0" + T), E += T; + } + e.codec = E; + } + break; + } + case 8: + o = !0, e.pps = [u.data]; + break; + case 9: + o = !0, e.audFound = !0, (h = a) != null && h.frame && (this.pushAccessUnit(a, e), a = null), a || (a = this.VideoSample = this.createVideoSample(!1, i.pts, i.dts)); + break; + case 12: + o = !0; + break; + default: + o = !1; + break; + } + a && o && a.units.push(u); + }), r && a && (this.pushAccessUnit(a, e), this.VideoSample = null); + } + getNALuType(e, t) { + return e[t] & 31; + } + readSliceType(e) { + const t = new qn(e); + return t.readUByte(), t.readUEG(), t.readUEG(); + } + /** + * The scaling list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count the number of entries in this scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */ + skipScalingList(e, t) { + let i = 8, r = 8, s; + for (let a = 0; a < e; a++) + r !== 0 && (s = t.readEG(), r = (i + s + 256) % 256), i = r === 0 ? i : r; + } + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @returns an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */ + readSPS(e) { + const t = new qn(e); + let i = 0, r = 0, s = 0, a = 0, o, l, u; + const c = t.readUByte.bind(t), h = t.readBits.bind(t), d = t.readUEG.bind(t), f = t.readBoolean.bind(t), m = t.skipBits.bind(t), p = t.skipEG.bind(t), v = t.skipUEG.bind(t), b = this.skipScalingList.bind(this); + c(); + const E = c(); + if (h(5), m(3), c(), v(), E === 100 || E === 110 || E === 122 || E === 244 || E === 44 || E === 83 || E === 86 || E === 118 || E === 128) { + const L = d(); + if (L === 3 && m(1), v(), v(), m(1), f()) + for (l = L !== 3 ? 8 : 12, u = 0; u < l; u++) + f() && (u < 6 ? b(16, t) : b(64, t)); + } + v(); + const y = d(); + if (y === 0) + d(); + else if (y === 1) + for (m(1), p(), p(), o = d(), u = 0; u < o; u++) + p(); + v(), m(1); + const T = d(), A = d(), k = h(1); + k === 0 && m(1), m(1), f() && (i = d(), r = d(), s = d(), a = d()); + let w = [1, 1]; + if (f() && f()) + switch (c()) { + case 1: + w = [1, 1]; + break; + case 2: + w = [12, 11]; + break; + case 3: + w = [10, 11]; + break; + case 4: + w = [16, 11]; + break; + case 5: + w = [40, 33]; + break; + case 6: + w = [24, 11]; + break; + case 7: + w = [20, 11]; + break; + case 8: + w = [32, 11]; + break; + case 9: + w = [80, 33]; + break; + case 10: + w = [18, 11]; + break; + case 11: + w = [15, 11]; + break; + case 12: + w = [64, 33]; + break; + case 13: + w = [160, 99]; + break; + case 14: + w = [4, 3]; + break; + case 15: + w = [3, 2]; + break; + case 16: + w = [2, 1]; + break; + case 255: { + w = [c() << 8 | c(), c() << 8 | c()]; + break; + } + } + return { + width: Math.ceil((T + 1) * 16 - i * 2 - r * 2), + height: (2 - k) * (A + 1) * 16 - (k ? 2 : 4) * (s + a), + pixelRatio: w + }; + } +} +class Uu extends sf { + constructor(...e) { + super(...e), this.initVPS = null; + } + parsePES(e, t, i, r) { + const s = this.parseNALu(e, i.data, r); + let a = this.VideoSample, o, l = !1; + i.data = null, a && s.length && !e.audFound && (this.pushAccessUnit(a, e), a = this.VideoSample = this.createVideoSample(!1, i.pts, i.dts)), s.forEach((u) => { + var c, h; + switch (u.type) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + a || (a = this.VideoSample = this.createVideoSample(!1, i.pts, i.dts)), a.frame = !0, o = !0; + break; + case 16: + case 17: + case 18: + case 21: + if (o = !0, l) { + var d; + (d = a) != null && d.frame && !a.key && (this.pushAccessUnit(a, e), a = this.VideoSample = null); + } + a || (a = this.VideoSample = this.createVideoSample(!0, i.pts, i.dts)), a.key = !0, a.frame = !0; + break; + case 19: + case 20: + o = !0, (c = a) != null && c.frame && !a.key && (this.pushAccessUnit(a, e), a = this.VideoSample = null), a || (a = this.VideoSample = this.createVideoSample(!0, i.pts, i.dts)), a.key = !0, a.frame = !0; + break; + case 39: + o = !0, Hl( + u.data, + 2, + // NALu header size + i.pts, + t.samples + ); + break; + case 32: + o = !0, e.vps || (typeof e.params != "object" && (e.params = {}), e.params = Ye(e.params, this.readVPS(u.data)), this.initVPS = u.data), e.vps = [u.data]; + break; + case 33: + if (o = !0, l = !0, e.vps !== void 0 && e.vps[0] !== this.initVPS && e.sps !== void 0 && !this.matchSPS(e.sps[0], u.data) && (this.initVPS = e.vps[0], e.sps = e.pps = void 0), !e.sps) { + const f = this.readSPS(u.data); + e.width = f.width, e.height = f.height, e.pixelRatio = f.pixelRatio, e.codec = f.codecString, e.sps = [], typeof e.params != "object" && (e.params = {}); + for (const m in f.params) + e.params[m] = f.params[m]; + } + this.pushParameterSet(e.sps, u.data, e.vps), a || (a = this.VideoSample = this.createVideoSample(!0, i.pts, i.dts)), a.key = !0; + break; + case 34: + if (o = !0, typeof e.params == "object") { + if (!e.pps) { + e.pps = []; + const f = this.readPPS(u.data); + for (const m in f) + e.params[m] = f[m]; + } + this.pushParameterSet(e.pps, u.data, e.vps); + } + break; + case 35: + o = !0, e.audFound = !0, (h = a) != null && h.frame && (this.pushAccessUnit(a, e), a = null), a || (a = this.VideoSample = this.createVideoSample(!1, i.pts, i.dts)); + break; + default: + o = !1; + break; + } + a && o && a.units.push(u); + }), r && a && (this.pushAccessUnit(a, e), this.VideoSample = null); + } + pushParameterSet(e, t, i) { + (i && i[0] === this.initVPS || !i && !e.length) && e.push(t); + } + getNALuType(e, t) { + return (e[t] & 126) >>> 1; + } + ebsp2rbsp(e) { + const t = new Uint8Array(e.byteLength); + let i = 0; + for (let r = 0; r < e.byteLength; r++) + r >= 2 && e[r] === 3 && e[r - 1] === 0 && e[r - 2] === 0 || (t[i] = e[r], i++); + return new Uint8Array(t.buffer, 0, i); + } + pushAccessUnit(e, t) { + super.pushAccessUnit(e, t), this.initVPS && (this.initVPS = null); + } + readVPS(e) { + const t = new qn(e); + t.readUByte(), t.readUByte(), t.readBits(4), t.skipBits(2), t.readBits(6); + const i = t.readBits(3), r = t.readBoolean(); + return { + numTemporalLayers: i + 1, + temporalIdNested: r + }; + } + readSPS(e) { + const t = new qn(this.ebsp2rbsp(e)); + t.readUByte(), t.readUByte(), t.readBits(4); + const i = t.readBits(3); + t.readBoolean(); + const r = t.readBits(2), s = t.readBoolean(), a = t.readBits(5), o = t.readUByte(), l = t.readUByte(), u = t.readUByte(), c = t.readUByte(), h = t.readUByte(), d = t.readUByte(), f = t.readUByte(), m = t.readUByte(), p = t.readUByte(), v = t.readUByte(), b = t.readUByte(), E = [], y = []; + for (let fe = 0; fe < i; fe++) + E.push(t.readBoolean()), y.push(t.readBoolean()); + if (i > 0) + for (let fe = i; fe < 8; fe++) + t.readBits(2); + for (let fe = 0; fe < i; fe++) + E[fe] && (t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte()), y[fe] && t.readUByte(); + t.readUEG(); + const T = t.readUEG(); + T == 3 && t.skipBits(1); + const A = t.readUEG(), k = t.readUEG(), w = t.readBoolean(); + let L = 0, I = 0, R = 0, O = 0; + w && (L += t.readUEG(), I += t.readUEG(), R += t.readUEG(), O += t.readUEG()); + const z = t.readUEG(), ie = t.readUEG(), N = t.readUEG(), X = t.readBoolean(); + for (let fe = X ? 0 : i; fe <= i; fe++) + t.skipUEG(), t.skipUEG(), t.skipUEG(); + if (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.readBoolean() && t.readBoolean()) + for (let Re = 0; Re < 4; Re++) + for (let Ae = 0; Ae < (Re === 3 ? 2 : 6); Ae++) + if (!t.readBoolean()) + t.readUEG(); + else { + const Je = Math.min(64, 1 << 4 + (Re << 1)); + Re > 1 && t.readEG(); + for (let Et = 0; Et < Je; Et++) + t.readEG(); + } + t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.skipUEG(), t.skipUEG(), t.readBoolean()); + const Q = t.readUEG(); + let H = 0; + for (let fe = 0; fe < Q; fe++) { + let Re = !1; + if (fe !== 0 && (Re = t.readBoolean()), Re) { + fe === Q && t.readUEG(), t.readBoolean(), t.readUEG(); + let Ae = 0; + for (let Ee = 0; Ee <= H; Ee++) { + const Je = t.readBoolean(); + let Et = !1; + Je || (Et = t.readBoolean()), (Je || Et) && Ae++; + } + H = Ae; + } else { + const Ae = t.readUEG(), Ee = t.readUEG(); + H = Ae + Ee; + for (let Je = 0; Je < Ae; Je++) + t.readUEG(), t.readBoolean(); + for (let Je = 0; Je < Ee; Je++) + t.readUEG(), t.readBoolean(); + } + } + if (t.readBoolean()) { + const fe = t.readUEG(); + for (let Re = 0; Re < fe; Re++) { + for (let Ae = 0; Ae < N + 4; Ae++) + t.readBits(1); + t.readBits(1); + } + } + let U = 0, te = 1, ne = 1, ce = !0, V = 1, le = 0; + t.readBoolean(), t.readBoolean(); + let be = !1; + if (t.readBoolean()) { + if (t.readBoolean()) { + const Ft = t.readUByte(), vt = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2], St = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1]; + Ft > 0 && Ft < 16 ? (te = vt[Ft - 1], ne = St[Ft - 1]) : Ft === 255 && (te = t.readBits(16), ne = t.readBits(16)); + } + if (t.readBoolean() && t.readBoolean(), t.readBoolean() && (t.readBits(3), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.readUByte(), t.readUByte())), t.readBoolean() && (t.readUEG(), t.readUEG()), t.readBoolean(), t.readBoolean(), t.readBoolean(), be = t.readBoolean(), be && (L += t.readUEG(), I += t.readUEG(), R += t.readUEG(), O += t.readUEG()), t.readBoolean() && (V = t.readBits(32), le = t.readBits(32), t.readBoolean() && t.readUEG(), t.readBoolean())) { + const St = t.readBoolean(), Pt = t.readBoolean(); + let kt = !1; + (St || Pt) && (kt = t.readBoolean(), kt && (t.readUByte(), t.readBits(5), t.readBoolean(), t.readBits(5)), t.readBits(4), t.readBits(4), kt && t.readBits(4), t.readBits(5), t.readBits(5), t.readBits(5)); + for (let oi = 0; oi <= i; oi++) { + ce = t.readBoolean(); + const nr = ce || t.readBoolean(); + let kn = !1; + nr ? t.readEG() : kn = t.readBoolean(); + const Xr = kn ? 1 : t.readUEG() + 1; + if (St) + for (let Sr = 0; Sr < Xr; Sr++) + t.readUEG(), t.readUEG(), kt && (t.readUEG(), t.readUEG()), t.skipBits(1); + if (Pt) + for (let Sr = 0; Sr < Xr; Sr++) + t.readUEG(), t.readUEG(), kt && (t.readUEG(), t.readUEG()), t.skipBits(1); + } + } + t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(), U = t.readUEG()); + } + let Ue = A, pt = k; + if (w || be) { + let fe = 1, Re = 1; + T === 1 ? fe = Re = 2 : T == 2 && (fe = 2), Ue = A - fe * I - fe * L, pt = k - Re * O - Re * R; + } + const Ge = r ? ["A", "B", "C"][r] : "", wt = o << 24 | l << 16 | u << 8 | c; + let q = 0; + for (let fe = 0; fe < 32; fe++) + q = (q | (wt >> fe & 1) << 31 - fe) >>> 0; + let Pe = q.toString(16); + return a === 1 && Pe === "2" && (Pe = "6"), { + codecString: `hvc1.${Ge}${a}.${Pe}.${s ? "H" : "L"}${b}.B0`, + params: { + general_tier_flag: s, + general_profile_idc: a, + general_profile_space: r, + general_profile_compatibility_flags: [o, l, u, c], + general_constraint_indicator_flags: [h, d, f, m, p, v], + general_level_idc: b, + bit_depth: z + 8, + bit_depth_luma_minus8: z, + bit_depth_chroma_minus8: ie, + min_spatial_segmentation_idc: U, + chroma_format_idc: T, + frame_rate: { + fixed: ce, + fps: le / V + } + }, + width: Ue, + height: pt, + pixelRatio: [te, ne] + }; + } + readPPS(e) { + const t = new qn(this.ebsp2rbsp(e)); + t.readUByte(), t.readUByte(), t.skipUEG(), t.skipUEG(), t.skipBits(2), t.skipBits(3), t.skipBits(2), t.skipUEG(), t.skipUEG(), t.skipEG(), t.skipBits(2), t.readBoolean() && t.skipUEG(), t.skipEG(), t.skipEG(), t.skipBits(4); + const r = t.readBoolean(), s = t.readBoolean(); + let a = 1; + return s && r ? a = 0 : s ? a = 3 : r && (a = 2), { + parallelismType: a + }; + } + matchSPS(e, t) { + return String.fromCharCode.apply(null, e).substr(3) === String.fromCharCode.apply(null, t).substr(3); + } +} +const xt = 188; +class Lr { + constructor(e, t, i, r) { + this.logger = void 0, this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.sampleAes = null, this.pmtParsed = !1, this.audioCodec = void 0, this.videoCodec = void 0, this._pmtId = -1, this._videoTrack = void 0, this._audioTrack = void 0, this._id3Track = void 0, this._txtTrack = void 0, this.aacOverFlow = null, this.remainderData = null, this.videoParser = void 0, this.observer = e, this.config = t, this.typeSupported = i, this.logger = r, this.videoParser = null; + } + static probe(e, t) { + const i = Lr.syncOffset(e); + return i > 0 && t.warn(`MPEG2-TS detected but first sync word found @ offset ${i}`), i !== -1; + } + static syncOffset(e) { + const t = e.length; + let i = Math.min(xt * 5, t - xt) + 1, r = 0; + for (; r < i; ) { + let s = !1, a = -1, o = 0; + for (let l = r; l < t; l += xt) + if (e[l] === 71 && (t - l === xt || e[l + xt] === 71)) { + if (o++, a === -1 && (a = l, a !== 0 && (i = Math.min(a + xt * 99, e.length - xt) + 1)), s || (s = pl(e, l) === 0), s && o > 1 && (a === 0 && o > 2 || l + xt > i)) + return a; + } else { + if (o) + return -1; + break; + } + r++; + } + return -1; + } + /** + * Creates a track model internal to demuxer used to drive remuxing input + */ + static createTrack(e, t) { + return { + container: e === "video" || e === "audio" ? "video/mp2t" : void 0, + type: e, + id: fd[e], + pid: -1, + inputTimeScale: 9e4, + sequenceNumber: 0, + samples: [], + dropped: 0, + duration: e === "audio" ? t : void 0 + }; + } + /** + * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start) + * Resets all internal track instances of the demuxer. + */ + resetInitSegment(e, t, i, r) { + this.pmtParsed = !1, this._pmtId = -1, this._videoTrack = Lr.createTrack("video"), this._videoTrack.duration = r, this._audioTrack = Lr.createTrack("audio", r), this._id3Track = Lr.createTrack("id3"), this._txtTrack = Lr.createTrack("text"), this._audioTrack.segmentCodec = "aac", this.aacOverFlow = null, this.remainderData = null, this.audioCodec = t, this.videoCodec = i; + } + resetTimeStamp() { + } + resetContiguity() { + const { + _audioTrack: e, + _videoTrack: t, + _id3Track: i + } = this; + e && (e.pesData = null), t && (t.pesData = null), i && (i.pesData = null), this.aacOverFlow = null, this.remainderData = null; + } + demux(e, t, i = !1, r = !1) { + i || (this.sampleAes = null); + let s; + const a = this._videoTrack, o = this._audioTrack, l = this._id3Track, u = this._txtTrack; + let c = a.pid, h = a.pesData, d = o.pid, f = l.pid, m = o.pesData, p = l.pesData, v = null, b = this.pmtParsed, E = this._pmtId, y = e.length; + if (this.remainderData && (e = _i(this.remainderData, e), y = e.length, this.remainderData = null), y < xt && !r) + return this.remainderData = e, { + audioTrack: o, + videoTrack: a, + id3Track: l, + textTrack: u + }; + const T = Math.max(0, Lr.syncOffset(e)); + y -= (y - T) % xt, y < e.byteLength && !r && (this.remainderData = new Uint8Array(e.buffer, y, e.buffer.byteLength - y)); + let A = 0; + for (let w = T; w < y; w += xt) + if (e[w] === 71) { + const L = !!(e[w + 1] & 64), I = pl(e, w), R = (e[w + 3] & 48) >> 4; + let O; + if (R > 1) { + if (O = w + 5 + e[w + 4], O === w + xt) + continue; + } else + O = w + 4; + switch (I) { + case c: + if (L) { + if (h && (s = nn(h, this.logger))) { + if (this.videoParser === null) + switch (a.segmentCodec) { + case "avc": + this.videoParser = new Nu(); + break; + case "hevc": + this.videoParser = new Uu(); + break; + } + this.videoParser !== null && this.videoParser.parsePES(a, u, s, !1); + } + h = { + data: [], + size: 0 + }; + } + h && (h.data.push(e.subarray(O, w + xt)), h.size += w + xt - O); + break; + case d: + if (L) { + if (m && (s = nn(m, this.logger))) + switch (o.segmentCodec) { + case "aac": + this.parseAACPES(o, s); + break; + case "mp3": + this.parseMPEGPES(o, s); + break; + case "ac3": + this.parseAC3PES(o, s); + break; + } + m = { + data: [], + size: 0 + }; + } + m && (m.data.push(e.subarray(O, w + xt)), m.size += w + xt - O); + break; + case f: + L && (p && (s = nn(p, this.logger)) && this.parseID3PES(l, s), p = { + data: [], + size: 0 + }), p && (p.data.push(e.subarray(O, w + xt)), p.size += w + xt - O); + break; + case 0: + L && (O += e[O] + 1), E = this._pmtId = qp(e, O); + break; + case E: { + L && (O += e[O] + 1); + const z = Hp(e, O, this.typeSupported, i, this.observer, this.logger); + c = z.videoPid, c > 0 && (a.pid = c, a.segmentCodec = z.segmentVideoCodec), d = z.audioPid, d > 0 && (o.pid = d, o.segmentCodec = z.segmentAudioCodec), f = z.id3Pid, f > 0 && (l.pid = f), v !== null && !b && (this.logger.warn(`MPEG-TS PMT found at ${w} after unknown PID '${v}'. Backtracking to sync byte @${T} to parse all TS packets.`), v = null, w = T - 188), b = this.pmtParsed = !0; + break; + } + case 17: + case 8191: + break; + default: + v = I; + break; + } + } else + A++; + A > 0 && vl(this.observer, new Error(`Found ${A} TS packet/s that do not start with 0x47`), void 0, this.logger), a.pesData = h, o.pesData = m, l.pesData = p; + const k = { + audioTrack: o, + videoTrack: a, + id3Track: l, + textTrack: u + }; + return r && this.extractRemainingSamples(k), k; + } + flush() { + const { + remainderData: e + } = this; + this.remainderData = null; + let t; + return e ? t = this.demux(e, -1, !1, !0) : t = { + videoTrack: this._videoTrack, + audioTrack: this._audioTrack, + id3Track: this._id3Track, + textTrack: this._txtTrack + }, this.extractRemainingSamples(t), this.sampleAes ? this.decrypt(t, this.sampleAes) : t; + } + extractRemainingSamples(e) { + const { + audioTrack: t, + videoTrack: i, + id3Track: r, + textTrack: s + } = e, a = i.pesData, o = t.pesData, l = r.pesData; + let u; + if (a && (u = nn(a, this.logger))) { + if (this.videoParser === null) + switch (i.segmentCodec) { + case "avc": + this.videoParser = new Nu(); + break; + case "hevc": + this.videoParser = new Uu(); + break; + } + this.videoParser !== null && (this.videoParser.parsePES(i, s, u, !0), i.pesData = null); + } else + i.pesData = a; + if (o && (u = nn(o, this.logger))) { + switch (t.segmentCodec) { + case "aac": + this.parseAACPES(t, u); + break; + case "mp3": + this.parseMPEGPES(t, u); + break; + case "ac3": + this.parseAC3PES(t, u); + break; + } + t.pesData = null; + } else + o != null && o.size && this.logger.log("last AAC PES packet truncated,might overlap between fragments"), t.pesData = o; + l && (u = nn(l, this.logger)) ? (this.parseID3PES(r, u), r.pesData = null) : r.pesData = l; + } + demuxSampleAes(e, t, i) { + const r = this.demux(e, i, !0, !this.config.progressive), s = this.sampleAes = new zp(this.observer, this.config, t); + return this.decrypt(r, s); + } + decrypt(e, t) { + return new Promise((i) => { + const { + audioTrack: r, + videoTrack: s + } = e; + r.samples && r.segmentCodec === "aac" ? t.decryptAacSamples(r.samples, 0, () => { + s.samples ? t.decryptAvcSamples(s.samples, 0, 0, () => { + i(e); + }) : i(e); + }) : s.samples && t.decryptAvcSamples(s.samples, 0, 0, () => { + i(e); + }); + }); + } + destroy() { + this.observer && this.observer.removeAllListeners(), this.config = this.logger = this.observer = null, this.aacOverFlow = this.videoParser = this.remainderData = this.sampleAes = null, this._videoTrack = this._audioTrack = this._id3Track = this._txtTrack = void 0; + } + parseAACPES(e, t) { + let i = 0; + const r = this.aacOverFlow; + let s = t.data; + if (r) { + this.aacOverFlow = null; + const h = r.missing, d = r.sample.unit.byteLength; + if (h === -1) + s = _i(r.sample.unit, s); + else { + const f = d - h; + r.sample.unit.set(s.subarray(0, h), f), e.samples.push(r.sample), i = r.missing; + } + } + let a, o; + for (a = i, o = s.length; a < o - 1 && !Da(s, a); a++) + ; + if (a !== i) { + let h; + const d = a < o - 1; + if (d ? h = `AAC PES did not start with ADTS header,offset:${a}` : h = "No ADTS header found in AAC PES", vl(this.observer, new Error(h), d, this.logger), !d) + return; + } + Yd(e, this.observer, s, a, this.audioCodec); + let l; + if (t.pts !== void 0) + l = t.pts; + else if (r) { + const h = Wd(e.samplerate); + l = r.sample.pts + h; + } else { + this.logger.warn("[tsdemuxer]: AAC PES unknown PTS"); + return; + } + let u = 0, c; + for (; a < o; ) + if (c = jd(e, s, a, l, u), a += c.length, c.missing) { + this.aacOverFlow = c; + break; + } else + for (u++; a < o - 1 && !Da(s, a); a++) + ; + } + parseMPEGPES(e, t) { + const i = t.data, r = i.length; + let s = 0, a = 0; + const o = t.pts; + if (o === void 0) { + this.logger.warn("[tsdemuxer]: MPEG PES unknown PTS"); + return; + } + for (; a < r; ) + if (ef(i, a)) { + const l = Zd(e, i, a, o, s); + if (l) + a += l.length, s++; + else + break; + } else + a++; + } + parseAC3PES(e, t) { + { + const i = t.data, r = t.pts; + if (r === void 0) { + this.logger.warn("[tsdemuxer]: AC3 PES unknown PTS"); + return; + } + const s = i.length; + let a = 0, o = 0, l; + for (; o < s && (l = nf(e, i, o, r, a++)) > 0; ) + o += l; + } + } + parseID3PES(e, t) { + if (t.pts === void 0) { + this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS"); + return; + } + const i = Ye({}, t, { + type: this._videoTrack ? ei.emsg : ei.audioId3, + duration: Number.POSITIVE_INFINITY + }); + e.samples.push(i); + } +} +function pl(n, e) { + return ((n[e + 1] & 31) << 8) + n[e + 2]; +} +function qp(n, e) { + return (n[e + 10] & 31) << 8 | n[e + 11]; +} +function Hp(n, e, t, i, r, s) { + const a = { + audioPid: -1, + videoPid: -1, + id3Pid: -1, + segmentVideoCodec: "avc", + segmentAudioCodec: "aac" + }, o = (n[e + 1] & 15) << 8 | n[e + 2], l = e + 3 + o - 4, u = (n[e + 10] & 15) << 8 | n[e + 11]; + for (e += 12 + u; e < l; ) { + const c = pl(n, e), h = (n[e + 3] & 15) << 8 | n[e + 4]; + switch (n[e]) { + case 207: + if (!i) { + po("ADTS AAC", s); + break; + } + case 15: + a.audioPid === -1 && (a.audioPid = c); + break; + case 21: + a.id3Pid === -1 && (a.id3Pid = c); + break; + case 219: + if (!i) { + po("H.264", s); + break; + } + case 27: + a.videoPid === -1 && (a.videoPid = c); + break; + case 3: + case 4: + !t.mpeg && !t.mp3 ? s.log("MPEG audio found, not supported in this browser") : a.audioPid === -1 && (a.audioPid = c, a.segmentAudioCodec = "mp3"); + break; + case 193: + if (!i) { + po("AC-3", s); + break; + } + case 129: + t.ac3 ? a.audioPid === -1 && (a.audioPid = c, a.segmentAudioCodec = "ac3") : s.log("AC-3 audio found, not supported in this browser"); + break; + case 6: + if (a.audioPid === -1 && h > 0) { + let d = e + 5, f = h; + for (; f > 2; ) { + switch (n[d]) { + case 106: + t.ac3 !== !0 ? s.log("AC-3 audio found, not supported in this browser for now") : (a.audioPid = c, a.segmentAudioCodec = "ac3"); + break; + } + const p = n[d + 1] + 2; + d += p, f -= p; + } + } + break; + case 194: + case 135: + return vl(r, new Error("Unsupported EC-3 in M2TS found"), void 0, s), a; + case 36: + a.videoPid === -1 && (a.videoPid = c, a.segmentVideoCodec = "hevc", s.log("HEVC in M2TS found")); + break; + } + e += h + 5; + } + return a; +} +function vl(n, e, t, i) { + i.warn(`parsing error: ${e.message}`), n.emit(S.ERROR, S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_PARSING_ERROR, + fatal: !1, + levelRetry: t, + error: e, + reason: e.message + }); +} +function po(n, e) { + e.log(`${n} with AES-128-CBC encryption found in unencrypted stream`); +} +function nn(n, e) { + let t = 0, i, r, s, a, o; + const l = n.data; + if (!n || n.size === 0) + return null; + for (; l[0].length < 19 && l.length > 1; ) + l[0] = _i(l[0], l[1]), l.splice(1, 1); + if (i = l[0], (i[0] << 16) + (i[1] << 8) + i[2] === 1) { + if (r = (i[4] << 8) + i[5], r && r > n.size - 6) + return null; + const c = i[7]; + c & 192 && (a = (i[9] & 14) * 536870912 + // 1 << 29 + (i[10] & 255) * 4194304 + // 1 << 22 + (i[11] & 254) * 16384 + // 1 << 14 + (i[12] & 255) * 128 + // 1 << 7 + (i[13] & 254) / 2, c & 64 ? (o = (i[14] & 14) * 536870912 + // 1 << 29 + (i[15] & 255) * 4194304 + // 1 << 22 + (i[16] & 254) * 16384 + // 1 << 14 + (i[17] & 255) * 128 + // 1 << 7 + (i[18] & 254) / 2, a - o > 60 * 9e4 && (e.warn(`${Math.round((a - o) / 9e4)}s delta between PTS and DTS, align them`), a = o)) : o = a), s = i[8]; + let h = s + 9; + if (n.size <= h) + return null; + n.size -= h; + const d = new Uint8Array(n.size); + for (let f = 0, m = l.length; f < m; f++) { + i = l[f]; + let p = i.byteLength; + if (h) + if (h > p) { + h -= p; + continue; + } else + i = i.subarray(h), p -= h, h = 0; + d.set(i, t), t += p; + } + return r && (r -= s + 3), { + data: d, + pts: a, + dts: o, + len: r + }; + } + return null; +} +class Vp { + static getSilentFrame(e, t) { + switch (e) { + case "mp4a.40.2": + if (t === 1) + return new Uint8Array([0, 200, 0, 128, 35, 128]); + if (t === 2) + return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]); + if (t === 3) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]); + if (t === 4) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]); + if (t === 5) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]); + if (t === 6) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]); + break; + default: + if (t === 1) + return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + if (t === 2) + return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + if (t === 3) + return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + break; + } + } +} +const Tr = Math.pow(2, 32) - 1; +class $ { + static init() { + $.types = { + avc1: [], + // codingname + avcC: [], + hvc1: [], + hvcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], + ".mp3": [], + dac3: [], + "ac-3": [], + mvex: [], + mvhd: [], + pasp: [], + sdtp: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [], + smhd: [] + }; + let e; + for (e in $.types) + $.types.hasOwnProperty(e) && ($.types[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]); + const t = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // pre_defined + 118, + 105, + 100, + 101, + // handler_type: 'vide' + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 86, + 105, + 100, + 101, + 111, + 72, + 97, + 110, + 100, + 108, + 101, + 114, + 0 + // name: 'VideoHandler' + ]), i = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // pre_defined + 115, + 111, + 117, + 110, + // handler_type: 'soun' + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 83, + 111, + 117, + 110, + 100, + 72, + 97, + 110, + 100, + 108, + 101, + 114, + 0 + // name: 'SoundHandler' + ]); + $.HDLR_TYPES = { + video: t, + audio: i + }; + const r = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 1, + // entry_count + 0, + 0, + 0, + 12, + // entry_size + 117, + 114, + 108, + 32, + // 'url' type + 0, + // version 0 + 0, + 0, + 1 + // entry_flags + ]), s = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0 + // entry_count + ]); + $.STTS = $.STSC = $.STCO = s, $.STSZ = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // sample_size + 0, + 0, + 0, + 0 + // sample_count + ]), $.VMHD = new Uint8Array([ + 0, + // version + 0, + 0, + 1, + // flags + 0, + 0, + // graphicsmode + 0, + 0, + 0, + 0, + 0, + 0 + // opcolor + ]), $.SMHD = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + // balance + 0, + 0 + // reserved + ]), $.STSD = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 1 + ]); + const a = new Uint8Array([105, 115, 111, 109]), o = new Uint8Array([97, 118, 99, 49]), l = new Uint8Array([0, 0, 0, 1]); + $.FTYP = $.box($.types.ftyp, a, l, a, o), $.DINF = $.box($.types.dinf, $.box($.types.dref, r)); + } + static box(e, ...t) { + let i = 8, r = t.length; + const s = r; + for (; r--; ) + i += t[r].byteLength; + const a = new Uint8Array(i); + for (a[0] = i >> 24 & 255, a[1] = i >> 16 & 255, a[2] = i >> 8 & 255, a[3] = i & 255, a.set(e, 4), r = 0, i = 8; r < s; r++) + a.set(t[r], i), i += t[r].byteLength; + return a; + } + static hdlr(e) { + return $.box($.types.hdlr, $.HDLR_TYPES[e]); + } + static mdat(e) { + return $.box($.types.mdat, e); + } + static mdhd(e, t) { + t *= e; + const i = Math.floor(t / (Tr + 1)), r = Math.floor(t % (Tr + 1)); + return $.box($.types.mdhd, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + e >> 24 & 255, + e >> 16 & 255, + e >> 8 & 255, + e & 255, + // timescale + i >> 24, + i >> 16 & 255, + i >> 8 & 255, + i & 255, + r >> 24, + r >> 16 & 255, + r >> 8 & 255, + r & 255, + 85, + 196, + // 'und' language (undetermined) + 0, + 0 + ])); + } + static mdia(e) { + return $.box($.types.mdia, $.mdhd(e.timescale || 0, e.duration || 0), $.hdlr(e.type), $.minf(e)); + } + static mfhd(e) { + return $.box($.types.mfhd, new Uint8Array([ + 0, + 0, + 0, + 0, + // flags + e >> 24, + e >> 16 & 255, + e >> 8 & 255, + e & 255 + // sequence_number + ])); + } + static minf(e) { + return e.type === "audio" ? $.box($.types.minf, $.box($.types.smhd, $.SMHD), $.DINF, $.stbl(e)) : $.box($.types.minf, $.box($.types.vmhd, $.VMHD), $.DINF, $.stbl(e)); + } + static moof(e, t, i) { + return $.box($.types.moof, $.mfhd(e), $.traf(i, t)); + } + static moov(e) { + let t = e.length; + const i = []; + for (; t--; ) + i[t] = $.trak(e[t]); + return $.box.apply(null, [$.types.moov, $.mvhd(e[0].timescale || 0, e[0].duration || 0)].concat(i).concat($.mvex(e))); + } + static mvex(e) { + let t = e.length; + const i = []; + for (; t--; ) + i[t] = $.trex(e[t]); + return $.box.apply(null, [$.types.mvex, ...i]); + } + static mvhd(e, t) { + t *= e; + const i = Math.floor(t / (Tr + 1)), r = Math.floor(t % (Tr + 1)), s = new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + e >> 24 & 255, + e >> 16 & 255, + e >> 8 & 255, + e & 255, + // timescale + i >> 24, + i >> 16 & 255, + i >> 8 & 255, + i & 255, + r >> 24, + r >> 16 & 255, + r >> 8 & 255, + r & 255, + 0, + 1, + 0, + 0, + // 1.0 rate + 1, + 0, + // 1.0 volume + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + // transformation: unity matrix + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + 255, + 255, + 255, + 255 + // next_track_ID + ]); + return $.box($.types.mvhd, s); + } + static sdtp(e) { + const t = e.samples || [], i = new Uint8Array(4 + t.length); + let r, s; + for (r = 0; r < t.length; r++) + s = t[r].flags, i[r + 4] = s.dependsOn << 4 | s.isDependedOn << 2 | s.hasRedundancy; + return $.box($.types.sdtp, i); + } + static stbl(e) { + return $.box($.types.stbl, $.stsd(e), $.box($.types.stts, $.STTS), $.box($.types.stsc, $.STSC), $.box($.types.stsz, $.STSZ), $.box($.types.stco, $.STCO)); + } + static avc1(e) { + let t = [], i = [], r, s, a; + for (r = 0; r < e.sps.length; r++) + s = e.sps[r], a = s.byteLength, t.push(a >>> 8 & 255), t.push(a & 255), t = t.concat(Array.prototype.slice.call(s)); + for (r = 0; r < e.pps.length; r++) + s = e.pps[r], a = s.byteLength, i.push(a >>> 8 & 255), i.push(a & 255), i = i.concat(Array.prototype.slice.call(s)); + const o = $.box($.types.avcC, new Uint8Array([ + 1, + // version + t[3], + // profile + t[4], + // profile compat + t[5], + // level + 255, + // lengthSizeMinusOne, hard-coded to 4 bytes + 224 | e.sps.length + // 3bit reserved (111) + numOfSequenceParameterSets + ].concat(t).concat([ + e.pps.length + // numOfPictureParameterSets + ]).concat(i))), l = e.width, u = e.height, c = e.pixelRatio[0], h = e.pixelRatio[1]; + return $.box( + $.types.avc1, + new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + // pre_defined + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + l >> 8 & 255, + l & 255, + // width + u >> 8 & 255, + u & 255, + // height + 0, + 72, + 0, + 0, + // horizresolution + 0, + 72, + 0, + 0, + // vertresolution + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + // frame_count + 18, + 100, + 97, + 105, + 108, + // dailymotion/hls.js + 121, + 109, + 111, + 116, + 105, + 111, + 110, + 47, + 104, + 108, + 115, + 46, + 106, + 115, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // compressorname + 0, + 24, + // depth = 24 + 17, + 17 + ]), + // pre_defined = -1 + o, + $.box($.types.btrt, new Uint8Array([ + 0, + 28, + 156, + 128, + // bufferSizeDB + 0, + 45, + 198, + 192, + // maxBitrate + 0, + 45, + 198, + 192 + ])), + // avgBitrate + $.box($.types.pasp, new Uint8Array([ + c >> 24, + // hSpacing + c >> 16 & 255, + c >> 8 & 255, + c & 255, + h >> 24, + // vSpacing + h >> 16 & 255, + h >> 8 & 255, + h & 255 + ])) + ); + } + static esds(e) { + const t = e.config; + return new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 3, + // descriptor_type + 25, + // length + 0, + 1, + // es_id + 0, + // stream_priority + 4, + // descriptor_type + 17, + // length + 64, + // codec : mpeg4_audio + 21, + // stream_type + 0, + 0, + 0, + // buffer_size + 0, + 0, + 0, + 0, + // maxBitrate + 0, + 0, + 0, + 0, + // avgBitrate + 5, + // descriptor_type + 2, + // length + ...t, + 6, + 1, + 2 + // GASpecificConfig)); // length + audio config descriptor + ]); + } + static audioStsd(e) { + const t = e.samplerate || 0; + return new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // reserved + 0, + e.channelCount || 0, + // channelcount + 0, + 16, + // sampleSize:16bits + 0, + 0, + 0, + 0, + // reserved2 + t >> 8 & 255, + t & 255, + // + 0, + 0 + ]); + } + static mp4a(e) { + return $.box($.types.mp4a, $.audioStsd(e), $.box($.types.esds, $.esds(e))); + } + static mp3(e) { + return $.box($.types[".mp3"], $.audioStsd(e)); + } + static ac3(e) { + return $.box($.types["ac-3"], $.audioStsd(e), $.box($.types.dac3, e.config)); + } + static stsd(e) { + const { + segmentCodec: t + } = e; + if (e.type === "audio") { + if (t === "aac") + return $.box($.types.stsd, $.STSD, $.mp4a(e)); + if (t === "ac3" && e.config) + return $.box($.types.stsd, $.STSD, $.ac3(e)); + if (t === "mp3" && e.codec === "mp3") + return $.box($.types.stsd, $.STSD, $.mp3(e)); + } else if (e.pps && e.sps) { + if (t === "avc") + return $.box($.types.stsd, $.STSD, $.avc1(e)); + if (t === "hevc" && e.vps) + return $.box($.types.stsd, $.STSD, $.hvc1(e)); + } else + throw new Error("video track missing pps or sps"); + throw new Error(`unsupported ${e.type} segment codec (${t}/${e.codec})`); + } + static tkhd(e) { + const t = e.id, i = (e.duration || 0) * (e.timescale || 0), r = e.width || 0, s = e.height || 0, a = Math.floor(i / (Tr + 1)), o = Math.floor(i % (Tr + 1)); + return $.box($.types.tkhd, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 7, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + t >> 24 & 255, + t >> 16 & 255, + t >> 8 & 255, + t & 255, + // track_ID + 0, + 0, + 0, + 0, + // reserved + a >> 24, + a >> 16 & 255, + a >> 8 & 255, + a & 255, + o >> 24, + o >> 16 & 255, + o >> 8 & 255, + o & 255, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + // layer + 0, + 0, + // alternate_group + 0, + 0, + // non-audio track volume + 0, + 0, + // reserved + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + // transformation: unity matrix + r >> 8 & 255, + r & 255, + 0, + 0, + // width + s >> 8 & 255, + s & 255, + 0, + 0 + // height + ])); + } + static traf(e, t) { + const i = $.sdtp(e), r = e.id, s = Math.floor(t / (Tr + 1)), a = Math.floor(t % (Tr + 1)); + return $.box( + $.types.traf, + $.box($.types.tfhd, new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + r >> 24, + r >> 16 & 255, + r >> 8 & 255, + r & 255 + // track_ID + ])), + $.box($.types.tfdt, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + s >> 24, + s >> 16 & 255, + s >> 8 & 255, + s & 255, + a >> 24, + a >> 16 & 255, + a >> 8 & 255, + a & 255 + ])), + $.trun(e, i.length + 16 + // tfhd + 20 + // tfdt + 8 + // traf header + 16 + // mfhd + 8 + // moof header + 8), + // mdat header + i + ); + } + /** + * Generate a track box. + * @param track a track definition + */ + static trak(e) { + return e.duration = e.duration || 4294967295, $.box($.types.trak, $.tkhd(e), $.mdia(e)); + } + static trex(e) { + const t = e.id; + return $.box($.types.trex, new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + t >> 24, + t >> 16 & 255, + t >> 8 & 255, + t & 255, + // track_ID + 0, + 0, + 0, + 1, + // default_sample_description_index + 0, + 0, + 0, + 0, + // default_sample_duration + 0, + 0, + 0, + 0, + // default_sample_size + 0, + 1, + 0, + 1 + // default_sample_flags + ])); + } + static trun(e, t) { + const i = e.samples || [], r = i.length, s = 12 + 16 * r, a = new Uint8Array(s); + let o, l, u, c, h, d; + for (t += 8 + s, a.set([ + e.type === "video" ? 1 : 0, + // version 1 for video with signed-int sample_composition_time_offset + 0, + 15, + 1, + // flags + r >>> 24 & 255, + r >>> 16 & 255, + r >>> 8 & 255, + r & 255, + // sample_count + t >>> 24 & 255, + t >>> 16 & 255, + t >>> 8 & 255, + t & 255 + // data_offset + ], 0), o = 0; o < r; o++) + l = i[o], u = l.duration, c = l.size, h = l.flags, d = l.cts, a.set([ + u >>> 24 & 255, + u >>> 16 & 255, + u >>> 8 & 255, + u & 255, + // sample_duration + c >>> 24 & 255, + c >>> 16 & 255, + c >>> 8 & 255, + c & 255, + // sample_size + h.isLeading << 2 | h.dependsOn, + h.isDependedOn << 6 | h.hasRedundancy << 4 | h.paddingValue << 1 | h.isNonSync, + h.degradPrio & 61440, + h.degradPrio & 15, + // sample_flags + d >>> 24 & 255, + d >>> 16 & 255, + d >>> 8 & 255, + d & 255 + // sample_composition_time_offset + ], 12 + 16 * o); + return $.box($.types.trun, a); + } + static initSegment(e) { + $.types || $.init(); + const t = $.moov(e); + return _i($.FTYP, t); + } + static hvc1(e) { + const t = e.params, i = [e.vps, e.sps, e.pps], r = 4, s = new Uint8Array([1, t.general_profile_space << 6 | (t.general_tier_flag ? 32 : 0) | t.general_profile_idc, t.general_profile_compatibility_flags[0], t.general_profile_compatibility_flags[1], t.general_profile_compatibility_flags[2], t.general_profile_compatibility_flags[3], t.general_constraint_indicator_flags[0], t.general_constraint_indicator_flags[1], t.general_constraint_indicator_flags[2], t.general_constraint_indicator_flags[3], t.general_constraint_indicator_flags[4], t.general_constraint_indicator_flags[5], t.general_level_idc, 240 | t.min_spatial_segmentation_idc >> 8, 255 & t.min_spatial_segmentation_idc, 252 | t.parallelismType, 252 | t.chroma_format_idc, 248 | t.bit_depth_luma_minus8, 248 | t.bit_depth_chroma_minus8, 0, parseInt(t.frame_rate.fps), r - 1 | t.temporal_id_nested << 2 | t.num_temporal_layers << 3 | (t.frame_rate.fixed ? 64 : 0), i.length]); + let a = s.length; + for (let m = 0; m < i.length; m += 1) { + a += 3; + for (let p = 0; p < i[m].length; p += 1) + a += 2 + i[m][p].length; + } + const o = new Uint8Array(a); + o.set(s, 0), a = s.length; + const l = i.length - 1; + for (let m = 0; m < i.length; m += 1) { + o.set(new Uint8Array([32 + m | (m === l ? 128 : 0), 0, i[m].length]), a), a += 3; + for (let p = 0; p < i[m].length; p += 1) + o.set(new Uint8Array([i[m][p].length >> 8, i[m][p].length & 255]), a), a += 2, o.set(i[m][p], a), a += i[m][p].length; + } + const u = $.box($.types.hvcC, o), c = e.width, h = e.height, d = e.pixelRatio[0], f = e.pixelRatio[1]; + return $.box( + $.types.hvc1, + new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + // pre_defined + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + c >> 8 & 255, + c & 255, + // width + h >> 8 & 255, + h & 255, + // height + 0, + 72, + 0, + 0, + // horizresolution + 0, + 72, + 0, + 0, + // vertresolution + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + // frame_count + 18, + 100, + 97, + 105, + 108, + // dailymotion/hls.js + 121, + 109, + 111, + 116, + 105, + 111, + 110, + 47, + 104, + 108, + 115, + 46, + 106, + 115, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // compressorname + 0, + 24, + // depth = 24 + 17, + 17 + ]), + // pre_defined = -1 + u, + $.box($.types.btrt, new Uint8Array([ + 0, + 28, + 156, + 128, + // bufferSizeDB + 0, + 45, + 198, + 192, + // maxBitrate + 0, + 45, + 198, + 192 + ])), + // avgBitrate + $.box($.types.pasp, new Uint8Array([ + d >> 24, + // hSpacing + d >> 16 & 255, + d >> 8 & 255, + d & 255, + f >> 24, + // vSpacing + f >> 16 & 255, + f >> 8 & 255, + f & 255 + ])) + ); + } +} +$.types = void 0; +$.HDLR_TYPES = void 0; +$.STTS = void 0; +$.STSC = void 0; +$.STCO = void 0; +$.STSZ = void 0; +$.VMHD = void 0; +$.SMHD = void 0; +$.STSD = void 0; +$.FTYP = void 0; +$.DINF = void 0; +const af = 9e4; +function r0(n, e, t = 1, i = !1) { + const r = n * e * t; + return i ? Math.round(r) : r; +} +function Kp(n, e, t = 1, i = !1) { + return r0(n, e, 1 / t, i); +} +function Rn(n, e = !1) { + return r0(n, 1e3, 1 / af, e); +} +function Yp(n, e = 1) { + return r0(n, af, 1 / e); +} +const Wp = 10 * 1e3, jp = 1024, Xp = 1152, Qp = 1536; +let sn = null, vo = null; +function Gu(n, e, t, i) { + return { + duration: e, + size: t, + cts: i, + flags: { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: n ? 2 : 1, + isNonSync: n ? 0 : 1 + } + }; +} +class la { + constructor(e, t, i, r) { + if (this.logger = void 0, this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.ISGenerated = !1, this._initPTS = null, this._initDTS = null, this.nextAvcDts = null, this.nextAudioPts = null, this.videoSampleDuration = null, this.isAudioContiguous = !1, this.isVideoContiguous = !1, this.videoTrackConfig = void 0, this.observer = e, this.config = t, this.typeSupported = i, this.logger = r, this.ISGenerated = !1, sn === null) { + const a = (navigator.userAgent || "").match(/Chrome\/(\d+)/i); + sn = a ? parseInt(a[1]) : 0; + } + if (vo === null) { + const s = navigator.userAgent.match(/Safari\/(\d+)/i); + vo = s ? parseInt(s[1]) : 0; + } + } + destroy() { + this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null; + } + resetTimeStamp(e) { + this.logger.log("[mp4-remuxer]: initPTS & initDTS reset"), this._initPTS = this._initDTS = e; + } + resetNextTimestamp() { + this.logger.log("[mp4-remuxer]: reset next timestamp"), this.isVideoContiguous = !1, this.isAudioContiguous = !1; + } + resetInitSegment() { + this.logger.log("[mp4-remuxer]: ISGenerated flag reset"), this.ISGenerated = !1, this.videoTrackConfig = void 0; + } + getVideoStartPts(e) { + let t = !1; + const i = e[0].pts, r = e.reduce((s, a) => { + let o = a.pts, l = o - s; + return l < -4294967296 && (t = !0, o = ci(o, i), l = o - s), l > 0 ? s : o; + }, i); + return t && this.logger.debug("PTS rollover detected"), r; + } + remux(e, t, i, r, s, a, o, l) { + let u, c, h, d, f, m, p = s, v = s; + const b = e.pid > -1, E = t.pid > -1, y = t.samples.length, T = e.samples.length > 0, A = o && y > 0 || y > 1; + if ((!b || T) && (!E || A) || this.ISGenerated || o) { + if (this.ISGenerated) { + var w, L, I, R; + const N = this.videoTrackConfig; + (N && (t.width !== N.width || t.height !== N.height || ((w = t.pixelRatio) == null ? void 0 : w[0]) !== ((L = N.pixelRatio) == null ? void 0 : L[0]) || ((I = t.pixelRatio) == null ? void 0 : I[1]) !== ((R = N.pixelRatio) == null ? void 0 : R[1])) || !N && A || this.nextAudioPts === null && T) && this.resetInitSegment(); + } + this.ISGenerated || (h = this.generateIS(e, t, s, a)); + const O = this.isVideoContiguous; + let z = -1, ie; + if (A && (z = Zp(t.samples), !O && this.config.forceKeyFrameOnDiscontinuity)) + if (m = !0, z > 0) { + this.logger.warn(`[mp4-remuxer]: Dropped ${z} out of ${y} video samples due to a missing keyframe`); + const N = this.getVideoStartPts(t.samples); + t.samples = t.samples.slice(z), t.dropped += z, v += (t.samples[0].pts - N) / t.inputTimeScale, ie = v; + } else z === -1 && (this.logger.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`), m = !1); + if (this.ISGenerated) { + if (T && A) { + const N = this.getVideoStartPts(t.samples), K = (ci(e.samples[0].pts, N) - N) / t.inputTimeScale; + p += Math.max(0, K), v += Math.max(0, -K); + } + if (T) { + if (e.samplerate || (this.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"), h = this.generateIS(e, t, s, a)), c = this.remuxAudio(e, p, this.isAudioContiguous, a, E || A || l === ue.AUDIO ? v : void 0), A) { + const N = c ? c.endPTS - c.startPTS : 0; + t.inputTimeScale || (this.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"), h = this.generateIS(e, t, s, a)), u = this.remuxVideo(t, v, O, N); + } + } else A && (u = this.remuxVideo(t, v, O, 0)); + u && (u.firstKeyFrame = z, u.independent = z !== -1, u.firstKeyFramePTS = ie); + } + } + return this.ISGenerated && this._initPTS && this._initDTS && (i.samples.length && (f = of(i, s, this._initPTS, this._initDTS)), r.samples.length && (d = lf(r, s, this._initPTS))), { + audio: c, + video: u, + initSegment: h, + independent: m, + text: d, + id3: f + }; + } + generateIS(e, t, i, r) { + const s = e.samples, a = t.samples, o = this.typeSupported, l = {}, u = this._initPTS; + let c = !u || r, h = "audio/mp4", d, f, m, p; + if (c && (d = f = 1 / 0), e.config && s.length) { + switch (e.timescale = e.samplerate, e.segmentCodec) { + case "mp3": + o.mpeg ? (h = "audio/mpeg", e.codec = "") : o.mp3 && (e.codec = "mp3"); + break; + case "ac3": + e.codec = "ac-3"; + break; + } + l.audio = { + id: "audio", + container: h, + codec: e.codec, + initSegment: e.segmentCodec === "mp3" && o.mpeg ? new Uint8Array(0) : $.initSegment([e]), + metadata: { + channelCount: e.channelCount + } + }, c && (p = e.id, m = e.inputTimeScale, !u || m !== u.timescale ? d = f = s[0].pts - Math.round(m * i) : c = !1); + } + if (t.sps && t.pps && a.length) { + if (t.timescale = t.inputTimeScale, l.video = { + id: "main", + container: "video/mp4", + codec: t.codec, + initSegment: $.initSegment([t]), + metadata: { + width: t.width, + height: t.height + } + }, c) + if (p = t.id, m = t.inputTimeScale, !u || m !== u.timescale) { + const v = this.getVideoStartPts(a), b = Math.round(m * i); + f = Math.min(f, ci(a[0].dts, v) - b), d = Math.min(d, v - b); + } else + c = !1; + this.videoTrackConfig = { + width: t.width, + height: t.height, + pixelRatio: t.pixelRatio + }; + } + if (Object.keys(l).length) + return this.ISGenerated = !0, c ? (this._initPTS = { + baseTime: d, + timescale: m + }, this._initDTS = { + baseTime: f, + timescale: m + }) : d = m = void 0, { + tracks: l, + initPTS: d, + timescale: m, + trackId: p + }; + } + remuxVideo(e, t, i, r) { + const s = e.inputTimeScale, a = e.samples, o = [], l = a.length, u = this._initPTS; + let c = this.nextAvcDts, h = 8, d = this.videoSampleDuration, f, m, p = Number.POSITIVE_INFINITY, v = Number.NEGATIVE_INFINITY, b = !1; + if (!i || c === null) { + const H = t * s, Y = a[0].pts - ci(a[0].dts, a[0].pts); + sn && c !== null && Math.abs(H - Y - c) < 15e3 ? i = !0 : c = H - Y; + } + const E = u.baseTime * s / u.timescale; + for (let H = 0; H < l; H++) { + const Y = a[H]; + Y.pts = ci(Y.pts - E, c), Y.dts = ci(Y.dts - E, c), Y.dts < a[H > 0 ? H - 1 : H].dts && (b = !0); + } + b && a.sort(function(H, Y) { + const U = H.dts - Y.dts, te = H.pts - Y.pts; + return U || te; + }), f = a[0].dts, m = a[a.length - 1].dts; + const y = m - f, T = y ? Math.round(y / (l - 1)) : d || e.inputTimeScale / 30; + if (i) { + const H = f - c, Y = H > T, U = H < -1; + if ((Y || U) && (Y ? this.logger.warn(`${(e.segmentCodec || "").toUpperCase()}: ${Rn(H, !0)} ms (${H}dts) hole between fragments detected at ${t.toFixed(3)}`) : this.logger.warn(`${(e.segmentCodec || "").toUpperCase()}: ${Rn(-H, !0)} ms (${H}dts) overlapping between fragments detected at ${t.toFixed(3)}`), !U || c >= a[0].pts || sn)) { + f = c; + const te = a[0].pts - H; + if (Y) + a[0].dts = f, a[0].pts = te; + else { + let ne = !0; + for (let ce = 0; ce < a.length && !(a[ce].dts > te && ne); ce++) { + const V = a[ce].pts; + if (a[ce].dts -= H, a[ce].pts -= H, ce < a.length - 1) { + const le = a[ce + 1].pts, be = a[ce].pts, Oe = le <= be, Ue = le <= V; + ne = Oe == Ue; + } + } + } + this.logger.log(`Video: Initial PTS/DTS adjusted: ${Rn(te, !0)}/${Rn(f, !0)}, delta: ${Rn(H, !0)} ms`); + } + } + f = Math.max(0, f); + let A = 0, k = 0, w = f; + for (let H = 0; H < l; H++) { + const Y = a[H], U = Y.units, te = U.length; + let ne = 0; + for (let ce = 0; ce < te; ce++) + ne += U[ce].data.length; + k += ne, A += te, Y.length = ne, Y.dts < w ? (Y.dts = w, w += T / 4 | 0 || 1) : w = Y.dts, p = Math.min(Y.pts, p), v = Math.max(Y.pts, v); + } + m = a[l - 1].dts; + const L = k + 4 * A + 8; + let I; + try { + I = new Uint8Array(L); + } catch (H) { + this.observer.emit(S.ERROR, S.ERROR, { + type: de.MUX_ERROR, + details: B.REMUX_ALLOC_ERROR, + fatal: !1, + error: H, + bytes: L, + reason: `fail allocating video mdat ${L}` + }); + return; + } + const R = new DataView(I.buffer); + R.setUint32(0, L), I.set($.types.mdat, 4); + let O = !1, z = Number.POSITIVE_INFINITY, ie = Number.POSITIVE_INFINITY, N = Number.NEGATIVE_INFINITY, X = Number.NEGATIVE_INFINITY; + for (let H = 0; H < l; H++) { + const Y = a[H], U = Y.units; + let te = 0; + for (let V = 0, le = U.length; V < le; V++) { + const be = U[V], Oe = be.data, Ue = be.data.byteLength; + R.setUint32(h, Ue), h += 4, I.set(Oe, h), h += Ue, te += 4 + Ue; + } + let ne; + if (H < l - 1) + d = a[H + 1].dts - Y.dts, ne = a[H + 1].pts - Y.pts; + else { + const V = this.config, le = H > 0 ? Y.dts - a[H - 1].dts : T; + if (ne = H > 0 ? Y.pts - a[H - 1].pts : T, V.stretchShortVideoTrack && this.nextAudioPts !== null) { + const be = Math.floor(V.maxBufferHole * s), Oe = (r ? p + r * s : this.nextAudioPts) - Y.pts; + Oe > be ? (d = Oe - le, d < 0 ? d = le : O = !0, this.logger.log(`[mp4-remuxer]: It is approximately ${Oe / 90} ms to the next segment; using duration ${d / 90} ms for the last video frame.`)) : d = le; + } else + d = le; + } + const ce = Math.round(Y.pts - Y.dts); + z = Math.min(z, d), N = Math.max(N, d), ie = Math.min(ie, ne), X = Math.max(X, ne), o.push(Gu(Y.key, d, te, ce)); + } + if (o.length) { + if (sn) { + if (sn < 70) { + const H = o[0].flags; + H.dependsOn = 2, H.isNonSync = 0; + } + } else if (vo && X - ie < N - z && T / N < 0.025 && o[0].cts === 0) { + this.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration."); + let H = f; + for (let Y = 0, U = o.length; Y < U; Y++) { + const te = H + o[Y].duration, ne = H + o[Y].cts; + if (Y < U - 1) { + const ce = te + o[Y + 1].cts; + o[Y].duration = ce - ne; + } else + o[Y].duration = Y ? o[Y - 1].duration : T; + o[Y].cts = 0, H = te; + } + } + } + d = O || !d ? T : d, this.nextAvcDts = c = m + d, this.videoSampleDuration = d, this.isVideoContiguous = !0; + const Q = { + data1: $.moof(e.sequenceNumber++, f, Ye(e, { + samples: o + })), + data2: I, + startPTS: p / s, + endPTS: (v + d) / s, + startDTS: f / s, + endDTS: c / s, + type: "video", + hasAudio: !1, + hasVideo: !0, + nb: o.length, + dropped: e.dropped + }; + return e.samples = [], e.dropped = 0, Q; + } + getSamplesPerFrame(e) { + switch (e.segmentCodec) { + case "mp3": + return Xp; + case "ac3": + return Qp; + default: + return jp; + } + } + remuxAudio(e, t, i, r, s) { + const a = e.inputTimeScale, o = e.samplerate ? e.samplerate : a, l = a / o, u = this.getSamplesPerFrame(e), c = u * l, h = this._initPTS, d = e.segmentCodec === "mp3" && this.typeSupported.mpeg, f = [], m = s !== void 0; + let p = e.samples, v = d ? 0 : 8, b = this.nextAudioPts || -1; + const E = t * a, y = h.baseTime * a / h.timescale; + if (this.isAudioContiguous = i = i || p.length && b > 0 && (r && Math.abs(E - b) < 9e3 || Math.abs(ci(p[0].pts - y, E) - b) < 20 * c), p.forEach(function(K) { + K.pts = ci(K.pts - y, E); + }), !i || b < 0) { + if (p = p.filter((K) => K.pts >= 0), !p.length) + return; + s === 0 ? b = 0 : r && !m ? b = Math.max(0, E) : b = p[0].pts; + } + if (e.segmentCodec === "aac") { + const K = this.config.maxAudioFramesDrift; + for (let Z = 0, Q = b; Z < p.length; Z++) { + const H = p[Z], Y = H.pts, U = Y - Q, te = Math.abs(1e3 * U / a); + if (U <= -K * c && m) + Z === 0 && (this.logger.warn(`Audio frame @ ${(Y / a).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1e3 * U / a)} ms.`), this.nextAudioPts = b = Q = Y); + else if (U >= K * c && te < Wp && m) { + let ne = Math.round(U / c); + Q = Y - ne * c, Q < 0 && (ne--, Q += c), Z === 0 && (this.nextAudioPts = b = Q), this.logger.warn(`[mp4-remuxer]: Injecting ${ne} audio frame @ ${(Q / a).toFixed(3)}s due to ${Math.round(1e3 * U / a)} ms gap.`); + for (let ce = 0; ce < ne; ce++) { + const V = Math.max(Q, 0); + let le = Vp.getSilentFrame(e.parsedCodec || e.manifestCodec || e.codec, e.channelCount); + le || (this.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."), le = H.unit.subarray()), p.splice(Z, 0, { + unit: le, + pts: V + }), Q += c, Z++; + } + } + H.pts = Q, Q += c; + } + } + let T = null, A = null, k, w = 0, L = p.length; + for (; L--; ) + w += p[L].unit.byteLength; + for (let K = 0, Z = p.length; K < Z; K++) { + const Q = p[K], H = Q.unit; + let Y = Q.pts; + if (A !== null) { + const te = f[K - 1]; + te.duration = Math.round((Y - A) / l); + } else if (i && e.segmentCodec === "aac" && (Y = b), T = Y, w > 0) { + w += v; + try { + k = new Uint8Array(w); + } catch (te) { + this.observer.emit(S.ERROR, S.ERROR, { + type: de.MUX_ERROR, + details: B.REMUX_ALLOC_ERROR, + fatal: !1, + error: te, + bytes: w, + reason: `fail allocating audio mdat ${w}` + }); + return; + } + d || (new DataView(k.buffer).setUint32(0, w), k.set($.types.mdat, 4)); + } else + return; + k.set(H, v); + const U = H.byteLength; + v += U, f.push(Gu(!0, u, U, 0)), A = Y; + } + const I = f.length; + if (!I) + return; + const R = f[f.length - 1]; + this.nextAudioPts = b = A + l * R.duration; + const O = d ? new Uint8Array(0) : $.moof(e.sequenceNumber++, T / l, Ye({}, e, { + samples: f + })); + e.samples = []; + const z = T / a, ie = b / a, X = { + data1: O, + data2: k, + startPTS: z, + endPTS: ie, + startDTS: z, + endDTS: ie, + type: "audio", + hasAudio: !0, + hasVideo: !1, + nb: I + }; + return this.isAudioContiguous = !0, X; + } +} +function ci(n, e) { + let t; + if (e === null) + return n; + for (e < n ? t = -8589934592 : t = 8589934592; Math.abs(n - e) > 4294967296; ) + n += t; + return n; +} +function Zp(n) { + for (let e = 0; e < n.length; e++) + if (n[e].key) + return e; + return -1; +} +function of(n, e, t, i) { + const r = n.samples.length; + if (!r) + return; + const s = n.inputTimeScale; + for (let o = 0; o < r; o++) { + const l = n.samples[o]; + l.pts = ci(l.pts - t.baseTime * s / t.timescale, e * s) / s, l.dts = ci(l.dts - i.baseTime * s / i.timescale, e * s) / s; + } + const a = n.samples; + return n.samples = [], { + samples: a + }; +} +function lf(n, e, t) { + const i = n.samples.length; + if (!i) + return; + const r = n.inputTimeScale; + for (let a = 0; a < i; a++) { + const o = n.samples[a]; + o.pts = ci(o.pts - t.baseTime * r / t.timescale, e * r) / r; + } + n.samples.sort((a, o) => a.pts - o.pts); + const s = n.samples; + return n.samples = [], { + samples: s + }; +} +class Jp { + constructor(e, t, i, r) { + this.logger = void 0, this.emitInitSegment = !1, this.audioCodec = void 0, this.videoCodec = void 0, this.initData = void 0, this.initPTS = null, this.initTracks = void 0, this.lastEndTime = null, this.isVideoContiguous = !1, this.logger = r; + } + destroy() { + } + resetTimeStamp(e) { + this.initPTS = e, this.lastEndTime = null; + } + resetNextTimestamp() { + this.isVideoContiguous = !1, this.lastEndTime = null; + } + resetInitSegment(e, t, i, r) { + this.audioCodec = t, this.videoCodec = i, this.generateInitSegment(Y1(e, r)), this.emitInitSegment = !0; + } + generateInitSegment(e) { + let { + audioCodec: t, + videoCodec: i + } = this; + if (!(e != null && e.byteLength)) { + this.initTracks = void 0, this.initData = void 0; + return; + } + const r = this.initData = pd(e); + r.audio && (t = zu(r.audio, Qe.AUDIO, this.logger)), r.video && (i = zu(r.video, Qe.VIDEO, this.logger)); + const s = {}; + r.audio && r.video ? s.audiovideo = { + container: "video/mp4", + codec: t + "," + i, + supplemental: r.video.supplemental, + initSegment: e, + id: "main" + } : r.audio ? s.audio = { + container: "audio/mp4", + codec: t, + initSegment: e, + id: "audio" + } : r.video ? s.video = { + container: "video/mp4", + codec: i, + supplemental: r.video.supplemental, + initSegment: e, + id: "main" + } : this.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."), this.initTracks = s; + } + remux(e, t, i, r, s, a) { + var o, l; + let { + initPTS: u, + lastEndTime: c + } = this; + const h = { + audio: void 0, + video: void 0, + text: r, + id3: i, + initSegment: void 0 + }; + se(c) || (c = this.lastEndTime = s || 0); + const d = t.samples; + if (!(d != null && d.length)) + return h; + const f = { + initPTS: void 0, + timescale: void 0, + trackId: void 0 + }; + let m = this.initData; + if ((o = m) != null && o.length || (this.generateInitSegment(d), m = this.initData), !((l = m) != null && l.length)) + return this.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."), h; + this.emitInitSegment && (f.tracks = this.initTracks, this.emitInitSegment = !1); + const p = W1(d, m, this.logger), v = m.audio ? p[m.audio.id] : null, b = m.video ? p[m.video.id] : null, E = Cs(b, 1 / 0), y = Cs(v, 1 / 0), T = Cs(b, 0, !0), A = Cs(v, 0, !0); + let k, w = s, L = 0; + if (v && (!b || !u && y < E || u && u.trackId === m.audio.id) ? (f.trackId = m.audio.id, k = v, L = A - y) : b && (f.trackId = m.video.id, k = b, L = T - E), k) { + const K = k.timescale; + w = k.start / K, f.timescale = K, u || (f.initPTS = k.start - s * K, this.initPTS = u = { + baseTime: f.initPTS, + timescale: K, + trackId: f.trackId + }); + } + (a || !u) && (e4(u, w, s, L) || f.timescale !== u.timescale) && (f.initPTS = w - s, u && u.timescale === 1 && this.logger.warn(`Adjusting initPTS @${s} from ${u.baseTime / u.timescale} to ${f.initPTS}`), this.initPTS = u = { + baseTime: f.initPTS, + timescale: 1 + }); + const I = e ? w - u.baseTime / u.timescale : c; + j1(m, d, u.baseTime / u.timescale); + const R = I + L; + L > 0 ? this.lastEndTime = R : (this.logger.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp()); + const O = !!m.audio, z = !!m.video; + let ie = ""; + O && (ie += "audio"), z && (ie += "video"); + const N = { + data1: d, + startPTS: I, + startDTS: I, + endPTS: R, + endDTS: R, + type: ie, + hasAudio: O, + hasVideo: z, + nb: 1, + dropped: 0 + }; + h.audio = O && !z ? N : void 0, h.video = z ? N : void 0; + const X = b == null ? void 0 : b.sampleCount; + if (X) { + const K = b.keyFrameIndex, Z = K !== -1; + N.nb = X, N.dropped = K === 0 || this.isVideoContiguous ? 0 : Z ? K : X, N.independent = Z, N.firstKeyFrame = K, Z && b.keyFrameStart && (N.firstKeyFramePTS = b.keyFrameStart - u.baseTime / u.timescale), this.isVideoContiguous || (h.independent = Z), this.isVideoContiguous || (this.isVideoContiguous = Z), N.dropped && this.logger.warn(`fmp4 does not start with IDR: firstIDR ${K}/${X} dropped: ${N.dropped} pts: ${N.firstKeyFramePTS || "NA"}`); + } + return h.initSegment = f, h.id3 = of(i, s, u, u), r.samples.length && (h.text = lf(r, s, u)), h; + } +} +function Cs(n, e, t = !1) { + return (n == null ? void 0 : n.start) !== void 0 ? (n.start + (t ? n.duration : 0)) / n.timescale : e; +} +function e4(n, e, t, i) { + if (n === null) + return !0; + const r = Math.max(i, 1), s = e - n.baseTime / n.timescale; + return Math.abs(s - t) > r; +} +function zu(n, e, t) { + const i = n == null ? void 0 : n.codec; + return i && i.length > 4 ? i : e === Qe.AUDIO ? i === "ec-3" || i === "ac-3" || i === "alac" ? i : i === "fLaC" || i === "Opus" ? _a(i, !1) : (t.warn(`Unhandled audio codec "${i}" in mp4 MAP`), i || "mp4a") : (t.warn(`Unhandled video codec "${i}" in mp4 MAP`), i || "avc1"); +} +let mr; +try { + mr = self.performance.now.bind(self.performance); +} catch { + mr = Date.now; +} +const ua = [{ + demux: Gp, + remux: Jp +}, { + demux: Lr, + remux: la +}, { + demux: $p, + remux: la +}, { + demux: Np, + remux: la +}]; +ua.splice(2, 0, { + demux: Bp, + remux: la +}); +class qu { + constructor(e, t, i, r, s, a) { + this.asyncResult = !1, this.logger = void 0, this.observer = void 0, this.typeSupported = void 0, this.config = void 0, this.id = void 0, this.demuxer = void 0, this.remuxer = void 0, this.decrypter = void 0, this.probe = void 0, this.decryptionPromise = null, this.transmuxConfig = void 0, this.currentTransmuxState = void 0, this.observer = e, this.typeSupported = t, this.config = i, this.id = s, this.logger = a; + } + configure(e) { + this.transmuxConfig = e, this.decrypter && this.decrypter.reset(); + } + push(e, t, i, r) { + const s = i.transmuxing; + s.executeStart = mr(); + let a = new Uint8Array(e); + const { + currentTransmuxState: o, + transmuxConfig: l + } = this; + r && (this.currentTransmuxState = r); + const { + contiguous: u, + discontinuity: c, + trackSwitch: h, + accurateTimeOffset: d, + timeOffset: f, + initSegmentChange: m + } = r || o, { + audioCodec: p, + videoCodec: v, + defaultInitPts: b, + duration: E, + initSegmentData: y + } = l, T = t4(a, t); + if (T && gn(T.method)) { + const L = this.getDecrypter(), I = Wl(T.method); + if (L.isSync()) { + let R = L.softwareDecrypt(a, T.key.buffer, T.iv.buffer, I); + if (i.part > -1) { + const z = L.flush(); + R = z && z.buffer; + } + if (!R) + return s.executeEnd = mr(), yo(i); + a = new Uint8Array(R); + } else + return this.asyncResult = !0, this.decryptionPromise = L.webCryptoDecrypt(a, T.key.buffer, T.iv.buffer, I).then((R) => { + const O = this.push(R, null, i); + return this.decryptionPromise = null, O; + }), this.decryptionPromise; + } + const A = this.needsProbing(c, h); + if (A) { + const L = this.configureTransmuxer(a); + if (L) + return this.logger.warn(`[transmuxer] ${L.message}`), this.observer.emit(S.ERROR, S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_PARSING_ERROR, + fatal: !1, + error: L, + reason: L.message + }), s.executeEnd = mr(), yo(i); + } + (c || h || m || A) && this.resetInitSegment(y, p, v, E, t), (c || m || A) && this.resetInitialTimestamp(b), u || this.resetContiguity(); + const k = this.transmux(a, T, f, d, i); + this.asyncResult = ns(k); + const w = this.currentTransmuxState; + return w.contiguous = !0, w.discontinuity = !1, w.trackSwitch = !1, s.executeEnd = mr(), k; + } + // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type) + flush(e) { + const t = e.transmuxing; + t.executeStart = mr(); + const { + decrypter: i, + currentTransmuxState: r, + decryptionPromise: s + } = this; + if (s) + return this.asyncResult = !0, s.then(() => this.flush(e)); + const a = [], { + timeOffset: o + } = r; + if (i) { + const h = i.flush(); + h && a.push(this.push(h.buffer, null, e)); + } + const { + demuxer: l, + remuxer: u + } = this; + if (!l || !u) { + t.executeEnd = mr(); + const h = [yo(e)]; + return this.asyncResult ? Promise.resolve(h) : h; + } + const c = l.flush(o); + return ns(c) ? (this.asyncResult = !0, c.then((h) => (this.flushRemux(a, h, e), a))) : (this.flushRemux(a, c, e), this.asyncResult ? Promise.resolve(a) : a); + } + flushRemux(e, t, i) { + const { + audioTrack: r, + videoTrack: s, + id3Track: a, + textTrack: o + } = t, { + accurateTimeOffset: l, + timeOffset: u + } = this.currentTransmuxState; + this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${i.sn}${i.part > -1 ? " part: " + i.part : ""} of ${this.id === ue.MAIN ? "level" : "track"} ${i.level}`); + const c = this.remuxer.remux(r, s, a, o, u, l, !0, this.id); + e.push({ + remuxResult: c, + chunkMeta: i + }), i.transmuxing.executeEnd = mr(); + } + resetInitialTimestamp(e) { + const { + demuxer: t, + remuxer: i + } = this; + !t || !i || (t.resetTimeStamp(e), i.resetTimeStamp(e)); + } + resetContiguity() { + const { + demuxer: e, + remuxer: t + } = this; + !e || !t || (e.resetContiguity(), t.resetNextTimestamp()); + } + resetInitSegment(e, t, i, r, s) { + const { + demuxer: a, + remuxer: o + } = this; + !a || !o || (a.resetInitSegment(e, t, i, r), o.resetInitSegment(e, t, i, s)); + } + destroy() { + this.demuxer && (this.demuxer.destroy(), this.demuxer = void 0), this.remuxer && (this.remuxer.destroy(), this.remuxer = void 0); + } + transmux(e, t, i, r, s) { + let a; + return t && t.method === "SAMPLE-AES" ? a = this.transmuxSampleAes(e, t, i, r, s) : a = this.transmuxUnencrypted(e, i, r, s), a; + } + transmuxUnencrypted(e, t, i, r) { + const { + audioTrack: s, + videoTrack: a, + id3Track: o, + textTrack: l + } = this.demuxer.demux(e, t, !1, !this.config.progressive); + return { + remuxResult: this.remuxer.remux(s, a, o, l, t, i, !1, this.id), + chunkMeta: r + }; + } + transmuxSampleAes(e, t, i, r, s) { + return this.demuxer.demuxSampleAes(e, t, i).then((a) => ({ + remuxResult: this.remuxer.remux(a.audioTrack, a.videoTrack, a.id3Track, a.textTrack, i, r, !1, this.id), + chunkMeta: s + })); + } + configureTransmuxer(e) { + const { + config: t, + observer: i, + typeSupported: r + } = this; + let s; + for (let h = 0, d = ua.length; h < d; h++) { + var a; + if ((a = ua[h].demux) != null && a.probe(e, this.logger)) { + s = ua[h]; + break; + } + } + if (!s) + return new Error("Failed to find demuxer by probing fragment data"); + const o = this.demuxer, l = this.remuxer, u = s.remux, c = s.demux; + (!l || !(l instanceof u)) && (this.remuxer = new u(i, t, r, this.logger)), (!o || !(o instanceof c)) && (this.demuxer = new c(i, t, r, this.logger), this.probe = c.probe); + } + needsProbing(e, t) { + return !this.demuxer || !this.remuxer || e || t; + } + getDecrypter() { + let e = this.decrypter; + return e || (e = this.decrypter = new Kl(this.config)), e; + } +} +function t4(n, e) { + let t = null; + return n.byteLength > 0 && (e == null ? void 0 : e.key) != null && e.iv !== null && e.method != null && (t = e), t; +} +const yo = (n) => ({ + remuxResult: {}, + chunkMeta: n +}); +function ns(n) { + return "then" in n && n.then instanceof Function; +} +class i4 { + constructor(e, t, i, r, s) { + this.audioCodec = void 0, this.videoCodec = void 0, this.initSegmentData = void 0, this.duration = void 0, this.defaultInitPts = void 0, this.audioCodec = e, this.videoCodec = t, this.initSegmentData = i, this.duration = r, this.defaultInitPts = s || null; + } +} +class r4 { + constructor(e, t, i, r, s, a) { + this.discontinuity = void 0, this.contiguous = void 0, this.accurateTimeOffset = void 0, this.trackSwitch = void 0, this.timeOffset = void 0, this.initSegmentChange = void 0, this.discontinuity = e, this.contiguous = t, this.accurateTimeOffset = i, this.trackSwitch = r, this.timeOffset = s, this.initSegmentChange = a; + } +} +let Hu = 0; +class uf { + constructor(e, t, i, r) { + this.error = null, this.hls = void 0, this.id = void 0, this.instanceNo = Hu++, this.observer = void 0, this.frag = null, this.part = null, this.useWorker = void 0, this.workerContext = null, this.transmuxer = null, this.onTransmuxComplete = void 0, this.onFlush = void 0, this.onWorkerMessage = (l) => { + const u = l.data, c = this.hls; + if (!(!c || !(u != null && u.event) || u.instanceNo !== this.instanceNo)) + switch (u.event) { + case "init": { + var h; + const d = (h = this.workerContext) == null ? void 0 : h.objectURL; + d && self.URL.revokeObjectURL(d); + break; + } + case "transmuxComplete": { + this.handleTransmuxComplete(u.data); + break; + } + case "flush": { + this.onFlush(u.data); + break; + } + case "workerLog": { + c.logger[u.data.logType] && c.logger[u.data.logType](u.data.message); + break; + } + default: { + u.data = u.data || {}, u.data.frag = this.frag, u.data.part = this.part, u.data.id = this.id, c.trigger(u.event, u.data); + break; + } + } + }, this.onWorkerError = (l) => { + if (!this.hls) + return; + const u = new Error(`${l.message} (${l.filename}:${l.lineno})`); + this.hls.config.enableWorker = !1, this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`), this.hls.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.INTERNAL_EXCEPTION, + fatal: !1, + event: "demuxerWorker", + error: u + }); + }; + const s = e.config; + this.hls = e, this.id = t, this.useWorker = !!s.enableWorker, this.onTransmuxComplete = i, this.onFlush = r; + const a = (l, u) => { + u = u || {}, u.frag = this.frag || void 0, l === S.ERROR && (u = u, u.parent = this.id, u.part = this.part, this.error = u.error), this.hls.trigger(l, u); + }; + this.observer = new Ql(), this.observer.on(S.FRAG_DECRYPTED, a), this.observer.on(S.ERROR, a); + const o = au(s.preferManagedMediaSource); + if (this.useWorker && typeof Worker < "u") { + const l = this.hls.logger; + if (s.workerPath || up()) { + try { + s.workerPath ? (l.log(`loading Web Worker ${s.workerPath} for "${t}"`), this.workerContext = hp(s.workerPath)) : (l.log(`injecting Web Worker for "${t}"`), this.workerContext = cp()); + const { + worker: c + } = this.workerContext; + c.addEventListener("message", this.onWorkerMessage), c.addEventListener("error", this.onWorkerError), c.postMessage({ + instanceNo: this.instanceNo, + cmd: "init", + typeSupported: o, + id: t, + config: it(s) + }); + } catch (c) { + l.warn(`Error setting up "${t}" Web Worker, fallback to inline`, c), this.terminateWorker(), this.error = null, this.transmuxer = new qu(this.observer, o, s, "", t, e.logger); + } + return; + } + } + this.transmuxer = new qu(this.observer, o, s, "", t, e.logger); + } + reset() { + if (this.frag = null, this.part = null, this.workerContext) { + const e = this.instanceNo; + this.instanceNo = Hu++; + const t = this.hls.config, i = au(t.preferManagedMediaSource); + this.workerContext.worker.postMessage({ + instanceNo: this.instanceNo, + cmd: "reset", + resetNo: e, + typeSupported: i, + id: this.id, + config: it(t) + }); + } + } + terminateWorker() { + if (this.workerContext) { + const { + worker: e + } = this.workerContext; + this.workerContext = null, e.removeEventListener("message", this.onWorkerMessage), e.removeEventListener("error", this.onWorkerError), dp(this.hls.config.workerPath); + } + } + destroy() { + if (this.workerContext) + this.terminateWorker(), this.onWorkerMessage = this.onWorkerError = null; + else { + const t = this.transmuxer; + t && (t.destroy(), this.transmuxer = null); + } + const e = this.observer; + e && e.removeAllListeners(), this.frag = null, this.part = null, this.observer = null, this.hls = null; + } + push(e, t, i, r, s, a, o, l, u, c) { + var h, d; + u.transmuxing.start = self.performance.now(); + const { + instanceNo: f, + transmuxer: m + } = this, p = a ? a.start : s.start, v = s.decryptdata, b = this.frag, E = !(b && s.cc === b.cc), y = !(b && u.level === b.level), T = b ? u.sn - b.sn : -1, A = this.part ? u.part - this.part.index : -1, k = T === 0 && u.id > 1 && u.id === (b == null ? void 0 : b.stats.chunkCount), w = !y && (T === 1 || T === 0 && (A === 1 || k && A <= 0)), L = self.performance.now(); + (y || T || s.stats.parsing.start === 0) && (s.stats.parsing.start = L), a && (A || !w) && (a.stats.parsing.start = L); + const I = !(b && ((h = s.initSegment) == null ? void 0 : h.url) === ((d = b.initSegment) == null ? void 0 : d.url)), R = new r4(E, w, l, y, p, I); + if (!w || E || I) { + this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${s.type} sn: ${u.sn}${u.part > -1 ? " part: " + u.part : ""} ${this.id === ue.MAIN ? "level" : "track"}: ${u.level} id: ${u.id} + discontinuity: ${E} + trackSwitch: ${y} + contiguous: ${w} + accurateTimeOffset: ${l} + timeOffset: ${p} + initSegmentChange: ${I}`); + const O = new i4(i, r, t, o, c); + this.configureTransmuxer(O); + } + if (this.frag = s, this.part = a, this.workerContext) + this.workerContext.worker.postMessage({ + instanceNo: f, + cmd: "demux", + data: e, + decryptdata: v, + chunkMeta: u, + state: R + }, e instanceof ArrayBuffer ? [e] : []); + else if (m) { + const O = m.push(e, v, u, R); + ns(O) ? O.then((z) => { + this.handleTransmuxComplete(z); + }).catch((z) => { + this.transmuxerError(z, u, "transmuxer-interface push error"); + }) : this.handleTransmuxComplete(O); + } + } + flush(e) { + e.transmuxing.start = self.performance.now(); + const { + instanceNo: t, + transmuxer: i + } = this; + if (this.workerContext) + this.workerContext.worker.postMessage({ + instanceNo: t, + cmd: "flush", + chunkMeta: e + }); + else if (i) { + const r = i.flush(e); + ns(r) ? r.then((s) => { + this.handleFlushResult(s, e); + }).catch((s) => { + this.transmuxerError(s, e, "transmuxer-interface flush error"); + }) : this.handleFlushResult(r, e); + } + } + transmuxerError(e, t, i) { + this.hls && (this.error = e, this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_PARSING_ERROR, + chunkMeta: t, + frag: this.frag || void 0, + part: this.part || void 0, + fatal: !1, + error: e, + err: e, + reason: i + })); + } + handleFlushResult(e, t) { + e.forEach((i) => { + this.handleTransmuxComplete(i); + }), this.onFlush(t); + } + configureTransmuxer(e) { + const { + instanceNo: t, + transmuxer: i + } = this; + this.workerContext ? this.workerContext.worker.postMessage({ + instanceNo: t, + cmd: "configure", + config: e + }) : i && i.configure(e); + } + handleTransmuxComplete(e) { + e.chunkMeta.transmuxing.end = self.performance.now(), this.onTransmuxComplete(e); + } +} +const Vu = 100; +class n4 extends Xl { + constructor(e, t, i) { + super(e, t, i, "audio-stream-controller", ue.AUDIO), this.mainAnchor = null, this.mainFragLoading = null, this.audioOnly = !1, this.bufferedTrack = null, this.switchingTrack = null, this.trackId = -1, this.waitingData = null, this.mainDetails = null, this.flushing = !1, this.bufferFlushed = !1, this.cachedTrackLoadedData = null, this.registerListeners(); + } + onHandlerDestroying() { + this.unregisterListeners(), super.onHandlerDestroying(), this.resetItem(); + } + resetItem() { + this.mainDetails = this.mainAnchor = this.mainFragLoading = this.bufferedTrack = this.switchingTrack = this.waitingData = this.cachedTrackLoadedData = null; + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(S.LEVEL_LOADED, this.onLevelLoaded, this), e.on(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), e.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.on(S.BUFFER_RESET, this.onBufferReset, this), e.on(S.BUFFER_CREATED, this.onBufferCreated, this), e.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this), e.on(S.FRAG_LOADING, this.onFragLoading, this), e.on(S.FRAG_BUFFERED, this.onFragBuffered, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (super.unregisterListeners(), e.off(S.LEVEL_LOADED, this.onLevelLoaded, this), e.off(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), e.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.off(S.BUFFER_RESET, this.onBufferReset, this), e.off(S.BUFFER_CREATED, this.onBufferCreated, this), e.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this), e.off(S.FRAG_LOADING, this.onFragLoading, this), e.off(S.FRAG_BUFFERED, this.onFragBuffered, this)); + } + // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value + onInitPtsFound(e, { + frag: t, + id: i, + initPTS: r, + timescale: s + }) { + if (i === ue.MAIN) { + const a = t.cc, o = this.fragCurrent; + if (this.initPTS[a] = { + baseTime: r, + timescale: s + }, this.log(`InitPTS for cc: ${a} found from main: ${r}/${s}`), this.mainAnchor = t, this.state === W.WAITING_INIT_PTS) { + const l = this.waitingData; + (!l && !this.loadingParts || l && l.frag.cc !== a) && this.syncWithAnchor(t, l == null ? void 0 : l.frag); + } else !this.hls.hasEnoughToStart && o && o.cc !== a ? (o.abortRequests(), this.syncWithAnchor(t, o)) : this.state === W.IDLE && this.tick(); + } + } + getLoadPosition() { + return !this.startFragRequested && this.nextLoadPosition >= 0 ? this.nextLoadPosition : super.getLoadPosition(); + } + syncWithAnchor(e, t) { + var i; + const r = ((i = this.mainFragLoading) == null ? void 0 : i.frag) || null; + if (t && (r == null ? void 0 : r.cc) === t.cc) + return; + const s = (r || e).cc, a = this.getLevelDetails(), o = this.getLoadPosition(), l = kd(a, s, o); + l && (this.log(`Waiting fragment cc (${t == null ? void 0 : t.cc}) cancelled because video is at cc ${e.cc}`), this.startFragRequested = !1, this.nextLoadPosition = l.start, this.resetLoadingState(), this.state === W.IDLE && this.doTickIdle()); + } + startLoad(e, t) { + if (!this.levels) { + this.startPosition = e, this.state = W.STOPPED; + return; + } + const i = this.lastCurrentTime; + this.stopLoad(), this.setInterval(Vu), i > 0 && e === -1 ? (this.log(`Override startPosition with lastCurrentTime @${i.toFixed(3)}`), e = i, this.state = W.IDLE) : this.state = W.WAITING_TRACK, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } + doTick() { + switch (this.state) { + case W.IDLE: + this.doTickIdle(); + break; + case W.WAITING_TRACK: { + const { + levels: t, + trackId: i + } = this, r = t == null ? void 0 : t[i], s = r == null ? void 0 : r.details; + if (s && !this.waitForLive(r)) { + if (this.waitForCdnTuneIn(s)) + break; + this.state = W.WAITING_INIT_PTS; + } + break; + } + case W.FRAG_LOADING_WAITING_RETRY: { + var e; + const t = performance.now(), i = this.retryDate; + if (!i || t >= i || (e = this.media) != null && e.seeking) { + const { + levels: r, + trackId: s + } = this; + this.log("RetryDate reached, switch back to IDLE state"), this.resetStartWhenNotLoaded((r == null ? void 0 : r[s]) || null), this.state = W.IDLE; + } + break; + } + case W.WAITING_INIT_PTS: { + const t = this.waitingData; + if (t) { + const { + frag: i, + part: r, + cache: s, + complete: a + } = t, o = this.mainAnchor; + if (this.initPTS[i.cc] !== void 0) { + this.waitingData = null, this.state = W.FRAG_LOADING; + const l = s.flush().buffer, u = { + frag: i, + part: r, + payload: l, + networkDetails: null + }; + this._handleFragmentLoadProgress(u), a && super._handleFragmentLoadComplete(u); + } else o && o.cc !== t.frag.cc && this.syncWithAnchor(o, t.frag); + } else + this.state = W.IDLE; + } + } + this.onTickEnd(); + } + resetLoadingState() { + const e = this.waitingData; + e && (this.fragmentTracker.removeFragment(e.frag), this.waitingData = null), super.resetLoadingState(); + } + onTickEnd() { + const { + media: e + } = this; + e != null && e.readyState && (this.lastCurrentTime = e.currentTime); + } + doTickIdle() { + var e; + const { + hls: t, + levels: i, + media: r, + trackId: s + } = this, a = t.config; + if (!this.buffering || !r && !this.primaryPrefetch && (this.startFragRequested || !a.startFragPrefetch) || !(i != null && i[s])) + return; + const o = i[s], l = o.details; + if (!l || this.waitForLive(o) || this.waitForCdnTuneIn(l)) { + this.state = W.WAITING_TRACK, this.startFragRequested = !1; + return; + } + const u = this.mediaBuffer ? this.mediaBuffer : this.media; + this.bufferFlushed && u && (this.bufferFlushed = !1, this.afterBufferFlushed(u, Qe.AUDIO, ue.AUDIO)); + const c = this.getFwdBufferInfo(u, ue.AUDIO); + if (c === null) + return; + if (!this.switchingTrack && this._streamEnded(c, l)) { + t.trigger(S.BUFFER_EOS, { + type: "audio" + }), this.state = W.ENDED; + return; + } + const h = c.len, d = t.maxBufferLength, f = l.fragments, m = f[0].start, p = this.getLoadPosition(), v = this.flushing ? p : c.end; + if (this.switchingTrack && r) { + const y = p; + l.PTSKnown && y < m && (c.end > m || c.nextStart) && (this.log("Alt audio track ahead of main track, seek to start of alt audio track"), r.currentTime = m + 0.05); + } + if (h >= d && !this.switchingTrack && v < f[f.length - 1].start) + return; + let b = this.getNextFragment(v, l); + if (b && this.isLoopLoading(b, v) && (b = this.getNextFragmentLoopLoading(b, l, c, ue.MAIN, d)), !b) { + this.bufferFlushed = !0; + return; + } + let E = ((e = this.mainFragLoading) == null ? void 0 : e.frag) || null; + if (!this.audioOnly && this.startFragRequested && E && Dt(b) && !b.endList && (!l.live || !this.loadingParts && v < this.hls.liveSyncPosition) && (this.fragmentTracker.getState(E) === bt.OK && (this.mainFragLoading = E = null), E && Dt(E))) { + if (b.start > E.end) { + const T = this.fragmentTracker.getFragAtPos(v, ue.MAIN); + T && T.end > E.end && (E = T, this.mainFragLoading = { + frag: T, + targetBufferTime: null + }); + } + if (b.start > E.end) + return; + } + this.loadFragment(b, o, v); + } + onMediaDetaching(e, t) { + this.bufferFlushed = this.flushing = !1, super.onMediaDetaching(e, t); + } + onAudioTracksUpdated(e, { + audioTracks: t + }) { + this.resetTransmuxer(), this.levels = t.map((i) => new Jn(i)); + } + onAudioTrackSwitching(e, t) { + const i = !!t.url; + this.trackId = t.id; + const { + fragCurrent: r + } = this; + r && (r.abortRequests(), this.removeUnbufferedFrags(r.start)), this.resetLoadingState(), i ? (this.switchingTrack = t, this.flushAudioIfNeeded(t), this.state !== W.STOPPED && (this.setInterval(Vu), this.state = W.IDLE, this.tick())) : (this.resetTransmuxer(), this.switchingTrack = null, this.bufferedTrack = t, this.clearInterval()); + } + onManifestLoading() { + super.onManifestLoading(), this.bufferFlushed = this.flushing = this.audioOnly = !1, this.resetItem(), this.trackId = -1; + } + onLevelLoaded(e, t) { + this.mainDetails = t.details; + const i = this.cachedTrackLoadedData; + i && (this.cachedTrackLoadedData = null, this.onAudioTrackLoaded(S.AUDIO_TRACK_LOADED, i)); + } + onAudioTrackLoaded(e, t) { + var i; + const { + levels: r + } = this, { + details: s, + id: a, + groupId: o, + track: l + } = t; + if (!r) { + this.warn(`Audio tracks reset while loading track ${a} "${l.name}" of "${o}"`); + return; + } + const u = this.mainDetails; + if (!u || s.endCC > u.endCC || u.expired) { + this.cachedTrackLoadedData = t, this.state !== W.STOPPED && (this.state = W.WAITING_TRACK); + return; + } + this.cachedTrackLoadedData = null, this.log(`Audio track ${a} "${l.name}" of "${o}" loaded [${s.startSN},${s.endSN}]${s.lastPartSn ? `[part-${s.lastPartSn}-${s.lastPartIndex}]` : ""},duration:${s.totalduration}`); + const c = r[a]; + let h = 0; + if (s.live || (i = c.details) != null && i.live) { + if (this.checkLiveUpdate(s), s.deltaUpdateFailed) + return; + if (c.details) { + var d; + h = this.alignPlaylists(s, c.details, (d = this.levelLastLoaded) == null ? void 0 : d.details); + } + s.alignedSliding || (zd(s, u), s.alignedSliding || Aa(s, u), h = s.fragmentStart); + } + c.details = s, this.levelLastLoaded = c, this.startFragRequested || this.setStartPosition(u, h), this.hls.trigger(S.AUDIO_TRACK_UPDATED, { + details: s, + id: a, + groupId: t.groupId + }), this.state === W.WAITING_TRACK && !this.waitForCdnTuneIn(s) && (this.state = W.IDLE), this.tick(); + } + _handleFragmentLoadProgress(e) { + var t; + const i = e.frag, { + part: r, + payload: s + } = e, { + config: a, + trackId: o, + levels: l + } = this; + if (!l) { + this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`); + return; + } + const u = l[o]; + if (!u) { + this.warn("Audio track is undefined on fragment load progress"); + return; + } + const c = u.details; + if (!c) { + this.warn("Audio track details undefined on fragment load progress"), this.removeUnbufferedFrags(i.start); + return; + } + const h = a.defaultAudioCodec || u.audioCodec || "mp4a.40.2"; + let d = this.transmuxer; + d || (d = this.transmuxer = new uf(this.hls, ue.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this))); + const f = this.initPTS[i.cc], m = (t = i.initSegment) == null ? void 0 : t.data; + if (f !== void 0) { + const v = r ? r.index : -1, b = v !== -1, E = new Yl(i.level, i.sn, i.stats.chunkCount, s.byteLength, v, b); + d.push(s, m, h, "", i, r, c.totalduration, !1, E, f); + } else { + this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${c.startSN} ,${c.endSN}],track ${o}`); + const { + cache: p + } = this.waitingData = this.waitingData || { + frag: i, + part: r, + cache: new qd(), + complete: !1 + }; + p.push(new Uint8Array(s)), this.state !== W.STOPPED && (this.state = W.WAITING_INIT_PTS); + } + } + _handleFragmentLoadComplete(e) { + if (this.waitingData) { + this.waitingData.complete = !0; + return; + } + super._handleFragmentLoadComplete(e); + } + onBufferReset() { + this.mediaBuffer = null; + } + onBufferCreated(e, t) { + this.bufferFlushed = this.flushing = !1; + const i = t.tracks.audio; + i && (this.mediaBuffer = i.buffer || null); + } + onFragLoading(e, t) { + !this.audioOnly && t.frag.type === ue.MAIN && Dt(t.frag) && (this.mainFragLoading = t, this.state === W.IDLE && this.tick()); + } + onFragBuffered(e, t) { + const { + frag: i, + part: r + } = t; + if (i.type !== ue.AUDIO) { + !this.audioOnly && i.type === ue.MAIN && !i.elementaryStreams.video && !i.elementaryStreams.audiovideo && (this.audioOnly = !0, this.mainFragLoading = null); + return; + } + if (this.fragContextChanged(i)) { + this.warn(`Fragment ${i.sn}${r ? " p: " + r.index : ""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack ? this.switchingTrack.name : "false"}`); + return; + } + if (Dt(i)) { + this.fragPrevious = i; + const s = this.switchingTrack; + s && (this.bufferedTrack = s, this.switchingTrack = null, this.hls.trigger(S.AUDIO_TRACK_SWITCHED, He({}, s))); + } + this.fragBufferedComplete(i, r), this.media && this.tick(); + } + onError(e, t) { + var i; + if (t.fatal) { + this.state = W.ERROR; + return; + } + switch (t.details) { + case B.FRAG_GAP: + case B.FRAG_PARSING_ERROR: + case B.FRAG_DECRYPT_ERROR: + case B.FRAG_LOAD_ERROR: + case B.FRAG_LOAD_TIMEOUT: + case B.KEY_LOAD_ERROR: + case B.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError(ue.AUDIO, t); + break; + case B.AUDIO_TRACK_LOAD_ERROR: + case B.AUDIO_TRACK_LOAD_TIMEOUT: + case B.LEVEL_PARSING_ERROR: + !t.levelRetry && this.state === W.WAITING_TRACK && ((i = t.context) == null ? void 0 : i.type) === Ce.AUDIO_TRACK && (this.state = W.IDLE); + break; + case B.BUFFER_ADD_CODEC_ERROR: + case B.BUFFER_APPEND_ERROR: + if (t.parent !== "audio") + return; + this.resetLoadingState(); + break; + case B.BUFFER_FULL_ERROR: + if (t.parent !== "audio") + return; + this.reduceLengthAndFlushBuffer(t) && (this.bufferedTrack = null, super.flushMainBuffer(0, Number.POSITIVE_INFINITY, "audio")); + break; + case B.INTERNAL_EXCEPTION: + this.recoverWorkerError(t); + break; + } + } + onBufferFlushing(e, { + type: t + }) { + t !== Qe.VIDEO && (this.flushing = !0); + } + onBufferFlushed(e, { + type: t + }) { + if (t !== Qe.VIDEO) { + this.flushing = !1, this.bufferFlushed = !0, this.state === W.ENDED && (this.state = W.IDLE); + const i = this.mediaBuffer || this.media; + i && (this.afterBufferFlushed(i, t, ue.AUDIO), this.tick()); + } + } + _handleTransmuxComplete(e) { + var t; + const i = "audio", { + hls: r + } = this, { + remuxResult: s, + chunkMeta: a + } = e, o = this.getCurrentContext(a); + if (!o) { + this.resetWhenMissingContext(a); + return; + } + const { + frag: l, + part: u, + level: c + } = o, { + details: h + } = c, { + audio: d, + text: f, + id3: m, + initSegment: p + } = s; + if (this.fragContextChanged(l) || !h) { + this.fragmentTracker.removeFragment(l); + return; + } + if (this.state = W.PARSING, this.switchingTrack && d && this.completeAudioSwitch(this.switchingTrack), p != null && p.tracks) { + const v = l.initSegment || l; + this._bufferInitSegment(c, p.tracks, v, a), r.trigger(S.FRAG_PARSING_INIT_SEGMENT, { + frag: v, + id: i, + tracks: p.tracks + }); + } + if (d) { + const { + startPTS: v, + endPTS: b, + startDTS: E, + endDTS: y + } = d; + u && (u.elementaryStreams[Qe.AUDIO] = { + startPTS: v, + endPTS: b, + startDTS: E, + endDTS: y + }), l.setElementaryStreamInfo(Qe.AUDIO, v, b, E, y), this.bufferFragmentData(d, l, u, a); + } + if (m != null && (t = m.samples) != null && t.length) { + const v = Ye({ + id: i, + frag: l, + details: h + }, m); + r.trigger(S.FRAG_PARSING_METADATA, v); + } + if (f) { + const v = Ye({ + id: i, + frag: l, + details: h + }, f); + r.trigger(S.FRAG_PARSING_USERDATA, v); + } + } + _bufferInitSegment(e, t, i, r) { + if (this.state !== W.PARSING || (t.video && delete t.video, t.audiovideo && delete t.audiovideo, !t.audio)) + return; + const s = t.audio; + s.id = ue.AUDIO; + const a = e.audioCodec; + this.log(`Init audio buffer, container:${s.container}, codecs[level/parsed]=[${a}/${s.codec}]`), a && a.split(",").length === 1 && (s.levelCodec = a), this.hls.trigger(S.BUFFER_CODECS, t); + const o = s.initSegment; + if (o != null && o.byteLength) { + const l = { + type: "audio", + frag: i, + part: null, + chunkMeta: r, + parent: i.type, + data: o + }; + this.hls.trigger(S.BUFFER_APPENDING, l); + } + this.tickImmediate(); + } + loadFragment(e, t, i) { + const r = this.fragmentTracker.getState(e); + if (this.switchingTrack || r === bt.NOT_LOADED || r === bt.PARTIAL) { + var s; + if (!Dt(e)) + this._loadInitSegment(e, t); + else if ((s = t.details) != null && s.live && !this.initPTS[e.cc]) { + this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`), this.state = W.WAITING_INIT_PTS; + const a = this.mainDetails; + a && a.fragmentStart !== t.details.fragmentStart && Aa(t.details, a); + } else + super.loadFragment(e, t, i); + } else + this.clearTrackerIfNeeded(e); + } + flushAudioIfNeeded(e) { + if (this.media && this.bufferedTrack) { + const { + name: t, + lang: i, + assocLang: r, + characteristics: s, + audioCodec: a, + channels: o + } = this.bufferedTrack; + qr({ + name: t, + lang: i, + assocLang: r, + characteristics: s, + audioCodec: a, + channels: o + }, e, Gr) || (Ea(e.url, this.hls) ? (this.log("Switching audio track : flushing all audio"), super.flushMainBuffer(0, Number.POSITIVE_INFINITY, "audio"), this.bufferedTrack = null) : this.bufferedTrack = e); + } + } + completeAudioSwitch(e) { + const { + hls: t + } = this; + this.flushAudioIfNeeded(e), this.bufferedTrack = e, this.switchingTrack = null, t.trigger(S.AUDIO_TRACK_SWITCHED, He({}, e)); + } +} +class n0 extends br { + constructor(e, t) { + super(t, e.logger), this.hls = void 0, this.canLoad = !1, this.timer = -1, this.hls = e; + } + destroy() { + this.clearTimer(), this.hls = this.log = this.warn = null; + } + clearTimer() { + this.timer !== -1 && (self.clearTimeout(this.timer), this.timer = -1); + } + startLoad() { + this.canLoad = !0, this.loadPlaylist(); + } + stopLoad() { + this.canLoad = !1, this.clearTimer(); + } + switchParams(e, t, i) { + const r = t == null ? void 0 : t.renditionReports; + if (r) { + let s = -1; + for (let a = 0; a < r.length; a++) { + const o = r[a]; + let l; + try { + l = new self.URL(o.URI, t.url).href; + } catch (u) { + this.warn(`Could not construct new URL for Rendition Report: ${u}`), l = o.URI || ""; + } + if (l === e) { + s = a; + break; + } else l === e.substring(0, l.length) && (s = a); + } + if (s !== -1) { + const a = r[s], o = parseInt(a["LAST-MSN"]) || (t == null ? void 0 : t.lastPartSn); + let l = parseInt(a["LAST-PART"]) || (t == null ? void 0 : t.lastPartIndex); + if (this.hls.config.lowLatencyMode) { + const c = Math.min(t.age - t.partTarget, t.targetduration); + l >= 0 && c > t.partTarget && (l += 1); + } + const u = i && lu(i); + return new uu(o, l >= 0 ? l : void 0, u); + } + } + } + loadPlaylist(e) { + this.clearTimer(); + } + loadingPlaylist(e, t) { + this.clearTimer(); + } + shouldLoadPlaylist(e) { + return this.canLoad && !!e && !!e.url && (!e.details || e.details.live); + } + getUrlWithDirectives(e, t) { + if (t) + try { + return t.addDirectives(e); + } catch (i) { + this.warn(`Could not construct new URL with HLS Delivery Directives: ${i}`); + } + return e; + } + playlistLoaded(e, t, i) { + const { + details: r, + stats: s + } = t, a = self.performance.now(), o = s.loading.first ? Math.max(0, a - s.loading.first) : 0; + r.advancedDateTime = Date.now() - o; + const l = this.hls.config.timelineOffset; + if (l !== r.appliedTimelineOffset) { + const c = Math.max(l || 0, 0); + r.appliedTimelineOffset = c, r.fragments.forEach((h) => { + h.start = h.playlistOffset + c; + }); + } + if (r.live || i != null && i.live) { + const c = "levelInfo" in t ? t.levelInfo : t.track; + if (r.reloaded(i), i && r.fragments.length > 0) { + Jg(i, r); + const E = r.playlistParsingError; + if (E) { + this.warn(E); + const y = this.hls; + if (!y.config.ignorePlaylistParsingErrors) { + var u; + const { + networkDetails: T + } = t; + y.trigger(S.ERROR, { + type: de.NETWORK_ERROR, + details: B.LEVEL_PARSING_ERROR, + fatal: !1, + url: r.url, + error: E, + reason: E.message, + level: t.level || void 0, + parent: (u = r.fragments[0]) == null ? void 0 : u.type, + networkDetails: T, + stats: s + }); + return; + } + r.playlistParsingError = null; + } + } + r.requestScheduled === -1 && (r.requestScheduled = s.loading.start); + const h = this.hls.mainForwardBufferInfo, d = h ? h.end - h.len : 0, f = (r.edge - d) * 1e3, m = $d(r, f); + if (r.requestScheduled + m < a ? r.requestScheduled = a : r.requestScheduled += m, this.log(`live playlist ${e} ${r.advanced ? "REFRESHED " + r.lastPartSn + "-" + r.lastPartIndex : r.updated ? "UPDATED" : "MISSED"}`), !this.canLoad || !r.live) + return; + let p, v, b; + if (r.canBlockReload && r.endSN && r.advanced) { + const E = this.hls.config.lowLatencyMode, y = r.lastPartSn, T = r.endSN, A = r.lastPartIndex, k = A !== -1, w = y === T; + k ? w ? (v = T + 1, b = E ? 0 : A) : (v = y, b = E ? A + 1 : r.maxPartIndex) : v = T + 1; + const L = r.age, I = L + r.ageHeader; + let R = Math.min(I - r.partTarget, r.targetduration * 1.5); + if (R > 0) { + if (I > r.targetduration * 3) + this.log(`Playlist last advanced ${L.toFixed(2)}s ago. Omitting segment and part directives.`), v = void 0, b = void 0; + else if (i != null && i.tuneInGoal && I - r.partTarget > i.tuneInGoal) + this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${R} with playlist age: ${r.age}`), R = 0; + else { + const O = Math.floor(R / r.targetduration); + if (v += O, b !== void 0) { + const z = Math.round(R % r.targetduration / r.partTarget); + b += z; + } + this.log(`CDN Tune-in age: ${r.ageHeader}s last advanced ${L.toFixed(2)}s goal: ${R} skip sn ${O} to part ${b}`); + } + r.tuneInGoal = R; + } + if (p = this.getDeliveryDirectives(r, t.deliveryDirectives, v, b), E || !w) { + r.requestScheduled = a, this.loadingPlaylist(c, p); + return; + } + } else (r.canBlockReload || r.canSkipUntil) && (p = this.getDeliveryDirectives(r, t.deliveryDirectives, v, b)); + p && v !== void 0 && r.canBlockReload && (r.requestScheduled = s.loading.first + Math.max(m - o * 2, m / 2)), this.scheduleLoading(c, p, r); + } else + this.clearTimer(); + } + scheduleLoading(e, t, i) { + const r = i || e.details; + if (!r) { + this.loadingPlaylist(e, t); + return; + } + const s = self.performance.now(), a = r.requestScheduled; + if (s >= a) { + this.loadingPlaylist(e, t); + return; + } + const o = a - s; + this.log(`reload live playlist ${e.name || e.bitrate + "bps"} in ${Math.round(o)} ms`), this.clearTimer(), this.timer = self.setTimeout(() => this.loadingPlaylist(e, t), o); + } + getDeliveryDirectives(e, t, i, r) { + let s = lu(e); + return t != null && t.skip && e.deltaUpdateFailed && (i = t.msn, r = t.part, s = aa.No), new uu(i, r, s); + } + checkRetry(e) { + const t = e.details, i = Sa(e), r = e.errorAction, { + action: s, + retryCount: a = 0, + retryConfig: o + } = r || {}, l = !!r && !!o && (s === Nt.RetryRequest || !r.resolved && s === Nt.SendAlternateToPenaltyBox); + if (l) { + var u; + if (a >= o.maxNumRetry) + return !1; + if (i && (u = e.context) != null && u.deliveryDirectives) + this.warn(`Retrying playlist loading ${a + 1}/${o.maxNumRetry} after "${t}" without delivery-directives`), this.loadPlaylist(); + else { + const c = Vl(o, a); + this.clearTimer(), this.timer = self.setTimeout(() => this.loadPlaylist(), c), this.warn(`Retrying playlist loading ${a + 1}/${o.maxNumRetry} after "${t}" in ${c}ms`); + } + e.levelRetry = !0, r.resolved = !0; + } + return l; + } +} +function cf(n, e) { + if (n.length !== e.length) + return !1; + for (let t = 0; t < n.length; t++) + if (!ss(n[t].attrs, e[t].attrs)) + return !1; + return !0; +} +function ss(n, e, t) { + const i = n["STABLE-RENDITION-ID"]; + return i && !t ? i === e["STABLE-RENDITION-ID"] : !(t || ["LANGUAGE", "NAME", "CHARACTERISTICS", "AUTOSELECT", "DEFAULT", "FORCED", "ASSOC-LANGUAGE"]).some((r) => n[r] !== e[r]); +} +function yl(n, e) { + return e.label.toLowerCase() === n.name.toLowerCase() && (!e.language || e.language.toLowerCase() === (n.lang || "").toLowerCase()); +} +class s4 extends n0 { + constructor(e) { + super(e, "audio-track-controller"), this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0, this.registerListeners(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.LEVEL_LOADING, this.onLevelLoading, this), e.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.LEVEL_LOADING, this.onLevelLoading, this), e.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.off(S.ERROR, this.onError, this); + } + destroy() { + this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, super.destroy(); + } + onManifestLoading() { + this.tracks = [], this.tracksInGroup = [], this.groupIds = null, this.currentTrack = null, this.trackId = -1, this.selectDefaultTrack = !0; + } + onManifestParsed(e, t) { + this.tracks = t.audioTracks || []; + } + onAudioTrackLoaded(e, t) { + const { + id: i, + groupId: r, + details: s + } = t, a = this.tracksInGroup[i]; + if (!a || a.groupId !== r) { + this.warn(`Audio track with id:${i} and group:${r} not found in active group ${a == null ? void 0 : a.groupId}`); + return; + } + const o = a.details; + a.details = t.details, this.log(`Audio track ${i} "${a.name}" lang:${a.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`), i === this.trackId && this.playlistLoaded(i, t, o); + } + onLevelLoading(e, t) { + this.switchLevel(t.level); + } + onLevelSwitching(e, t) { + this.switchLevel(t.level); + } + switchLevel(e) { + const t = this.hls.levels[e]; + if (!t) + return; + const i = t.audioGroups || null, r = this.groupIds; + let s = this.currentTrack; + if (!i || (r == null ? void 0 : r.length) !== (i == null ? void 0 : i.length) || i != null && i.some((o) => (r == null ? void 0 : r.indexOf(o)) === -1)) { + this.groupIds = i, this.trackId = -1, this.currentTrack = null; + const o = this.tracks.filter((d) => !i || i.indexOf(d.groupId) !== -1); + if (o.length) + this.selectDefaultTrack && !o.some((d) => d.default) && (this.selectDefaultTrack = !1), o.forEach((d, f) => { + d.id = f; + }); + else if (!s && !this.tracksInGroup.length) + return; + this.tracksInGroup = o; + const l = this.hls.config.audioPreference; + if (!s && l) { + const d = qi(l, o, Gr); + if (d > -1) + s = o[d]; + else { + const f = qi(l, this.tracks); + s = this.tracks[f]; + } + } + let u = this.findTrackId(s); + u === -1 && s && (u = this.findTrackId(null)); + const c = { + audioTracks: o + }; + this.log(`Updating audio tracks, ${o.length} track(s) found in group(s): ${i == null ? void 0 : i.join(",")}`), this.hls.trigger(S.AUDIO_TRACKS_UPDATED, c); + const h = this.trackId; + if (u !== -1 && h === -1) + this.setAudioTrack(u); + else if (o.length && h === -1) { + var a; + const d = new Error(`No audio track selected for current audio group-ID(s): ${(a = this.groupIds) == null ? void 0 : a.join(",")} track count: ${o.length}`); + this.warn(d.message), this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.AUDIO_TRACK_LOAD_ERROR, + fatal: !0, + error: d + }); + } + } + } + onError(e, t) { + t.fatal || !t.context || t.context.type === Ce.AUDIO_TRACK && t.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(t.context.groupId) !== -1) && this.checkRetry(t); + } + get allAudioTracks() { + return this.tracks; + } + get audioTracks() { + return this.tracksInGroup; + } + get audioTrack() { + return this.trackId; + } + set audioTrack(e) { + this.selectDefaultTrack = !1, this.setAudioTrack(e); + } + setAudioOption(e) { + const t = this.hls; + if (t.config.audioPreference = e, e) { + const i = this.allAudioTracks; + if (this.selectDefaultTrack = !1, i.length) { + const r = this.currentTrack; + if (r && qr(e, r, Gr)) + return r; + const s = qi(e, this.tracksInGroup, Gr); + if (s > -1) { + const a = this.tracksInGroup[s]; + return this.setAudioTrack(s), a; + } else if (r) { + let a = t.loadLevel; + a === -1 && (a = t.firstAutoLevel); + const o = _g(e, t.levels, i, a, Gr); + if (o === -1) + return null; + t.nextLoadLevel = o; + } + if (e.channels || e.audioCodec) { + const a = qi(e, i); + if (a > -1) + return i[a]; + } + } + } + return null; + } + setAudioTrack(e) { + const t = this.tracksInGroup; + if (e < 0 || e >= t.length) { + this.warn(`Invalid audio track id: ${e}`); + return; + } + this.selectDefaultTrack = !1; + const i = this.currentTrack, r = t[e], s = r.details && !r.details.live; + if (e === this.trackId && r === i && s || (this.log(`Switching to audio-track ${e} "${r.name}" lang:${r.lang} group:${r.groupId} channels:${r.channels}`), this.trackId = e, this.currentTrack = r, this.hls.trigger(S.AUDIO_TRACK_SWITCHING, He({}, r)), s)) + return; + const a = this.switchParams(r.url, i == null ? void 0 : i.details, r.details); + this.loadPlaylist(a); + } + findTrackId(e) { + const t = this.tracksInGroup; + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (!(this.selectDefaultTrack && !r.default) && (!e || qr(e, r, Gr))) + return i; + } + if (e) { + const { + name: i, + lang: r, + assocLang: s, + characteristics: a, + audioCodec: o, + channels: l + } = e; + for (let u = 0; u < t.length; u++) { + const c = t[u]; + if (qr({ + name: i, + lang: r, + assocLang: s, + characteristics: a, + audioCodec: o, + channels: l + }, c, Gr)) + return u; + } + for (let u = 0; u < t.length; u++) { + const c = t[u]; + if (ss(e.attrs, c.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) + return u; + } + for (let u = 0; u < t.length; u++) { + const c = t[u]; + if (ss(e.attrs, c.attrs, ["LANGUAGE"])) + return u; + } + } + return -1; + } + loadPlaylist(e) { + super.loadPlaylist(); + const t = this.currentTrack; + this.shouldLoadPlaylist(t) && Ea(t.url, this.hls) && this.scheduleLoading(t, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const i = e.id, r = e.groupId, s = this.getUrlWithDirectives(e.url, t), a = e.details, o = a == null ? void 0 : a.age; + this.log(`Loading audio-track ${i} "${e.name}" lang:${e.lang} group:${r}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${o && a.live ? " age " + o.toFixed(1) + (a.type && " " + a.type || "") : ""} ${s}`), this.hls.trigger(S.AUDIO_TRACK_LOADING, { + url: s, + id: i, + groupId: r, + deliveryDirectives: t || null, + track: e + }); + } +} +class a4 { + constructor(e) { + this.tracks = void 0, this.queues = { + video: [], + audio: [], + audiovideo: [] + }, this.tracks = e; + } + destroy() { + this.tracks = this.queues = null; + } + append(e, t, i) { + if (this.queues === null || this.tracks === null) + return; + const r = this.queues[t]; + r.push(e), r.length === 1 && !i && this.executeNext(t); + } + appendBlocker(e) { + return new Promise((t) => { + const i = { + label: "async-blocker", + execute: t, + onStart: () => { + }, + onComplete: () => { + }, + onError: () => { + } + }; + this.append(i, e); + }); + } + prependBlocker(e) { + return new Promise((t) => { + if (this.queues) { + const i = { + label: "async-blocker-prepend", + execute: t, + onStart: () => { + }, + onComplete: () => { + }, + onError: () => { + } + }; + this.queues[e].unshift(i); + } + }); + } + removeBlockers() { + this.queues !== null && [this.queues.video, this.queues.audio, this.queues.audiovideo].forEach((e) => { + var t; + const i = (t = e[0]) == null ? void 0 : t.label; + (i === "async-blocker" || i === "async-blocker-prepend") && (e[0].execute(), e.splice(0, 1)); + }); + } + unblockAudio(e) { + if (this.queues === null) + return; + this.queues.audio[0] === e && this.shiftAndExecuteNext("audio"); + } + executeNext(e) { + if (this.queues === null || this.tracks === null) + return; + const t = this.queues[e]; + if (t.length) { + const r = t[0]; + try { + r.execute(); + } catch (s) { + var i; + if (r.onError(s), this.queues === null || this.tracks === null) + return; + const a = (i = this.tracks[e]) == null ? void 0 : i.buffer; + a != null && a.updating || this.shiftAndExecuteNext(e); + } + } + } + shiftAndExecuteNext(e) { + this.queues !== null && (this.queues[e].shift(), this.executeNext(e)); + } + current(e) { + var t; + return ((t = this.queues) == null ? void 0 : t[e][0]) || null; + } + toString() { + const { + queues: e, + tracks: t + } = this; + return e === null || t === null ? "<destroyed>" : ` +${this.list("video")} +${this.list("audio")} +${this.list("audiovideo")}}`; + } + list(e) { + var t, i; + return (t = this.queues) != null && t[e] || (i = this.tracks) != null && i[e] ? `${e}: (${this.listSbInfo(e)}) ${this.listOps(e)}` : ""; + } + listSbInfo(e) { + var t; + const i = (t = this.tracks) == null ? void 0 : t[e], r = i == null ? void 0 : i.buffer; + return r ? `SourceBuffer${r.updating ? " updating" : ""}${i.ended ? " ended" : ""}${i.ending ? " ending" : ""}` : "none"; + } + listOps(e) { + var t; + return ((t = this.queues) == null ? void 0 : t[e].map((i) => i.label).join(", ")) || ""; + } +} +const Ku = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/, hf = "HlsJsTrackRemovedError"; +class o4 extends Error { + constructor(e) { + super(e), this.name = hf; + } +} +class l4 extends br { + constructor(e, t) { + super("buffer-controller", e.logger), this.hls = void 0, this.fragmentTracker = void 0, this.details = null, this._objectUrl = null, this.operationQueue = null, this.bufferCodecEventsTotal = 0, this.media = null, this.mediaSource = null, this.lastMpegAudioChunk = null, this.blockedAudioAppend = null, this.lastVideoAppendEnd = 0, this.appendSource = void 0, this.transferData = void 0, this.overrides = void 0, this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }, this.tracks = {}, this.sourceBuffers = [[null, null], [null, null]], this._onEndStreaming = (i) => { + var r; + this.hls && ((r = this.mediaSource) == null ? void 0 : r.readyState) === "open" && this.hls.pauseBuffering(); + }, this._onStartStreaming = (i) => { + this.hls && this.hls.resumeBuffering(); + }, this._onMediaSourceOpen = (i) => { + const { + media: r, + mediaSource: s + } = this; + i && this.log("Media source opened"), !(!r || !s) && (s.removeEventListener("sourceopen", this._onMediaSourceOpen), r.removeEventListener("emptied", this._onMediaEmptied), this.updateDuration(), this.hls.trigger(S.MEDIA_ATTACHED, { + media: r, + mediaSource: s + }), this.mediaSource !== null && this.checkPendingTracks()); + }, this._onMediaSourceClose = () => { + this.log("Media source closed"); + }, this._onMediaSourceEnded = () => { + this.log("Media source ended"); + }, this._onMediaEmptied = () => { + const { + mediaSrc: i, + _objectUrl: r + } = this; + i !== r && this.error(`Media element src was set while attaching MediaSource (${r} > ${i})`); + }, this.hls = e, this.fragmentTracker = t, this.appendSource = $1(Rr(e.config.preferManagedMediaSource)), this.initTracks(), this.registerListeners(); + } + hasSourceTypes() { + return Object.keys(this.tracks).length > 0; + } + destroy() { + this.unregisterListeners(), this.details = null, this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.transferData = this.overrides = void 0, this.operationQueue && (this.operationQueue.destroy(), this.operationQueue = null), this.hls = this.fragmentTracker = null, this._onMediaSourceOpen = this._onMediaSourceClose = null, this._onMediaSourceEnded = null, this._onStartStreaming = this._onEndStreaming = null; + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.BUFFER_RESET, this.onBufferReset, this), e.on(S.BUFFER_APPENDING, this.onBufferAppending, this), e.on(S.BUFFER_CODECS, this.onBufferCodecs, this), e.on(S.BUFFER_EOS, this.onBufferEos, this), e.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(S.FRAG_PARSED, this.onFragParsed, this), e.on(S.FRAG_CHANGED, this.onFragChanged, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.BUFFER_RESET, this.onBufferReset, this), e.off(S.BUFFER_APPENDING, this.onBufferAppending, this), e.off(S.BUFFER_CODECS, this.onBufferCodecs, this), e.off(S.BUFFER_EOS, this.onBufferEos, this), e.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(S.FRAG_PARSED, this.onFragParsed, this), e.off(S.FRAG_CHANGED, this.onFragChanged, this), e.off(S.ERROR, this.onError, this); + } + transferMedia() { + const { + media: e, + mediaSource: t + } = this; + if (!e) + return null; + const i = {}; + if (this.operationQueue) { + const s = this.isUpdating(); + s || this.operationQueue.removeBlockers(); + const a = this.isQueued(); + (s || a) && this.warn(`Transfering MediaSource with${a ? " operations in queue" : ""}${s ? " updating SourceBuffer(s)" : ""} ${this.operationQueue}`), this.operationQueue.destroy(); + } + const r = this.transferData; + return !this.sourceBufferCount && r && r.mediaSource === t ? Ye(i, r.tracks) : this.sourceBuffers.forEach((s) => { + const [a] = s; + a && (i[a] = Ye({}, this.tracks[a]), this.removeBuffer(a)), s[0] = s[1] = null; + }), { + media: e, + mediaSource: t, + tracks: i + }; + } + initTracks() { + const e = {}; + this.sourceBuffers = [[null, null], [null, null]], this.tracks = e, this.resetQueue(), this.resetAppendErrors(), this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.lastVideoAppendEnd = 0; + } + onManifestLoading() { + this.bufferCodecEventsTotal = 0, this.details = null; + } + onManifestParsed(e, t) { + var i; + let r = 2; + (t.audio && !t.video || !t.altAudio) && (r = 1), this.bufferCodecEventsTotal = r, this.log(`${r} bufferCodec event(s) expected.`), (i = this.transferData) != null && i.mediaSource && this.sourceBufferCount && r && this.bufferCreated(); + } + onMediaAttaching(e, t) { + const i = this.media = t.media, r = Rr(this.appendSource); + if (this.transferData = this.overrides = void 0, i && r) { + const s = !!t.mediaSource; + (s || t.overrides) && (this.transferData = t, this.overrides = t.overrides); + const a = this.mediaSource = t.mediaSource || new r(); + if (this.assignMediaSource(a), s) + this._objectUrl = i.src, this.attachTransferred(); + else { + const o = this._objectUrl = self.URL.createObjectURL(a); + if (this.appendSource) + try { + i.removeAttribute("src"); + const l = self.ManagedMediaSource; + i.disableRemotePlayback = i.disableRemotePlayback || l && a instanceof l, Yu(i), u4(i, o), i.load(); + } catch { + i.src = o; + } + else + i.src = o; + } + i.addEventListener("emptied", this._onMediaEmptied); + } + } + assignMediaSource(e) { + var t, i; + this.log(`${((t = this.transferData) == null ? void 0 : t.mediaSource) === e ? "transferred" : "created"} media source: ${(i = e.constructor) == null ? void 0 : i.name}`), e.addEventListener("sourceopen", this._onMediaSourceOpen), e.addEventListener("sourceended", this._onMediaSourceEnded), e.addEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (e.addEventListener("startstreaming", this._onStartStreaming), e.addEventListener("endstreaming", this._onEndStreaming)); + } + attachTransferred() { + const e = this.media, t = this.transferData; + if (!t || !e) + return; + const i = this.tracks, r = t.tracks, s = r ? Object.keys(r) : null, a = s ? s.length : 0, o = () => { + this.media && this.mediaSourceOpenOrEnded && this._onMediaSourceOpen(); + }; + if (r && s && a) { + if (!this.tracksReady) { + this.hls.config.startFragPrefetch = !0, this.log("attachTransferred: waiting for SourceBuffer track info"); + return; + } + if (this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal}) +required tracks: ${it(i, (l, u) => l === "initSegment" ? void 0 : u)}; +transfer tracks: ${it(r, (l, u) => l === "initSegment" ? void 0 : u)}}`), !cd(r, i)) { + t.mediaSource = null, t.tracks = void 0; + const l = e.currentTime, u = this.details, c = Math.max(l, (u == null ? void 0 : u.fragments[0].start) || 0); + if (c - l > 1) { + this.log(`attachTransferred: waiting for playback to reach new tracks start time ${l} -> ${c}`); + return; + } + this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(r)}"->"${Object.keys(i)}") start time: ${c} currentTime: ${l}`), this.onMediaDetaching(S.MEDIA_DETACHING, {}), this.onMediaAttaching(S.MEDIA_ATTACHING, t), e.currentTime = c; + return; + } + this.transferData = void 0, s.forEach((l) => { + const u = l, c = r[u]; + if (c) { + const h = c.buffer; + if (h) { + const d = this.fragmentTracker, f = c.id; + if (d.hasFragments(f) || d.hasParts(f)) { + const v = De.getBuffered(h); + d.detectEvictedFragments(u, v, f, null, !0); + } + const m = _o(u), p = [u, h]; + this.sourceBuffers[m] = p, h.updating && this.operationQueue && this.operationQueue.prependBlocker(u), this.trackSourceBuffer(u, c); + } + } + }), o(), this.bufferCreated(); + } else + this.log("attachTransferred: MediaSource w/o SourceBuffers"), o(); + } + get mediaSourceOpenOrEnded() { + var e; + const t = (e = this.mediaSource) == null ? void 0 : e.readyState; + return t === "open" || t === "ended"; + } + onMediaDetaching(e, t) { + const i = !!t.transferMedia; + this.transferData = this.overrides = void 0; + const { + media: r, + mediaSource: s, + _objectUrl: a + } = this; + if (s) { + if (this.log(`media source ${i ? "transferring" : "detaching"}`), i) + this.sourceBuffers.forEach(([o]) => { + o && this.removeBuffer(o); + }), this.resetQueue(); + else { + if (this.mediaSourceOpenOrEnded) { + const o = s.readyState === "open"; + try { + const l = s.sourceBuffers; + for (let u = l.length; u--; ) + o && l[u].abort(), s.removeSourceBuffer(l[u]); + o && s.endOfStream(); + } catch (l) { + this.warn(`onMediaDetaching: ${l.message} while calling endOfStream`); + } + } + this.sourceBufferCount && this.onBufferReset(); + } + s.removeEventListener("sourceopen", this._onMediaSourceOpen), s.removeEventListener("sourceended", this._onMediaSourceEnded), s.removeEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (s.removeEventListener("startstreaming", this._onStartStreaming), s.removeEventListener("endstreaming", this._onEndStreaming)), this.mediaSource = null, this._objectUrl = null; + } + r && (r.removeEventListener("emptied", this._onMediaEmptied), i || (a && self.URL.revokeObjectURL(a), this.mediaSrc === a ? (r.removeAttribute("src"), this.appendSource && Yu(r), r.load()) : this.warn("media|source.src was changed by a third party - skip cleanup")), this.media = null), this.hls.trigger(S.MEDIA_DETACHED, t); + } + onBufferReset() { + this.sourceBuffers.forEach(([e]) => { + e && this.resetBuffer(e); + }), this.initTracks(); + } + resetBuffer(e) { + var t; + const i = (t = this.tracks[e]) == null ? void 0 : t.buffer; + if (this.removeBuffer(e), i) + try { + var r; + (r = this.mediaSource) != null && r.sourceBuffers.length && this.mediaSource.removeSourceBuffer(i); + } catch (s) { + this.warn(`onBufferReset ${e}`, s); + } + delete this.tracks[e]; + } + removeBuffer(e) { + this.removeBufferListeners(e), this.sourceBuffers[_o(e)] = [null, null]; + const t = this.tracks[e]; + t && (t.buffer = void 0); + } + resetQueue() { + this.operationQueue && this.operationQueue.destroy(), this.operationQueue = new a4(this.tracks); + } + onBufferCodecs(e, t) { + const i = this.tracks, r = Object.keys(t); + this.log(`BUFFER_CODECS: "${r}" (current SB count ${this.sourceBufferCount})`); + const s = "audiovideo" in t && (i.audio || i.video) || i.audiovideo && ("audio" in t || "video" in t), a = !s && this.sourceBufferCount && this.media && r.some((o) => !i[o]); + if (s || a) { + this.warn(`Unsupported transition between "${Object.keys(i)}" and "${r}" SourceBuffers`); + return; + } + r.forEach((o) => { + var l, u, c; + const h = t[o], { + id: d, + codec: f, + levelCodec: m, + container: p, + metadata: v, + supplemental: b + } = h; + let E = i[o]; + const y = (l = this.transferData) == null || (u = l.tracks) == null ? void 0 : u[o], T = y != null && y.buffer ? y : E, A = (T == null ? void 0 : T.pendingCodec) || (T == null ? void 0 : T.codec), k = T == null ? void 0 : T.levelCodec; + E || (E = i[o] = { + buffer: void 0, + listeners: [], + codec: f, + supplemental: b, + container: p, + levelCodec: m, + metadata: v, + id: d + }); + const w = sa(A, k), L = w == null ? void 0 : w.replace(Ku, "$1"); + let I = sa(f, m); + const R = (c = I) == null ? void 0 : c.replace(Ku, "$1"); + I && w && L !== R && (o.slice(0, 5) === "audio" && (I = _a(I, this.appendSource)), this.log(`switching codec ${A} to ${I}`), I !== (E.pendingCodec || E.codec) && (E.pendingCodec = I), E.container = p, this.appendChangeType(o, p, I)); + }), (this.tracksReady || this.sourceBufferCount) && (t.tracks = this.sourceBufferTracks), !this.sourceBufferCount && this.mediaSourceOpenOrEnded && this.checkPendingTracks(); + } + get sourceBufferTracks() { + return Object.keys(this.tracks).reduce((e, t) => { + const i = this.tracks[t]; + return e[t] = { + id: i.id, + container: i.container, + codec: i.codec, + levelCodec: i.levelCodec + }, e; + }, {}); + } + appendChangeType(e, t, i) { + const r = `${t};codecs=${i}`, s = { + label: `change-type=${r}`, + execute: () => { + const a = this.tracks[e]; + if (a) { + const o = a.buffer; + o != null && o.changeType && (this.log(`changing ${e} sourceBuffer type to ${r}`), o.changeType(r), a.codec = i, a.container = t); + } + this.shiftAndExecuteNext(e); + }, + onStart: () => { + }, + onComplete: () => { + }, + onError: (a) => { + this.warn(`Failed to change ${e} SourceBuffer type`, a); + } + }; + this.append(s, e, this.isPending(this.tracks[e])); + } + blockAudio(e) { + var t; + const i = e.start, r = i + e.duration * 0.05; + if (((t = this.fragmentTracker.getAppendedFrag(i, ue.MAIN)) == null ? void 0 : t.gap) === !0) + return; + const a = { + label: "block-audio", + execute: () => { + var o; + const l = this.tracks.video; + (this.lastVideoAppendEnd > r || l != null && l.buffer && De.isBuffered(l.buffer, r) || ((o = this.fragmentTracker.getAppendedFrag(r, ue.MAIN)) == null ? void 0 : o.gap) === !0) && (this.blockedAudioAppend = null, this.shiftAndExecuteNext("audio")); + }, + onStart: () => { + }, + onComplete: () => { + }, + onError: (o) => { + this.warn("Error executing block-audio operation", o); + } + }; + this.blockedAudioAppend = { + op: a, + frag: e + }, this.append(a, "audio", !0); + } + unblockAudio() { + const { + blockedAudioAppend: e, + operationQueue: t + } = this; + e && t && (this.blockedAudioAppend = null, t.unblockAudio(e.op)); + } + onBufferAppending(e, t) { + const { + tracks: i + } = this, { + data: r, + type: s, + parent: a, + frag: o, + part: l, + chunkMeta: u + } = t, c = u.buffering[s], h = o.sn, d = self.performance.now(); + c.start = d; + const f = o.stats.buffering, m = l ? l.stats.buffering : null; + f.start === 0 && (f.start = d), m && m.start === 0 && (m.start = d); + const p = i.audio; + let v = !1; + s === "audio" && (p == null ? void 0 : p.container) === "audio/mpeg" && (v = !this.lastMpegAudioChunk || u.id === 1 || this.lastMpegAudioChunk.sn !== u.sn, this.lastMpegAudioChunk = u); + const b = this.tracks.video, E = b == null ? void 0 : b.buffer; + if (E && h !== "initSegment") { + const A = l || o, k = this.blockedAudioAppend; + if (s === "audio" && a !== "main" && !this.blockedAudioAppend) { + const L = A.start + A.duration * 0.05, I = E.buffered, R = this.currentOp("video"); + !I.length && !R ? this.blockAudio(A) : !R && !De.isBuffered(E, L) && this.lastVideoAppendEnd < L && this.blockAudio(A); + } else if (s === "video") { + const w = A.end; + if (k) { + const L = k.frag.start; + (w > L || w < this.lastVideoAppendEnd || De.isBuffered(E, L)) && this.unblockAudio(); + } + this.lastVideoAppendEnd = w; + } + } + const y = (l || o).start, T = { + label: `append-${s}`, + execute: () => { + if (c.executeStart = self.performance.now(), v) { + const A = this.tracks[s]; + if (A) { + const k = A.buffer; + if (k) { + const w = y - k.timestampOffset; + Math.abs(w) >= 0.1 && (this.log(`Updating audio SourceBuffer timestampOffset to ${y} (delta: ${w}) sn: ${h})`), k.timestampOffset = y); + } + } + } + this.appendExecutor(r, s); + }, + onStart: () => { + }, + onComplete: () => { + const A = self.performance.now(); + c.executeEnd = c.end = A, f.first === 0 && (f.first = A), m && m.first === 0 && (m.first = A); + const k = {}; + this.sourceBuffers.forEach(([w, L]) => { + w && (k[w] = De.getBuffered(L)); + }), this.appendErrors[s] = 0, s === "audio" || s === "video" ? this.appendErrors.audiovideo = 0 : (this.appendErrors.audio = 0, this.appendErrors.video = 0), this.hls.trigger(S.BUFFER_APPENDED, { + type: s, + frag: o, + part: l, + chunkMeta: u, + parent: o.type, + timeRanges: k + }); + }, + onError: (A) => { + var k; + const w = { + type: de.MEDIA_ERROR, + parent: o.type, + details: B.BUFFER_APPEND_ERROR, + sourceBufferName: s, + frag: o, + part: l, + chunkMeta: u, + error: A, + err: A, + fatal: !1 + }, L = (k = this.media) == null ? void 0 : k.error; + if (A.code === DOMException.QUOTA_EXCEEDED_ERR) + w.details = B.BUFFER_FULL_ERROR; + else if (A.code === DOMException.INVALID_STATE_ERR && this.mediaSourceOpenOrEnded && !L) + w.errorAction = es(!0); + else if (A.name === hf && this.sourceBufferCount === 0) + w.errorAction = es(!0); + else { + const I = ++this.appendErrors[s]; + this.warn(`Failed ${I}/${this.hls.config.appendErrorMaxRetry} times to append segment in "${s}" sourceBuffer (${L || "no media error"})`), (I >= this.hls.config.appendErrorMaxRetry || L) && (w.fatal = !0); + } + this.hls.trigger(S.ERROR, w); + } + }; + this.append(T, s, this.isPending(this.tracks[s])); + } + getFlushOp(e, t, i) { + return this.log(`queuing "${e}" remove ${t}-${i}`), { + label: "remove", + execute: () => { + this.removeExecutor(e, t, i); + }, + onStart: () => { + }, + onComplete: () => { + this.hls.trigger(S.BUFFER_FLUSHED, { + type: e + }); + }, + onError: (r) => { + this.warn(`Failed to remove ${t}-${i} from "${e}" SourceBuffer`, r); + } + }; + } + onBufferFlushing(e, t) { + const { + type: i, + startOffset: r, + endOffset: s + } = t; + i ? this.append(this.getFlushOp(i, r, s), i) : this.sourceBuffers.forEach(([a]) => { + a && this.append(this.getFlushOp(a, r, s), a); + }); + } + onFragParsed(e, t) { + const { + frag: i, + part: r + } = t, s = [], a = r ? r.elementaryStreams : i.elementaryStreams; + a[Qe.AUDIOVIDEO] ? s.push("audiovideo") : (a[Qe.AUDIO] && s.push("audio"), a[Qe.VIDEO] && s.push("video")); + const o = () => { + const l = self.performance.now(); + i.stats.buffering.end = l, r && (r.stats.buffering.end = l); + const u = r ? r.stats : i.stats; + this.hls.trigger(S.FRAG_BUFFERED, { + frag: i, + part: r, + stats: u, + id: i.type + }); + }; + s.length === 0 && this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`), this.blockBuffers(o, s).catch((l) => { + this.warn(`Fragment buffered callback ${l}`), this.stepOperationQueue(this.sourceBufferTypes); + }); + } + onFragChanged(e, t) { + this.trimBuffers(); + } + get bufferedToEnd() { + return this.sourceBufferCount > 0 && !this.sourceBuffers.some(([e]) => { + var t, i; + return e && (!((t = this.tracks[e]) != null && t.ended) || ((i = this.tracks[e]) == null ? void 0 : i.ending)); + }); + } + // on BUFFER_EOS mark matching sourcebuffer(s) as "ending" and "ended" and queue endOfStream after remaining operations(s) + // an undefined data.type will mark all buffers as EOS. + onBufferEos(e, t) { + var i; + this.sourceBuffers.forEach(([a]) => { + if (a) { + const o = this.tracks[a]; + (!t.type || t.type === a) && (o.ending = !0, o.ended || (o.ended = !0, this.log(`${a} buffer reached EOS`))); + } + }); + const r = ((i = this.overrides) == null ? void 0 : i.endOfStream) !== !1; + this.sourceBufferCount > 0 && !this.sourceBuffers.some(([a]) => { + var o; + return a && !((o = this.tracks[a]) != null && o.ended); + }) && (r ? (this.log("Queueing EOS"), this.blockUntilOpen(() => { + this.tracksEnded(); + const { + mediaSource: a + } = this; + if (!a || a.readyState !== "open") { + a && this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${a.readyState}`); + return; + } + this.log("Calling mediaSource.endOfStream()"), a.endOfStream(), this.hls.trigger(S.BUFFERED_TO_END, void 0); + })) : (this.tracksEnded(), this.hls.trigger(S.BUFFERED_TO_END, void 0))); + } + tracksEnded() { + this.sourceBuffers.forEach(([e]) => { + if (e !== null) { + const t = this.tracks[e]; + t && (t.ending = !1); + } + }); + } + onLevelUpdated(e, { + details: t + }) { + t.fragments.length && (this.details = t, this.updateDuration()); + } + updateDuration() { + const e = this.getDurationAndRange(); + e && this.blockUntilOpen(() => this.updateMediaSource(e)); + } + onError(e, t) { + if (t.details === B.BUFFER_APPEND_ERROR && t.frag) { + var i; + const r = (i = t.errorAction) == null ? void 0 : i.nextAutoLevel; + se(r) && r !== t.frag.level && this.resetAppendErrors(); + } + } + resetAppendErrors() { + this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }; + } + trimBuffers() { + const { + hls: e, + details: t, + media: i + } = this; + if (!i || t === null || !this.sourceBufferCount) + return; + const r = e.config, s = i.currentTime, a = t.levelTargetDuration, o = t.live && r.liveBackBufferLength !== null ? r.liveBackBufferLength : r.backBufferLength; + if (se(o) && o >= 0) { + const l = Math.max(o, a), u = Math.floor(s / a) * a - l; + this.flushBackBuffer(s, a, u); + } + if (se(r.frontBufferFlushThreshold) && r.frontBufferFlushThreshold > 0) { + const l = Math.max(r.maxBufferLength, r.frontBufferFlushThreshold), u = Math.max(l, a), c = Math.floor(s / a) * a + u; + this.flushFrontBuffer(s, a, c); + } + } + flushBackBuffer(e, t, i) { + this.sourceBuffers.forEach(([r, s]) => { + if (s) { + const o = De.getBuffered(s); + if (o.length > 0 && i > o.start(0)) { + var a; + this.hls.trigger(S.BACK_BUFFER_REACHED, { + bufferEnd: i + }); + const l = this.tracks[r]; + if ((a = this.details) != null && a.live) + this.hls.trigger(S.LIVE_BACK_BUFFER_REACHED, { + bufferEnd: i + }); + else if (l != null && l.ended) { + this.log(`Cannot flush ${r} back buffer while SourceBuffer is in ended state`); + return; + } + this.hls.trigger(S.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: i, + type: r + }); + } + } + }); + } + flushFrontBuffer(e, t, i) { + this.sourceBuffers.forEach(([r, s]) => { + if (s) { + const a = De.getBuffered(s), o = a.length; + if (o < 2) + return; + const l = a.start(o - 1), u = a.end(o - 1); + if (i > l || e >= l && e <= u) + return; + this.hls.trigger(S.BUFFER_FLUSHING, { + startOffset: l, + endOffset: 1 / 0, + type: r + }); + } + }); + } + /** + * Update Media Source duration to current level duration or override to Infinity if configuration parameter + * 'liveDurationInfinity` is set to `true` + * More details: https://github.com/video-dev/hls.js/issues/355 + */ + getDurationAndRange() { + var e; + const { + details: t, + mediaSource: i + } = this; + if (!t || !this.media || (i == null ? void 0 : i.readyState) !== "open") + return null; + const r = t.edge; + if (t.live && this.hls.config.liveDurationInfinity) { + if (t.fragments.length && t.live && i.setLiveSeekableRange) { + const u = Math.max(0, t.fragmentStart), c = Math.max(u, r); + return { + duration: 1 / 0, + start: u, + end: c + }; + } + return { + duration: 1 / 0 + }; + } + const s = (e = this.overrides) == null ? void 0 : e.duration; + if (s) + return se(s) ? { + duration: s + } : null; + const a = this.media.duration, o = se(i.duration) ? i.duration : 0; + return r > o && r > a || !se(a) ? { + duration: r + } : null; + } + updateMediaSource({ + duration: e, + start: t, + end: i + }) { + const r = this.mediaSource; + !this.media || !r || r.readyState !== "open" || (r.duration !== e && (se(e) && this.log(`Updating MediaSource duration to ${e.toFixed(3)}`), r.duration = e), t !== void 0 && i !== void 0 && (this.log(`MediaSource duration is set to ${r.duration}. Setting seekable range to ${t}-${i}.`), r.setLiveSeekableRange(t, i))); + } + get tracksReady() { + const e = this.pendingTrackCount; + return e > 0 && (e >= this.bufferCodecEventsTotal || this.isPending(this.tracks.audiovideo)); + } + checkPendingTracks() { + const { + bufferCodecEventsTotal: e, + pendingTrackCount: t, + tracks: i + } = this; + if (this.log(`checkPendingTracks (pending: ${t} codec events expected: ${e}) ${it(i)}`), this.tracksReady) { + var r; + const s = (r = this.transferData) == null ? void 0 : r.tracks; + s && Object.keys(s).length ? this.attachTransferred() : this.createSourceBuffers(); + } + } + bufferCreated() { + if (this.sourceBufferCount) { + const e = {}; + this.sourceBuffers.forEach(([t, i]) => { + if (t) { + const r = this.tracks[t]; + e[t] = { + buffer: i, + container: r.container, + codec: r.codec, + supplemental: r.supplemental, + levelCodec: r.levelCodec, + id: r.id, + metadata: r.metadata + }; + } + }), this.hls.trigger(S.BUFFER_CREATED, { + tracks: e + }), this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`), this.sourceBuffers.forEach(([t]) => { + this.executeNext(t); + }); + } else { + const e = new Error("could not create source buffer for media codec(s)"); + this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_INCOMPATIBLE_CODECS_ERROR, + fatal: !0, + error: e, + reason: e.message + }); + } + } + createSourceBuffers() { + const { + tracks: e, + sourceBuffers: t, + mediaSource: i + } = this; + if (!i) + throw new Error("createSourceBuffers called when mediaSource was null"); + for (const s in e) { + const a = s, o = e[a]; + if (this.isPending(o)) { + const l = this.getTrackCodec(o, a), u = `${o.container};codecs=${l}`; + o.codec = l, this.log(`creating sourceBuffer(${u})${this.currentOp(a) ? " Queued" : ""} ${it(o)}`); + try { + const c = i.addSourceBuffer(u), h = _o(a), d = [a, c]; + t[h] = d, o.buffer = c; + } catch (c) { + var r; + this.error(`error while trying to add sourceBuffer: ${c.message}`), this.shiftAndExecuteNext(a), (r = this.operationQueue) == null || r.removeBlockers(), delete this.tracks[a], this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_ADD_CODEC_ERROR, + fatal: !1, + error: c, + sourceBufferName: a, + mimeType: u, + parent: o.id + }); + return; + } + this.trackSourceBuffer(a, o); + } + } + this.bufferCreated(); + } + getTrackCodec(e, t) { + const i = e.supplemental; + let r = e.codec; + i && (t === "video" || t === "audiovideo") && cl(i, "video") && (r = sg(r, i)); + const s = sa(r, e.levelCodec); + return s ? t.slice(0, 5) === "audio" ? _a(s, this.appendSource) : s : ""; + } + trackSourceBuffer(e, t) { + const i = t.buffer; + if (!i) + return; + const r = this.getTrackCodec(t, e); + this.tracks[e] = { + buffer: i, + codec: r, + container: t.container, + levelCodec: t.levelCodec, + supplemental: t.supplemental, + metadata: t.metadata, + id: t.id, + listeners: [] + }, this.removeBufferListeners(e), this.addBufferListener(e, "updatestart", this.onSBUpdateStart), this.addBufferListener(e, "updateend", this.onSBUpdateEnd), this.addBufferListener(e, "error", this.onSBUpdateError), this.appendSource && this.addBufferListener(e, "bufferedchange", (s, a) => { + const o = a.removedRanges; + o != null && o.length && this.hls.trigger(S.BUFFER_FLUSHED, { + type: s + }); + }); + } + get mediaSrc() { + var e, t; + const i = ((e = this.media) == null || (t = e.querySelector) == null ? void 0 : t.call(e, "source")) || this.media; + return i == null ? void 0 : i.src; + } + onSBUpdateStart(e) { + const t = this.currentOp(e); + t && t.onStart(); + } + onSBUpdateEnd(e) { + var t; + if (((t = this.mediaSource) == null ? void 0 : t.readyState) === "closed") { + this.resetBuffer(e); + return; + } + const i = this.currentOp(e); + i && (i.onComplete(), this.shiftAndExecuteNext(e)); + } + onSBUpdateError(e, t) { + var i; + const r = new Error(`${e} SourceBuffer error. MediaSource readyState: ${(i = this.mediaSource) == null ? void 0 : i.readyState}`); + this.error(`${r}`, t), this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_APPENDING_ERROR, + sourceBufferName: e, + error: r, + fatal: !1 + }); + const s = this.currentOp(e); + s && s.onError(r); + } + // This method must result in an updateend event; if remove is not called, onSBUpdateEnd must be called manually + removeExecutor(e, t, i) { + const { + media: r, + mediaSource: s + } = this, a = this.tracks[e], o = a == null ? void 0 : a.buffer; + if (!r || !s || !o) { + this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`), this.shiftAndExecuteNext(e); + return; + } + const l = se(r.duration) ? r.duration : 1 / 0, u = se(s.duration) ? s.duration : 1 / 0, c = Math.max(0, t), h = Math.min(i, l, u); + h > c && (!a.ending || a.ended) ? (a.ended = !1, this.log(`Removing [${c},${h}] from the ${e} SourceBuffer`), o.remove(c, h)) : this.shiftAndExecuteNext(e); + } + // This method must result in an updateend event; if append is not called, onSBUpdateEnd must be called manually + appendExecutor(e, t) { + const i = this.tracks[t], r = i == null ? void 0 : i.buffer; + if (!r) + throw new o4(`Attempting to append to the ${t} SourceBuffer, but it does not exist`); + i.ending = !1, i.ended = !1, r.appendBuffer(e); + } + blockUntilOpen(e) { + if (this.isUpdating() || this.isQueued()) + this.blockBuffers(e).catch((t) => { + this.warn(`SourceBuffer blocked callback ${t}`), this.stepOperationQueue(this.sourceBufferTypes); + }); + else + try { + e(); + } catch (t) { + this.warn(`Callback run without blocking ${this.operationQueue} ${t}`); + } + } + isUpdating() { + return this.sourceBuffers.some(([e, t]) => e && t.updating); + } + isQueued() { + return this.sourceBuffers.some(([e]) => e && !!this.currentOp(e)); + } + isPending(e) { + return !!e && !e.buffer; + } + // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises + // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue + // upon completion, since we already do it here + blockBuffers(e, t = this.sourceBufferTypes) { + if (!t.length) + return this.log("Blocking operation requested, but no SourceBuffers exist"), Promise.resolve().then(e); + const { + operationQueue: i + } = this, r = t.map((a) => this.appendBlocker(a)); + return t.length > 1 && !!this.blockedAudioAppend && this.unblockAudio(), Promise.all(r).then((a) => { + i === this.operationQueue && (e(), this.stepOperationQueue(this.sourceBufferTypes)); + }); + } + stepOperationQueue(e) { + e.forEach((t) => { + var i; + const r = (i = this.tracks[t]) == null ? void 0 : i.buffer; + !r || r.updating || this.shiftAndExecuteNext(t); + }); + } + append(e, t, i) { + this.operationQueue && this.operationQueue.append(e, t, i); + } + appendBlocker(e) { + if (this.operationQueue) + return this.operationQueue.appendBlocker(e); + } + currentOp(e) { + return this.operationQueue ? this.operationQueue.current(e) : null; + } + executeNext(e) { + e && this.operationQueue && this.operationQueue.executeNext(e); + } + shiftAndExecuteNext(e) { + this.operationQueue && this.operationQueue.shiftAndExecuteNext(e); + } + get pendingTrackCount() { + return Object.keys(this.tracks).reduce((e, t) => e + (this.isPending(this.tracks[t]) ? 1 : 0), 0); + } + get sourceBufferCount() { + return this.sourceBuffers.reduce((e, [t]) => e + (t ? 1 : 0), 0); + } + get sourceBufferTypes() { + return this.sourceBuffers.map(([e]) => e).filter((e) => !!e); + } + addBufferListener(e, t, i) { + const r = this.tracks[e]; + if (!r) + return; + const s = r.buffer; + if (!s) + return; + const a = i.bind(this, e); + r.listeners.push({ + event: t, + listener: a + }), s.addEventListener(t, a); + } + removeBufferListeners(e) { + const t = this.tracks[e]; + if (!t) + return; + const i = t.buffer; + i && (t.listeners.forEach((r) => { + i.removeEventListener(r.event, r.listener); + }), t.listeners.length = 0); + } +} +function Yu(n) { + const e = n.querySelectorAll("source"); + [].slice.call(e).forEach((t) => { + n.removeChild(t); + }); +} +function u4(n, e) { + const t = self.document.createElement("source"); + t.type = "video/mp4", t.src = e, n.appendChild(t); +} +function _o(n) { + return n === "audio" ? 1 : 0; +} +class s0 { + constructor(e) { + this.hls = void 0, this.autoLevelCapping = void 0, this.firstLevel = void 0, this.media = void 0, this.restrictedLevels = void 0, this.timer = void 0, this.clientRect = void 0, this.streamController = void 0, this.hls = e, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.firstLevel = -1, this.media = null, this.restrictedLevels = [], this.timer = void 0, this.clientRect = null, this.registerListeners(); + } + setStreamController(e) { + this.streamController = e; + } + destroy() { + this.hls && this.unregisterListener(), this.timer && this.stopCapping(), this.media = null, this.clientRect = null, this.hls = this.streamController = null; + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(S.BUFFER_CODECS, this.onBufferCodecs, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this); + } + unregisterListener() { + const { + hls: e + } = this; + e.off(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(S.BUFFER_CODECS, this.onBufferCodecs, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this); + } + onFpsDropLevelCapping(e, t) { + const i = this.hls.levels[t.droppedLevel]; + this.isLevelAllowed(i) && this.restrictedLevels.push({ + bitrate: i.bitrate, + height: i.height, + width: i.width + }); + } + onMediaAttaching(e, t) { + this.media = t.media instanceof HTMLVideoElement ? t.media : null, this.clientRect = null, this.timer && this.hls.levels.length && this.detectPlayerSize(); + } + onManifestParsed(e, t) { + const i = this.hls; + this.restrictedLevels = [], this.firstLevel = t.firstLevel, i.config.capLevelToPlayerSize && t.video && this.startCapping(); + } + onLevelsUpdated(e, t) { + this.timer && se(this.autoLevelCapping) && this.detectPlayerSize(); + } + // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted + // to the first level + onBufferCodecs(e, t) { + this.hls.config.capLevelToPlayerSize && t.video && this.startCapping(); + } + onMediaDetaching() { + this.stopCapping(), this.media = null; + } + detectPlayerSize() { + if (this.media) { + if (this.mediaHeight <= 0 || this.mediaWidth <= 0) { + this.clientRect = null; + return; + } + const e = this.hls.levels; + if (e.length) { + const t = this.hls, i = this.getMaxLevel(e.length - 1); + i !== this.autoLevelCapping && t.logger.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`), t.autoLevelCapping = i, t.autoLevelEnabled && t.autoLevelCapping > this.autoLevelCapping && this.streamController && this.streamController.nextLevelSwitch(), this.autoLevelCapping = t.autoLevelCapping; + } + } + } + /* + * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled) + */ + getMaxLevel(e) { + const t = this.hls.levels; + if (!t.length) + return -1; + const i = t.filter((r, s) => this.isLevelAllowed(r) && s <= e); + return this.clientRect = null, s0.getMaxLevelByMediaSize(i, this.mediaWidth, this.mediaHeight); + } + startCapping() { + this.timer || (this.autoLevelCapping = Number.POSITIVE_INFINITY, self.clearInterval(this.timer), this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3), this.detectPlayerSize()); + } + stopCapping() { + this.restrictedLevels = [], this.firstLevel = -1, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.timer && (self.clearInterval(this.timer), this.timer = void 0); + } + getDimensions() { + if (this.clientRect) + return this.clientRect; + const e = this.media, t = { + width: 0, + height: 0 + }; + if (e) { + const i = e.getBoundingClientRect(); + t.width = i.width, t.height = i.height, !t.width && !t.height && (t.width = i.right - i.left || e.width || 0, t.height = i.bottom - i.top || e.height || 0); + } + return this.clientRect = t, t; + } + get mediaWidth() { + return this.getDimensions().width * this.contentScaleFactor; + } + get mediaHeight() { + return this.getDimensions().height * this.contentScaleFactor; + } + get contentScaleFactor() { + let e = 1; + if (!this.hls.config.ignoreDevicePixelRatio) + try { + e = self.devicePixelRatio; + } catch { + } + return Math.min(e, this.hls.config.maxDevicePixelRatio); + } + isLevelAllowed(e) { + return !this.restrictedLevels.some((i) => e.bitrate === i.bitrate && e.width === i.width && e.height === i.height); + } + static getMaxLevelByMediaSize(e, t, i) { + if (!(e != null && e.length)) + return -1; + const r = (o, l) => l ? o.width !== l.width || o.height !== l.height : !0; + let s = e.length - 1; + const a = Math.max(t, i); + for (let o = 0; o < e.length; o += 1) { + const l = e[o]; + if ((l.width >= a || l.height >= a) && r(l, e[o + 1])) { + s = o; + break; + } + } + return s; + } +} +const c4 = { + /** + * text file, such as a manifest or playlist + */ + MANIFEST: "m", + /** + * audio only + */ + AUDIO: "a", + /** + * video only + */ + VIDEO: "v", + /** + * muxed audio and video + */ + MUXED: "av", + /** + * init segment + */ + INIT: "i", + /** + * caption or subtitle + */ + CAPTION: "c", + /** + * ISOBMFF timed text track + */ + TIMED_TEXT: "tt", + /** + * cryptographic key, license or certificate. + */ + KEY: "k", + /** + * other + */ + OTHER: "o" +}, Yt = c4, h4 = { + /** + * HTTP Live Streaming (HLS) + */ + HLS: "h" +}, d4 = h4, f4 = "CMCD-Object", m4 = "CMCD-Request", g4 = "CMCD-Session", p4 = "CMCD-Status", Un = { + /** + * keys whose values vary with the object being requested. + */ + OBJECT: f4, + /** + * keys whose values vary with each request. + */ + REQUEST: m4, + /** + * keys whose values are expected to be invariant over the life of the session. + */ + SESSION: g4, + /** + * keys whose values do not vary with every request or object. + */ + STATUS: p4 +}, v4 = { + [Un.OBJECT]: ["br", "d", "ot", "tb"], + [Un.REQUEST]: ["bl", "dl", "mtp", "nor", "nrr", "su"], + [Un.SESSION]: ["cid", "pr", "sf", "sid", "st", "v"], + [Un.STATUS]: ["bs", "rtp"] +}; +class Sn { + constructor(e, t) { + Array.isArray(e) && (e = e.map((i) => i instanceof Sn ? i : new Sn(i))), this.value = e, this.params = t; + } +} +const y4 = "Dict"; +function _4(n) { + return Array.isArray(n) ? JSON.stringify(n) : n instanceof Map ? "Map{}" : n instanceof Set ? "Set{}" : typeof n == "object" ? JSON.stringify(n) : String(n); +} +function b4(n, e, t, i) { + return new Error(`failed to ${n} "${_4(e)}" as ${t}`, { + cause: i + }); +} +function Ji(n, e, t) { + return b4("serialize", n, e, t); +} +class df { + constructor(e) { + this.description = e; + } +} +const Wu = "Bare Item", E4 = "Boolean"; +function S4(n) { + if (typeof n != "boolean") + throw Ji(n, E4); + return n ? "?1" : "?0"; +} +function T4(n) { + return btoa(String.fromCharCode(...n)); +} +const x4 = "Byte Sequence"; +function A4(n) { + if (ArrayBuffer.isView(n) === !1) + throw Ji(n, x4); + return `:${T4(n)}:`; +} +const D4 = "Integer"; +function w4(n) { + return n < -999999999999999 || 999999999999999 < n; +} +function ff(n) { + if (w4(n)) + throw Ji(n, D4); + return n.toString(); +} +function k4(n) { + return `@${ff(n.getTime() / 1e3)}`; +} +function mf(n, e) { + if (n < 0) + return -mf(-n, e); + const t = Math.pow(10, e); + if (Math.abs(n * t % 1 - 0.5) < Number.EPSILON) { + const r = Math.floor(n * t); + return (r % 2 === 0 ? r : r + 1) / t; + } else + return Math.round(n * t) / t; +} +const L4 = "Decimal"; +function I4(n) { + const e = mf(n, 3); + if (Math.floor(Math.abs(e)).toString().length > 12) + throw Ji(n, L4); + const t = e.toString(); + return t.includes(".") ? t : `${t}.0`; +} +const R4 = "String", C4 = /[\x00-\x1f\x7f]+/; +function F4(n) { + if (C4.test(n)) + throw Ji(n, R4); + return `"${n.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`; +} +function P4(n) { + return n.description || n.toString().slice(7, -1); +} +const M4 = "Token"; +function ju(n) { + const e = P4(n); + if (/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e) === !1) + throw Ji(e, M4); + return e; +} +function _l(n) { + switch (typeof n) { + case "number": + if (!se(n)) + throw Ji(n, Wu); + return Number.isInteger(n) ? ff(n) : I4(n); + case "string": + return F4(n); + case "symbol": + return ju(n); + case "boolean": + return S4(n); + case "object": + if (n instanceof Date) + return k4(n); + if (n instanceof Uint8Array) + return A4(n); + if (n instanceof df) + return ju(n); + default: + throw Ji(n, Wu); + } +} +const O4 = "Key"; +function bl(n) { + if (/^[a-z*][a-z0-9\-_.*]*$/.test(n) === !1) + throw Ji(n, O4); + return n; +} +function a0(n) { + return n == null ? "" : Object.entries(n).map(([e, t]) => t === !0 ? `;${bl(e)}` : `;${bl(e)}=${_l(t)}`).join(""); +} +function gf(n) { + return n instanceof Sn ? `${_l(n.value)}${a0(n.params)}` : _l(n); +} +function $4(n) { + return `(${n.value.map(gf).join(" ")})${a0(n.params)}`; +} +function B4(n, e = { + whitespace: !0 +}) { + if (typeof n != "object") + throw Ji(n, y4); + const t = n instanceof Map ? n.entries() : Object.entries(n), i = e != null && e.whitespace ? " " : ""; + return Array.from(t).map(([r, s]) => { + s instanceof Sn || (s = new Sn(s)); + let a = bl(r); + return s.value === !0 ? a += a0(s.params) : (a += "=", Array.isArray(s.value) ? a += $4(s) : a += gf(s)), a; + }).join(`,${i}`); +} +function N4(n, e) { + return B4(n, e); +} +function U4(n) { + return n === "ot" || n === "sf" || n === "st"; +} +function G4(n) { + return typeof n == "number" ? se(n) : n != null && n !== "" && n !== !1; +} +function z4(n, e) { + const t = new URL(n), i = new URL(e); + if (t.origin !== i.origin) + return n; + const r = t.pathname.split("/").slice(1), s = i.pathname.split("/").slice(1, -1); + for (; r[0] === s[0]; ) + r.shift(), s.shift(); + for (; s.length; ) + s.shift(), r.unshift(".."); + return r.join("/"); +} +const ca = (n) => Math.round(n), q4 = (n, e) => (e != null && e.baseUrl && (n = z4(n, e.baseUrl)), encodeURIComponent(n)), Fs = (n) => ca(n / 100) * 100, H4 = { + /** + * Bitrate (kbps) rounded integer + */ + br: ca, + /** + * Duration (milliseconds) rounded integer + */ + d: ca, + /** + * Buffer Length (milliseconds) rounded nearest 100ms + */ + bl: Fs, + /** + * Deadline (milliseconds) rounded nearest 100ms + */ + dl: Fs, + /** + * Measured Throughput (kbps) rounded nearest 100kbps + */ + mtp: Fs, + /** + * Next Object Request URL encoded + */ + nor: q4, + /** + * Requested maximum throughput (kbps) rounded nearest 100kbps + */ + rtp: Fs, + /** + * Top Bitrate (kbps) rounded integer + */ + tb: ca +}; +function V4(n, e) { + const t = {}; + if (n == null || typeof n != "object") + return t; + const i = Object.keys(n).sort(), r = Ye({}, H4, e == null ? void 0 : e.formatters), s = e == null ? void 0 : e.filter; + return i.forEach((a) => { + if (s != null && s(a)) + return; + let o = n[a]; + const l = r[a]; + l && (o = l(o, e)), !(a === "v" && o === 1) && (a == "pr" && o === 1 || G4(o) && (U4(a) && typeof o == "string" && (o = new df(o)), t[a] = o)); + }), t; +} +function pf(n, e = {}) { + return n ? N4(V4(n, e), Ye({ + whitespace: !1 + }, e)) : ""; +} +function K4(n, e = {}) { + const t = {}; + if (!n) + return t; + const i = Object.entries(n), r = Object.entries(v4).concat(Object.entries((e == null ? void 0 : e.customHeaderMap) || {})), s = i.reduce((a, o) => { + var l, u; + const [c, h] = o, d = ((l = r.find((f) => f[1].includes(c))) === null || l === void 0 ? void 0 : l[0]) || Un.REQUEST; + return (u = a[d]) !== null && u !== void 0 || (a[d] = {}), a[d][c] = h, a; + }, {}); + return Object.entries(s).reduce((a, [o, l]) => (a[o] = pf(l, e), a), t); +} +function Y4(n, e, t) { + return Ye(n, K4(e, t)); +} +const W4 = "CMCD"; +function j4(n, e = {}) { + if (!n) + return ""; + const t = pf(n, e); + return `${W4}=${encodeURIComponent(t)}`; +} +const Xu = /CMCD=[^&#]+/; +function X4(n, e, t) { + const i = j4(e, t); + if (!i) + return n; + if (Xu.test(n)) + return n.replace(Xu, i); + const r = n.includes("?") ? "&" : "?"; + return `${n}${r}${i}`; +} +class Q4 { + constructor(e) { + this.hls = void 0, this.config = void 0, this.media = void 0, this.sid = void 0, this.cid = void 0, this.useHeaders = !1, this.includeKeys = void 0, this.initialized = !1, this.starved = !1, this.buffering = !0, this.audioBuffer = void 0, this.videoBuffer = void 0, this.onWaiting = () => { + this.initialized && (this.starved = !0), this.buffering = !0; + }, this.onPlaying = () => { + this.initialized || (this.initialized = !0), this.buffering = !1; + }, this.applyPlaylistData = (r) => { + try { + this.apply(r, { + ot: Yt.MANIFEST, + su: !this.initialized + }); + } catch (s) { + this.hls.logger.warn("Could not generate manifest CMCD data.", s); + } + }, this.applyFragmentData = (r) => { + try { + const { + frag: s, + part: a + } = r, o = this.hls.levels[s.level], l = this.getObjectType(s), u = { + d: (a || s).duration * 1e3, + ot: l + }; + (l === Yt.VIDEO || l === Yt.AUDIO || l == Yt.MUXED) && (u.br = o.bitrate / 1e3, u.tb = this.getTopBandwidth(l) / 1e3, u.bl = this.getBufferLength(l)); + const c = a ? this.getNextPart(a) : this.getNextFrag(s); + c != null && c.url && c.url !== s.url && (u.nor = c.url), this.apply(r, u); + } catch (s) { + this.hls.logger.warn("Could not generate segment CMCD data.", s); + } + }, this.hls = e; + const t = this.config = e.config, { + cmcd: i + } = t; + i != null && (t.pLoader = this.createPlaylistLoader(), t.fLoader = this.createFragmentLoader(), this.sid = i.sessionId || e.sessionId, this.cid = i.contentId, this.useHeaders = i.useHeaders === !0, this.includeKeys = i.includeKeys, this.registerListeners()); + } + registerListeners() { + const e = this.hls; + e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHED, this.onMediaDetached, this), e.on(S.BUFFER_CREATED, this.onBufferCreated, this); + } + unregisterListeners() { + const e = this.hls; + e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHED, this.onMediaDetached, this), e.off(S.BUFFER_CREATED, this.onBufferCreated, this); + } + destroy() { + this.unregisterListeners(), this.onMediaDetached(), this.hls = this.config = this.audioBuffer = this.videoBuffer = null, this.onWaiting = this.onPlaying = this.media = null; + } + onMediaAttached(e, t) { + this.media = t.media, this.media.addEventListener("waiting", this.onWaiting), this.media.addEventListener("playing", this.onPlaying); + } + onMediaDetached() { + this.media && (this.media.removeEventListener("waiting", this.onWaiting), this.media.removeEventListener("playing", this.onPlaying), this.media = null); + } + onBufferCreated(e, t) { + var i, r; + this.audioBuffer = (i = t.tracks.audio) == null ? void 0 : i.buffer, this.videoBuffer = (r = t.tracks.video) == null ? void 0 : r.buffer; + } + /** + * Create baseline CMCD data + */ + createData() { + var e; + return { + v: 1, + sf: d4.HLS, + sid: this.sid, + cid: this.cid, + pr: (e = this.media) == null ? void 0 : e.playbackRate, + mtp: this.hls.bandwidthEstimate / 1e3 + }; + } + /** + * Apply CMCD data to a request. + */ + apply(e, t = {}) { + Ye(t, this.createData()); + const i = t.ot === Yt.INIT || t.ot === Yt.VIDEO || t.ot === Yt.MUXED; + this.starved && i && (t.bs = !0, t.su = !0, this.starved = !1), t.su == null && (t.su = this.buffering); + const { + includeKeys: r + } = this; + r && (t = Object.keys(t).reduce((a, o) => (r.includes(o) && (a[o] = t[o]), a), {})); + const s = { + baseUrl: e.url + }; + this.useHeaders ? (e.headers || (e.headers = {}), Y4(e.headers, t, s)) : e.url = X4(e.url, t, s); + } + getNextFrag(e) { + var t; + const i = (t = this.hls.levels[e.level]) == null ? void 0 : t.details; + if (i) { + const r = e.sn - i.startSN; + return i.fragments[r + 1]; + } + } + getNextPart(e) { + var t, i; + const { + index: r, + fragment: s + } = e, a = (t = this.hls.levels[s.level]) == null || (i = t.details) == null ? void 0 : i.partList; + if (a) { + const { + sn: o + } = s; + for (let l = a.length - 1; l >= 0; l--) { + const u = a[l]; + if (u.index === r && u.fragment.sn === o) + return a[l + 1]; + } + } + } + /** + * The CMCD object type. + */ + getObjectType(e) { + const { + type: t + } = e; + if (t === "subtitle") + return Yt.TIMED_TEXT; + if (e.sn === "initSegment") + return Yt.INIT; + if (t === "audio") + return Yt.AUDIO; + if (t === "main") + return this.hls.audioTracks.length ? Yt.VIDEO : Yt.MUXED; + } + /** + * Get the highest bitrate. + */ + getTopBandwidth(e) { + let t = 0, i; + const r = this.hls; + if (e === Yt.AUDIO) + i = r.audioTracks; + else { + const s = r.maxAutoLevel, a = s > -1 ? s + 1 : r.levels.length; + i = r.levels.slice(0, a); + } + return i.forEach((s) => { + s.bitrate > t && (t = s.bitrate); + }), t > 0 ? t : NaN; + } + /** + * Get the buffer length for a media type in milliseconds + */ + getBufferLength(e) { + const t = this.media, i = e === Yt.AUDIO ? this.audioBuffer : this.videoBuffer; + return !i || !t ? NaN : De.bufferInfo(i, t.currentTime, this.config.maxBufferHole).len * 1e3; + } + /** + * Create a playlist loader + */ + createPlaylistLoader() { + const { + pLoader: e + } = this.config, t = this.applyPlaylistData, i = e || this.config.loader; + return class { + constructor(s) { + this.loader = void 0, this.loader = new i(s); + } + get stats() { + return this.loader.stats; + } + get context() { + return this.loader.context; + } + destroy() { + this.loader.destroy(); + } + abort() { + this.loader.abort(); + } + load(s, a, o) { + t(s), this.loader.load(s, a, o); + } + }; + } + /** + * Create a playlist loader + */ + createFragmentLoader() { + const { + fLoader: e + } = this.config, t = this.applyFragmentData, i = e || this.config.loader; + return class { + constructor(s) { + this.loader = void 0, this.loader = new i(s); + } + get stats() { + return this.loader.stats; + } + get context() { + return this.loader.context; + } + destroy() { + this.loader.destroy(); + } + abort() { + this.loader.abort(); + } + load(s, a, o) { + t(s), this.loader.load(s, a, o); + } + }; + } +} +const Z4 = 3e5; +class J4 extends br { + constructor(e) { + super("content-steering", e.logger), this.hls = void 0, this.loader = null, this.uri = null, this.pathwayId = ".", this._pathwayPriority = null, this.timeToLoad = 300, this.reloadTimer = -1, this.updated = 0, this.started = !1, this.enabled = !0, this.levels = null, this.audioTracks = null, this.subtitleTracks = null, this.penalizedPathways = {}, this.hls = e, this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.ERROR, this.onError, this)); + } + pathways() { + return (this.levels || []).reduce((e, t) => (e.indexOf(t.pathwayId) === -1 && e.push(t.pathwayId), e), []); + } + get pathwayPriority() { + return this._pathwayPriority; + } + set pathwayPriority(e) { + this.updatePathwayPriority(e); + } + startLoad() { + if (this.started = !0, this.clearTimeout(), this.enabled && this.uri) { + if (this.updated) { + const e = this.timeToLoad * 1e3 - (performance.now() - this.updated); + if (e > 0) { + this.scheduleRefresh(this.uri, e); + return; + } + } + this.loadSteeringManifest(this.uri); + } + } + stopLoad() { + this.started = !1, this.loader && (this.loader.destroy(), this.loader = null), this.clearTimeout(); + } + clearTimeout() { + this.reloadTimer !== -1 && (self.clearTimeout(this.reloadTimer), this.reloadTimer = -1); + } + destroy() { + this.unregisterListeners(), this.stopLoad(), this.hls = null, this.levels = this.audioTracks = this.subtitleTracks = null; + } + removeLevel(e) { + const t = this.levels; + t && (this.levels = t.filter((i) => i !== e)); + } + onManifestLoading() { + this.stopLoad(), this.enabled = !0, this.timeToLoad = 300, this.updated = 0, this.uri = null, this.pathwayId = ".", this.levels = this.audioTracks = this.subtitleTracks = null; + } + onManifestLoaded(e, t) { + const { + contentSteering: i + } = t; + i !== null && (this.pathwayId = i.pathwayId, this.uri = i.uri, this.started && this.startLoad()); + } + onManifestParsed(e, t) { + this.audioTracks = t.audioTracks, this.subtitleTracks = t.subtitleTracks; + } + onError(e, t) { + const { + errorAction: i + } = t; + if ((i == null ? void 0 : i.action) === Nt.SendAlternateToPenaltyBox && i.flags === Ii.MoveAllAlternatesMatchingHost) { + const r = this.levels; + let s = this._pathwayPriority, a = this.pathwayId; + if (t.context) { + const { + groupId: o, + pathwayId: l, + type: u + } = t.context; + o && r ? a = this.getPathwayForGroupId(o, u, a) : l && (a = l); + } + a in this.penalizedPathways || (this.penalizedPathways[a] = performance.now()), !s && r && (s = this.pathways()), s && s.length > 1 && (this.updatePathwayPriority(s), i.resolved = this.pathwayId !== a), i.resolved || this.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${a} levels: ${r && r.length} priorities: ${it(s)} penalized: ${it(this.penalizedPathways)}`); + } + } + filterParsedLevels(e) { + this.levels = e; + let t = this.getLevelsForPathway(this.pathwayId); + if (t.length === 0) { + const i = e[0].pathwayId; + this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`), t = this.getLevelsForPathway(i), this.pathwayId = i; + } + return t.length !== e.length && this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`), t; + } + getLevelsForPathway(e) { + return this.levels === null ? [] : this.levels.filter((t) => e === t.pathwayId); + } + updatePathwayPriority(e) { + this._pathwayPriority = e; + let t; + const i = this.penalizedPathways, r = performance.now(); + Object.keys(i).forEach((s) => { + r - i[s] > Z4 && delete i[s]; + }); + for (let s = 0; s < e.length; s++) { + const a = e[s]; + if (a in i) + continue; + if (a === this.pathwayId) + return; + const o = this.hls.nextLoadLevel, l = this.hls.levels[o]; + if (t = this.getLevelsForPathway(a), t.length > 0) { + this.log(`Setting Pathway to "${a}"`), this.pathwayId = a, Ud(t), this.hls.trigger(S.LEVELS_UPDATED, { + levels: t + }); + const u = this.hls.levels[o]; + l && u && this.levels && (u.attrs["STABLE-VARIANT-ID"] !== l.attrs["STABLE-VARIANT-ID"] && u.bitrate !== l.bitrate && this.log(`Unstable Pathways change from bitrate ${l.bitrate} to ${u.bitrate}`), this.hls.nextLoadLevel = o); + break; + } + } + } + getPathwayForGroupId(e, t, i) { + const r = this.getLevelsForPathway(i).concat(this.levels || []); + for (let s = 0; s < r.length; s++) + if (t === Ce.AUDIO_TRACK && r[s].hasAudioGroup(e) || t === Ce.SUBTITLE_TRACK && r[s].hasSubtitleGroup(e)) + return r[s].pathwayId; + return i; + } + clonePathways(e) { + const t = this.levels; + if (!t) + return; + const i = {}, r = {}; + e.forEach((s) => { + const { + ID: a, + "BASE-ID": o, + "URI-REPLACEMENT": l + } = s; + if (t.some((c) => c.pathwayId === a)) + return; + const u = this.getLevelsForPathway(o).map((c) => { + const h = new st(c.attrs); + h["PATHWAY-ID"] = a; + const d = h.AUDIO && `${h.AUDIO}_clone_${a}`, f = h.SUBTITLES && `${h.SUBTITLES}_clone_${a}`; + d && (i[h.AUDIO] = d, h.AUDIO = d), f && (r[h.SUBTITLES] = f, h.SUBTITLES = f); + const m = vf(c.uri, h["STABLE-VARIANT-ID"], "PER-VARIANT-URIS", l), p = new Jn({ + attrs: h, + audioCodec: c.audioCodec, + bitrate: c.bitrate, + height: c.height, + name: c.name, + url: m, + videoCodec: c.videoCodec, + width: c.width + }); + if (c.audioGroups) + for (let v = 1; v < c.audioGroups.length; v++) + p.addGroupId("audio", `${c.audioGroups[v]}_clone_${a}`); + if (c.subtitleGroups) + for (let v = 1; v < c.subtitleGroups.length; v++) + p.addGroupId("text", `${c.subtitleGroups[v]}_clone_${a}`); + return p; + }); + t.push(...u), Qu(this.audioTracks, i, l, a), Qu(this.subtitleTracks, r, l, a); + }); + } + loadSteeringManifest(e) { + const t = this.hls.config, i = t.loader; + this.loader && this.loader.destroy(), this.loader = new i(t); + let r; + try { + r = new self.URL(e); + } catch { + this.enabled = !1, this.log(`Failed to parse Steering Manifest URI: ${e}`); + return; + } + if (r.protocol !== "data:") { + const c = (this.hls.bandwidthEstimate || t.abrEwmaDefaultEstimate) | 0; + r.searchParams.set("_HLS_pathway", this.pathwayId), r.searchParams.set("_HLS_throughput", "" + c); + } + const s = { + responseType: "json", + url: r.href + }, a = t.steeringManifestLoadPolicy.default, o = a.errorRetry || a.timeoutRetry || {}, l = { + loadPolicy: a, + timeout: a.maxLoadTimeMs, + maxRetry: o.maxNumRetry || 0, + retryDelay: o.retryDelayMs || 0, + maxRetryDelay: o.maxRetryDelayMs || 0 + }, u = { + onSuccess: (c, h, d, f) => { + this.log(`Loaded steering manifest: "${r}"`); + const m = c.data; + if ((m == null ? void 0 : m.VERSION) !== 1) { + this.log(`Steering VERSION ${m.VERSION} not supported!`); + return; + } + this.updated = performance.now(), this.timeToLoad = m.TTL; + const { + "RELOAD-URI": p, + "PATHWAY-CLONES": v, + "PATHWAY-PRIORITY": b + } = m; + if (p) + try { + this.uri = new self.URL(p, r).href; + } catch { + this.enabled = !1, this.log(`Failed to parse Steering Manifest RELOAD-URI: ${p}`); + return; + } + this.scheduleRefresh(this.uri || d.url), v && this.clonePathways(v); + const E = { + steeringManifest: m, + url: r.toString() + }; + this.hls.trigger(S.STEERING_MANIFEST_LOADED, E), b && this.updatePathwayPriority(b); + }, + onError: (c, h, d, f) => { + if (this.log(`Error loading steering manifest: ${c.code} ${c.text} (${h.url})`), this.stopLoad(), c.code === 410) { + this.enabled = !1, this.log(`Steering manifest ${h.url} no longer available`); + return; + } + let m = this.timeToLoad * 1e3; + if (c.code === 429) { + const p = this.loader; + if (typeof (p == null ? void 0 : p.getResponseHeader) == "function") { + const v = p.getResponseHeader("Retry-After"); + v && (m = parseFloat(v) * 1e3); + } + this.log(`Steering manifest ${h.url} rate limited`); + return; + } + this.scheduleRefresh(this.uri || h.url, m); + }, + onTimeout: (c, h, d) => { + this.log(`Timeout loading steering manifest (${h.url})`), this.scheduleRefresh(this.uri || h.url); + } + }; + this.log(`Requesting steering manifest: ${r}`), this.loader.load(s, l, u); + } + scheduleRefresh(e, t = this.timeToLoad * 1e3) { + this.clearTimeout(), this.reloadTimer = self.setTimeout(() => { + var i; + const r = (i = this.hls) == null ? void 0 : i.media; + if (r && !r.ended) { + this.loadSteeringManifest(e); + return; + } + this.scheduleRefresh(e, this.timeToLoad * 1e3); + }, t); + } +} +function Qu(n, e, t, i) { + n && Object.keys(e).forEach((r) => { + const s = n.filter((a) => a.groupId === r).map((a) => { + const o = Ye({}, a); + return o.details = void 0, o.attrs = new st(o.attrs), o.url = o.attrs.URI = vf(a.url, a.attrs["STABLE-RENDITION-ID"], "PER-RENDITION-URIS", t), o.groupId = o.attrs["GROUP-ID"] = e[r], o.attrs["PATHWAY-ID"] = i, o; + }); + n.push(...s); + }); +} +function vf(n, e, t, i) { + const { + HOST: r, + PARAMS: s, + [t]: a + } = i; + let o; + e && (o = a == null ? void 0 : a[e], o && (n = o)); + const l = new self.URL(n); + return r && !o && (l.host = r), s && Object.keys(s).sort().forEach((u) => { + u && l.searchParams.set(u, s[u]); + }), l.href; +} +function ii(n, e, t) { + fi(n, e, t), n.addEventListener(e, t); +} +function fi(n, e, t) { + n.removeEventListener(e, t); +} +class pn extends br { + constructor(e) { + super("eme", e.logger), this.hls = void 0, this.config = void 0, this.media = null, this.keyFormatPromise = null, this.keySystemAccessPromises = {}, this._requestLicenseFailureCount = 0, this.mediaKeySessions = [], this.keyIdToKeySessionPromise = {}, this.mediaKeys = null, this.setMediaKeysQueue = pn.CDMCleanupPromise ? [pn.CDMCleanupPromise] : [], this.onMediaEncrypted = (t) => { + const { + initDataType: i, + initData: r + } = t, s = `"${t.type}" event: init data type: "${i}"`; + if (this.debug(s), r !== null) { + if (!this.keyFormatPromise) { + let a = Object.keys(this.keySystemAccessPromises); + a.length || (a = Nn(this.config)); + const o = a.map(ks).filter((l) => !!l); + this.keyFormatPromise = this.getKeyFormatPromise(o); + } + this.keyFormatPromise.then((a) => { + const o = oa(a); + let l, u; + if (i === "sinf") { + if (o !== Ve.FAIRPLAY) { + this.warn(`Ignoring unexpected "${t.type}" event with init data type: "${i}" for selected key-system ${o}`); + return; + } + const m = _t(new Uint8Array(r)); + try { + const p = jl(JSON.parse(m).sinf), v = vd(p); + if (!v) + throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc"); + l = new Uint8Array(v.subarray(8, 24)), u = Ve.FAIRPLAY; + } catch (p) { + this.warn(`${s} Failed to parse sinf: ${p}`); + return; + } + } else { + if (o !== Ve.WIDEVINE && o !== Ve.PLAYREADY) { + this.warn(`Ignoring unexpected "${t.type}" event with init data type: "${i}" for selected key-system ${o}`); + return; + } + const m = tg(r), p = m.filter((b) => !!b.systemId && co(b.systemId) === o); + p.length > 1 && this.warn(`${s} Using first of ${p.length} pssh found for selected key-system ${o}`); + const v = p[0]; + if (!v) { + m.length === 0 || m.some((b) => !b.systemId) ? this.warn(`${s} contains incomplete or invalid pssh data`) : this.log(`ignoring ${s} for ${m.map((b) => co(b.systemId)).join(",")} pssh data in favor of playlist keys`); + return; + } + if (u = co(v.systemId), v.version === 0 && v.data) + if (u === Ve.WIDEVINE) { + const b = v.data.length - 22; + l = new Uint8Array(v.data.subarray(b, b + 16)); + } else u === Ve.PLAYREADY && (l = Fd(v.data)); + } + if (!u || !l) + return; + const c = Ni.hexDump(l), { + keyIdToKeySessionPromise: h, + mediaKeySessions: d + } = this; + let f = h[c]; + for (let m = 0; m < d.length; m++) { + const p = d[m], v = p.decryptdata; + if (!v.keyId) + continue; + const b = Ni.hexDump(v.keyId); + if (c === b || v.uri.replace(/-/g, "").indexOf(c) !== -1) { + if (f = h[b], v.pssh) + break; + delete h[b], v.pssh = new Uint8Array(r), v.keyId = l, f = h[c] = f.then(() => this.generateRequestWithPreferredKeySession(p, i, r, "encrypted-event-key-match")), f.catch((E) => this.handleError(E)); + break; + } + } + if (!f) { + if (u !== o) { + this.log(`Ignoring "${t.type}" event with ${u} init data for selected key-system ${o}`); + return; + } + f = h[c] = this.getKeySystemSelectionPromise([u]).then(({ + keySystem: m, + mediaKeys: p + }) => { + var v; + this.throwIfDestroyed(); + const b = new ts("ISO-23001-7", c, (v = ks(m)) != null ? v : ""); + return b.pssh = new Uint8Array(r), b.keyId = l, this.attemptSetMediaKeys(m, p).then(() => { + this.throwIfDestroyed(); + const E = this.createMediaKeySessionContext({ + decryptdata: b, + keySystem: m, + mediaKeys: p + }); + return this.generateRequestWithPreferredKeySession(E, i, r, "encrypted-event-no-match"); + }); + }), f.catch((m) => this.handleError(m)); + } + }); + } + }, this.onWaitingForKey = (t) => { + this.log(`"${t.type}" event`); + }, this.hls = e, this.config = e.config, this.registerListeners(); + } + destroy() { + this.onDestroying(), this.onMediaDetached(); + const e = this.config; + e.requestMediaKeySystemAccessFunc = null, e.licenseXhrSetup = e.licenseResponseCallback = void 0, e.drmSystems = e.drmSystemOptions = {}, this.hls = this.config = this.keyIdToKeySessionPromise = null, this.onMediaEncrypted = this.onWaitingForKey = null; + } + registerListeners() { + this.hls.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.on(S.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.on(S.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.on(S.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.on(S.DESTROYING, this.onDestroying, this); + } + unregisterListeners() { + this.hls.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.off(S.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.off(S.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.off(S.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.off(S.DESTROYING, this.onDestroying, this); + } + getLicenseServerUrl(e) { + const { + drmSystems: t, + widevineLicenseUrl: i + } = this.config, r = t[e]; + if (r) + return r.licenseUrl; + if (e === Ve.WIDEVINE && i) + return i; + } + getLicenseServerUrlOrThrow(e) { + const t = this.getLicenseServerUrl(e); + if (t === void 0) + throw new Error(`no license server URL configured for key-system "${e}"`); + return t; + } + getServerCertificateUrl(e) { + const { + drmSystems: t + } = this.config, i = t[e]; + if (i) + return i.serverCertificateUrl; + this.log(`No Server Certificate in config.drmSystems["${e}"]`); + } + attemptKeySystemAccess(e) { + const t = this.hls.levels, i = (a, o, l) => !!a && l.indexOf(a) === o, r = t.map((a) => a.audioCodec).filter(i), s = t.map((a) => a.videoCodec).filter(i); + return r.length + s.length === 0 && s.push("avc1.42e01e"), new Promise((a, o) => { + const l = (u) => { + const c = u.shift(); + this.getMediaKeysPromise(c, r, s).then((h) => a({ + keySystem: c, + mediaKeys: h + })).catch((h) => { + u.length ? l(u) : h instanceof li ? o(h) : o(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_NO_ACCESS, + error: h, + fatal: !0 + }, h.message)); + }); + }; + l(e); + }); + } + requestMediaKeySystemAccess(e, t) { + const { + requestMediaKeySystemAccessFunc: i + } = this.config; + if (typeof i != "function") { + let r = `Configured requestMediaKeySystemAccess is not a function ${i}`; + return Cd === null && self.location.protocol === "http:" && (r = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`), Promise.reject(new Error(r)); + } + return i(e, t); + } + getMediaKeysPromise(e, t, i) { + const r = Vg(e, t, i, this.config.drmSystemOptions), s = this.keySystemAccessPromises[e]; + let a = s == null ? void 0 : s.keySystemAccess; + if (!a) { + this.log(`Requesting encrypted media "${e}" key-system access with config: ${it(r)}`), a = this.requestMediaKeySystemAccess(e, r); + const o = this.keySystemAccessPromises[e] = { + keySystemAccess: a + }; + return a.catch((l) => { + this.log(`Failed to obtain access to key-system "${e}": ${l}`); + }), a.then((l) => { + this.log(`Access for key-system "${l.keySystem}" obtained`); + const u = this.fetchServerCertificate(e); + return this.log(`Create media-keys for "${e}"`), o.mediaKeys = l.createMediaKeys().then((c) => (this.log(`Media-keys created for "${e}"`), o.hasMediaKeys = !0, u.then((h) => h ? this.setMediaKeysServerCertificate(c, e, h) : c))), o.mediaKeys.catch((c) => { + this.error(`Failed to create media-keys for "${e}"}: ${c}`); + }), o.mediaKeys; + }); + } + return a.then(() => s.mediaKeys); + } + createMediaKeySessionContext({ + decryptdata: e, + keySystem: t, + mediaKeys: i + }) { + this.log(`Creating key-system session "${t}" keyId: ${Ni.hexDump(e.keyId || [])}`); + const r = i.createSession(), s = { + decryptdata: e, + keySystem: t, + mediaKeys: i, + mediaKeysSession: r, + keyStatus: "status-pending" + }; + return this.mediaKeySessions.push(s), s; + } + renewKeySession(e) { + const t = e.decryptdata; + if (t.pssh) { + const i = this.createMediaKeySessionContext(e), r = this.getKeyIdString(t), s = "cenc"; + this.keyIdToKeySessionPromise[r] = this.generateRequestWithPreferredKeySession(i, s, t.pssh.buffer, "expired"); + } else + this.warn("Could not renew expired session. Missing pssh initData."); + this.removeSession(e); + } + getKeyIdString(e) { + if (!e) + throw new Error("Could not read keyId of undefined decryptdata"); + if (e.keyId === null) + throw new Error("keyId is null"); + return Ni.hexDump(e.keyId); + } + updateKeySession(e, t) { + var i; + const r = e.mediaKeysSession; + return this.log(`Updating key-session "${r.sessionId}" for keyID ${Ni.hexDump(((i = e.decryptdata) == null ? void 0 : i.keyId) || [])} + } (data length: ${t && t.byteLength})`), r.update(t); + } + getSelectedKeySystemFormats() { + return Object.keys(this.keySystemAccessPromises).map((e) => ({ + keySystem: e, + hasMediaKeys: this.keySystemAccessPromises[e].hasMediaKeys + })).filter(({ + hasMediaKeys: e + }) => !!e).map(({ + keySystem: e + }) => ks(e)).filter((e) => !!e); + } + getKeySystemAccess(e) { + return this.getKeySystemSelectionPromise(e).then(({ + keySystem: t, + mediaKeys: i + }) => this.attemptSetMediaKeys(t, i)); + } + selectKeySystem(e) { + return new Promise((t, i) => this.getKeySystemSelectionPromise(e).then(({ + keySystem: r + }) => { + const s = ks(r); + s ? t(s) : i(new Error(`Unable to find format for key-system "${r}"`)); + }).catch(i)); + } + selectKeySystemFormat(e) { + const t = Object.keys(e.levelkeys || {}); + return this.keyFormatPromise || (this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`), this.keyFormatPromise = this.getKeyFormatPromise(t)), this.keyFormatPromise; + } + getKeyFormatPromise(e) { + const t = Nn(this.config), i = e.map(oa).filter((r) => !!r && t.indexOf(r) !== -1); + return this.selectKeySystem(i); + } + loadKey(e) { + const t = e.keyInfo.decryptdata, i = this.getKeyIdString(t), r = `(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`; + this.log(`Starting session for key ${r}`); + let s = this.keyIdToKeySessionPromise[i]; + return s || (s = this.getKeySystemForKeyPromise(t).then(({ + keySystem: o, + mediaKeys: l + }) => (this.throwIfDestroyed(), this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`), this.attemptSetMediaKeys(o, l).then(() => (this.throwIfDestroyed(), this.createMediaKeySessionContext({ + keySystem: o, + mediaKeys: l, + decryptdata: t + }))))), (this.keyIdToKeySessionPromise[i] = s.then((o) => { + const l = "cenc", u = t.pssh ? t.pssh.buffer : null; + return this.generateRequestWithPreferredKeySession(o, l, u, "playlist-key"); + })).catch((o) => this.handleError(o))), s; + } + throwIfDestroyed(e = "Invalid state") { + if (!this.hls) + throw new Error("invalid state"); + } + handleError(e) { + this.hls && (this.error(e.message), e instanceof li ? this.hls.trigger(S.ERROR, e.data) : this.hls.trigger(S.ERROR, { + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_NO_KEYS, + error: e, + fatal: !0 + })); + } + getKeySystemForKeyPromise(e) { + const t = this.getKeyIdString(e), i = this.keyIdToKeySessionPromise[t]; + if (!i) { + const r = oa(e.keyFormat), s = r ? [r] : Nn(this.config); + return this.attemptKeySystemAccess(s); + } + return i; + } + getKeySystemSelectionPromise(e) { + if (e.length || (e = Nn(this.config)), e.length === 0) + throw new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_NO_CONFIGURED_LICENSE, + fatal: !0 + }, `Missing key-system license configuration options ${it({ + drmSystems: this.config.drmSystems + })}`); + return this.attemptKeySystemAccess(e); + } + attemptSetMediaKeys(e, t) { + if (this.mediaKeys === t) + return Promise.resolve(); + const i = this.setMediaKeysQueue.slice(); + this.log(`Setting media-keys for "${e}"`); + const r = Promise.all(i).then(() => { + if (!this.media) + throw this.mediaKeys = null, new Error("Attempted to set mediaKeys without media element attached"); + return this.media.setMediaKeys(t); + }); + return this.mediaKeys = t, this.setMediaKeysQueue.push(r), r.then(() => { + this.log(`Media-keys set for "${e}"`), i.push(r), this.setMediaKeysQueue = this.setMediaKeysQueue.filter((s) => i.indexOf(s) === -1); + }); + } + generateRequestWithPreferredKeySession(e, t, i, r) { + var s, a; + const o = (s = this.config.drmSystems) == null || (a = s[e.keySystem]) == null ? void 0 : a.generateRequest; + if (o) + try { + const m = o.call(this.hls, t, i, e); + if (!m) + throw new Error("Invalid response from configured generateRequest filter"); + t = m.initDataType, i = m.initData ? m.initData : null, e.decryptdata.pssh = i ? new Uint8Array(i) : null; + } catch (m) { + var l; + if (this.warn(m.message), (l = this.hls) != null && l.config.debug) + throw m; + } + if (i === null) + return this.log(`Skipping key-session request for "${r}" (no initData)`), Promise.resolve(e); + const u = this.getKeyIdString(e.decryptdata); + this.log(`Generating key-session request for "${r}": ${u} (init data type: ${t} length: ${i ? i.byteLength : null})`); + const c = new Ql(), h = e._onmessage = (m) => { + const p = e.mediaKeysSession; + if (!p) { + c.emit("error", new Error("invalid state")); + return; + } + const { + messageType: v, + message: b + } = m; + this.log(`"${v}" message event for session "${p.sessionId}" message size: ${b.byteLength}`), v === "license-request" || v === "license-renewal" ? this.renewLicense(e, b).catch((E) => { + c.eventNames().length ? c.emit("error", E) : this.handleError(E); + }) : v === "license-release" ? e.keySystem === Ve.FAIRPLAY && (this.updateKeySession(e, fl("acknowledged")), this.removeSession(e)) : this.warn(`unhandled media key message type "${v}"`); + }, d = e._onkeystatuseschange = (m) => { + if (!e.mediaKeysSession) { + c.emit("error", new Error("invalid state")); + return; + } + this.onKeyStatusChange(e); + const v = e.keyStatus; + c.emit("keyStatus", v), v === "expired" && (this.warn(`${e.keySystem} expired for key ${u}`), this.renewKeySession(e)); + }; + ii(e.mediaKeysSession, "message", h), ii(e.mediaKeysSession, "keystatuseschange", d); + const f = new Promise((m, p) => { + c.on("error", p), c.on("keyStatus", (v) => { + v.startsWith("usable") ? m() : v === "output-restricted" ? p(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED, + fatal: !1 + }, "HDCP level output restricted")) : v === "internal-error" ? p(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_STATUS_INTERNAL_ERROR, + fatal: !0 + }, `key status changed to "${v}"`)) : v === "expired" ? p(new Error("key expired while generating request")) : this.warn(`unhandled key status change "${v}"`); + }); + }); + return e.mediaKeysSession.generateRequest(t, i).then(() => { + var m; + this.log(`Request generated for key-session "${(m = e.mediaKeysSession) == null ? void 0 : m.sessionId}" keyId: ${u}`); + }).catch((m) => { + throw new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_NO_SESSION, + error: m, + fatal: !1 + }, `Error generating key-session request: ${m}`); + }).then(() => f).catch((m) => { + throw c.removeAllListeners(), this.removeSession(e), m; + }).then(() => (c.removeAllListeners(), e)); + } + onKeyStatusChange(e) { + e.mediaKeysSession.keyStatuses.forEach((t, i) => { + if (typeof i == "string" && typeof t == "object") { + const r = i; + i = t, t = r; + } + this.log(`key status change "${t}" for keyStatuses keyId: ${Ni.hexDump("buffer" in i ? new Uint8Array(i.buffer, i.byteOffset, i.byteLength) : new Uint8Array(i))} session keyId: ${Ni.hexDump(new Uint8Array(e.decryptdata.keyId || []))} uri: ${e.decryptdata.uri}`), e.keyStatus = t; + }); + } + fetchServerCertificate(e) { + const t = this.config, i = t.loader, r = new i(t), s = this.getServerCertificateUrl(e); + return s ? (this.log(`Fetching server certificate for "${e}"`), new Promise((a, o) => { + const l = { + responseType: "arraybuffer", + url: s + }, u = t.certLoadPolicy.default, c = { + loadPolicy: u, + timeout: u.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, h = { + onSuccess: (d, f, m, p) => { + a(d.data); + }, + onError: (d, f, m, p) => { + o(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: !0, + networkDetails: m, + response: He({ + url: l.url, + data: void 0 + }, d) + }, `"${e}" certificate request failed (${s}). Status: ${d.code} (${d.text})`)); + }, + onTimeout: (d, f, m) => { + o(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: !0, + networkDetails: m, + response: { + url: l.url, + data: void 0 + } + }, `"${e}" certificate request timed out (${s})`)); + }, + onAbort: (d, f, m) => { + o(new Error("aborted")); + } + }; + r.load(l, c, h); + })) : Promise.resolve(); + } + setMediaKeysServerCertificate(e, t, i) { + return new Promise((r, s) => { + e.setServerCertificate(i).then((a) => { + this.log(`setServerCertificate ${a ? "success" : "not supported by CDM"} (${i == null ? void 0 : i.byteLength}) on "${t}"`), r(e); + }).catch((a) => { + s(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED, + error: a, + fatal: !0 + }, a.message)); + }); + }); + } + renewLicense(e, t) { + return this.requestLicense(e, new Uint8Array(t)).then((i) => this.updateKeySession(e, new Uint8Array(i)).catch((r) => { + throw new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_SESSION_UPDATE_FAILED, + error: r, + fatal: !0 + }, r.message); + })); + } + unpackPlayReadyKeyMessage(e, t) { + const i = String.fromCharCode.apply(null, new Uint16Array(t.buffer)); + if (!i.includes("PlayReadyKeyMessage")) + return e.setRequestHeader("Content-Type", "text/xml; charset=utf-8"), t; + const r = new DOMParser().parseFromString(i, "application/xml"), s = r.querySelectorAll("HttpHeader"); + if (s.length > 0) { + let c; + for (let h = 0, d = s.length; h < d; h++) { + var a, o; + c = s[h]; + const f = (a = c.querySelector("name")) == null ? void 0 : a.textContent, m = (o = c.querySelector("value")) == null ? void 0 : o.textContent; + f && m && e.setRequestHeader(f, m); + } + } + const l = r.querySelector("Challenge"), u = l == null ? void 0 : l.textContent; + if (!u) + throw new Error("Cannot find <Challenge> in key message"); + return fl(atob(u)); + } + setupLicenseXHR(e, t, i, r) { + const s = this.config.licenseXhrSetup; + return s ? Promise.resolve().then(() => { + if (!i.decryptdata) + throw new Error("Key removed"); + return s.call(this.hls, e, t, i, r); + }).catch((a) => { + if (!i.decryptdata) + throw a; + return e.open("POST", t, !0), s.call(this.hls, e, t, i, r); + }).then((a) => (e.readyState || e.open("POST", t, !0), { + xhr: e, + licenseChallenge: a || r + })) : (e.open("POST", t, !0), Promise.resolve({ + xhr: e, + licenseChallenge: r + })); + } + requestLicense(e, t) { + const i = this.config.keyLoadPolicy.default; + return new Promise((r, s) => { + const a = this.getLicenseServerUrlOrThrow(e.keySystem); + this.log(`Sending license request to URL: ${a}`); + const o = new XMLHttpRequest(); + o.responseType = "arraybuffer", o.onreadystatechange = () => { + if (!this.hls || !e.mediaKeysSession) + return s(new Error("invalid state")); + if (o.readyState === 4) + if (o.status === 200) { + this._requestLicenseFailureCount = 0; + let l = o.response; + this.log(`License received ${l instanceof ArrayBuffer ? l.byteLength : l}`); + const u = this.config.licenseResponseCallback; + if (u) + try { + l = u.call(this.hls, o, a, e); + } catch (c) { + this.error(c); + } + r(l); + } else { + const l = i.errorRetry, u = l ? l.maxNumRetry : 0; + if (this._requestLicenseFailureCount++, this._requestLicenseFailureCount > u || o.status >= 400 && o.status < 500) + s(new li({ + type: de.KEY_SYSTEM_ERROR, + details: B.KEY_SYSTEM_LICENSE_REQUEST_FAILED, + fatal: !0, + networkDetails: o, + response: { + url: a, + data: void 0, + code: o.status, + text: o.statusText + } + }, `License Request XHR failed (${a}). Status: ${o.status} (${o.statusText})`)); + else { + const c = u - this._requestLicenseFailureCount + 1; + this.warn(`Retrying license request, ${c} attempts left`), this.requestLicense(e, t).then(r, s); + } + } + }, e.licenseXhr && e.licenseXhr.readyState !== XMLHttpRequest.DONE && e.licenseXhr.abort(), e.licenseXhr = o, this.setupLicenseXHR(o, a, e, t).then(({ + xhr: l, + licenseChallenge: u + }) => { + e.keySystem == Ve.PLAYREADY && (u = this.unpackPlayReadyKeyMessage(l, u)), l.send(u); + }); + }); + } + onDestroying() { + this.unregisterListeners(), this._clear(); + } + onMediaAttached(e, t) { + if (!this.config.emeEnabled) + return; + const i = t.media; + this.media = i, ii(i, "encrypted", this.onMediaEncrypted), ii(i, "waitingforkey", this.onWaitingForKey); + } + onMediaDetached() { + const e = this.media; + e && (fi(e, "encrypted", this.onMediaEncrypted), fi(e, "waitingforkey", this.onWaitingForKey), this.media = null, this.mediaKeys = null); + } + _clear() { + var e; + if (this._requestLicenseFailureCount = 0, this.keyIdToKeySessionPromise = {}, !this.mediaKeys && !this.mediaKeySessions.length) + return; + const t = this.media, i = this.mediaKeySessions.slice(); + this.mediaKeySessions = [], this.mediaKeys = null, ts.clearKeyUriToKeyIdMap(); + const r = i.length; + pn.CDMCleanupPromise = Promise.all(i.map((s) => this.removeSession(s)).concat(t == null || (e = t.setMediaKeys(null)) == null ? void 0 : e.catch((s) => { + var a; + this.log(`Could not clear media keys: ${s}`), (a = this.hls) == null || a.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR, + fatal: !1, + error: new Error(`Could not clear media keys: ${s}`) + }); + }))).catch((s) => { + var a; + this.log(`Could not close sessions and clear media keys: ${s}`), (a = this.hls) == null || a.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not close sessions and clear media keys: ${s}`) + }); + }).then(() => { + r && this.log("finished closing key sessions and clearing media keys"); + }); + } + onManifestLoading() { + this.keyFormatPromise = null; + } + onManifestLoaded(e, { + sessionKeys: t + }) { + if (!(!t || !this.config.emeEnabled) && !this.keyFormatPromise) { + const i = t.reduce((r, s) => (r.indexOf(s.keyFormat) === -1 && r.push(s.keyFormat), r), []); + this.log(`Selecting key-system from session-keys ${i.join(", ")}`), this.keyFormatPromise = this.getKeyFormatPromise(i); + } + } + removeSession(e) { + const { + mediaKeysSession: t, + licenseXhr: i + } = e; + if (t) { + this.log(`Remove licenses and keys and close session ${t.sessionId}`), e._onmessage && (t.removeEventListener("message", e._onmessage), e._onmessage = void 0), e._onkeystatuseschange && (t.removeEventListener("keystatuseschange", e._onkeystatuseschange), e._onkeystatuseschange = void 0), i && i.readyState !== XMLHttpRequest.DONE && i.abort(), e.mediaKeysSession = e.decryptdata = e.licenseXhr = void 0; + const r = this.mediaKeySessions.indexOf(e); + r > -1 && this.mediaKeySessions.splice(r, 1); + const { + drmSystemOptions: s + } = this.config; + return (Yg(s) ? new Promise((o, l) => { + self.setTimeout(() => l(new Error("MediaKeySession.remove() timeout")), 8e3), t.remove().then(o); + }) : Promise.resolve()).catch((o) => { + var l; + this.log(`Could not remove session: ${o}`), (l = this.hls) == null || l.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not remove session: ${o}`) + }); + }).then(() => t.close()).catch((o) => { + var l; + this.log(`Could not close session: ${o}`), (l = this.hls) == null || l.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not close session: ${o}`) + }); + }); + } + } +} +pn.CDMCleanupPromise = void 0; +class li extends Error { + constructor(e, t) { + super(t), this.data = void 0, e.error || (e.error = new Error(t)), this.data = e, e.err = e.error; + } +} +class ev { + constructor(e) { + this.hls = void 0, this.isVideoPlaybackQualityAvailable = !1, this.timer = void 0, this.media = null, this.lastTime = void 0, this.lastDroppedFrames = 0, this.lastDecodedFrames = 0, this.streamController = void 0, this.hls = e, this.registerListeners(); + } + setStreamController(e) { + this.streamController = e; + } + registerListeners() { + this.hls.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.on(S.MEDIA_DETACHING, this.onMediaDetaching, this); + } + unregisterListeners() { + this.hls.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.off(S.MEDIA_DETACHING, this.onMediaDetaching, this); + } + destroy() { + this.timer && clearInterval(this.timer), this.unregisterListeners(), this.isVideoPlaybackQualityAvailable = !1, this.media = null; + } + onMediaAttaching(e, t) { + const i = this.hls.config; + if (i.capLevelOnFPSDrop) { + const r = t.media instanceof self.HTMLVideoElement ? t.media : null; + this.media = r, r && typeof r.getVideoPlaybackQuality == "function" && (this.isVideoPlaybackQualityAvailable = !0), self.clearInterval(this.timer), this.timer = self.setInterval(this.checkFPSInterval.bind(this), i.fpsDroppedMonitoringPeriod); + } + } + onMediaDetaching() { + this.media = null; + } + checkFPS(e, t, i) { + const r = performance.now(); + if (t) { + if (this.lastTime) { + const s = r - this.lastTime, a = i - this.lastDroppedFrames, o = t - this.lastDecodedFrames, l = 1e3 * a / s, u = this.hls; + if (u.trigger(S.FPS_DROP, { + currentDropped: a, + currentDecoded: o, + totalDroppedFrames: i + }), l > 0 && a > u.config.fpsDroppedMonitoringThreshold * o) { + let c = u.currentLevel; + u.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: " + c), c > 0 && (u.autoLevelCapping === -1 || u.autoLevelCapping >= c) && (c = c - 1, u.trigger(S.FPS_DROP_LEVEL_CAPPING, { + level: c, + droppedLevel: u.currentLevel + }), u.autoLevelCapping = c, this.streamController.nextLevelSwitch()); + } + } + this.lastTime = r, this.lastDroppedFrames = i, this.lastDecodedFrames = t; + } + } + checkFPSInterval() { + const e = this.media; + if (e) + if (this.isVideoPlaybackQualityAvailable) { + const t = e.getVideoPlaybackQuality(); + this.checkFPS(e, t.totalVideoFrames, t.droppedVideoFrames); + } else + this.checkFPS(e, e.webkitDecodedFrameCount, e.webkitDroppedFrameCount); + } +} +function yf(n, e) { + let t; + try { + t = new Event("addtrack"); + } catch { + t = document.createEvent("Event"), t.initEvent("addtrack", !1, !1); + } + t.track = n, e.dispatchEvent(t); +} +function _f(n, e) { + const t = n.mode; + if (t === "disabled" && (n.mode = "hidden"), n.cues && !n.cues.getCueById(e.id)) + try { + if (n.addCue(e), !n.cues.getCueById(e.id)) + throw new Error(`addCue is failed for: ${e}`); + } catch (i) { + Ne.debug(`[texttrack-utils]: ${i}`); + try { + const r = new self.TextTrackCue(e.startTime, e.endTime, e.text); + r.id = e.id, n.addCue(r); + } catch (r) { + Ne.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${r}`); + } + } + t === "disabled" && (n.mode = t); +} +function hn(n, e) { + const t = n.mode; + if (t === "disabled" && (n.mode = "hidden"), n.cues) + for (let i = n.cues.length; i--; ) + e && n.cues[i].removeEventListener("enter", e), n.removeCue(n.cues[i]); + t === "disabled" && (n.mode = t); +} +function El(n, e, t, i) { + const r = n.mode; + if (r === "disabled" && (n.mode = "hidden"), n.cues && n.cues.length > 0) { + const s = iv(n.cues, e, t); + for (let a = 0; a < s.length; a++) + (!i || i(s[a])) && n.removeCue(s[a]); + } + r === "disabled" && (n.mode = r); +} +function tv(n, e) { + if (e <= n[0].startTime) + return 0; + const t = n.length - 1; + if (e > n[t].endTime) + return -1; + let i = 0, r = t, s; + for (; i <= r; ) + if (s = Math.floor((r + i) / 2), e < n[s].startTime) + r = s - 1; + else if (e > n[s].startTime && i < t) + i = s + 1; + else + return s; + return n[i].startTime - e < e - n[r].startTime ? i : r; +} +function iv(n, e, t) { + const i = [], r = tv(n, e); + if (r > -1) + for (let s = r, a = n.length; s < a; s++) { + const o = n[s]; + if (o.startTime >= e && o.endTime <= t) + i.push(o); + else if (o.startTime > t) + return i; + } + return i; +} +function ha(n) { + const e = []; + for (let t = 0; t < n.length; t++) { + const i = n[t]; + (i.kind === "subtitles" || i.kind === "captions") && i.label && e.push(n[t]); + } + return e; +} +class rv extends n0 { + constructor(e) { + super(e, "subtitle-track-controller"), this.media = null, this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0, this.queuedDefaultTrack = -1, this.useTextTrackPolling = !1, this.subtitlePollingInterval = -1, this._subtitleDisplay = !0, this.asyncPollTrackChange = () => this.pollTrackChange(0), this.onTextTracksChanged = () => { + if (this.useTextTrackPolling || self.clearInterval(this.subtitlePollingInterval), !this.media || !this.hls.config.renderTextTracksNatively) + return; + let t = null; + const i = ha(this.media.textTracks); + for (let s = 0; s < i.length; s++) + if (i[s].mode === "hidden") + t = i[s]; + else if (i[s].mode === "showing") { + t = i[s]; + break; + } + const r = this.findTrackForTextTrack(t); + this.subtitleTrack !== r && this.setSubtitleTrack(r); + }, this.registerListeners(); + } + destroy() { + this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, this.onTextTracksChanged = this.asyncPollTrackChange = null, super.destroy(); + } + get subtitleDisplay() { + return this._subtitleDisplay; + } + set subtitleDisplay(e) { + this._subtitleDisplay = e, this.trackId > -1 && this.toggleTrackModes(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.LEVEL_LOADING, this.onLevelLoading, this), e.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(S.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.LEVEL_LOADING, this.onLevelLoading, this), e.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(S.ERROR, this.onError, this); + } + // Listen for subtitle track change, then extract the current track ID. + onMediaAttached(e, t) { + this.media = t.media, this.media && (this.queuedDefaultTrack > -1 && (this.subtitleTrack = this.queuedDefaultTrack, this.queuedDefaultTrack = -1), this.useTextTrackPolling = !(this.media.textTracks && "onchange" in this.media.textTracks), this.useTextTrackPolling ? this.pollTrackChange(500) : this.media.textTracks.addEventListener("change", this.asyncPollTrackChange)); + } + pollTrackChange(e) { + self.clearInterval(this.subtitlePollingInterval), this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, e); + } + onMediaDetaching(e, t) { + const i = this.media; + if (!i) + return; + const r = !!t.transferMedia; + if (self.clearInterval(this.subtitlePollingInterval), this.useTextTrackPolling || i.textTracks.removeEventListener("change", this.asyncPollTrackChange), this.trackId > -1 && (this.queuedDefaultTrack = this.trackId), this.subtitleTrack = -1, this.media = null, r) + return; + ha(i.textTracks).forEach((a) => { + hn(a); + }); + } + onManifestLoading() { + this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0; + } + // Fired whenever a new manifest is loaded. + onManifestParsed(e, t) { + this.tracks = t.subtitleTracks; + } + onSubtitleTrackLoaded(e, t) { + const { + id: i, + groupId: r, + details: s + } = t, a = this.tracksInGroup[i]; + if (!a || a.groupId !== r) { + this.warn(`Subtitle track with id:${i} and group:${r} not found in active group ${a == null ? void 0 : a.groupId}`); + return; + } + const o = a.details; + a.details = t.details, this.log(`Subtitle track ${i} "${a.name}" lang:${a.lang} group:${r} loaded [${s.startSN}-${s.endSN}]`), i === this.trackId && this.playlistLoaded(i, t, o); + } + onLevelLoading(e, t) { + this.switchLevel(t.level); + } + onLevelSwitching(e, t) { + this.switchLevel(t.level); + } + switchLevel(e) { + const t = this.hls.levels[e]; + if (!t) + return; + const i = t.subtitleGroups || null, r = this.groupIds; + let s = this.currentTrack; + if (!i || (r == null ? void 0 : r.length) !== (i == null ? void 0 : i.length) || i != null && i.some((a) => (r == null ? void 0 : r.indexOf(a)) === -1)) { + this.groupIds = i, this.trackId = -1, this.currentTrack = null; + const a = this.tracks.filter((c) => !i || i.indexOf(c.groupId) !== -1); + if (a.length) + this.selectDefaultTrack && !a.some((c) => c.default) && (this.selectDefaultTrack = !1), a.forEach((c, h) => { + c.id = h; + }); + else if (!s && !this.tracksInGroup.length) + return; + this.tracksInGroup = a; + const o = this.hls.config.subtitlePreference; + if (!s && o) { + this.selectDefaultTrack = !1; + const c = qi(o, a); + if (c > -1) + s = a[c]; + else { + const h = qi(o, this.tracks); + s = this.tracks[h]; + } + } + let l = this.findTrackId(s); + l === -1 && s && (l = this.findTrackId(null)); + const u = { + subtitleTracks: a + }; + this.log(`Updating subtitle tracks, ${a.length} track(s) found in "${i == null ? void 0 : i.join(",")}" group-id`), this.hls.trigger(S.SUBTITLE_TRACKS_UPDATED, u), l !== -1 && this.trackId === -1 && this.setSubtitleTrack(l); + } + } + findTrackId(e) { + const t = this.tracksInGroup, i = this.selectDefaultTrack; + for (let r = 0; r < t.length; r++) { + const s = t[r]; + if (!(i && !s.default || !i && !e) && (!e || qr(s, e))) + return r; + } + if (e) { + for (let r = 0; r < t.length; r++) { + const s = t[r]; + if (ss(e.attrs, s.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) + return r; + } + for (let r = 0; r < t.length; r++) { + const s = t[r]; + if (ss(e.attrs, s.attrs, ["LANGUAGE"])) + return r; + } + } + return -1; + } + findTrackForTextTrack(e) { + if (e) { + const t = this.tracksInGroup; + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (yl(r, e)) + return i; + } + } + return -1; + } + onError(e, t) { + t.fatal || !t.context || t.context.type === Ce.SUBTITLE_TRACK && t.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(t.context.groupId) !== -1) && this.checkRetry(t); + } + get allSubtitleTracks() { + return this.tracks; + } + /** get alternate subtitle tracks list from playlist **/ + get subtitleTracks() { + return this.tracksInGroup; + } + /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/ + get subtitleTrack() { + return this.trackId; + } + set subtitleTrack(e) { + this.selectDefaultTrack = !1, this.setSubtitleTrack(e); + } + setSubtitleOption(e) { + if (this.hls.config.subtitlePreference = e, e) { + if (e.id === -1) + return this.setSubtitleTrack(-1), null; + const t = this.allSubtitleTracks; + if (this.selectDefaultTrack = !1, t.length) { + const i = this.currentTrack; + if (i && qr(e, i)) + return i; + const r = qi(e, this.tracksInGroup); + if (r > -1) { + const s = this.tracksInGroup[r]; + return this.setSubtitleTrack(r), s; + } else { + if (i) + return null; + { + const s = qi(e, t); + if (s > -1) + return t[s]; + } + } + } + } + return null; + } + loadPlaylist(e) { + super.loadPlaylist(), this.shouldLoadPlaylist(this.currentTrack) && this.scheduleLoading(this.currentTrack, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const i = e.id, r = e.groupId, s = this.getUrlWithDirectives(e.url, t), a = e.details, o = a == null ? void 0 : a.age; + this.log(`Loading subtitle ${i} "${e.name}" lang:${e.lang} group:${r}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${o && a.live ? " age " + o.toFixed(1) + (a.type && " " + a.type || "") : ""} ${s}`), this.hls.trigger(S.SUBTITLE_TRACK_LOADING, { + url: s, + id: i, + groupId: r, + deliveryDirectives: t || null, + track: e + }); + } + /** + * Disables the old subtitleTrack and sets current mode on the next subtitleTrack. + * This operates on the DOM textTracks. + * A value of -1 will disable all subtitle tracks. + */ + toggleTrackModes() { + const { + media: e + } = this; + if (!e) + return; + const t = ha(e.textTracks), i = this.currentTrack; + let r; + if (i && (r = t.filter((s) => yl(i, s))[0], r || this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)), [].slice.call(t).forEach((s) => { + s.mode !== "disabled" && s !== r && (s.mode = "disabled"); + }), r) { + const s = this.subtitleDisplay ? "showing" : "hidden"; + r.mode !== s && (r.mode = s); + } + } + /** + * This method is responsible for validating the subtitle index and periodically reloading if live. + * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track. + */ + setSubtitleTrack(e) { + const t = this.tracksInGroup; + if (!this.media) { + this.queuedDefaultTrack = e; + return; + } + if (e < -1 || e >= t.length || !se(e)) { + this.warn(`Invalid subtitle track id: ${e}`); + return; + } + this.selectDefaultTrack = !1; + const i = this.currentTrack, r = t[e] || null; + if (this.trackId = e, this.currentTrack = r, this.toggleTrackModes(), !r) { + this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, { + id: e + }); + return; + } + const s = !!r.details && !r.details.live; + if (e === this.trackId && r === i && s) + return; + this.log(`Switching to subtitle-track ${e}` + (r ? ` "${r.name}" lang:${r.lang} group:${r.groupId}` : "")); + const { + id: a, + groupId: o = "", + name: l, + type: u, + url: c + } = r; + this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, { + id: a, + groupId: o, + name: l, + type: u, + url: c + }); + const h = this.switchParams(r.url, i == null ? void 0 : i.details, r.details); + this.loadPlaylist(h); + } +} +function nv() { + try { + return crypto.randomUUID(); + } catch { + try { + const e = URL.createObjectURL(new Blob()), t = e.toString(); + return URL.revokeObjectURL(e), t.slice(t.lastIndexOf("/") + 1); + } catch { + let t = (/* @__PURE__ */ new Date()).getTime(); + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (r) => { + const s = (t + Math.random() * 16) % 16 | 0; + return t = Math.floor(t / 16), (r == "x" ? s : s & 3 | 8).toString(16); + }); + } + } +} +function Hn(n) { + let e = 5381, t = n.length; + for (; t; ) + e = e * 33 ^ n.charCodeAt(--t); + return (e >>> 0).toString(); +} +const vn = 0.025; +let wa = /* @__PURE__ */ function(n) { + return n[n.Point = 0] = "Point", n[n.Range = 1] = "Range", n; +}({}); +function sv(n, e, t) { + return `${n.identifier}-${t + 1}-${Hn(e)}`; +} +class av { + constructor(e, t) { + this.base = void 0, this._duration = null, this._timelineStart = null, this.appendInPlaceDisabled = void 0, this.appendInPlaceStarted = void 0, this.dateRange = void 0, this.hasPlayed = !1, this.cumulativeDuration = 0, this.resumeOffset = NaN, this.playoutLimit = NaN, this.restrictions = { + skip: !1, + jump: !1 + }, this.snapOptions = { + out: !1, + in: !1 + }, this.assetList = [], this.assetListLoader = void 0, this.assetListResponse = null, this.resumeAnchor = void 0, this.error = void 0, this.resetOnResume = void 0, this.base = t, this.dateRange = e, this.setDateRange(e); + } + setDateRange(e) { + this.dateRange = e, this.resumeOffset = e.attr.optionalFloat("X-RESUME-OFFSET", this.resumeOffset), this.playoutLimit = e.attr.optionalFloat("X-PLAYOUT-LIMIT", this.playoutLimit), this.restrictions = e.attr.enumeratedStringList("X-RESTRICT", this.restrictions), this.snapOptions = e.attr.enumeratedStringList("X-SNAP", this.snapOptions); + } + reset() { + var e; + this.appendInPlaceStarted = !1, (e = this.assetListLoader) == null || e.destroy(), this.assetListLoader = void 0, this.supplementsPrimary || (this.assetListResponse = null, this.assetList = [], this._duration = null); + } + isAssetPastPlayoutLimit(e) { + var t; + if (e > 0 && e >= this.assetList.length) + return !0; + const i = this.playoutLimit; + return e <= 0 || isNaN(i) ? !1 : i === 0 ? !0 : (((t = this.assetList[e]) == null ? void 0 : t.startOffset) || 0) > i; + } + findAssetIndex(e) { + return this.assetList.indexOf(e); + } + get identifier() { + return this.dateRange.id; + } + get startDate() { + return this.dateRange.startDate; + } + get startTime() { + const e = this.dateRange.startTime; + if (this.snapOptions.out) { + const t = this.dateRange.tagAnchor; + if (t) + return bo(e, t); + } + return e; + } + get startOffset() { + return this.cue.pre ? 0 : this.startTime; + } + get startIsAligned() { + if (this.startTime === 0 || this.snapOptions.out) + return !0; + const e = this.dateRange.tagAnchor; + if (e) { + const t = this.dateRange.startTime, i = bo(t, e); + return t - i < 0.1; + } + return !1; + } + get resumptionOffset() { + const e = this.resumeOffset, t = se(e) ? e : this.duration; + return this.cumulativeDuration + t; + } + get resumeTime() { + const e = this.startOffset + this.resumptionOffset; + if (this.snapOptions.in) { + const t = this.resumeAnchor; + if (t) + return bo(e, t); + } + return e; + } + get appendInPlace() { + return this.appendInPlaceStarted ? !0 : this.appendInPlaceDisabled ? !1 : !!(!this.cue.once && !this.cue.pre && // preroll starts at startPosition before startPosition is known (live) + this.startIsAligned && (isNaN(this.playoutLimit) && isNaN(this.resumeOffset) || this.resumeOffset && this.duration && Math.abs(this.resumeOffset - this.duration) < vn)); + } + set appendInPlace(e) { + if (this.appendInPlaceStarted) { + this.resetOnResume = !e; + return; + } + this.appendInPlaceDisabled = !e; + } + // Extended timeline start time + get timelineStart() { + return this._timelineStart !== null ? this._timelineStart : this.startTime; + } + set timelineStart(e) { + this._timelineStart = e; + } + get duration() { + const e = this.playoutLimit; + let t; + return this._duration !== null ? t = this._duration : this.dateRange.duration ? t = this.dateRange.duration : t = this.dateRange.plannedDuration || 0, !isNaN(e) && e < t && (t = e), t; + } + set duration(e) { + this._duration = e; + } + get cue() { + return this.dateRange.cue; + } + get timelineOccupancy() { + return this.dateRange.attr["X-TIMELINE-OCCUPIES"] === "RANGE" ? wa.Range : wa.Point; + } + get supplementsPrimary() { + return this.dateRange.attr["X-TIMELINE-STYLE"] === "PRIMARY"; + } + get contentMayVary() { + return this.dateRange.attr["X-CONTENT-MAY-VARY"] !== "NO"; + } + get assetUrl() { + return this.dateRange.attr["X-ASSET-URI"]; + } + get assetListUrl() { + return this.dateRange.attr["X-ASSET-LIST"]; + } + get baseUrl() { + return this.base.url; + } + get assetListLoaded() { + return this.assetList.length > 0 || this.assetListResponse !== null; + } + toString() { + return ov(this); + } +} +function bo(n, e) { + return n - e.start < e.duration / 2 && !(Math.abs(n - (e.start + e.duration)) < vn) ? e.start : e.start + e.duration; +} +function bf(n, e, t) { + const i = new self.URL(n, t); + return i.protocol !== "data:" && i.searchParams.set("_HLS_primary_id", e), i; +} +function Eo(n, e) { + for (; (t = n.assetList[++e]) != null && t.error; ) + var t; + return e; +} +function ov(n) { + return `["${n.identifier}" ${n.cue.pre ? "<pre>" : n.cue.post ? "<post>" : ""}${n.timelineStart.toFixed(2)}-${n.resumeTime.toFixed(2)}]`; +} +function un(n) { + const e = n.timelineStart, t = n.duration || 0; + return `["${n.identifier}" ${e.toFixed(2)}-${(e + t).toFixed(2)}]`; +} +class lv { + constructor(e, t, i, r) { + this.hls = void 0, this.interstitial = void 0, this.assetItem = void 0, this.tracks = null, this.hasDetails = !1, this.mediaAttached = null, this._currentTime = void 0, this._bufferedEosTime = void 0, this.checkPlayout = () => { + this.reachedPlayout(this.currentTime) && this.hls.trigger(S.PLAYOUT_LIMIT_REACHED, {}); + }; + const s = this.hls = new e(t); + this.interstitial = i, this.assetItem = r; + let a = r.uri; + try { + a = bf(a, t.primarySessionId).href; + } catch { + } + s.loadSource(a); + const o = () => { + this.hasDetails = !0; + }; + s.once(S.LEVEL_LOADED, o), s.once(S.AUDIO_TRACK_LOADED, o), s.once(S.SUBTITLE_TRACK_LOADED, o), s.on(S.MEDIA_ATTACHING, (l, { + media: u + }) => { + this.removeMediaListeners(), this.mediaAttached = u, this.interstitial.playoutLimit && (u.addEventListener("timeupdate", this.checkPlayout), this.appendInPlace && s.on(S.BUFFER_APPENDED, () => { + const h = this.bufferedEnd; + this.reachedPlayout(h) && (this._bufferedEosTime = h, s.trigger(S.BUFFERED_TO_END, void 0)); + })); + }); + } + get appendInPlace() { + var e; + return ((e = this.interstitial) == null ? void 0 : e.appendInPlace) || !1; + } + bufferedInPlaceToEnd(e) { + var t; + if (!this.appendInPlace) + return !1; + if ((t = this.hls) != null && t.bufferedToEnd) + return !0; + if (!e || !this._bufferedEosTime) + return !1; + const i = this.timelineOffset, r = De.bufferInfo(e, i, 0); + return this.getAssetTime(r.end) >= this._bufferedEosTime - 0.02; + } + reachedPlayout(e) { + const i = this.interstitial.playoutLimit; + return this.startOffset + e >= i; + } + get destroyed() { + var e; + return !((e = this.hls) != null && e.userConfig); + } + get assetId() { + return this.assetItem.identifier; + } + get interstitialId() { + return this.assetItem.parentIdentifier; + } + get media() { + var e; + return ((e = this.hls) == null ? void 0 : e.media) || null; + } + get bufferedEnd() { + const e = this.media || this.mediaAttached; + if (!e) + return this._bufferedEosTime ? this._bufferedEosTime : this.currentTime; + const t = De.bufferInfo(e, e.currentTime, 1e-3); + return this.getAssetTime(t.end); + } + get currentTime() { + const e = this.media || this.mediaAttached; + return e ? this.getAssetTime(e.currentTime) : this._currentTime || 0; + } + get duration() { + const e = this.assetItem.duration; + return e || 0; + } + get remaining() { + const e = this.duration; + return e ? Math.max(0, e - this.currentTime) : 0; + } + get startOffset() { + return this.assetItem.startOffset; + } + get timelineOffset() { + var e; + return ((e = this.hls) == null ? void 0 : e.config.timelineOffset) || 0; + } + set timelineOffset(e) { + const t = this.timelineOffset; + if (e !== t) { + const i = e - t; + if (Math.abs(i) > 1 / 9e4) { + if (this.hasDetails) + throw new Error("Cannot set timelineOffset after playlists are loaded"); + this.hls.config.timelineOffset = e; + } + } + } + getAssetTime(e) { + const t = this.timelineOffset, i = this.duration; + return Math.min(Math.max(0, e - t), i); + } + removeMediaListeners() { + const e = this.mediaAttached; + e && (this._currentTime = e.currentTime, this.bufferSnapShot(), e.removeEventListener("timeupdate", this.checkPlayout)); + } + bufferSnapShot() { + if (this.mediaAttached) { + var e; + (e = this.hls) != null && e.bufferedToEnd && (this._bufferedEosTime = this.bufferedEnd); + } + } + destroy() { + this.removeMediaListeners(), this.hls.destroy(), this.hls = this.interstitial = null, this.tracks = this.mediaAttached = this.checkPlayout = null; + } + attachMedia(e) { + this.hls.attachMedia(e); + } + detachMedia() { + this.removeMediaListeners(), this.mediaAttached = null, this.hls.detachMedia(); + } + resumeBuffering() { + this.hls.resumeBuffering(); + } + pauseBuffering() { + this.hls.pauseBuffering(); + } + transferMedia() { + return this.bufferSnapShot(), this.hls.transferMedia(); + } + resetDetails() { + const e = this.hls; + if (this.hasDetails) { + e.stopLoad(); + const t = (i) => delete i.details; + e.levels.forEach(t), e.allAudioTracks.forEach(t), e.allSubtitleTracks.forEach(t), this.hasDetails = !1; + } + } + on(e, t, i) { + this.hls.on(e, t); + } + once(e, t, i) { + this.hls.once(e, t); + } + off(e, t, i) { + this.hls.off(e, t); + } + toString() { + var e; + return `HlsAssetPlayer: ${un(this.assetItem)} ${(e = this.hls) == null ? void 0 : e.sessionId} ${this.appendInPlace ? "append-in-place" : ""}`; + } +} +const Zu = 0.033; +class uv extends br { + constructor(e, t) { + super("interstitials-sched", t), this.onScheduleUpdate = void 0, this.eventMap = {}, this.events = null, this.items = null, this.durations = { + primary: 0, + playout: 0, + integrated: 0 + }, this.onScheduleUpdate = e; + } + destroy() { + this.reset(), this.onScheduleUpdate = null; + } + reset() { + this.eventMap = {}, this.setDurations(0, 0, 0), this.events && this.events.forEach((e) => e.reset()), this.events = this.items = null; + } + resetErrorsInRange(e, t) { + return this.events ? this.events.reduce((i, r) => e <= r.startOffset && t > r.startOffset ? (delete r.error, i + 1) : i, 0) : 0; + } + get duration() { + const e = this.items; + return e ? e[e.length - 1].end : 0; + } + get length() { + return this.items ? this.items.length : 0; + } + getEvent(e) { + return e && this.eventMap[e] || null; + } + hasEvent(e) { + return e in this.eventMap; + } + findItemIndex(e, t) { + if (e.event) + return this.findEventIndex(e.event.identifier); + let i = -1; + e.nextEvent ? i = this.findEventIndex(e.nextEvent.identifier) - 1 : e.previousEvent && (i = this.findEventIndex(e.previousEvent.identifier) + 1); + const r = this.items; + if (r) + for (r[i] || (t === void 0 && (t = e.start), i = this.findItemIndexAtTime(t)); i >= 0 && (s = r[i]) != null && s.event; ) { + var s; + i--; + } + return i; + } + findItemIndexAtTime(e, t) { + const i = this.items; + if (i) + for (let r = 0; r < i.length; r++) { + let s = i[r]; + if (t && t !== "primary" && (s = s[t]), e === s.start || e > s.start && e < s.end) + return r; + } + return -1; + } + findJumpRestrictedIndex(e, t) { + const i = this.items; + if (i) + for (let r = e; r <= t && i[r]; r++) { + const s = i[r].event; + if (s != null && s.restrictions.jump && !s.appendInPlace) + return r; + } + return -1; + } + findEventIndex(e) { + const t = this.items; + if (t) + for (let r = t.length; r--; ) { + var i; + if (((i = t[r].event) == null ? void 0 : i.identifier) === e) + return r; + } + return -1; + } + findAssetIndex(e, t) { + const i = e.assetList, r = i.length; + if (r > 1) + for (let s = 0; s < r; s++) { + const a = i[s]; + if (!a.error) { + const o = a.timelineStart; + if (t === o || t > o && t < o + (a.duration || 0)) + return s; + } + } + return 0; + } + get assetIdAtEnd() { + var e, t; + const i = (e = this.items) == null || (t = e[this.length - 1]) == null ? void 0 : t.event; + if (i) { + const r = i.assetList, s = r[r.length - 1]; + if (s) + return s.identifier; + } + return null; + } + parseInterstitialDateRanges(e, t) { + const i = e.main.details, { + dateRanges: r + } = i, s = this.events, a = this.parseDateRanges(r, { + url: i.url + }, t), o = Object.keys(r), l = s ? s.filter((u) => !o.includes(u.identifier)) : []; + a.length && a.sort((u, c) => { + const h = u.cue.pre, d = u.cue.post, f = c.cue.pre, m = c.cue.post; + if (h && !f) + return -1; + if (f && !h || d && !m) + return 1; + if (m && !d) + return -1; + if (!h && !f && !d && !m) { + const p = u.startTime, v = c.startTime; + if (p !== v) + return p - v; + } + return u.dateRange.tagOrder - c.dateRange.tagOrder; + }), this.events = a, l.forEach((u) => { + this.removeEvent(u); + }), this.updateSchedule(e, l); + } + updateSchedule(e, t = []) { + const i = this.events || []; + if (i.length || t.length || this.length < 2) { + const r = this.items, s = this.parseSchedule(i, e); + (t.length || (r == null ? void 0 : r.length) !== s.length || s.some((o, l) => Math.abs(o.playout.start - r[l].playout.start) > 5e-3 || Math.abs(o.playout.end - r[l].playout.end) > 5e-3)) && (this.items = s, this.onScheduleUpdate(t, r)); + } + } + parseDateRanges(e, t, i) { + const r = [], s = Object.keys(e); + for (let a = 0; a < s.length; a++) { + const o = s[a], l = e[o]; + if (l.isInterstitial) { + let u = this.eventMap[o]; + u ? u.setDateRange(l) : (u = new av(l, t), this.eventMap[o] = u, i === !1 && (u.appendInPlace = i)), r.push(u); + } + } + return r; + } + parseSchedule(e, t) { + const i = [], r = t.main.details, s = r.live ? 1 / 0 : r.edge; + let a = 0; + if (e = e.filter((l) => !l.error && !(l.cue.once && l.hasPlayed)), e.length) { + this.resolveOffsets(e, t); + let l = 0, u = 0; + if (e.forEach((c, h) => { + const d = c.cue.pre, f = c.cue.post, m = e[h - 1] || null, p = c.appendInPlace, v = f ? s : c.startOffset, b = c.duration, E = c.timelineOccupancy === wa.Range ? b : 0, y = c.resumptionOffset, T = (m == null ? void 0 : m.startTime) === v, A = v + c.cumulativeDuration; + let k = p ? A + b : v + y; + if (d || !f && v <= 0) { + const L = u; + u += E, c.timelineStart = A; + const I = a; + a += b, i.push({ + event: c, + start: A, + end: k, + playout: { + start: I, + end: a + }, + integrated: { + start: L, + end: u + } + }); + } else if (v <= s) { + if (!T) { + const R = v - l; + if (R > Zu) { + const O = l, z = u; + u += R; + const ie = a; + a += R; + const N = { + previousEvent: e[h - 1] || null, + nextEvent: c, + start: O, + end: O + R, + playout: { + start: ie, + end: a + }, + integrated: { + start: z, + end: u + } + }; + i.push(N); + } else R > 0 && m && (m.cumulativeDuration += R, i[i.length - 1].end = v); + } + f && (k = A), c.timelineStart = A; + const L = u; + u += E; + const I = a; + a += b, i.push({ + event: c, + start: A, + end: k, + playout: { + start: I, + end: a + }, + integrated: { + start: L, + end: u + } + }); + } else + return; + const w = c.resumeTime; + f || w > s ? l = s : l = w; + }), l < s) { + var o; + const c = l, h = u, d = s - l; + u += d; + const f = a; + a += d, i.push({ + previousEvent: ((o = i[i.length - 1]) == null ? void 0 : o.event) || null, + nextEvent: null, + start: l, + end: c + d, + playout: { + start: f, + end: a + }, + integrated: { + start: h, + end: u + } + }); + } + this.setDurations(s, a, u); + } else + i.push({ + previousEvent: null, + nextEvent: null, + start: 0, + end: s, + playout: { + start: 0, + end: s + }, + integrated: { + start: 0, + end: s + } + }), this.setDurations(s, s, s); + return i; + } + setDurations(e, t, i) { + this.durations = { + primary: e, + playout: t, + integrated: i + }; + } + resolveOffsets(e, t) { + const i = t.main.details, r = i.live ? 1 / 0 : i.edge; + let s = 0, a = -1; + e.forEach((o, l) => { + const u = o.cue.pre, c = o.cue.post, h = u ? 0 : c ? r : o.startTime; + this.updateAssetDurations(o), a === h ? o.cumulativeDuration = s : (s = 0, a = h), !c && o.snapOptions.in && (o.resumeAnchor = Hr(null, i.fragments, o.startOffset + o.resumptionOffset, 0, 0) || void 0), o.appendInPlace && !o.appendInPlaceStarted && (this.primaryCanResumeInPlaceAt(o, t) || (o.appendInPlace = !1)), !o.appendInPlace && l + 1 < e.length && e[l + 1].startTime - e[l].resumeTime < Zu && (e[l + 1].appendInPlace = !1, e[l + 1].appendInPlace && this.warn(`Could not change append strategy for abutting event ${o}`)); + const f = se(o.resumeOffset) ? o.resumeOffset : o.duration; + s += f; + }); + } + primaryCanResumeInPlaceAt(e, t) { + const i = e.resumeTime, r = e.startTime + e.resumptionOffset; + return Math.abs(i - r) > vn ? (this.log(`"${e.identifier}" resumption ${i} not aligned with estimated timeline end ${r}`), !1) : t ? !Object.keys(t).some((a) => { + const o = t[a].details, l = o.edge; + if (i >= l) + return this.log(`"${e.identifier}" resumption ${i} past ${a} playlist end ${l}`), !1; + const u = Hr(null, o.fragments, i); + if (!u) + return this.log(`"${e.identifier}" resumption ${i} does not align with any fragments in ${a} playlist (${o.fragStart}-${o.fragmentEnd})`), !0; + const c = a === "audio" ? 0.175 : 0; + return Math.abs(u.start - i) < vn + c || Math.abs(u.end - i) < vn + c ? !1 : (this.log(`"${e.identifier}" resumption ${i} not aligned with ${a} fragment bounds (${u.start}-${u.end} sn: ${u.sn} cc: ${u.cc})`), !0); + }) : (this.log(`"${e.identifier}" resumption ${i} can not be aligned with media (none selected)`), !1); + } + updateAssetDurations(e) { + if (!e.assetListLoaded) + return; + const t = e.timelineStart; + let i = 0, r = !1, s = !1; + e.assetList.forEach((a, o) => { + const l = t + i; + a.startOffset = i, a.timelineStart = l, r || (r = a.duration === null), s || (s = !!a.error); + const u = a.error ? 0 : a.duration || 0; + i += u; + }), r && !s ? e.duration = Math.max(i, e.duration) : e.duration = i; + } + removeEvent(e) { + e.reset(), delete this.eventMap[e.identifier]; + } +} +function xr(n) { + return `[${n.event ? '"' + n.event.identifier + '"' : "primary"}: ${n.start.toFixed(2)}-${n.end.toFixed(2)}]`; +} +class cv { + constructor(e) { + this.hls = void 0, this.hls = e; + } + destroy() { + this.hls = null; + } + loadAssetList(e, t) { + const i = e.assetListUrl; + let r; + try { + r = bf(i, this.hls.sessionId, e.baseUrl); + } catch (d) { + const f = this.assignAssetListError(e, B.ASSET_LIST_LOAD_ERROR, d, i); + this.hls.trigger(S.ERROR, f); + return; + } + t && r.protocol !== "data:" && r.searchParams.set("_HLS_start_offset", "" + t); + const s = this.hls.config, a = s.loader, o = new a(s), l = { + responseType: "json", + url: r.href + }, u = s.interstitialAssetListLoadPolicy.default, c = { + loadPolicy: u, + timeout: u.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, h = { + onSuccess: (d, f, m, p) => { + const v = d.data, b = v == null ? void 0 : v.ASSETS; + if (!Array.isArray(b)) { + const E = this.assignAssetListError(e, B.ASSET_LIST_PARSING_ERROR, new Error("Invalid interstitial asset list"), m.url, f, p); + this.hls.trigger(S.ERROR, E); + return; + } + e.assetListResponse = v, this.hls.trigger(S.ASSET_LIST_LOADED, { + event: e, + assetListResponse: v, + networkDetails: p + }); + }, + onError: (d, f, m, p) => { + const v = this.assignAssetListError(e, B.ASSET_LIST_LOAD_ERROR, new Error(`Error loading X-ASSET-LIST: HTTP status ${d.code} ${d.text} (${f.url})`), f.url, p, m); + this.hls.trigger(S.ERROR, v); + }, + onTimeout: (d, f, m) => { + const p = this.assignAssetListError(e, B.ASSET_LIST_LOAD_TIMEOUT, new Error(`Timeout loading X-ASSET-LIST (${f.url})`), f.url, d, m); + this.hls.trigger(S.ERROR, p); + } + }; + return o.load(l, c, h), this.hls.trigger(S.ASSET_LIST_LOADING, { + event: e + }), o; + } + assignAssetListError(e, t, i, r, s, a) { + return e.error = i, { + type: de.NETWORK_ERROR, + details: t, + fatal: !1, + interstitial: e, + url: r, + error: i, + networkDetails: a, + stats: s + }; + } +} +function Ju(n) { + n == null || n.play().catch(() => { + }); +} +class hv extends br { + constructor(e, t) { + super("interstitials", e.logger), this.HlsPlayerClass = void 0, this.hls = void 0, this.assetListLoader = void 0, this.mediaSelection = null, this.altSelection = null, this.media = null, this.detachedData = null, this.requiredTracks = null, this.manager = null, this.playerQueue = [], this.bufferedPos = -1, this.timelinePos = -1, this.schedule = void 0, this.playingItem = null, this.bufferingItem = null, this.waitingItem = null, this.endedItem = null, this.playingAsset = null, this.endedAsset = null, this.bufferingAsset = null, this.shouldPlay = !1, this.onPlay = () => { + this.shouldPlay = !0; + }, this.onPause = () => { + this.shouldPlay = !1; + }, this.onSeeking = () => { + const i = this.currentTime; + if (i === void 0 || this.playbackDisabled) + return; + const r = i - this.timelinePos; + if (Math.abs(r) < 1 / 7056e5) + return; + const a = r <= -0.01; + this.timelinePos = i, this.bufferedPos = i; + const o = this.playingItem; + if (!o) { + this.checkBuffer(); + return; + } + if (a && this.schedule.resetErrorsInRange(i, i - r) && this.updateSchedule(), this.checkBuffer(), a && i < o.start || i >= o.end) { + var l; + const d = this.schedule.findItemIndexAtTime(this.timelinePos); + if (!this.isInterstitial(o) && (l = this.media) != null && l.paused && (this.shouldPlay = !1), !a) { + const f = this.findItemIndex(o); + if (d > f) { + const m = this.schedule.findJumpRestrictedIndex(f + 1, d); + if (m > f) { + this.setSchedulePosition(m); + return; + } + } + } + this.setSchedulePosition(d); + return; + } + const u = this.playingAsset; + if (!u) { + if (this.playingLastItem && this.isInterstitial(o)) { + const d = o.event.assetList[0]; + d && (this.endedItem = this.playingItem, this.playingItem = null, this.setScheduleToAssetAtTime(i, d)); + } + return; + } + const c = u.timelineStart, h = u.duration || 0; + (a && i < c || i >= c + h) && this.setScheduleToAssetAtTime(i, u); + }, this.onTimeupdate = () => { + const i = this.currentTime; + if (i === void 0 || this.playbackDisabled) + return; + if (i > this.timelinePos) + this.timelinePos = i, i > this.bufferedPos && this.checkBuffer(); + else + return; + const r = this.playingItem; + if (!r || this.playingLastItem) + return; + if (i >= r.end) { + this.timelinePos = r.end; + const o = this.findItemIndex(r); + this.setSchedulePosition(o + 1); + } + const s = this.playingAsset; + if (!s) + return; + const a = s.timelineStart + (s.duration || 0); + i >= a && this.setScheduleToAssetAtTime(i, s); + }, this.onScheduleUpdate = (i, r) => { + const s = this.schedule, a = this.playingItem, o = s.events || [], l = s.items || [], u = s.durations, c = i.map((m) => m.identifier), h = !!(o.length || c.length); + (h || r) && this.log(`INTERSTITIALS_UPDATED (${o.length}): ${o} +Schedule: ${l.map((m) => xr(m))} pos: ${this.timelinePos}`), c.length && this.log(`Removed events ${c}`), this.playerQueue.forEach((m) => { + if (m.interstitial.appendInPlace) { + const p = m.assetItem.timelineStart, v = m.timelineOffset - p; + if (v) + try { + m.timelineOffset = p; + } catch (b) { + Math.abs(v) > vn && this.warn(`${b} ("${m.assetId}" ${m.timelineOffset}->${p})`); + } + } + }); + let d = null; + if (a) { + const m = this.updateItem(a, this.timelinePos); + this.itemsMatch(a, m) && (this.playingItem = m, this.waitingItem = this.endedItem = null, d = () => this.trimInPlace(m, a)); + } else + this.waitingItem = this.updateItem(this.waitingItem), this.endedItem = this.updateItem(this.endedItem); + const f = this.bufferingItem; + if (f) { + const m = this.updateItem(f, this.bufferedPos); + this.itemsMatch(f, m) ? (this.bufferingItem = m, d || (d = () => this.trimInPlace(m, f))) : f.event && (this.bufferingItem = this.playingItem, this.clearInterstitial(f.event, null)); + } + if (i.forEach((m) => { + m.assetList.forEach((p) => { + this.clearAssetPlayer(p.identifier, null); + }); + }), h || r) { + if (this.hls.trigger(S.INTERSTITIALS_UPDATED, { + events: o.slice(0), + schedule: l.slice(0), + durations: u, + removedIds: c + }), this.isInterstitial(a) && c.includes(a.event.identifier)) { + this.warn(`Interstitial "${a.event.identifier}" removed while playing`), this.primaryFallback(a.event); + return; + } + d && d(), this.checkBuffer(); + } + }, this.hls = e, this.HlsPlayerClass = t, this.assetListLoader = new cv(e), this.schedule = new uv(this.onScheduleUpdate, e.logger), this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(S.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.on(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(S.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.on(S.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.on(S.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.on(S.BUFFER_APPENDED, this.onBufferAppended, this), e.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(S.BUFFERED_TO_END, this.onBufferedToEnd, this), e.on(S.MEDIA_ENDED, this.onMediaEnded, this), e.on(S.ERROR, this.onError, this), e.on(S.DESTROYING, this.onDestroying, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(S.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.off(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(S.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.off(S.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.off(S.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.off(S.BUFFER_CODECS, this.onBufferCodecs, this), e.off(S.BUFFER_APPENDED, this.onBufferAppended, this), e.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(S.BUFFERED_TO_END, this.onBufferedToEnd, this), e.off(S.MEDIA_ENDED, this.onMediaEnded, this), e.off(S.ERROR, this.onError, this), e.off(S.DESTROYING, this.onDestroying, this)); + } + startLoad() { + this.resumeBuffering(); + } + stopLoad() { + this.pauseBuffering(); + } + resumeBuffering() { + var e; + (e = this.getBufferingPlayer()) == null || e.resumeBuffering(); + } + pauseBuffering() { + var e; + (e = this.getBufferingPlayer()) == null || e.pauseBuffering(); + } + destroy() { + this.unregisterListeners(), this.stopLoad(), this.assetListLoader && this.assetListLoader.destroy(), this.emptyPlayerQueue(), this.clearScheduleState(), this.schedule && this.schedule.destroy(), this.media = this.detachedData = this.mediaSelection = this.requiredTracks = this.altSelection = this.manager = null, this.hls = this.HlsPlayerClass = this.schedule = this.log = null, this.assetListLoader = null, this.onPlay = this.onPause = this.onSeeking = this.onTimeupdate = null, this.onScheduleUpdate = null; + } + onDestroying() { + const e = this.primaryMedia || this.media; + e && this.removeMediaListeners(e); + } + removeMediaListeners(e) { + fi(e, "play", this.onPlay), fi(e, "pause", this.onPause), fi(e, "seeking", this.onSeeking), fi(e, "timeupdate", this.onTimeupdate); + } + onMediaAttaching(e, t) { + const i = this.media = t.media; + ii(i, "seeking", this.onSeeking), ii(i, "timeupdate", this.onTimeupdate), ii(i, "play", this.onPlay), ii(i, "pause", this.onPause); + } + onMediaAttached(e, t) { + const i = this.effectivePlayingItem, r = this.detachedData; + if (this.detachedData = null, i === null) + this.checkStart(); + else if (!r) { + this.clearScheduleState(); + const s = this.findItemIndex(i); + this.setSchedulePosition(s); + } + } + clearScheduleState() { + this.playingItem = this.bufferingItem = this.waitingItem = this.endedItem = this.playingAsset = this.endedAsset = this.bufferingAsset = null; + } + onMediaDetaching(e, t) { + const i = !!t.transferMedia, r = this.media; + if (this.media = null, !i && (r && this.removeMediaListeners(r), this.detachedData)) { + const s = this.getBufferingPlayer(); + s && (this.playingAsset = this.endedAsset = this.bufferingAsset = this.bufferingItem = this.waitingItem = this.detachedData = null, s.detachMedia()), this.shouldPlay = !1; + } + } + get interstitialsManager() { + if (!this.manager) { + if (!this.hls) + return null; + const e = this, t = () => e.bufferingItem || e.waitingItem, i = (h) => h && e.getAssetPlayer(h.identifier), r = (h, d, f, m, p) => { + if (h) { + let v = h[d].start; + const b = h.event; + if (b) { + if (d === "playout" || b.timelineOccupancy !== wa.Point) { + const E = i(f); + (E == null ? void 0 : E.interstitial) === b && (v += E.assetItem.startOffset + E[p]); + } + } else { + const E = m === "bufferedPos" ? a() : e[m]; + v += E - h.start; + } + return v; + } + return 0; + }, s = (h, d) => { + if (h !== 0 && d !== "primary" && e.schedule.length) { + var f; + const m = e.schedule.findItemIndexAtTime(h), p = (f = e.schedule.items) == null ? void 0 : f[m]; + if (p) { + const v = p[d].start - p.start; + return h + v; + } + } + return h; + }, a = () => { + const h = e.bufferedPos; + return h === Number.MAX_VALUE ? o("primary") : Math.max(h, 0); + }, o = (h) => { + var d; + return (d = e.primaryDetails) != null && d.live ? e.primaryDetails.edge : e.schedule.durations[h]; + }, l = (h, d) => { + var f, m; + const p = e.effectivePlayingItem; + if (p != null && (f = p.event) != null && f.restrictions.skip) + return; + e.log(`seek to ${h} "${d}"`); + const v = e.effectivePlayingItem, b = e.schedule.findItemIndexAtTime(h, d), E = (m = e.schedule.items) == null ? void 0 : m[b], y = e.getBufferingPlayer(), T = y == null ? void 0 : y.interstitial, A = T == null ? void 0 : T.appendInPlace, k = v && e.itemsMatch(v, E); + if (v && (A || k)) { + const L = i(e.playingAsset), I = (L == null ? void 0 : L.media) || e.primaryMedia; + if (I) { + const R = d === "primary" ? I.currentTime : r(v, d, e.playingAsset, "timelinePos", "currentTime"), O = h - R, z = (A ? R : I.currentTime) + O; + if (z >= 0 && (!L || A || z <= L.duration)) { + I.currentTime = z; + return; + } + } + } + if (E) { + let L = h; + if (d !== "primary") { + const R = E[d].start, O = h - R; + L = E.start + O; + } + const I = !e.isInterstitial(E); + if ((!e.isInterstitial(v) || v.event.appendInPlace) && (I || E.event.appendInPlace)) { + const R = e.media || (A ? y == null ? void 0 : y.media : null); + R && (R.currentTime = L); + } else if (v) { + const R = e.findItemIndex(v); + if (b > R) { + const z = e.schedule.findJumpRestrictedIndex(R + 1, b); + if (z > R) { + e.setSchedulePosition(z); + return; + } + } + let O = 0; + if (I) + e.timelinePos = L, e.checkBuffer(); + else { + var w; + const z = E == null || (w = E.event) == null ? void 0 : w.assetList; + if (z) { + const ie = h - (E[d] || E).start; + for (let N = z.length; N--; ) { + const X = z[N]; + if (X.duration && ie >= X.startOffset && ie < X.startOffset + X.duration) { + O = N; + break; + } + } + } + } + e.setSchedulePosition(b, O); + } + } + }, u = () => { + const h = e.effectivePlayingItem; + if (e.isInterstitial(h)) + return h; + const d = t(); + return e.isInterstitial(d) ? d : null; + }, c = { + get currentTime() { + const h = u(), d = e.effectivePlayingItem; + return d && d === h ? r(d, "playout", e.effectivePlayingAsset, "timelinePos", "currentTime") - d.playout.start : 0; + }, + set currentTime(h) { + const d = u(), f = e.effectivePlayingItem; + f && f === d && l(h + f.playout.start, "playout"); + }, + get duration() { + const h = u(); + return h ? h.playout.end - h.playout.start : 0; + }, + get assetPlayers() { + var h; + const d = (h = u()) == null ? void 0 : h.event.assetList; + return d ? d.map((f) => e.getAssetPlayer(f.identifier)) : []; + }, + get playingIndex() { + var h; + const d = (h = u()) == null ? void 0 : h.event; + return d && e.effectivePlayingAsset ? d.findAssetIndex(e.effectivePlayingAsset) : -1; + }, + get scheduleItem() { + return u(); + } + }; + this.manager = { + get events() { + var h, d; + return ((h = e.schedule) == null || (d = h.events) == null ? void 0 : d.slice(0)) || []; + }, + get schedule() { + var h, d; + return ((h = e.schedule) == null || (d = h.items) == null ? void 0 : d.slice(0)) || []; + }, + get interstitialPlayer() { + return u() ? c : null; + }, + get playerQueue() { + return e.playerQueue.slice(0); + }, + get bufferingAsset() { + return e.bufferingAsset; + }, + get bufferingItem() { + return t(); + }, + get bufferingIndex() { + const h = t(); + return e.findItemIndex(h); + }, + get playingAsset() { + return e.effectivePlayingAsset; + }, + get playingItem() { + return e.effectivePlayingItem; + }, + get playingIndex() { + const h = e.effectivePlayingItem; + return e.findItemIndex(h); + }, + primary: { + get bufferedEnd() { + return a(); + }, + get currentTime() { + const h = e.timelinePos; + return h > 0 ? h : 0; + }, + set currentTime(h) { + l(h, "primary"); + }, + get duration() { + return o("primary"); + }, + get seekableStart() { + var h; + return ((h = e.primaryDetails) == null ? void 0 : h.fragmentStart) || 0; + } + }, + integrated: { + get bufferedEnd() { + return r(t(), "integrated", e.bufferingAsset, "bufferedPos", "bufferedEnd"); + }, + get currentTime() { + return r(e.effectivePlayingItem, "integrated", e.effectivePlayingAsset, "timelinePos", "currentTime"); + }, + set currentTime(h) { + l(h, "integrated"); + }, + get duration() { + return o("integrated"); + }, + get seekableStart() { + var h; + return s(((h = e.primaryDetails) == null ? void 0 : h.fragmentStart) || 0, "integrated"); + } + }, + skip: () => { + const h = e.effectivePlayingItem, d = h == null ? void 0 : h.event; + if (d && !d.restrictions.skip) { + const f = e.findItemIndex(h); + if (d.appendInPlace) { + const m = h.playout.start + h.event.duration; + l(m + 1e-3, "playout"); + } else + e.advanceAfterAssetEnded(d, f, 1 / 0); + } + } + }; + } + return this.manager; + } + // Schedule getters + get effectivePlayingItem() { + return this.waitingItem || this.playingItem || this.endedItem; + } + get effectivePlayingAsset() { + return this.playingAsset || this.endedAsset; + } + get playingLastItem() { + var e; + const t = this.playingItem, i = (e = this.schedule) == null ? void 0 : e.items; + return !this.playbackStarted || !t || !i ? !1 : this.findItemIndex(t) === i.length - 1; + } + get playbackStarted() { + return this.effectivePlayingItem !== null; + } + // Media getters and event callbacks + get currentTime() { + var e, t, i; + if (this.mediaSelection === null) + return; + const r = this.waitingItem || this.playingItem; + if (this.isInterstitial(r) && !r.event.appendInPlace) + return; + let s = this.media; + !s && (e = this.bufferingItem) != null && (t = e.event) != null && t.appendInPlace && (s = this.primaryMedia); + const a = (i = s) == null ? void 0 : i.currentTime; + if (!(a === void 0 || !se(a))) + return a; + } + get primaryMedia() { + var e; + return this.media || ((e = this.detachedData) == null ? void 0 : e.media) || null; + } + isInterstitial(e) { + return !!(e != null && e.event); + } + retreiveMediaSource(e, t) { + const i = this.getAssetPlayer(e); + i && this.transferMediaFromPlayer(i, t); + } + transferMediaFromPlayer(e, t) { + const i = e.interstitial.appendInPlace, r = e.media; + if (i && r === this.primaryMedia) { + if (this.bufferingAsset = null, (!t || this.isInterstitial(t) && !t.event.appendInPlace) && t && r) { + this.detachedData = { + media: r + }; + return; + } + const s = e.transferMedia(); + this.log(`transfer MediaSource from ${e} ${it(s)}`), this.detachedData = s; + } else t && r && (this.shouldPlay || (this.shouldPlay = !r.paused)); + } + transferMediaTo(e, t) { + var i, r; + if (e.media === t) + return; + let s = null; + const a = this.hls, o = e !== a, l = o && e.interstitial.appendInPlace, u = (i = this.detachedData) == null ? void 0 : i.mediaSource; + let c; + if (a.media) + l && (s = a.transferMedia(), this.detachedData = s), c = "Primary"; + else if (u) { + const f = this.getBufferingPlayer(); + f ? (s = f.transferMedia(), c = `${f}`) : c = "detached MediaSource"; + } else + c = "detached media"; + if (!s) { + if (u) + s = this.detachedData, this.log(`using detachedData: MediaSource ${it(s)}`); + else if (!this.detachedData || a.media === t) { + const f = this.playerQueue; + f.length > 1 && f.forEach((m) => { + if (o && m.interstitial.appendInPlace !== l) { + const p = m.interstitial; + this.clearInterstitial(m.interstitial, null), p.appendInPlace = !1, p.appendInPlace && this.warn(`Could not change append strategy for queued assets ${p}`); + } + }), this.hls.detachMedia(), this.detachedData = { + media: t + }; + } + } + const h = s && "mediaSource" in s && ((r = s.mediaSource) == null ? void 0 : r.readyState) !== "closed", d = h && s ? s : t; + if (this.log(`${h ? "transfering MediaSource" : "attaching media"} to ${o ? e : "Primary"} from ${c}`), d === s) { + const f = o && e.assetId === this.schedule.assetIdAtEnd; + d.overrides = { + duration: this.schedule.duration, + endOfStream: !o || f, + cueRemoval: !o + }; + } + e.attachMedia(d); + } + onInterstitialCueEnter() { + this.onTimeupdate(); + } + // Scheduling methods + checkStart() { + const e = this.schedule, t = e.events; + if (!t || this.playbackDisabled || !this.media) + return; + this.bufferedPos === -1 && (this.bufferedPos = 0); + const i = this.timelinePos, r = this.effectivePlayingItem; + if (i === -1) { + const s = this.hls.startPosition; + if (this.timelinePos = s, t.length && t[0].cue.pre) { + const a = e.findEventIndex(t[0].identifier); + this.setSchedulePosition(a); + } else if (s >= 0 || !this.primaryLive) { + const a = this.timelinePos = s > 0 ? s : 0, o = e.findItemIndexAtTime(a); + this.setSchedulePosition(o); + } + } else if (r && !this.playingItem) { + const s = e.findItemIndex(r); + this.setSchedulePosition(s); + } + } + advanceAfterAssetEnded(e, t, i) { + const r = Eo(e, i); + if (!e.isAssetPastPlayoutLimit(r)) + this.setSchedulePosition(t, r); + else { + const s = this.schedule.items; + if (s) { + const a = t + 1, o = s.length; + if (a >= o) { + this.setSchedulePosition(-1); + return; + } + const l = e.resumeTime; + this.timelinePos < l && (this.timelinePos = l, this.checkBuffer()), this.setSchedulePosition(a); + } + } + } + setScheduleToAssetAtTime(e, t) { + const i = this.schedule, r = t.parentIdentifier, s = i.getEvent(r); + if (s) { + const a = i.findEventIndex(r), o = i.findAssetIndex(s, e); + this.advanceAfterAssetEnded(s, a, o - 1); + } + } + setSchedulePosition(e, t) { + const i = this.schedule.items; + if (!i || this.playbackDisabled) + return; + this.log(`setSchedulePosition ${e}, ${t}`); + const r = e >= 0 ? i[e] : null, s = this.playingItem, a = this.playingLastItem; + if (this.isInterstitial(s)) { + var o; + const u = s.event, c = this.playingAsset, h = c == null ? void 0 : c.identifier, d = h ? this.getAssetPlayer(h) : null; + if (d && h && (!this.eventItemsMatch(s, r) || t !== void 0 && h !== ((o = u.assetList) == null ? void 0 : o[t].identifier))) { + var l; + const f = u.findAssetIndex(c); + this.log(`INTERSTITIAL_ASSET_ENDED ${f + 1}/${u.assetList.length} ${un(c)}`), this.endedAsset = c, this.playingAsset = null, this.hls.trigger(S.INTERSTITIAL_ASSET_ENDED, { + asset: c, + assetListIndex: f, + event: u, + schedule: i.slice(0), + scheduleIndex: e, + player: d + }), this.retreiveMediaSource(h, r), d.media && !((l = this.detachedData) != null && l.mediaSource) && d.detachMedia(); + } + if (!this.eventItemsMatch(s, r) && (this.endedItem = s, this.playingItem = null, this.log(`INTERSTITIAL_ENDED ${u} ${xr(s)}`), u.hasPlayed = !0, this.hls.trigger(S.INTERSTITIAL_ENDED, { + event: u, + schedule: i.slice(0), + scheduleIndex: e + }), u.cue.once)) { + this.updateSchedule(); + const f = this.schedule.items; + if (r && f) { + const m = this.schedule.findItemIndex(r); + this.advanceSchedule(m, f, t, s, a); + } + return; + } + } + this.advanceSchedule(e, i, t, s, a); + } + advanceSchedule(e, t, i, r, s) { + const a = e >= 0 ? t[e] : null, o = this.primaryMedia, l = this.playerQueue; + if (l.length && l.forEach((u) => { + const c = u.interstitial, h = this.schedule.findEventIndex(c.identifier); + (h < e || h > e + 1) && this.clearInterstitial(c, a); + }), this.isInterstitial(a)) { + this.timelinePos = Math.min(Math.max(this.timelinePos, a.start), a.end); + const u = a.event; + if (i === void 0) { + i = this.schedule.findAssetIndex(u, this.timelinePos); + const f = Eo(u, i - 1); + if (u.isAssetPastPlayoutLimit(f)) { + this.advanceAfterAssetEnded(u, e, i); + return; + } + i = f; + } + const c = this.waitingItem; + this.assetsBuffered(a, o) || this.setBufferingItem(a); + let h = this.preloadAssets(u, i); + if (this.eventItemsMatch(a, c || r) || (this.waitingItem = a, this.log(`INTERSTITIAL_STARTED ${xr(a)} ${u.appendInPlace ? "append in place" : ""}`), this.hls.trigger(S.INTERSTITIAL_STARTED, { + event: u, + schedule: t.slice(0), + scheduleIndex: e + })), !u.assetListLoaded) { + this.log(`Waiting for ASSET-LIST to complete loading ${u}`); + return; + } + if (u.assetListLoader && (u.assetListLoader.destroy(), u.assetListLoader = void 0), !o) { + this.log(`Waiting for attachMedia to start Interstitial ${u}`); + return; + } + this.waitingItem = this.endedItem = null, this.playingItem = a; + const d = u.assetList[i]; + if (!d) { + const f = t[e + 1], m = this.media; + f && m && !this.isInterstitial(f) && m.currentTime < f.start && (m.currentTime = this.timelinePos = f.start), this.advanceAfterAssetEnded(u, e, i || 0); + return; + } + if (h || (h = this.getAssetPlayer(d.identifier)), h === null || h.destroyed) { + const f = u.assetList.length; + this.warn(`asset ${i + 1}/${f} player destroyed ${u}`), h = this.createAssetPlayer(u, d, i); + } + if (!this.eventItemsMatch(a, this.bufferingItem) && u.appendInPlace && this.isAssetBuffered(d)) + return; + this.startAssetPlayer(h, i, t, e, o), this.shouldPlay && Ju(h.media); + } else a !== null ? (this.resumePrimary(a, e, r), this.shouldPlay && Ju(this.hls.media)) : s && this.isInterstitial(r) && (this.endedItem = null, this.playingItem = r, r.event.appendInPlace || this.attachPrimary(this.schedule.durations.primary, null)); + } + get playbackDisabled() { + return this.hls.config.enableInterstitialPlayback === !1; + } + get primaryDetails() { + var e, t; + return (e = this.mediaSelection) == null || (t = e.main) == null ? void 0 : t.details; + } + get primaryLive() { + var e; + return !!((e = this.primaryDetails) != null && e.live); + } + resumePrimary(e, t, i) { + var r; + if (this.playingItem = e, this.playingAsset = this.endedAsset = null, this.waitingItem = this.endedItem = null, this.bufferedToItem(e), this.log(`resuming ${xr(e)}`), !((r = this.detachedData) != null && r.mediaSource)) { + let a = this.timelinePos; + (a < e.start || a >= e.end) && (a = this.getPrimaryResumption(e, t), this.timelinePos = a), this.attachPrimary(a, e); + } + if (!i) + return; + const s = this.schedule.items; + s && (this.log(`INTERSTITIALS_PRIMARY_RESUMED ${xr(e)}`), this.hls.trigger(S.INTERSTITIALS_PRIMARY_RESUMED, { + schedule: s.slice(0), + scheduleIndex: t + }), this.checkBuffer()); + } + getPrimaryResumption(e, t) { + const i = e.start; + if (this.primaryLive) { + const r = this.primaryDetails; + if (t === 0) + return this.hls.startPosition; + if (r && (i < r.fragmentStart || i > r.edge)) + return this.hls.liveSyncPosition || -1; + } + return i; + } + isAssetBuffered(e) { + const t = this.getAssetPlayer(e.identifier); + return t != null && t.hls ? t.hls.bufferedToEnd : De.bufferInfo(this.primaryMedia, this.timelinePos, 0).end + 1 >= e.timelineStart + (e.duration || 0); + } + attachPrimary(e, t, i) { + t ? this.setBufferingItem(t) : this.bufferingItem = this.playingItem, this.bufferingAsset = null; + const r = this.primaryMedia; + if (!r) + return; + const s = this.hls; + s.media ? this.checkBuffer() : (this.transferMediaTo(s, r), i && this.startLoadingPrimaryAt(e, i)), i || (this.timelinePos = e, this.startLoadingPrimaryAt(e, i)); + } + startLoadingPrimaryAt(e, t) { + var i; + const r = this.hls; + !r.loadingEnabled || !r.media || Math.abs((((i = r.mainForwardBufferInfo) == null ? void 0 : i.start) || r.media.currentTime) - e) > 0.5 ? r.startLoad(e, t) : r.bufferingEnabled || r.resumeBuffering(); + } + // HLS.js event callbacks + onManifestLoading() { + this.stopLoad(), this.schedule.reset(), this.emptyPlayerQueue(), this.clearScheduleState(), this.shouldPlay = !1, this.bufferedPos = this.timelinePos = -1, this.mediaSelection = this.altSelection = this.manager = this.requiredTracks = null, this.hls.off(S.BUFFER_CODECS, this.onBufferCodecs, this), this.hls.on(S.BUFFER_CODECS, this.onBufferCodecs, this); + } + onLevelUpdated(e, t) { + if (t.level === -1) + return; + const i = this.hls.levels[t.level], r = He(He({}, this.mediaSelection || this.altSelection), {}, { + main: i + }); + this.mediaSelection = r, this.schedule.parseInterstitialDateRanges(r, this.hls.config.interstitialAppendInPlace), !this.effectivePlayingItem && this.schedule.items && this.checkStart(); + } + onAudioTrackUpdated(e, t) { + const i = this.hls.audioTracks[t.id], r = this.mediaSelection; + if (!r) { + this.altSelection = He(He({}, this.altSelection), {}, { + audio: i + }); + return; + } + const s = He(He({}, r), {}, { + audio: i + }); + this.mediaSelection = s; + } + onSubtitleTrackUpdated(e, t) { + const i = this.hls.subtitleTracks[t.id], r = this.mediaSelection; + if (!r) { + this.altSelection = He(He({}, this.altSelection), {}, { + subtitles: i + }); + return; + } + const s = He(He({}, r), {}, { + subtitles: i + }); + this.mediaSelection = s; + } + onAudioTrackSwitching(e, t) { + const i = hu(t); + this.playerQueue.forEach((r) => r.hls.setAudioOption(t) || r.hls.setAudioOption(i)); + } + onSubtitleTrackSwitch(e, t) { + const i = hu(t); + this.playerQueue.forEach((r) => r.hls.setSubtitleOption(t) || t.id !== -1 && r.hls.setSubtitleOption(i)); + } + onBufferCodecs(e, t) { + const i = t.tracks; + i && (this.requiredTracks = i); + } + onBufferAppended(e, t) { + this.checkBuffer(); + } + onBufferFlushed(e, t) { + const i = this.playingItem; + if (i && !this.itemsMatch(i, this.bufferingItem) && !this.isInterstitial(i)) { + const r = this.timelinePos; + this.bufferedPos = r, this.checkBuffer(); + } + } + onBufferedToEnd(e) { + const t = this.schedule.events; + if (this.bufferedPos < Number.MAX_VALUE && t) { + for (let r = 0; r < t.length; r++) { + const s = t[r]; + if (s.cue.post) { + var i; + const a = this.schedule.findEventIndex(s.identifier), o = (i = this.schedule.items) == null ? void 0 : i[a]; + this.isInterstitial(o) && this.eventItemsMatch(o, this.bufferingItem) && this.bufferedToItem(o, 0); + break; + } + } + this.bufferedPos = Number.MAX_VALUE; + } + } + onMediaEnded(e) { + const t = this.playingItem; + if (!this.playingLastItem && t) { + const i = this.findItemIndex(t); + this.setSchedulePosition(i + 1); + } else + this.shouldPlay = !1; + } + updateItem(e, t) { + const i = this.schedule.items; + if (e && i) { + const r = this.findItemIndex(e, t); + return i[r] || null; + } + return null; + } + trimInPlace(e, t) { + if (this.isInterstitial(e) && e.event.appendInPlace && t.end - e.end > 0.25) { + e.event.assetList.forEach((s, a) => { + e.event.isAssetPastPlayoutLimit(a) && this.clearAssetPlayer(s.identifier, null); + }); + const i = e.end + 0.25, r = De.bufferInfo(this.primaryMedia, i, 0); + (r.end > i || (r.nextStart || 0) > i) && (this.attachPrimary(i, null), this.flushFrontBuffer(i)); + } + } + itemsMatch(e, t) { + return !!t && (e === t || e.event && t.event && this.eventItemsMatch(e, t) || !e.event && !t.event && this.findItemIndex(e) === this.findItemIndex(t)); + } + eventItemsMatch(e, t) { + var i; + return !!t && (e === t || e.event.identifier === ((i = t.event) == null ? void 0 : i.identifier)); + } + findItemIndex(e, t) { + return e ? this.schedule.findItemIndex(e, t) : -1; + } + updateSchedule() { + const e = this.mediaSelection; + e && this.schedule.updateSchedule(e, []); + } + // Schedule buffer control + checkBuffer(e) { + const t = this.schedule.items; + if (!t) + return; + const i = De.bufferInfo(this.primaryMedia, this.timelinePos, 0); + e && (this.bufferedPos = this.timelinePos), e || (e = i.len < 1), this.updateBufferedPos(i.end, t, e); + } + updateBufferedPos(e, t, i) { + const r = this.schedule, s = this.bufferingItem; + if (this.bufferedPos > e) + return; + if (t.length === 1 && this.itemsMatch(t[0], s)) { + this.bufferedPos = e; + return; + } + const a = this.playingItem, o = this.findItemIndex(a); + let l = r.findItemIndexAtTime(e); + if (this.bufferedPos < e) { + var u, c; + const h = this.findItemIndex(s), d = Math.min(h + 1, t.length - 1), f = t[d]; + if ((l === -1 && s && e >= s.end || (u = f.event) != null && u.appendInPlace && e + 0.01 >= f.start) && (l = d), d - o > 1 && (s == null || (c = s.event) == null ? void 0 : c.appendInPlace) === !1) + return; + if (this.bufferedPos = e, l > h && l > o) + this.bufferedToItem(f); + else { + const m = this.primaryDetails; + this.primaryLive && m && e > m.edge - m.targetduration && f.start < m.edge + this.hls.config.interstitialLiveLookAhead && this.isInterstitial(f) && this.preloadAssets(f.event, 0); + } + } else i && a && !this.itemsMatch(a, s) && (l === o ? this.bufferedToItem(a) : l === o + 1 && this.bufferedToItem(t[l])); + } + assetsBuffered(e, t) { + return e.event.assetList.length === 0 ? !1 : !e.event.assetList.some((r) => { + const s = this.getAssetPlayer(r.identifier); + return !(s != null && s.bufferedInPlaceToEnd(t)); + }); + } + setBufferingItem(e) { + const t = this.bufferingItem, i = this.schedule; + if (this.itemsMatch(e, t)) + this.bufferingItem !== e && (this.bufferingItem = e); + else { + const { + items: r, + events: s + } = i; + if (!r || !s) + return t; + const a = this.isInterstitial(e), o = this.getBufferingPlayer(); + this.bufferingItem = e, this.bufferedPos = Math.max(e.start, Math.min(e.end, this.timelinePos)); + const l = o ? o.remaining : t ? t.end - this.timelinePos : 0; + this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${xr(e)}` + (t ? ` (${l.toFixed(2)} remaining)` : "")), this.playbackDisabled || (a ? e.event.assetList.forEach((u) => { + const c = this.getAssetPlayer(u.identifier); + c && c.resumeBuffering(); + }) : (this.hls.resumeBuffering(), this.playerQueue.forEach((u) => u.pauseBuffering()))), this.hls.trigger(S.INTERSTITIALS_BUFFERED_TO_BOUNDARY, { + events: s.slice(0), + schedule: r.slice(0), + bufferingIndex: this.findItemIndex(e), + playingIndex: this.findItemIndex(this.playingItem) + }); + } + return t; + } + bufferedToItem(e, t = 0) { + const i = this.setBufferingItem(e); + if (!this.playbackDisabled) { + if (this.isInterstitial(e)) + this.bufferedToEvent(e, t); + else if (i !== null) { + this.bufferingAsset = null; + const r = this.detachedData; + r ? r.mediaSource ? this.attachPrimary(e.start, e, !0) : this.preloadPrimary(e) : this.preloadPrimary(e); + } + } + } + preloadPrimary(e) { + const t = this.findItemIndex(e), i = this.getPrimaryResumption(e, t); + this.startLoadingPrimaryAt(i); + } + bufferedToEvent(e, t) { + const i = e.event, r = i.assetList.length === 0 && !i.assetListLoader, s = i.cue.once; + if (r || !s) { + const a = this.preloadAssets(i, t); + if (a != null && a.interstitial.appendInPlace) { + const o = i.assetList[t], l = this.primaryMedia; + o && l && this.bufferAssetPlayer(a, l); + } + } + } + preloadAssets(e, t) { + const i = e.assetUrl, r = e.assetList.length, s = r === 0 && !e.assetListLoader, a = e.cue.once; + if (s) { + const l = e.timelineStart; + if (e.appendInPlace) { + var o; + const d = this.playingItem; + !this.isInterstitial(d) && (d == null || (o = d.nextEvent) == null ? void 0 : o.identifier) === e.identifier && this.flushFrontBuffer(l + 0.25); + } + let u, c = 0; + if (!this.playingItem && this.primaryLive && (c = this.hls.startPosition, c === -1 && (c = this.hls.liveSyncPosition || 0)), c && !(e.cue.pre || e.cue.post)) { + const d = c - l; + d > 0 && (u = Math.round(d * 1e3) / 1e3); + } + if (this.log(`Load interstitial asset ${t + 1}/${i ? 1 : r} ${e}${u ? ` live-start: ${c} start-offset: ${u}` : ""}`), i) + return this.createAsset(e, 0, 0, l, e.duration, i); + const h = this.assetListLoader.loadAssetList(e, u); + h && (e.assetListLoader = h); + } else if (!a && r) { + for (let l = t; l < r; l++) { + const u = e.assetList[l], c = this.getAssetPlayerQueueIndex(u.identifier); + (c === -1 || this.playerQueue[c].destroyed) && !u.error && this.createAssetPlayer(e, u, l); + } + return this.getAssetPlayer(e.assetList[t].identifier); + } + return null; + } + flushFrontBuffer(e) { + const t = this.requiredTracks; + if (!t) + return; + this.log(`Removing front buffer starting at ${e}`), Object.keys(t).forEach((r) => { + this.hls.trigger(S.BUFFER_FLUSHING, { + startOffset: e, + endOffset: 1 / 0, + type: r + }); + }); + } + // Interstitial Asset Player control + getAssetPlayerQueueIndex(e) { + const t = this.playerQueue; + for (let i = 0; i < t.length; i++) + if (e === t[i].assetId) + return i; + return -1; + } + getAssetPlayer(e) { + const t = this.getAssetPlayerQueueIndex(e); + return this.playerQueue[t] || null; + } + getBufferingPlayer() { + const { + playerQueue: e, + primaryMedia: t + } = this; + if (t) { + for (let i = 0; i < e.length; i++) + if (e[i].media === t) + return e[i]; + } + return null; + } + createAsset(e, t, i, r, s, a) { + const o = { + parentIdentifier: e.identifier, + identifier: sv(e, a, t), + duration: s, + startOffset: i, + timelineStart: r, + uri: a + }; + return this.createAssetPlayer(e, o, t); + } + createAssetPlayer(e, t, i) { + const r = this.hls, s = r.userConfig; + let a = s.videoPreference; + const o = r.loadLevelObj || r.levels[r.currentLevel]; + (a || o) && (a = Ye({}, a), o.videoCodec && (a.videoCodec = o.videoCodec), o.videoRange && (a.allowedVideoRanges = [o.videoRange])); + const l = r.audioTracks[r.audioTrack], u = r.subtitleTracks[r.subtitleTrack]; + let c = 0; + if (this.primaryLive || e.appendInPlace) { + const y = this.timelinePos - t.timelineStart; + if (y > 1) { + const T = t.duration; + T && y < T && (c = y); + } + } + const h = t.identifier, d = He(He({}, s), {}, { + autoStartLoad: !0, + startFragPrefetch: !0, + primarySessionId: r.sessionId, + assetPlayerId: h, + abrEwmaDefaultEstimate: r.bandwidthEstimate, + interstitialsController: void 0, + startPosition: c, + liveDurationInfinity: !1, + testBandwidth: !1, + videoPreference: a, + audioPreference: l || s.audioPreference, + subtitlePreference: u || s.subtitlePreference + }); + e.appendInPlace && (e.appendInPlaceStarted = !0, t.timelineStart && (d.timelineOffset = t.timelineStart)); + const f = d.cmcd; + f != null && f.sessionId && f.contentId && (d.cmcd = Ye({}, f, { + contentId: Hn(t.uri) + })), this.getAssetPlayer(h) && this.warn(`Duplicate date range identifier ${e} and asset ${h}`); + const m = new lv(this.HlsPlayerClass, d, e, t); + this.playerQueue.push(m), e.assetList[i] = t; + const p = (y) => { + if (y.live) { + const k = new Error(`Interstitials MUST be VOD assets ${e}`), w = { + fatal: !0, + type: de.OTHER_ERROR, + details: B.INTERSTITIAL_ASSET_ITEM_ERROR, + error: k + }; + this.handleAssetItemError(w, e, this.schedule.findEventIndex(e.identifier), i, k.message); + return; + } + const T = y.edge - y.fragmentStart, A = t.duration; + (A === null || T > A) && (this.log(`Interstitial asset "${h}" duration change ${A} > ${T}`), t.duration = T, this.updateSchedule()); + }; + m.on(S.LEVEL_UPDATED, (y, { + details: T + }) => p(T)), m.on(S.LEVEL_PTS_UPDATED, (y, { + details: T + }) => p(T)); + const v = (y, T) => { + const A = this.getAssetPlayer(h); + if (A && T.tracks) { + A.off(S.BUFFER_CODECS, v), A.tracks = T.tracks; + const k = this.primaryMedia; + this.bufferingAsset === A.assetItem && k && !A.media && this.bufferAssetPlayer(A, k); + } + }; + m.on(S.BUFFER_CODECS, v); + const b = () => { + var y; + const T = this.getAssetPlayer(h); + if (this.log(`buffered to end of asset ${T}`), !T) + return; + const A = this.schedule.findEventIndex(e.identifier), k = (y = this.schedule.items) == null ? void 0 : y[A]; + if (this.isInterstitial(k)) { + const L = e.findAssetIndex(t), I = Eo(e, L); + if (!e.isAssetPastPlayoutLimit(I)) + this.bufferedToItem(k, I); + else { + var w; + const R = (w = this.schedule.items) == null ? void 0 : w[A + 1]; + R && this.bufferedToItem(R); + } + } + }; + m.on(S.BUFFERED_TO_END, b); + const E = (y) => () => { + if (!this.getAssetPlayer(h)) + return; + this.shouldPlay = !0; + const A = this.schedule.findEventIndex(e.identifier); + this.advanceAfterAssetEnded(e, A, y); + }; + return m.once(S.MEDIA_ENDED, E(i)), m.once(S.PLAYOUT_LIMIT_REACHED, E(1 / 0)), m.on(S.ERROR, (y, T) => { + const A = this.getAssetPlayer(h); + if (T.details === B.BUFFER_STALLED_ERROR) { + if (A != null && A.media) { + const k = A.currentTime, w = A.duration - k; + k && e.appendInPlace && w / A.media.playbackRate < 0.5 ? (this.log(`Advancing buffer past end of asset ${h} ${e} at ${A.media.currentTime}`), b()) : (this.warn(`Stalled at ${k} of ${k + w} in asset ${h} ${e}`), this.onTimeupdate(), this.checkBuffer(!0)); + } + return; + } + this.handleAssetItemError(T, e, this.schedule.findEventIndex(e.identifier), i, `Asset player error ${T.error} ${e}`); + }), m.on(S.DESTROYING, () => { + if (!this.getAssetPlayer(h)) + return; + const T = new Error(`Asset player destroyed unexpectedly ${h}`), A = { + fatal: !0, + type: de.OTHER_ERROR, + details: B.INTERSTITIAL_ASSET_ITEM_ERROR, + error: T + }; + this.handleAssetItemError(A, e, this.schedule.findEventIndex(e.identifier), i, T.message); + }), this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${un(t)}`), this.hls.trigger(S.INTERSTITIAL_ASSET_PLAYER_CREATED, { + asset: t, + assetListIndex: i, + event: e, + player: m + }), m; + } + clearInterstitial(e, t) { + e.assetList.forEach((i) => { + this.clearAssetPlayer(i.identifier, t); + }), e.reset(); + } + resetAssetPlayer(e) { + const t = this.getAssetPlayerQueueIndex(e); + if (t !== -1) { + this.log(`reset asset player "${e}" after error`); + const i = this.playerQueue[t]; + this.transferMediaFromPlayer(i, null), i.resetDetails(); + } + } + clearAssetPlayer(e, t) { + const i = this.getAssetPlayerQueueIndex(e); + if (i !== -1) { + this.log(`clear asset player "${e}" toSegment: ${t && xr(t)}`); + const r = this.playerQueue[i]; + this.transferMediaFromPlayer(r, t), this.playerQueue.splice(i, 1), r.destroy(); + } + } + emptyPlayerQueue() { + let e; + for (; e = this.playerQueue.pop(); ) + e.destroy(); + this.playerQueue = []; + } + startAssetPlayer(e, t, i, r, s) { + const { + interstitial: a, + assetItem: o, + assetId: l + } = e, u = a.assetList.length, c = this.playingAsset; + this.endedAsset = null, this.playingAsset = o, (!c || c.identifier !== l) && (c && (this.clearAssetPlayer(c.identifier, i[r]), delete c.error), this.log(`INTERSTITIAL_ASSET_STARTED ${t + 1}/${u} ${un(o)}`), this.hls.trigger(S.INTERSTITIAL_ASSET_STARTED, { + asset: o, + assetListIndex: t, + event: a, + schedule: i.slice(0), + scheduleIndex: r, + player: e + })), this.bufferAssetPlayer(e, s); + } + bufferAssetPlayer(e, t) { + var i, r; + const { + interstitial: s, + assetItem: a + } = e, o = this.schedule.findEventIndex(s.identifier), l = (i = this.schedule.items) == null ? void 0 : i[o]; + if (!l) + return; + this.setBufferingItem(l), this.bufferingAsset = a; + const u = this.getBufferingPlayer(); + if (u === e) + return; + const c = s.appendInPlace; + if (c && (u == null ? void 0 : u.interstitial.appendInPlace) === !1) + return; + const h = (u == null ? void 0 : u.tracks) || ((r = this.detachedData) == null ? void 0 : r.tracks) || this.requiredTracks; + if (c && a !== this.playingAsset) { + if (!e.tracks) + return; + if (h && !cd(h, e.tracks)) { + const d = new Error(`Asset ${un(a)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(h)}')`), f = { + fatal: !0, + type: de.OTHER_ERROR, + details: B.INTERSTITIAL_ASSET_ITEM_ERROR, + error: d + }, m = s.findAssetIndex(a); + this.handleAssetItemError(f, s, o, m, d.message); + return; + } + } + this.transferMediaTo(e, t); + } + handleAssetItemError(e, t, i, r, s) { + if (e.details === B.BUFFER_STALLED_ERROR) + return; + const a = t.assetList[r]; + this.warn(`INTERSTITIAL_ASSET_ERROR ${a && un(a)} ${e.error}`); + const o = a == null ? void 0 : a.identifier, l = this.getAssetPlayerQueueIndex(o), u = this.playerQueue[l] || null, c = this.schedule.items, h = Ye({}, e, { + fatal: !1, + errorAction: es(!0), + asset: a, + assetListIndex: r, + event: t, + schedule: c, + scheduleIndex: i, + player: u + }); + if (this.hls.trigger(S.INTERSTITIAL_ASSET_ERROR, h), !e.fatal) + return; + const d = this.playingAsset, f = new Error(s); + if (a && (this.clearAssetPlayer(o, null), a.error = f), !t.assetList.some((m) => !m.error)) + t.error = f; + else if (t.appendInPlace) { + for (let m = r; m < t.assetList.length; m++) + this.resetAssetPlayer(t.assetList[m].identifier); + this.updateSchedule(); + } + t.error ? this.primaryFallback(t) : d && d.identifier === o && this.advanceAfterAssetEnded(t, i, r); + } + primaryFallback(e) { + const t = e.timelineStart, i = this.effectivePlayingItem; + if (this.updateSchedule(), i) { + this.log(`Fallback to primary from event "${e.identifier}" start: ${t} pos: ${this.timelinePos} playing: ${i ? xr(i) : "<none>"} error: ${e.error}`); + let r = this.timelinePos; + r === -1 && (r = this.hls.startPosition); + const s = this.updateItem(i, r); + this.itemsMatch(i, s) && this.clearInterstitial(e, null), e.appendInPlace && (this.attachPrimary(t, null), this.flushFrontBuffer(t)); + const a = this.schedule.findItemIndexAtTime(r); + this.setSchedulePosition(a); + } else + this.checkStart(); + } + // Asset List loading + onAssetListLoaded(e, t) { + var i; + const r = t.event, s = r.identifier, a = t.assetListResponse.ASSETS; + if (!this.schedule.hasEvent(s)) + return; + const o = r.timelineStart, l = r.duration; + let u = 0; + a.forEach((m, p) => { + const v = parseFloat(m.DURATION); + this.createAsset(r, p, u, o + u, v, m.URI), u += v; + }), r.duration = u, this.log(`Loaded asset-list with duration: ${u} (was: ${l}) ${r}`); + const c = this.waitingItem, h = (c == null ? void 0 : c.event.identifier) === s; + this.updateSchedule(); + const d = (i = this.bufferingItem) == null ? void 0 : i.event; + if (h) { + var f; + const m = this.schedule.findEventIndex(s), p = (f = this.schedule.items) == null ? void 0 : f[m]; + if (p) { + if (!this.playingItem && this.timelinePos > p.end && this.schedule.findItemIndexAtTime(this.timelinePos) !== m) { + r.error = new Error(`Interstitial no longer within playback range ${this.timelinePos} ${r}`), this.primaryFallback(r); + return; + } + this.setBufferingItem(p); + } + this.setSchedulePosition(m); + } else if ((d == null ? void 0 : d.identifier) === s && d.appendInPlace) { + const m = r.assetList[0], p = this.getAssetPlayer(m.identifier), v = this.primaryMedia; + m && p && v && this.bufferAssetPlayer(p, v); + } + } + onError(e, t) { + switch (t.details) { + case B.ASSET_LIST_PARSING_ERROR: + case B.ASSET_LIST_LOAD_ERROR: + case B.ASSET_LIST_LOAD_TIMEOUT: { + const i = t.interstitial; + i && this.primaryFallback(i); + break; + } + case B.BUFFER_STALLED_ERROR: { + this.onTimeupdate(), this.checkBuffer(!0); + break; + } + } + } +} +const ec = 500; +class dv extends Xl { + constructor(e, t, i) { + super(e, t, i, "subtitle-stream-controller", ue.SUBTITLE), this.currentTrackId = -1, this.tracksBuffered = [], this.mainDetails = null, this.registerListeners(); + } + onHandlerDestroying() { + this.unregisterListeners(), super.onHandlerDestroying(), this.mainDetails = null; + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(S.LEVEL_LOADED, this.onLevelLoaded, this), e.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + unregisterListeners() { + super.unregisterListeners(); + const { + hls: e + } = this; + e.off(S.LEVEL_LOADED, this.onLevelLoaded, this), e.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + startLoad(e, t) { + this.stopLoad(), this.state = W.IDLE, this.setInterval(ec), this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } + onManifestLoading() { + super.onManifestLoading(), this.mainDetails = null; + } + onMediaDetaching(e, t) { + this.tracksBuffered = [], super.onMediaDetaching(e, t); + } + onLevelLoaded(e, t) { + this.mainDetails = t.details; + } + onSubtitleFragProcessed(e, t) { + const { + frag: i, + success: r + } = t; + if (Dt(i) && (this.fragPrevious = i), this.state = W.IDLE, !r) + return; + const s = this.tracksBuffered[this.currentTrackId]; + if (!s) + return; + let a; + const o = i.start; + for (let u = 0; u < s.length; u++) + if (o >= s[u].start && o <= s[u].end) { + a = s[u]; + break; + } + const l = i.start + i.duration; + a ? a.end = l : (a = { + start: o, + end: l + }, s.push(a)), this.fragmentTracker.fragBuffered(i), this.fragBufferedComplete(i, null), this.media && this.tick(); + } + onBufferFlushing(e, t) { + const { + startOffset: i, + endOffset: r + } = t; + if (i === 0 && r !== Number.POSITIVE_INFINITY) { + const s = r - 1; + if (s <= 0) + return; + t.endOffsetSubtitles = Math.max(0, s), this.tracksBuffered.forEach((a) => { + for (let o = 0; o < a.length; ) { + if (a[o].end <= s) { + a.shift(); + continue; + } else if (a[o].start < s) + a[o].start = s; + else + break; + o++; + } + }), this.fragmentTracker.removeFragmentsInRange(i, s, ue.SUBTITLE); + } + } + // If something goes wrong, proceed to next frag, if we were processing one. + onError(e, t) { + const i = t.frag; + (i == null ? void 0 : i.type) === ue.SUBTITLE && (t.details === B.FRAG_GAP && this.fragmentTracker.fragBuffered(i, !0), this.fragCurrent && this.fragCurrent.abortRequests(), this.state !== W.STOPPED && (this.state = W.IDLE)); + } + // Got all new subtitle levels. + onSubtitleTracksUpdated(e, { + subtitleTracks: t + }) { + if (this.levels && cf(this.levels, t)) { + this.levels = t.map((i) => new Jn(i)); + return; + } + this.tracksBuffered = [], this.levels = t.map((i) => { + const r = new Jn(i); + return this.tracksBuffered[r.id] = [], r; + }), this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, ue.SUBTITLE), this.fragPrevious = null, this.mediaBuffer = null; + } + onSubtitleTrackSwitch(e, t) { + var i; + if (this.currentTrackId = t.id, !((i = this.levels) != null && i.length) || this.currentTrackId === -1) { + this.clearInterval(); + return; + } + const r = this.levels[this.currentTrackId]; + r != null && r.details ? this.mediaBuffer = this.mediaBufferTimeRanges : this.mediaBuffer = null, r && this.state !== W.STOPPED && this.setInterval(ec); + } + // Got a new set of subtitle fragments. + onSubtitleTrackLoaded(e, t) { + var i; + const { + currentTrackId: r, + levels: s + } = this, { + details: a, + id: o + } = t; + if (!s) { + this.warn(`Subtitle tracks were reset while loading level ${o}`); + return; + } + const l = s[o]; + if (o >= s.length || !l) + return; + this.log(`Subtitle track ${o} loaded [${a.startSN},${a.endSN}]${a.lastPartSn ? `[part-${a.lastPartSn}-${a.lastPartIndex}]` : ""},duration:${a.totalduration}`), this.mediaBuffer = this.mediaBufferTimeRanges; + let u = 0; + if (a.live || (i = l.details) != null && i.live) { + const h = this.mainDetails; + if (a.deltaUpdateFailed || !h) + return; + const d = h.fragments[0]; + if (!l.details) + a.hasProgramDateTime && h.hasProgramDateTime ? (Aa(a, h), u = a.fragmentStart) : d && (u = d.start, gl(a, u)); + else { + var c; + u = this.alignPlaylists(a, l.details, (c = this.levelLastLoaded) == null ? void 0 : c.details), u === 0 && d && (u = d.start, gl(a, u)); + } + } + l.details = a, this.levelLastLoaded = l, o === r && (this.hls.trigger(S.SUBTITLE_TRACK_UPDATED, { + details: a, + id: o, + groupId: t.groupId + }), this.tick(), a.live && !this.fragCurrent && this.media && this.state === W.IDLE && (Hr(null, a.fragments, this.media.currentTime, 0) || (this.warn("Subtitle playlist not aligned with playback"), l.details = void 0))); + } + _handleFragmentLoadComplete(e) { + const { + frag: t, + payload: i + } = e, r = t.decryptdata, s = this.hls; + if (!this.fragContextChanged(t) && i && i.byteLength > 0 && r != null && r.key && r.iv && gn(r.method)) { + const a = performance.now(); + this.decrypter.decrypt(new Uint8Array(i), r.key.buffer, r.iv.buffer, Wl(r.method)).catch((o) => { + throw s.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.FRAG_DECRYPT_ERROR, + fatal: !1, + error: o, + reason: o.message, + frag: t + }), o; + }).then((o) => { + const l = performance.now(); + s.trigger(S.FRAG_DECRYPTED, { + frag: t, + payload: o, + stats: { + tstart: a, + tdecrypt: l + } + }); + }).catch((o) => { + this.warn(`${o.name}: ${o.message}`), this.state = W.IDLE; + }); + } + } + doTick() { + if (!this.media) { + this.state = W.IDLE; + return; + } + if (this.state === W.IDLE) { + const { + currentTrackId: e, + levels: t + } = this, i = t == null ? void 0 : t[e]; + if (!i || !t.length || !i.details || this.waitForLive(i)) + return; + const { + config: r + } = this, s = this.getLoadPosition(), a = De.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], s, r.maxBufferHole), { + end: o, + len: l + } = a, u = i.details, c = this.hls.maxBufferLength + u.levelTargetDuration; + if (l > c) + return; + const h = u.fragments, d = h.length, f = u.edge; + let m = null; + const p = this.fragPrevious; + if (o < f) { + const E = r.maxFragLookUpTolerance, y = o > f - E ? 0 : E; + m = Hr(p, h, Math.max(h[0].start, o), y), !m && p && p.start < h[0].start && (m = h[0]); + } else + m = h[d - 1]; + if (m = this.filterReplacedPrimary(m, i.details), !m) + return; + const v = m.sn - u.startSN, b = h[v - 1]; + if (b && b.cc === m.cc && this.fragmentTracker.getState(b) === bt.NOT_LOADED && (m = b), this.fragmentTracker.getState(m) === bt.NOT_LOADED) { + const E = this.mapToInitFragWhenRequired(m); + E && this.loadFragment(E, i, o); + } + } + } + loadFragment(e, t, i) { + Dt(e) ? super.loadFragment(e, t, i) : this._loadInitSegment(e, t); + } + get mediaBufferTimeRanges() { + return new fv(this.tracksBuffered[this.currentTrackId] || []); + } +} +class fv { + constructor(e) { + this.buffered = void 0; + const t = (i, r, s) => { + if (r = r >>> 0, r > s - 1) + throw new DOMException(`Failed to execute '${i}' on 'TimeRanges': The index provided (${r}) is greater than the maximum bound (${s})`); + return e[r][i]; + }; + this.buffered = { + get length() { + return e.length; + }, + end(i) { + return t("end", i, e.length); + }, + start(i) { + return t("start", i, e.length); + } + }; + } +} +const mv = { + 42: 225, + // lowercase a, acute accent + 92: 233, + // lowercase e, acute accent + 94: 237, + // lowercase i, acute accent + 95: 243, + // lowercase o, acute accent + 96: 250, + // lowercase u, acute accent + 123: 231, + // lowercase c with cedilla + 124: 247, + // division symbol + 125: 209, + // uppercase N tilde + 126: 241, + // lowercase n tilde + 127: 9608, + // Full block + // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F + // THIS MEANS THAT \x50 MUST BE ADDED TO THE VALUES + 128: 174, + // Registered symbol (R) + 129: 176, + // degree sign + 130: 189, + // 1/2 symbol + 131: 191, + // Inverted (open) question mark + 132: 8482, + // Trademark symbol (TM) + 133: 162, + // Cents symbol + 134: 163, + // Pounds sterling + 135: 9834, + // Music 8'th note + 136: 224, + // lowercase a, grave accent + 137: 32, + // transparent space (regular) + 138: 232, + // lowercase e, grave accent + 139: 226, + // lowercase a, circumflex accent + 140: 234, + // lowercase e, circumflex accent + 141: 238, + // lowercase i, circumflex accent + 142: 244, + // lowercase o, circumflex accent + 143: 251, + // lowercase u, circumflex accent + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F + 144: 193, + // capital letter A with acute + 145: 201, + // capital letter E with acute + 146: 211, + // capital letter O with acute + 147: 218, + // capital letter U with acute + 148: 220, + // capital letter U with diaresis + 149: 252, + // lowercase letter U with diaeresis + 150: 8216, + // opening single quote + 151: 161, + // inverted exclamation mark + 152: 42, + // asterisk + 153: 8217, + // closing single quote + 154: 9473, + // box drawings heavy horizontal + 155: 169, + // copyright sign + 156: 8480, + // Service mark + 157: 8226, + // (round) bullet + 158: 8220, + // Left double quotation mark + 159: 8221, + // Right double quotation mark + 160: 192, + // uppercase A, grave accent + 161: 194, + // uppercase A, circumflex + 162: 199, + // uppercase C with cedilla + 163: 200, + // uppercase E, grave accent + 164: 202, + // uppercase E, circumflex + 165: 203, + // capital letter E with diaresis + 166: 235, + // lowercase letter e with diaresis + 167: 206, + // uppercase I, circumflex + 168: 207, + // uppercase I, with diaresis + 169: 239, + // lowercase i, with diaresis + 170: 212, + // uppercase O, circumflex + 171: 217, + // uppercase U, grave accent + 172: 249, + // lowercase u, grave accent + 173: 219, + // uppercase U, circumflex + 174: 171, + // left-pointing double angle quotation mark + 175: 187, + // right-pointing double angle quotation mark + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F + 176: 195, + // Uppercase A, tilde + 177: 227, + // Lowercase a, tilde + 178: 205, + // Uppercase I, acute accent + 179: 204, + // Uppercase I, grave accent + 180: 236, + // Lowercase i, grave accent + 181: 210, + // Uppercase O, grave accent + 182: 242, + // Lowercase o, grave accent + 183: 213, + // Uppercase O, tilde + 184: 245, + // Lowercase o, tilde + 185: 123, + // Open curly brace + 186: 125, + // Closing curly brace + 187: 92, + // Backslash + 188: 94, + // Caret + 189: 95, + // Underscore + 190: 124, + // Pipe (vertical line) + 191: 8764, + // Tilde operator + 192: 196, + // Uppercase A, umlaut + 193: 228, + // Lowercase A, umlaut + 194: 214, + // Uppercase O, umlaut + 195: 246, + // Lowercase o, umlaut + 196: 223, + // Esszett (sharp S) + 197: 165, + // Yen symbol + 198: 164, + // Generic currency sign + 199: 9475, + // Box drawings heavy vertical + 200: 197, + // Uppercase A, ring + 201: 229, + // Lowercase A, ring + 202: 216, + // Uppercase O, stroke + 203: 248, + // Lowercase o, strok + 204: 9487, + // Box drawings heavy down and right + 205: 9491, + // Box drawings heavy down and left + 206: 9495, + // Box drawings heavy up and right + 207: 9499 + // Box drawings heavy up and left +}, Ef = (n) => String.fromCharCode(mv[n] || n), ki = 15, ur = 100, gv = { + 17: 1, + 18: 3, + 21: 5, + 22: 7, + 23: 9, + 16: 11, + 19: 12, + 20: 14 +}, pv = { + 17: 2, + 18: 4, + 21: 6, + 22: 8, + 23: 10, + 19: 13, + 20: 15 +}, vv = { + 25: 1, + 26: 3, + 29: 5, + 30: 7, + 31: 9, + 24: 11, + 27: 12, + 28: 14 +}, yv = { + 25: 2, + 26: 4, + 29: 6, + 30: 8, + 31: 10, + 27: 13, + 28: 15 +}, _v = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "black", "transparent"]; +class bv { + constructor() { + this.time = null, this.verboseLevel = 0; + } + log(e, t) { + if (this.verboseLevel >= e) { + const i = typeof t == "function" ? t() : t; + Ne.log(`${this.time} [${e}] ${i}`); + } + } +} +const Br = function(e) { + const t = []; + for (let i = 0; i < e.length; i++) + t.push(e[i].toString(16)); + return t; +}; +class Sf { + constructor() { + this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1; + } + reset() { + this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1; + } + setStyles(e) { + const t = ["foreground", "underline", "italics", "background", "flash"]; + for (let i = 0; i < t.length; i++) { + const r = t[i]; + e.hasOwnProperty(r) && (this[r] = e[r]); + } + } + isDefault() { + return this.foreground === "white" && !this.underline && !this.italics && this.background === "black" && !this.flash; + } + equals(e) { + return this.foreground === e.foreground && this.underline === e.underline && this.italics === e.italics && this.background === e.background && this.flash === e.flash; + } + copy(e) { + this.foreground = e.foreground, this.underline = e.underline, this.italics = e.italics, this.background = e.background, this.flash = e.flash; + } + toString() { + return "color=" + this.foreground + ", underline=" + this.underline + ", italics=" + this.italics + ", background=" + this.background + ", flash=" + this.flash; + } +} +class Ev { + constructor() { + this.uchar = " ", this.penState = new Sf(); + } + reset() { + this.uchar = " ", this.penState.reset(); + } + setChar(e, t) { + this.uchar = e, this.penState.copy(t); + } + setPenState(e) { + this.penState.copy(e); + } + equals(e) { + return this.uchar === e.uchar && this.penState.equals(e.penState); + } + copy(e) { + this.uchar = e.uchar, this.penState.copy(e.penState); + } + isEmpty() { + return this.uchar === " " && this.penState.isDefault(); + } +} +class Sv { + constructor(e) { + this.chars = [], this.pos = 0, this.currPenState = new Sf(), this.cueStartTime = null, this.logger = void 0; + for (let t = 0; t < ur; t++) + this.chars.push(new Ev()); + this.logger = e; + } + equals(e) { + for (let t = 0; t < ur; t++) + if (!this.chars[t].equals(e.chars[t])) + return !1; + return !0; + } + copy(e) { + for (let t = 0; t < ur; t++) + this.chars[t].copy(e.chars[t]); + } + isEmpty() { + let e = !0; + for (let t = 0; t < ur; t++) + if (!this.chars[t].isEmpty()) { + e = !1; + break; + } + return e; + } + /** + * Set the cursor to a valid column. + */ + setCursor(e) { + this.pos !== e && (this.pos = e), this.pos < 0 ? (this.logger.log(3, "Negative cursor position " + this.pos), this.pos = 0) : this.pos > ur && (this.logger.log(3, "Too large cursor position " + this.pos), this.pos = ur); + } + /** + * Move the cursor relative to current position. + */ + moveCursor(e) { + const t = this.pos + e; + if (e > 1) + for (let i = this.pos + 1; i < t + 1; i++) + this.chars[i].setPenState(this.currPenState); + this.setCursor(t); + } + /** + * Backspace, move one step back and clear character. + */ + backSpace() { + this.moveCursor(-1), this.chars[this.pos].setChar(" ", this.currPenState); + } + insertChar(e) { + e >= 144 && this.backSpace(); + const t = Ef(e); + if (this.pos >= ur) { + this.logger.log(0, () => "Cannot insert " + e.toString(16) + " (" + t + ") at position " + this.pos + ". Skipping it!"); + return; + } + this.chars[this.pos].setChar(t, this.currPenState), this.moveCursor(1); + } + clearFromPos(e) { + let t; + for (t = e; t < ur; t++) + this.chars[t].reset(); + } + clear() { + this.clearFromPos(0), this.pos = 0, this.currPenState.reset(); + } + clearToEndOfRow() { + this.clearFromPos(this.pos); + } + getTextString() { + const e = []; + let t = !0; + for (let i = 0; i < ur; i++) { + const r = this.chars[i].uchar; + r !== " " && (t = !1), e.push(r); + } + return t ? "" : e.join(""); + } + setPenStyles(e) { + this.currPenState.setStyles(e), this.chars[this.pos].setPenState(this.currPenState); + } +} +class So { + constructor(e) { + this.rows = [], this.currRow = ki - 1, this.nrRollUpRows = null, this.lastOutputScreen = null, this.logger = void 0; + for (let t = 0; t < ki; t++) + this.rows.push(new Sv(e)); + this.logger = e; + } + reset() { + for (let e = 0; e < ki; e++) + this.rows[e].clear(); + this.currRow = ki - 1; + } + equals(e) { + let t = !0; + for (let i = 0; i < ki; i++) + if (!this.rows[i].equals(e.rows[i])) { + t = !1; + break; + } + return t; + } + copy(e) { + for (let t = 0; t < ki; t++) + this.rows[t].copy(e.rows[t]); + } + isEmpty() { + let e = !0; + for (let t = 0; t < ki; t++) + if (!this.rows[t].isEmpty()) { + e = !1; + break; + } + return e; + } + backSpace() { + this.rows[this.currRow].backSpace(); + } + clearToEndOfRow() { + this.rows[this.currRow].clearToEndOfRow(); + } + /** + * Insert a character (without styling) in the current row. + */ + insertChar(e) { + this.rows[this.currRow].insertChar(e); + } + setPen(e) { + this.rows[this.currRow].setPenStyles(e); + } + moveCursor(e) { + this.rows[this.currRow].moveCursor(e); + } + setCursor(e) { + this.logger.log(2, "setCursor: " + e), this.rows[this.currRow].setCursor(e); + } + setPAC(e) { + this.logger.log(2, () => "pacData = " + it(e)); + let t = e.row - 1; + if (this.nrRollUpRows && t < this.nrRollUpRows - 1 && (t = this.nrRollUpRows - 1), this.nrRollUpRows && this.currRow !== t) { + for (let o = 0; o < ki; o++) + this.rows[o].clear(); + const s = this.currRow + 1 - this.nrRollUpRows, a = this.lastOutputScreen; + if (a) { + const o = a.rows[s].cueStartTime, l = this.logger.time; + if (o !== null && l !== null && o < l) + for (let u = 0; u < this.nrRollUpRows; u++) + this.rows[t - this.nrRollUpRows + u + 1].copy(a.rows[s + u]); + } + } + this.currRow = t; + const i = this.rows[this.currRow]; + if (e.indent !== null) { + const s = e.indent, a = Math.max(s - 1, 0); + i.setCursor(e.indent), e.color = i.chars[a].penState.foreground; + } + const r = { + foreground: e.color, + underline: e.underline, + italics: e.italics, + background: "black", + flash: !1 + }; + this.setPen(r); + } + /** + * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility). + */ + setBkgData(e) { + this.logger.log(2, () => "bkgData = " + it(e)), this.backSpace(), this.setPen(e), this.insertChar(32); + } + setRollUpRows(e) { + this.nrRollUpRows = e; + } + rollUp() { + if (this.nrRollUpRows === null) { + this.logger.log(3, "roll_up but nrRollUpRows not set yet"); + return; + } + this.logger.log(1, () => this.getDisplayText()); + const e = this.currRow + 1 - this.nrRollUpRows, t = this.rows.splice(e, 1)[0]; + t.clear(), this.rows.splice(this.currRow, 0, t), this.logger.log(2, "Rolling up"); + } + /** + * Get all non-empty rows with as unicode text. + */ + getDisplayText(e) { + e = e || !1; + const t = []; + let i = "", r = -1; + for (let s = 0; s < ki; s++) { + const a = this.rows[s].getTextString(); + a && (r = s + 1, e ? t.push("Row " + r + ": '" + a + "'") : t.push(a.trim())); + } + return t.length > 0 && (e ? i = "[" + t.join(" | ") + "]" : i = t.join(` +`)), i; + } + getTextAndFormat() { + return this.rows; + } +} +class tc { + constructor(e, t, i) { + this.chNr = void 0, this.outputFilter = void 0, this.mode = void 0, this.verbose = void 0, this.displayedMemory = void 0, this.nonDisplayedMemory = void 0, this.lastOutputScreen = void 0, this.currRollUpRow = void 0, this.writeScreen = void 0, this.cueStartTime = void 0, this.logger = void 0, this.chNr = e, this.outputFilter = t, this.mode = null, this.verbose = 0, this.displayedMemory = new So(i), this.nonDisplayedMemory = new So(i), this.lastOutputScreen = new So(i), this.currRollUpRow = this.displayedMemory.rows[ki - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null, this.logger = i; + } + reset() { + this.mode = null, this.displayedMemory.reset(), this.nonDisplayedMemory.reset(), this.lastOutputScreen.reset(), this.outputFilter.reset(), this.currRollUpRow = this.displayedMemory.rows[ki - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null; + } + getHandler() { + return this.outputFilter; + } + setHandler(e) { + this.outputFilter = e; + } + setPAC(e) { + this.writeScreen.setPAC(e); + } + setBkgData(e) { + this.writeScreen.setBkgData(e); + } + setMode(e) { + e !== this.mode && (this.mode = e, this.logger.log(2, () => "MODE=" + e), this.mode === "MODE_POP-ON" ? this.writeScreen = this.nonDisplayedMemory : (this.writeScreen = this.displayedMemory, this.writeScreen.reset()), this.mode !== "MODE_ROLL-UP" && (this.displayedMemory.nrRollUpRows = null, this.nonDisplayedMemory.nrRollUpRows = null), this.mode = e); + } + insertChars(e) { + for (let i = 0; i < e.length; i++) + this.writeScreen.insertChar(e[i]); + const t = this.writeScreen === this.displayedMemory ? "DISP" : "NON_DISP"; + this.logger.log(2, () => t + ": " + this.writeScreen.getDisplayText(!0)), (this.mode === "MODE_PAINT-ON" || this.mode === "MODE_ROLL-UP") && (this.logger.log(1, () => "DISPLAYED: " + this.displayedMemory.getDisplayText(!0)), this.outputDataUpdate()); + } + ccRCL() { + this.logger.log(2, "RCL - Resume Caption Loading"), this.setMode("MODE_POP-ON"); + } + ccBS() { + this.logger.log(2, "BS - BackSpace"), this.mode !== "MODE_TEXT" && (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate()); + } + ccAOF() { + } + ccAON() { + } + ccDER() { + this.logger.log(2, "DER- Delete to End of Row"), this.writeScreen.clearToEndOfRow(), this.outputDataUpdate(); + } + ccRU(e) { + this.logger.log(2, "RU(" + e + ") - Roll Up"), this.writeScreen = this.displayedMemory, this.setMode("MODE_ROLL-UP"), this.writeScreen.setRollUpRows(e); + } + ccFON() { + this.logger.log(2, "FON - Flash On"), this.writeScreen.setPen({ + flash: !0 + }); + } + ccRDC() { + this.logger.log(2, "RDC - Resume Direct Captioning"), this.setMode("MODE_PAINT-ON"); + } + ccTR() { + this.logger.log(2, "TR"), this.setMode("MODE_TEXT"); + } + ccRTD() { + this.logger.log(2, "RTD"), this.setMode("MODE_TEXT"); + } + ccEDM() { + this.logger.log(2, "EDM - Erase Displayed Memory"), this.displayedMemory.reset(), this.outputDataUpdate(!0); + } + ccCR() { + this.logger.log(2, "CR - Carriage Return"), this.writeScreen.rollUp(), this.outputDataUpdate(!0); + } + ccENM() { + this.logger.log(2, "ENM - Erase Non-displayed Memory"), this.nonDisplayedMemory.reset(); + } + ccEOC() { + if (this.logger.log(2, "EOC - End Of Caption"), this.mode === "MODE_POP-ON") { + const e = this.displayedMemory; + this.displayedMemory = this.nonDisplayedMemory, this.nonDisplayedMemory = e, this.writeScreen = this.nonDisplayedMemory, this.logger.log(1, () => "DISP: " + this.displayedMemory.getDisplayText()); + } + this.outputDataUpdate(!0); + } + ccTO(e) { + this.logger.log(2, "TO(" + e + ") - Tab Offset"), this.writeScreen.moveCursor(e); + } + ccMIDROW(e) { + const t = { + flash: !1 + }; + if (t.underline = e % 2 === 1, t.italics = e >= 46, t.italics) + t.foreground = "white"; + else { + const i = Math.floor(e / 2) - 16, r = ["white", "green", "blue", "cyan", "red", "yellow", "magenta"]; + t.foreground = r[i]; + } + this.logger.log(2, "MIDROW: " + it(t)), this.writeScreen.setPen(t); + } + outputDataUpdate(e = !1) { + const t = this.logger.time; + t !== null && this.outputFilter && (this.cueStartTime === null && !this.displayedMemory.isEmpty() ? this.cueStartTime = t : this.displayedMemory.equals(this.lastOutputScreen) || (this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen), e && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(), this.cueStartTime = this.displayedMemory.isEmpty() ? null : t), this.lastOutputScreen.copy(this.displayedMemory)); + } + cueSplitAtTime(e) { + this.outputFilter && (this.displayedMemory.isEmpty() || (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, e, this.displayedMemory), this.cueStartTime = e)); + } +} +class ic { + constructor(e, t, i) { + this.channels = void 0, this.currentChannel = 0, this.cmdHistory = xv(), this.logger = void 0; + const r = this.logger = new bv(); + this.channels = [null, new tc(e, t, r), new tc(e + 1, i, r)]; + } + getHandler(e) { + return this.channels[e].getHandler(); + } + setHandler(e, t) { + this.channels[e].setHandler(t); + } + /** + * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs. + */ + addData(e, t) { + this.logger.time = e; + for (let i = 0; i < t.length; i += 2) { + const r = t[i] & 127, s = t[i + 1] & 127; + let a = !1, o = null; + if (r === 0 && s === 0) + continue; + this.logger.log(3, () => "[" + Br([t[i], t[i + 1]]) + "] -> (" + Br([r, s]) + ")"); + const l = this.cmdHistory; + if (r >= 16 && r <= 31) { + if (Tv(r, s, l)) { + Ps(null, null, l), this.logger.log(3, () => "Repeated command (" + Br([r, s]) + ") is dropped"); + continue; + } + Ps(r, s, this.cmdHistory), a = this.parseCmd(r, s), a || (a = this.parseMidrow(r, s)), a || (a = this.parsePAC(r, s)), a || (a = this.parseBackgroundAttributes(r, s)); + } else + Ps(null, null, l); + if (!a && (o = this.parseChars(r, s), o)) { + const c = this.currentChannel; + c && c > 0 ? this.channels[c].insertChars(o) : this.logger.log(2, "No channel found yet. TEXT-MODE?"); + } + !a && !o && this.logger.log(2, () => "Couldn't parse cleaned data " + Br([r, s]) + " orig: " + Br([t[i], t[i + 1]])); + } + } + /** + * Parse Command. + * @returns True if a command was found + */ + parseCmd(e, t) { + const i = (e === 20 || e === 28 || e === 21 || e === 29) && t >= 32 && t <= 47, r = (e === 23 || e === 31) && t >= 33 && t <= 35; + if (!(i || r)) + return !1; + const s = e === 20 || e === 21 || e === 23 ? 1 : 2, a = this.channels[s]; + return e === 20 || e === 21 || e === 28 || e === 29 ? t === 32 ? a.ccRCL() : t === 33 ? a.ccBS() : t === 34 ? a.ccAOF() : t === 35 ? a.ccAON() : t === 36 ? a.ccDER() : t === 37 ? a.ccRU(2) : t === 38 ? a.ccRU(3) : t === 39 ? a.ccRU(4) : t === 40 ? a.ccFON() : t === 41 ? a.ccRDC() : t === 42 ? a.ccTR() : t === 43 ? a.ccRTD() : t === 44 ? a.ccEDM() : t === 45 ? a.ccCR() : t === 46 ? a.ccENM() : t === 47 && a.ccEOC() : a.ccTO(t - 32), this.currentChannel = s, !0; + } + /** + * Parse midrow styling command + */ + parseMidrow(e, t) { + let i = 0; + if ((e === 17 || e === 25) && t >= 32 && t <= 47) { + if (e === 17 ? i = 1 : i = 2, i !== this.currentChannel) + return this.logger.log(0, "Mismatch channel in midrow parsing"), !1; + const r = this.channels[i]; + return r ? (r.ccMIDROW(t), this.logger.log(3, () => "MIDROW (" + Br([e, t]) + ")"), !0) : !1; + } + return !1; + } + /** + * Parse Preable Access Codes (Table 53). + * @returns {Boolean} Tells if PAC found + */ + parsePAC(e, t) { + let i; + const r = (e >= 17 && e <= 23 || e >= 25 && e <= 31) && t >= 64 && t <= 127, s = (e === 16 || e === 24) && t >= 64 && t <= 95; + if (!(r || s)) + return !1; + const a = e <= 23 ? 1 : 2; + t >= 64 && t <= 95 ? i = a === 1 ? gv[e] : vv[e] : i = a === 1 ? pv[e] : yv[e]; + const o = this.channels[a]; + return o ? (o.setPAC(this.interpretPAC(i, t)), this.currentChannel = a, !0) : !1; + } + /** + * Interpret the second byte of the pac, and return the information. + * @returns pacData with style parameters + */ + interpretPAC(e, t) { + let i; + const r = { + color: null, + italics: !1, + indent: null, + underline: !1, + row: e + }; + return t > 95 ? i = t - 96 : i = t - 64, r.underline = (i & 1) === 1, i <= 13 ? r.color = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "white"][Math.floor(i / 2)] : i <= 15 ? (r.italics = !0, r.color = "white") : r.indent = Math.floor((i - 16) / 2) * 4, r; + } + /** + * Parse characters. + * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise. + */ + parseChars(e, t) { + let i, r = null, s = null; + if (e >= 25 ? (i = 2, s = e - 8) : (i = 1, s = e), s >= 17 && s <= 19) { + let a; + s === 17 ? a = t + 80 : s === 18 ? a = t + 112 : a = t + 144, this.logger.log(2, () => "Special char '" + Ef(a) + "' in channel " + i), r = [a]; + } else e >= 32 && e <= 127 && (r = t === 0 ? [e] : [e, t]); + return r && this.logger.log(3, () => "Char codes = " + Br(r).join(",")), r; + } + /** + * Parse extended background attributes as well as new foreground color black. + * @returns True if background attributes are found + */ + parseBackgroundAttributes(e, t) { + const i = (e === 16 || e === 24) && t >= 32 && t <= 47, r = (e === 23 || e === 31) && t >= 45 && t <= 47; + if (!(i || r)) + return !1; + let s; + const a = {}; + e === 16 || e === 24 ? (s = Math.floor((t - 32) / 2), a.background = _v[s], t % 2 === 1 && (a.background = a.background + "_semi")) : t === 45 ? a.background = "transparent" : (a.foreground = "black", t === 47 && (a.underline = !0)); + const o = e <= 23 ? 1 : 2; + return this.channels[o].setBkgData(a), !0; + } + /** + * Reset state of parser and its channels. + */ + reset() { + for (let e = 0; e < Object.keys(this.channels).length; e++) { + const t = this.channels[e]; + t && t.reset(); + } + Ps(null, null, this.cmdHistory); + } + /** + * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty. + */ + cueSplitAtTime(e) { + for (let t = 0; t < this.channels.length; t++) { + const i = this.channels[t]; + i && i.cueSplitAtTime(e); + } + } +} +function Ps(n, e, t) { + t.a = n, t.b = e; +} +function Tv(n, e, t) { + return t.a === n && t.b === e; +} +function xv() { + return { + a: null, + b: null + }; +} +var o0 = function() { + if (xa != null && xa.VTTCue) + return self.VTTCue; + const n = ["", "lr", "rl"], e = ["start", "middle", "end", "left", "right"]; + function t(o, l) { + if (typeof l != "string" || !Array.isArray(o)) + return !1; + const u = l.toLowerCase(); + return ~o.indexOf(u) ? u : !1; + } + function i(o) { + return t(n, o); + } + function r(o) { + return t(e, o); + } + function s(o, ...l) { + let u = 1; + for (; u < arguments.length; u++) { + const c = arguments[u]; + for (const h in c) + o[h] = c[h]; + } + return o; + } + function a(o, l, u) { + const c = this, h = { + enumerable: !0 + }; + c.hasBeenReset = !1; + let d = "", f = !1, m = o, p = l, v = u, b = null, E = "", y = !0, T = "auto", A = "start", k = 50, w = "middle", L = 50, I = "middle"; + Object.defineProperty(c, "id", s({}, h, { + get: function() { + return d; + }, + set: function(R) { + d = "" + R; + } + })), Object.defineProperty(c, "pauseOnExit", s({}, h, { + get: function() { + return f; + }, + set: function(R) { + f = !!R; + } + })), Object.defineProperty(c, "startTime", s({}, h, { + get: function() { + return m; + }, + set: function(R) { + if (typeof R != "number") + throw new TypeError("Start time must be set to a number."); + m = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "endTime", s({}, h, { + get: function() { + return p; + }, + set: function(R) { + if (typeof R != "number") + throw new TypeError("End time must be set to a number."); + p = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "text", s({}, h, { + get: function() { + return v; + }, + set: function(R) { + v = "" + R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "region", s({}, h, { + get: function() { + return b; + }, + set: function(R) { + b = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "vertical", s({}, h, { + get: function() { + return E; + }, + set: function(R) { + const O = i(R); + if (O === !1) + throw new SyntaxError("An invalid or illegal string was specified."); + E = O, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "snapToLines", s({}, h, { + get: function() { + return y; + }, + set: function(R) { + y = !!R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "line", s({}, h, { + get: function() { + return T; + }, + set: function(R) { + if (typeof R != "number" && R !== "auto") + throw new SyntaxError("An invalid number or illegal string was specified."); + T = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "lineAlign", s({}, h, { + get: function() { + return A; + }, + set: function(R) { + const O = r(R); + if (!O) + throw new SyntaxError("An invalid or illegal string was specified."); + A = O, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "position", s({}, h, { + get: function() { + return k; + }, + set: function(R) { + if (R < 0 || R > 100) + throw new Error("Position must be between 0 and 100."); + k = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "positionAlign", s({}, h, { + get: function() { + return w; + }, + set: function(R) { + const O = r(R); + if (!O) + throw new SyntaxError("An invalid or illegal string was specified."); + w = O, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "size", s({}, h, { + get: function() { + return L; + }, + set: function(R) { + if (R < 0 || R > 100) + throw new Error("Size must be between 0 and 100."); + L = R, this.hasBeenReset = !0; + } + })), Object.defineProperty(c, "align", s({}, h, { + get: function() { + return I; + }, + set: function(R) { + const O = r(R); + if (!O) + throw new SyntaxError("An invalid or illegal string was specified."); + I = O, this.hasBeenReset = !0; + } + })), c.displayState = void 0; + } + return a.prototype.getCueAsHTML = function() { + return self.WebVTT.convertCueToDOMTree(self, this.text); + }, a; +}(); +class Av { + decode(e, t) { + if (!e) + return ""; + if (typeof e != "string") + throw new Error("Error - expected string data."); + return decodeURIComponent(encodeURIComponent(e)); + } +} +function Tf(n) { + function e(i, r, s, a) { + return (i | 0) * 3600 + (r | 0) * 60 + (s | 0) + parseFloat(a || 0); + } + const t = n.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/); + return t ? parseFloat(t[2]) > 59 ? e(t[2], t[3], 0, t[4]) : e(t[1], t[2], t[3], t[4]) : null; +} +class Dv { + constructor() { + this.values = /* @__PURE__ */ Object.create(null); + } + // Only accept the first assignment to any key. + set(e, t) { + !this.get(e) && t !== "" && (this.values[e] = t); + } + // Return the value for a key, or a default value. + // If 'defaultKey' is passed then 'dflt' is assumed to be an object with + // a number of possible default values as properties where 'defaultKey' is + // the key of the property that will be chosen; otherwise it's assumed to be + // a single value. + get(e, t, i) { + return i ? this.has(e) ? this.values[e] : t[i] : this.has(e) ? this.values[e] : t; + } + // Check whether we have a value for a key. + has(e) { + return e in this.values; + } + // Accept a setting if its one of the given alternatives. + alt(e, t, i) { + for (let r = 0; r < i.length; ++r) + if (t === i[r]) { + this.set(e, t); + break; + } + } + // Accept a setting if its a valid (signed) integer. + integer(e, t) { + /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10)); + } + // Accept a setting if its a valid percentage. + percent(e, t) { + if (/^([\d]{1,3})(\.[\d]*)?%$/.test(t)) { + const i = parseFloat(t); + if (i >= 0 && i <= 100) + return this.set(e, i), !0; + } + return !1; + } +} +function xf(n, e, t, i) { + const r = i ? n.split(i) : [n]; + for (const s in r) { + if (typeof r[s] != "string") + continue; + const a = r[s].split(t); + if (a.length !== 2) + continue; + const o = a[0], l = a[1]; + e(o, l); + } +} +const Sl = new o0(0, 0, ""), Ms = Sl.align === "middle" ? "middle" : "center"; +function wv(n, e, t) { + const i = n; + function r() { + const o = Tf(n); + if (o === null) + throw new Error("Malformed timestamp: " + i); + return n = n.replace(/^[^\sa-zA-Z-]+/, ""), o; + } + function s(o, l) { + const u = new Dv(); + xf(o, function(d, f) { + let m; + switch (d) { + case "region": + for (let p = t.length - 1; p >= 0; p--) + if (t[p].id === f) { + u.set(d, t[p].region); + break; + } + break; + case "vertical": + u.alt(d, f, ["rl", "lr"]); + break; + case "line": + m = f.split(","), u.integer(d, m[0]), u.percent(d, m[0]) && u.set("snapToLines", !1), u.alt(d, m[0], ["auto"]), m.length === 2 && u.alt("lineAlign", m[1], ["start", Ms, "end"]); + break; + case "position": + m = f.split(","), u.percent(d, m[0]), m.length === 2 && u.alt("positionAlign", m[1], ["start", Ms, "end", "line-left", "line-right", "auto"]); + break; + case "size": + u.percent(d, f); + break; + case "align": + u.alt(d, f, ["start", Ms, "end", "left", "right"]); + break; + } + }, /:/, /\s/), l.region = u.get("region", null), l.vertical = u.get("vertical", ""); + let c = u.get("line", "auto"); + c === "auto" && Sl.line === -1 && (c = -1), l.line = c, l.lineAlign = u.get("lineAlign", "start"), l.snapToLines = u.get("snapToLines", !0), l.size = u.get("size", 100), l.align = u.get("align", Ms); + let h = u.get("position", "auto"); + h === "auto" && Sl.position === 50 && (h = l.align === "start" || l.align === "left" ? 0 : l.align === "end" || l.align === "right" ? 100 : 50), l.position = h; + } + function a() { + n = n.replace(/^\s+/, ""); + } + if (a(), e.startTime = r(), a(), n.slice(0, 3) !== "-->") + throw new Error("Malformed time stamp (time stamps must be separated by '-->'): " + i); + n = n.slice(3), a(), e.endTime = r(), a(), s(n, e); +} +function Af(n) { + return n.replace(/<br(?: \/)?>/gi, ` +`); +} +class kv { + constructor() { + this.state = "INITIAL", this.buffer = "", this.decoder = new Av(), this.regionList = [], this.cue = null, this.oncue = void 0, this.onparsingerror = void 0, this.onflush = void 0; + } + parse(e) { + const t = this; + e && (t.buffer += t.decoder.decode(e, { + stream: !0 + })); + function i() { + let s = t.buffer, a = 0; + for (s = Af(s); a < s.length && s[a] !== "\r" && s[a] !== ` +`; ) + ++a; + const o = s.slice(0, a); + return s[a] === "\r" && ++a, s[a] === ` +` && ++a, t.buffer = s.slice(a), o; + } + function r(s) { + xf(s, function(a, o) { + }, /:/); + } + try { + let s = ""; + if (t.state === "INITIAL") { + if (!/\r\n|\n/.test(t.buffer)) + return this; + s = i(); + const o = s.match(/^()?WEBVTT([ \t].*)?$/); + if (!(o != null && o[0])) + throw new Error("Malformed WebVTT signature."); + t.state = "HEADER"; + } + let a = !1; + for (; t.buffer; ) { + if (!/\r\n|\n/.test(t.buffer)) + return this; + switch (a ? a = !1 : s = i(), t.state) { + case "HEADER": + /:/.test(s) ? r(s) : s || (t.state = "ID"); + continue; + case "NOTE": + s || (t.state = "ID"); + continue; + case "ID": + if (/^NOTE($|[ \t])/.test(s)) { + t.state = "NOTE"; + break; + } + if (!s) + continue; + if (t.cue = new o0(0, 0, ""), t.state = "CUE", s.indexOf("-->") === -1) { + t.cue.id = s; + continue; + } + case "CUE": + if (!t.cue) { + t.state = "BADCUE"; + continue; + } + try { + wv(s, t.cue, t.regionList); + } catch { + t.cue = null, t.state = "BADCUE"; + continue; + } + t.state = "CUETEXT"; + continue; + case "CUETEXT": + { + const o = s.indexOf("-->") !== -1; + if (!s || o && (a = !0)) { + t.oncue && t.cue && t.oncue(t.cue), t.cue = null, t.state = "ID"; + continue; + } + if (t.cue === null) + continue; + t.cue.text && (t.cue.text += ` +`), t.cue.text += s; + } + continue; + case "BADCUE": + s || (t.state = "ID"); + } + } + } catch { + t.state === "CUETEXT" && t.cue && t.oncue && t.oncue(t.cue), t.cue = null, t.state = t.state === "INITIAL" ? "BADWEBVTT" : "BADCUE"; + } + return this; + } + flush() { + const e = this; + try { + if ((e.cue || e.state === "HEADER") && (e.buffer += ` + +`, e.parse()), e.state === "INITIAL" || e.state === "BADWEBVTT") + throw new Error("Malformed WebVTT signature."); + } catch (t) { + e.onparsingerror && e.onparsingerror(t); + } + return e.onflush && e.onflush(), this; + } +} +const Lv = /\r\n|\n\r|\n|\r/g, To = function(e, t, i = 0) { + return e.slice(i, i + t.length) === t; +}, Iv = function(e) { + let t = parseInt(e.slice(-3)); + const i = parseInt(e.slice(-6, -4)), r = parseInt(e.slice(-9, -7)), s = e.length > 9 ? parseInt(e.substring(0, e.indexOf(":"))) : 0; + if (!se(t) || !se(i) || !se(r) || !se(s)) + throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`); + return t += 1e3 * i, t += 60 * 1e3 * r, t += 60 * 60 * 1e3 * s, t; +}; +function l0(n, e, t) { + return Hn(n.toString()) + Hn(e.toString()) + Hn(t); +} +const Rv = function(e, t, i) { + let r = e[t], s = e[r.prevCC]; + if (!s || !s.new && r.new) { + e.ccOffset = e.presentationOffset = r.start, r.new = !1; + return; + } + for (; (a = s) != null && a.new; ) { + var a; + e.ccOffset += r.start - s.start, r.new = !1, r = s, s = e[r.prevCC]; + } + e.presentationOffset = i; +}; +function Cv(n, e, t, i, r, s, a) { + const o = new kv(), l = ni(new Uint8Array(n)).trim().replace(Lv, ` +`).split(` +`), u = [], c = e ? Yp(e.baseTime, e.timescale) : 0; + let h = "00:00.000", d = 0, f = 0, m, p = !0; + o.oncue = function(v) { + const b = t[i]; + let E = t.ccOffset; + const y = (d - c) / 9e4; + if (b != null && b.new && (f !== void 0 ? E = t.ccOffset = b.start : Rv(t, i, y)), y) { + if (!e) { + m = new Error("Missing initPTS for VTT MPEGTS"); + return; + } + E = y - t.presentationOffset; + } + const T = v.endTime - v.startTime, A = ci((v.startTime + E - f) * 9e4, r * 9e4) / 9e4; + v.startTime = Math.max(A, 0), v.endTime = Math.max(A + T, 0); + const k = v.text.trim(); + v.text = decodeURIComponent(encodeURIComponent(k)), v.id || (v.id = l0(v.startTime, v.endTime, k)), v.endTime > 0 && u.push(v); + }, o.onparsingerror = function(v) { + m = v; + }, o.onflush = function() { + if (m) { + a(m); + return; + } + s(u); + }, l.forEach((v) => { + if (p) + if (To(v, "X-TIMESTAMP-MAP=")) { + p = !1, v.slice(16).split(",").forEach((b) => { + To(b, "LOCAL:") ? h = b.slice(6) : To(b, "MPEGTS:") && (d = parseInt(b.slice(7))); + }); + try { + f = Iv(h) / 1e3; + } catch (b) { + m = b; + } + return; + } else v === "" && (p = !1); + o.parse(v + ` +`); + }), o.flush(); +} +const xo = "stpp.ttml.im1t", Df = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/, wf = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/, Fv = { + left: "start", + center: "center", + right: "end", + start: "start", + end: "end" +}; +function rc(n, e, t, i) { + const r = Le(new Uint8Array(n), ["mdat"]); + if (r.length === 0) { + i(new Error("Could not parse IMSC1 mdat")); + return; + } + const s = r.map((o) => ni(o)), a = Kp(e.baseTime, 1, e.timescale); + try { + s.forEach((o) => t(Pv(o, a))); + } catch (o) { + i(o); + } +} +function Pv(n, e) { + const r = new DOMParser().parseFromString(n, "text/xml").getElementsByTagName("tt")[0]; + if (!r) + throw new Error("Invalid ttml"); + const s = { + frameRate: 30, + subFrameRate: 1, + frameRateMultiplier: 0, + tickRate: 0 + }, a = Object.keys(s).reduce((h, d) => (h[d] = r.getAttribute(`ttp:${d}`) || s[d], h), {}), o = r.getAttribute("xml:space") !== "preserve", l = nc(Ao(r, "styling", "style")), u = nc(Ao(r, "layout", "region")), c = Ao(r, "body", "[begin]"); + return [].map.call(c, (h) => { + const d = kf(h, o); + if (!d || !h.hasAttribute("begin")) + return null; + const f = wo(h.getAttribute("begin"), a), m = wo(h.getAttribute("dur"), a); + let p = wo(h.getAttribute("end"), a); + if (f === null) + throw sc(h); + if (p === null) { + if (m === null) + throw sc(h); + p = f + m; + } + const v = new o0(f - e, p - e, d); + v.id = l0(v.startTime, v.endTime, v.text); + const b = u[h.getAttribute("region")], E = l[h.getAttribute("style")], y = Mv(b, E, l), { + textAlign: T + } = y; + if (T) { + const A = Fv[T]; + A && (v.lineAlign = A), v.align = T; + } + return Ye(v, y), v; + }).filter((h) => h !== null); +} +function Ao(n, e, t) { + const i = n.getElementsByTagName(e)[0]; + return i ? [].slice.call(i.querySelectorAll(t)) : []; +} +function nc(n) { + return n.reduce((e, t) => { + const i = t.getAttribute("xml:id"); + return i && (e[i] = t), e; + }, {}); +} +function kf(n, e) { + return [].slice.call(n.childNodes).reduce((t, i, r) => { + var s; + return i.nodeName === "br" && r ? t + ` +` : (s = i.childNodes) != null && s.length ? kf(i, e) : e ? t + i.textContent.trim().replace(/\s+/g, " ") : t + i.textContent; + }, ""); +} +function Mv(n, e, t) { + const i = "http://www.w3.org/ns/ttml#styling"; + let r = null; + const s = [ + "displayAlign", + "textAlign", + "color", + "backgroundColor", + "fontSize", + "fontFamily" + // 'fontWeight', + // 'lineHeight', + // 'wrapOption', + // 'fontStyle', + // 'direction', + // 'writingMode' + ], a = n != null && n.hasAttribute("style") ? n.getAttribute("style") : null; + return a && t.hasOwnProperty(a) && (r = t[a]), s.reduce((o, l) => { + const u = Do(e, i, l) || Do(n, i, l) || Do(r, i, l); + return u && (o[l] = u), o; + }, {}); +} +function Do(n, e, t) { + return n && n.hasAttributeNS(e, t) ? n.getAttributeNS(e, t) : null; +} +function sc(n) { + return new Error(`Could not parse ttml timestamp ${n}`); +} +function wo(n, e) { + if (!n) + return null; + let t = Tf(n); + return t === null && (Df.test(n) ? t = Ov(n, e) : wf.test(n) && (t = $v(n, e))), t; +} +function Ov(n, e) { + const t = Df.exec(n), i = (t[4] | 0) + (t[5] | 0) / e.subFrameRate; + return (t[1] | 0) * 3600 + (t[2] | 0) * 60 + (t[3] | 0) + i / e.frameRate; +} +function $v(n, e) { + const t = wf.exec(n), i = Number(t[1]); + switch (t[2]) { + case "h": + return i * 3600; + case "m": + return i * 60; + case "ms": + return i * 1e3; + case "f": + return i / e.frameRate; + case "t": + return i / e.tickRate; + } + return i; +} +class Os { + constructor(e, t) { + this.timelineController = void 0, this.cueRanges = [], this.trackName = void 0, this.startTime = null, this.endTime = null, this.screen = null, this.timelineController = e, this.trackName = t; + } + dispatchCue() { + this.startTime !== null && (this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges), this.startTime = null); + } + newCue(e, t, i) { + (this.startTime === null || this.startTime > e) && (this.startTime = e), this.endTime = t, this.screen = i, this.timelineController.createCaptionsTrack(this.trackName); + } + reset() { + this.cueRanges = [], this.startTime = null; + } +} +class Bv { + constructor(e) { + this.hls = void 0, this.media = null, this.config = void 0, this.enabled = !0, this.Cues = void 0, this.textTracks = [], this.tracks = [], this.initPTS = [], this.unparsedVttFrags = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.cea608Parser1 = void 0, this.cea608Parser2 = void 0, this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = oc(), this.captionsProperties = void 0, this.hls = e, this.config = e.config, this.Cues = e.config.cueHandler, this.captionsProperties = { + textTrack1: { + label: this.config.captionsTextTrack1Label, + languageCode: this.config.captionsTextTrack1LanguageCode + }, + textTrack2: { + label: this.config.captionsTextTrack2Label, + languageCode: this.config.captionsTextTrack2LanguageCode + }, + textTrack3: { + label: this.config.captionsTextTrack3Label, + languageCode: this.config.captionsTextTrack3LanguageCode + }, + textTrack4: { + label: this.config.captionsTextTrack4Label, + languageCode: this.config.captionsTextTrack4LanguageCode + } + }, e.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(S.FRAG_LOADING, this.onFragLoading, this), e.on(S.FRAG_LOADED, this.onFragLoaded, this), e.on(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.on(S.FRAG_DECRYPTED, this.onFragDecrypted, this), e.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this), e.on(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + destroy() { + const { + hls: e + } = this; + e.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(S.FRAG_LOADING, this.onFragLoading, this), e.off(S.FRAG_LOADED, this.onFragLoaded, this), e.off(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.off(S.FRAG_DECRYPTED, this.onFragDecrypted, this), e.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this), e.off(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this), this.hls = this.config = this.media = null, this.cea608Parser1 = this.cea608Parser2 = void 0; + } + initCea608Parsers() { + const e = new Os(this, "textTrack1"), t = new Os(this, "textTrack2"), i = new Os(this, "textTrack3"), r = new Os(this, "textTrack4"); + this.cea608Parser1 = new ic(1, e, t), this.cea608Parser2 = new ic(3, i, r); + } + addCues(e, t, i, r, s) { + let a = !1; + for (let o = s.length; o--; ) { + const l = s[o], u = Nv(l[0], l[1], t, i); + if (u >= 0 && (l[0] = Math.min(l[0], t), l[1] = Math.max(l[1], i), a = !0, u / (i - t) > 0.5)) + return; + } + if (a || s.push([t, i]), this.config.renderTextTracksNatively) { + const o = this.captionsTracks[e]; + this.Cues.newCue(o, t, i, r); + } else { + const o = this.Cues.newCue(null, t, i, r); + this.hls.trigger(S.CUES_PARSED, { + type: "captions", + cues: o, + track: e + }); + } + } + // Triggered when an initial PTS is found; used for synchronisation of WebVTT. + onInitPtsFound(e, { + frag: t, + id: i, + initPTS: r, + timescale: s + }) { + const { + unparsedVttFrags: a + } = this; + i === ue.MAIN && (this.initPTS[t.cc] = { + baseTime: r, + timescale: s + }), a.length && (this.unparsedVttFrags = [], a.forEach((o) => { + this.onFragLoaded(S.FRAG_LOADED, o); + })); + } + getExistingTrack(e, t) { + const { + media: i + } = this; + if (i) + for (let r = 0; r < i.textTracks.length; r++) { + const s = i.textTracks[r]; + if (ac(s, { + name: e, + lang: t, + characteristics: "transcribes-spoken-dialog,describes-music-and-sound" + })) + return s; + } + return null; + } + createCaptionsTrack(e) { + this.config.renderTextTracksNatively ? this.createNativeTrack(e) : this.createNonNativeTrack(e); + } + createNativeTrack(e) { + if (this.captionsTracks[e]) + return; + const { + captionsProperties: t, + captionsTracks: i, + media: r + } = this, { + label: s, + languageCode: a + } = t[e], o = this.getExistingTrack(s, a); + if (o) + i[e] = o, hn(i[e]), yf(i[e], r); + else { + const l = this.createTextTrack("captions", s, a); + l && (l[e] = !0, i[e] = l); + } + } + createNonNativeTrack(e) { + if (this.nonNativeCaptionsTracks[e]) + return; + const t = this.captionsProperties[e]; + if (!t) + return; + const i = t.label, r = { + _id: e, + label: i, + kind: "captions", + default: t.media ? !!t.media.default : !1, + closedCaptions: t.media + }; + this.nonNativeCaptionsTracks[e] = r, this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: [r] + }); + } + createTextTrack(e, t, i) { + const r = this.media; + if (r) + return r.addTextTrack(e, t, i); + } + onMediaAttaching(e, t) { + this.media = t.media, t.mediaSource || this._cleanTracks(); + } + onMediaDetaching(e, t) { + const i = !!t.transferMedia; + if (this.media = null, i) + return; + const { + captionsTracks: r + } = this; + Object.keys(r).forEach((s) => { + hn(r[s]), delete r[s]; + }), this.nonNativeCaptionsTracks = {}; + } + onManifestLoading() { + this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = oc(), this._cleanTracks(), this.tracks = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.textTracks = [], this.unparsedVttFrags = [], this.initPTS = [], this.cea608Parser1 && this.cea608Parser2 && (this.cea608Parser1.reset(), this.cea608Parser2.reset()); + } + _cleanTracks() { + const { + media: e + } = this; + if (!e) + return; + const t = e.textTracks; + if (t) + for (let i = 0; i < t.length; i++) + hn(t[i]); + } + onSubtitleTracksUpdated(e, t) { + const i = t.subtitleTracks || [], r = i.some((s) => s.textCodec === xo); + if (this.config.enableWebVTT || r && this.config.enableIMSC1) { + if (cf(this.tracks, i)) { + this.tracks = i; + return; + } + if (this.textTracks = [], this.tracks = i, this.config.renderTextTracksNatively) { + const a = this.media, o = a ? ha(a.textTracks) : null; + if (this.tracks.forEach((l, u) => { + let c; + if (o) { + let h = null; + for (let d = 0; d < o.length; d++) + if (o[d] && ac(o[d], l)) { + h = o[d], o[d] = null; + break; + } + h && (c = h); + } + if (c) + hn(c); + else { + const h = Lf(l); + c = this.createTextTrack(h, l.name, l.lang), c && (c.mode = "disabled"); + } + c && this.textTracks.push(c); + }), o != null && o.length) { + const l = o.filter((u) => u !== null).map((u) => u.label); + l.length && this.hls.logger.warn(`Media element contains unused subtitle tracks: ${l.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`); + } + } else if (this.tracks.length) { + const a = this.tracks.map((o) => ({ + label: o.name, + kind: o.type.toLowerCase(), + default: o.default, + subtitleTrack: o + })); + this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: a + }); + } + } + } + onManifestLoaded(e, t) { + this.config.enableCEA708Captions && t.captions && t.captions.forEach((i) => { + const r = /(?:CC|SERVICE)([1-4])/.exec(i.instreamId); + if (!r) + return; + const s = `textTrack${r[1]}`, a = this.captionsProperties[s]; + a && (a.label = i.name, i.lang && (a.languageCode = i.lang), a.media = i); + }); + } + closedCaptionsForLevel(e) { + const t = this.hls.levels[e.level]; + return t == null ? void 0 : t.attrs["CLOSED-CAPTIONS"]; + } + onFragLoading(e, t) { + if (this.enabled && t.frag.type === ue.MAIN) { + var i, r; + const { + cea608Parser1: s, + cea608Parser2: a, + lastSn: o + } = this, { + cc: l, + sn: u + } = t.frag, c = (i = (r = t.part) == null ? void 0 : r.index) != null ? i : -1; + s && a && (u !== o + 1 || u === o && c !== this.lastPartIndex + 1 || l !== this.lastCc) && (s.reset(), a.reset()), this.lastCc = l, this.lastSn = u, this.lastPartIndex = c; + } + } + onFragLoaded(e, t) { + const { + frag: i, + payload: r + } = t; + if (i.type === ue.SUBTITLE) + if (r.byteLength) { + const s = i.decryptdata, a = "stats" in t; + if (s == null || !s.encrypted || a) { + const o = this.tracks[i.level], l = this.vttCCs; + l[i.cc] || (l[i.cc] = { + start: i.start, + prevCC: this.prevCC, + new: !0 + }, this.prevCC = i.cc), o && o.textCodec === xo ? this._parseIMSC1(i, r) : this._parseVTTs(t); + } + } else + this.hls.trigger(S.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: i, + error: new Error("Empty subtitle payload") + }); + } + _parseIMSC1(e, t) { + const i = this.hls; + rc(t, this.initPTS[e.cc], (r) => { + this._appendCues(r, e.level), i.trigger(S.SUBTITLE_FRAG_PROCESSED, { + success: !0, + frag: e + }); + }, (r) => { + i.logger.log(`Failed to parse IMSC1: ${r}`), i.trigger(S.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: e, + error: r + }); + }); + } + _parseVTTs(e) { + var t; + const { + frag: i, + payload: r + } = e, { + initPTS: s, + unparsedVttFrags: a + } = this, o = s.length - 1; + if (!s[i.cc] && o === -1) { + a.push(e); + return; + } + const l = this.hls, u = (t = i.initSegment) != null && t.data ? _i(i.initSegment.data, new Uint8Array(r)).buffer : r; + Cv(u, this.initPTS[i.cc], this.vttCCs, i.cc, i.start, (c) => { + this._appendCues(c, i.level), l.trigger(S.SUBTITLE_FRAG_PROCESSED, { + success: !0, + frag: i + }); + }, (c) => { + const h = c.message === "Missing initPTS for VTT MPEGTS"; + h ? a.push(e) : this._fallbackToIMSC1(i, r), l.logger.log(`Failed to parse VTT cue: ${c}`), !(h && o > i.cc) && l.trigger(S.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: i, + error: c + }); + }); + } + _fallbackToIMSC1(e, t) { + const i = this.tracks[e.level]; + i.textCodec || rc(t, this.initPTS[e.cc], () => { + i.textCodec = xo, this._parseIMSC1(e, t); + }, () => { + i.textCodec = "wvtt"; + }); + } + _appendCues(e, t) { + const i = this.hls; + if (this.config.renderTextTracksNatively) { + const r = this.textTracks[t]; + if (!r || r.mode === "disabled") + return; + e.forEach((s) => _f(r, s)); + } else { + const r = this.tracks[t]; + if (!r) + return; + const s = r.default ? "default" : "subtitles" + t; + i.trigger(S.CUES_PARSED, { + type: "subtitles", + cues: e, + track: s + }); + } + } + onFragDecrypted(e, t) { + const { + frag: i + } = t; + i.type === ue.SUBTITLE && this.onFragLoaded(S.FRAG_LOADED, t); + } + onSubtitleTracksCleared() { + this.tracks = [], this.captionsTracks = {}; + } + onFragParsingUserdata(e, t) { + if (!this.enabled || !this.config.enableCEA708Captions) + return; + const { + frag: i, + samples: r + } = t; + if (!(i.type === ue.MAIN && this.closedCaptionsForLevel(i) === "NONE")) + for (let s = 0; s < r.length; s++) { + const a = r[s].bytes; + if (a) { + this.cea608Parser1 || this.initCea608Parsers(); + const o = this.extractCea608Data(a); + this.cea608Parser1.addData(r[s].pts, o[0]), this.cea608Parser2.addData(r[s].pts, o[1]); + } + } + } + onBufferFlushing(e, { + startOffset: t, + endOffset: i, + endOffsetSubtitles: r, + type: s + }) { + const { + media: a + } = this; + if (!(!a || a.currentTime < i)) { + if (!s || s === "video") { + const { + captionsTracks: o + } = this; + Object.keys(o).forEach((l) => El(o[l], t, i)); + } + if (this.config.renderTextTracksNatively && t === 0 && r !== void 0) { + const { + textTracks: o + } = this; + Object.keys(o).forEach((l) => El(o[l], t, r)); + } + } + } + extractCea608Data(e) { + const t = [[], []], i = e[0] & 31; + let r = 2; + for (let s = 0; s < i; s++) { + const a = e[r++], o = 127 & e[r++], l = 127 & e[r++]; + if (o === 0 && l === 0) + continue; + if ((4 & a) !== 0) { + const c = 3 & a; + (c === 0 || c === 1) && (t[c].push(o), t[c].push(l)); + } + } + return t; + } +} +function Lf(n) { + return n.characteristics && /transcribes-spoken-dialog/gi.test(n.characteristics) && /describes-music-and-sound/gi.test(n.characteristics) ? "captions" : "subtitles"; +} +function ac(n, e) { + return !!n && n.kind === Lf(e) && yl(e, n); +} +function Nv(n, e, t, i) { + return Math.min(e, i) - Math.max(n, t); +} +function oc() { + return { + ccOffset: 0, + presentationOffset: 0, + 0: { + start: 0, + prevCC: -1, + new: !0 + } + }; +} +const Uv = /\s/, Gv = { + newCue(n, e, t, i) { + const r = []; + let s, a, o, l, u; + const c = self.VTTCue || self.TextTrackCue; + for (let d = 0; d < i.rows.length; d++) + if (s = i.rows[d], o = !0, l = 0, u = "", !s.isEmpty()) { + var h; + for (let p = 0; p < s.chars.length; p++) + Uv.test(s.chars[p].uchar) && o ? l++ : (u += s.chars[p].uchar, o = !1); + s.cueStartTime = e, e === t && (t += 1e-4), l >= 16 ? l-- : l++; + const f = Af(u.trim()), m = l0(e, t, f); + n != null && (h = n.cues) != null && h.getCueById(m) || (a = new c(e, t, f), a.id = m, a.line = d + 1, a.align = "left", a.position = 10 + Math.min(80, Math.floor(l * 8 / 32) * 10), r.push(a)); + } + return n && r.length && (r.sort((d, f) => d.line === "auto" || f.line === "auto" ? 0 : d.line > 8 && f.line > 8 ? f.line - d.line : d.line - f.line), r.forEach((d) => _f(n, d))), r; + } +}; +function zv() { + if ( + // @ts-ignore + self.fetch && self.AbortController && self.ReadableStream && self.Request + ) + try { + return new self.ReadableStream({}), !0; + } catch { + } + return !1; +} +const qv = /(\d+)-(\d+)\/(\d+)/; +class lc { + constructor(e) { + this.fetchSetup = void 0, this.requestTimeout = void 0, this.request = null, this.response = null, this.controller = void 0, this.context = null, this.config = null, this.callbacks = null, this.stats = void 0, this.loader = null, this.fetchSetup = e.fetchSetup || Yv, this.controller = new self.AbortController(), this.stats = new ql(); + } + destroy() { + this.loader = this.callbacks = this.context = this.config = this.request = null, this.abortInternal(), this.response = null, this.fetchSetup = this.controller = this.stats = null; + } + abortInternal() { + this.controller && !this.stats.loading.end && (this.stats.aborted = !0, this.controller.abort()); + } + abort() { + var e; + this.abortInternal(), (e = this.callbacks) != null && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.response); + } + load(e, t, i) { + const r = this.stats; + if (r.loading.start) + throw new Error("Loader can only be used once."); + r.loading.start = self.performance.now(); + const s = Hv(e, this.controller.signal), a = e.responseType === "arraybuffer", o = a ? "byteLength" : "length", { + maxTimeToFirstByteMs: l, + maxLoadTimeMs: u + } = t.loadPolicy; + this.context = e, this.config = t, this.callbacks = i, this.request = this.fetchSetup(e, s), self.clearTimeout(this.requestTimeout), t.timeout = l && se(l) ? l : u, this.requestTimeout = self.setTimeout(() => { + this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(r, e, this.response)); + }, t.timeout), (ns(this.request) ? this.request.then(self.fetch) : self.fetch(this.request)).then((h) => { + var d; + this.response = this.loader = h; + const f = Math.max(self.performance.now(), r.loading.start); + if (self.clearTimeout(this.requestTimeout), t.timeout = u, this.requestTimeout = self.setTimeout(() => { + this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(r, e, this.response)); + }, u - (f - r.loading.start)), !h.ok) { + const { + status: p, + statusText: v + } = h; + throw new Wv(v || "fetch, bad network response", p, h); + } + r.loading.first = f, r.total = Kv(h.headers) || r.total; + const m = (d = this.callbacks) == null ? void 0 : d.onProgress; + return m && se(t.highWaterMark) ? this.loadProgressively(h, r, e, t.highWaterMark, m) : a ? h.arrayBuffer() : e.responseType === "json" ? h.json() : h.text(); + }).then((h) => { + var d, f; + const m = this.response; + if (!m) + throw new Error("loader destroyed"); + self.clearTimeout(this.requestTimeout), r.loading.end = Math.max(self.performance.now(), r.loading.first); + const p = h[o]; + p && (r.loaded = r.total = p); + const v = { + url: m.url, + data: h, + code: m.status + }, b = (d = this.callbacks) == null ? void 0 : d.onProgress; + b && !se(t.highWaterMark) && b(r, e, h, m), (f = this.callbacks) == null || f.onSuccess(v, r, e, m); + }).catch((h) => { + var d; + if (self.clearTimeout(this.requestTimeout), r.aborted) + return; + const f = h && h.code || 0, m = h ? h.message : null; + (d = this.callbacks) == null || d.onError({ + code: f, + text: m + }, e, h ? h.details : null, r); + }); + } + getCacheAge() { + let e = null; + if (this.response) { + const t = this.response.headers.get("age"); + e = t ? parseFloat(t) : null; + } + return e; + } + getResponseHeader(e) { + return this.response ? this.response.headers.get(e) : null; + } + loadProgressively(e, t, i, r = 0, s) { + const a = new qd(), o = e.body.getReader(), l = () => o.read().then((u) => { + if (u.done) + return a.dataLength && s(t, i, a.flush().buffer, e), Promise.resolve(new ArrayBuffer(0)); + const c = u.value, h = c.length; + return t.loaded += h, h < r || a.dataLength ? (a.push(c), a.dataLength >= r && s(t, i, a.flush().buffer, e)) : s(t, i, c.buffer, e), l(); + }).catch(() => Promise.reject()); + return l(); + } +} +function Hv(n, e) { + const t = { + method: "GET", + mode: "cors", + credentials: "same-origin", + signal: e, + headers: new self.Headers(Ye({}, n.headers)) + }; + return n.rangeEnd && t.headers.set("Range", "bytes=" + n.rangeStart + "-" + String(n.rangeEnd - 1)), t; +} +function Vv(n) { + const e = qv.exec(n); + if (e) + return parseInt(e[2]) - parseInt(e[1]) + 1; +} +function Kv(n) { + const e = n.get("Content-Range"); + if (e) { + const i = Vv(e); + if (se(i)) + return i; + } + const t = n.get("Content-Length"); + if (t) + return parseInt(t); +} +function Yv(n, e) { + return new self.Request(n.url, e); +} +class Wv extends Error { + constructor(e, t, i) { + super(e), this.code = void 0, this.details = void 0, this.code = t, this.details = i; + } +} +const jv = /^age:\s*[\d.]+\s*$/im; +class If { + constructor(e) { + this.xhrSetup = void 0, this.requestTimeout = void 0, this.retryTimeout = void 0, this.retryDelay = void 0, this.config = null, this.callbacks = null, this.context = null, this.loader = null, this.stats = void 0, this.xhrSetup = e && e.xhrSetup || null, this.stats = new ql(), this.retryDelay = 0; + } + destroy() { + this.callbacks = null, this.abortInternal(), this.loader = null, this.config = null, this.context = null, this.xhrSetup = null; + } + abortInternal() { + const e = this.loader; + self.clearTimeout(this.requestTimeout), self.clearTimeout(this.retryTimeout), e && (e.onreadystatechange = null, e.onprogress = null, e.readyState !== 4 && (this.stats.aborted = !0, e.abort())); + } + abort() { + var e; + this.abortInternal(), (e = this.callbacks) != null && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.loader); + } + load(e, t, i) { + if (this.stats.loading.start) + throw new Error("Loader can only be used once."); + this.stats.loading.start = self.performance.now(), this.context = e, this.config = t, this.callbacks = i, this.loadInternal(); + } + loadInternal() { + const { + config: e, + context: t + } = this; + if (!e || !t) + return; + const i = this.loader = new self.XMLHttpRequest(), r = this.stats; + r.loading.first = 0, r.loaded = 0, r.aborted = !1; + const s = this.xhrSetup; + s ? Promise.resolve().then(() => { + if (!(this.loader !== i || this.stats.aborted)) + return s(i, t.url); + }).catch((a) => { + if (!(this.loader !== i || this.stats.aborted)) + return i.open("GET", t.url, !0), s(i, t.url); + }).then(() => { + this.loader !== i || this.stats.aborted || this.openAndSendXhr(i, t, e); + }).catch((a) => { + var o; + (o = this.callbacks) == null || o.onError({ + code: i.status, + text: a.message + }, t, i, r); + }) : this.openAndSendXhr(i, t, e); + } + openAndSendXhr(e, t, i) { + e.readyState || e.open("GET", t.url, !0); + const r = t.headers, { + maxTimeToFirstByteMs: s, + maxLoadTimeMs: a + } = i.loadPolicy; + if (r) + for (const o in r) + e.setRequestHeader(o, r[o]); + t.rangeEnd && e.setRequestHeader("Range", "bytes=" + t.rangeStart + "-" + (t.rangeEnd - 1)), e.onreadystatechange = this.readystatechange.bind(this), e.onprogress = this.loadprogress.bind(this), e.responseType = t.responseType, self.clearTimeout(this.requestTimeout), i.timeout = s && se(s) ? s : a, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), i.timeout), e.send(); + } + readystatechange() { + const { + context: e, + loader: t, + stats: i + } = this; + if (!e || !t) + return; + const r = t.readyState, s = this.config; + if (!i.aborted && r >= 2 && (i.loading.first === 0 && (i.loading.first = Math.max(self.performance.now(), i.loading.start), s.timeout !== s.loadPolicy.maxLoadTimeMs && (self.clearTimeout(this.requestTimeout), s.timeout = s.loadPolicy.maxLoadTimeMs, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), s.loadPolicy.maxLoadTimeMs - (i.loading.first - i.loading.start)))), r === 4)) { + self.clearTimeout(this.requestTimeout), t.onreadystatechange = null, t.onprogress = null; + const u = t.status, c = t.responseType === "text" ? t.responseText : null; + if (u >= 200 && u < 300) { + const m = c ?? t.response; + if (m != null) { + var a, o; + i.loading.end = Math.max(self.performance.now(), i.loading.first); + const p = t.responseType === "arraybuffer" ? m.byteLength : m.length; + i.loaded = i.total = p, i.bwEstimate = i.total * 8e3 / (i.loading.end - i.loading.first); + const v = (a = this.callbacks) == null ? void 0 : a.onProgress; + v && v(i, e, m, t); + const b = { + url: t.responseURL, + data: m, + code: u + }; + (o = this.callbacks) == null || o.onSuccess(b, i, e, t); + return; + } + } + const h = s.loadPolicy.errorRetry, d = i.retry, f = { + url: e.url, + data: void 0, + code: u + }; + if (Ta(h, d, !1, f)) + this.retry(h); + else { + var l; + Ne.error(`${u} while loading ${e.url}`), (l = this.callbacks) == null || l.onError({ + code: u, + text: t.statusText + }, e, t, i); + } + } + } + loadtimeout() { + if (!this.config) return; + const e = this.config.loadPolicy.timeoutRetry, t = this.stats.retry; + if (Ta(e, t, !0)) + this.retry(e); + else { + var i; + Ne.warn(`timeout while loading ${(i = this.context) == null ? void 0 : i.url}`); + const r = this.callbacks; + r && (this.abortInternal(), r.onTimeout(this.stats, this.context, this.loader)); + } + } + retry(e) { + const { + context: t, + stats: i + } = this; + this.retryDelay = Vl(e, i.retry), i.retry++, Ne.warn(`${status ? "HTTP Status " + status : "Timeout"} while loading ${t == null ? void 0 : t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`), this.abortInternal(), this.loader = null, self.clearTimeout(this.retryTimeout), this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); + } + loadprogress(e) { + const t = this.stats; + t.loaded = e.loaded, e.lengthComputable && (t.total = e.total); + } + getCacheAge() { + let e = null; + if (this.loader && jv.test(this.loader.getAllResponseHeaders())) { + const t = this.loader.getResponseHeader("age"); + e = t ? parseFloat(t) : null; + } + return e; + } + getResponseHeader(e) { + return this.loader && new RegExp(`^${e}:\\s*[\\d.]+\\s*$`, "im").test(this.loader.getAllResponseHeaders()) ? this.loader.getResponseHeader(e) : null; + } +} +const Xv = { + maxTimeToFirstByteMs: 8e3, + maxLoadTimeMs: 2e4, + timeoutRetry: null, + errorRetry: null +}, Qv = He(He({ + autoStartLoad: !0, + // used by stream-controller + startPosition: -1, + // used by stream-controller + defaultAudioCodec: void 0, + // used by stream-controller + debug: !1, + // used by logger + capLevelOnFPSDrop: !1, + // used by fps-controller + capLevelToPlayerSize: !1, + // used by cap-level-controller + ignoreDevicePixelRatio: !1, + // used by cap-level-controller + maxDevicePixelRatio: Number.POSITIVE_INFINITY, + // used by cap-level-controller + preferManagedMediaSource: !0, + initialLiveManifestSize: 1, + // used by stream-controller + maxBufferLength: 30, + // used by stream-controller + backBufferLength: 1 / 0, + // used by buffer-controller + frontBufferFlushThreshold: 1 / 0, + startOnSegmentBoundary: !1, + // used by stream-controller + maxBufferSize: 60 * 1e3 * 1e3, + // used by stream-controller + maxFragLookUpTolerance: 0.25, + // used by stream-controller + maxBufferHole: 0.1, + // used by stream-controller and gap-controller + detectStallWithCurrentTimeMs: 1250, + // used by gap-controller + highBufferWatchdogPeriod: 2, + // used by gap-controller + nudgeOffset: 0.1, + // used by gap-controller + nudgeMaxRetry: 3, + // used by gap-controller + nudgeOnVideoHole: !0, + // used by gap-controller + liveSyncMode: "edge", + // used by stream-controller + liveSyncDurationCount: 3, + // used by latency-controller + liveSyncOnStallIncrease: 1, + // used by latency-controller + liveMaxLatencyDurationCount: 1 / 0, + // used by latency-controller + liveSyncDuration: void 0, + // used by latency-controller + liveMaxLatencyDuration: void 0, + // used by latency-controller + maxLiveSyncPlaybackRate: 1, + // used by latency-controller + liveDurationInfinity: !1, + // used by buffer-controller + /** + * @deprecated use backBufferLength + */ + liveBackBufferLength: null, + // used by buffer-controller + maxMaxBufferLength: 600, + // used by stream-controller + enableWorker: !0, + // used by transmuxer + workerPath: null, + // used by transmuxer + enableSoftwareAES: !0, + // used by decrypter + startLevel: void 0, + // used by level-controller + startFragPrefetch: !1, + // used by stream-controller + fpsDroppedMonitoringPeriod: 5e3, + // used by fps-controller + fpsDroppedMonitoringThreshold: 0.2, + // used by fps-controller + appendErrorMaxRetry: 3, + // used by buffer-controller + ignorePlaylistParsingErrors: !1, + loader: If, + // loader: FetchLoader, + fLoader: void 0, + // used by fragment-loader + pLoader: void 0, + // used by playlist-loader + xhrSetup: void 0, + // used by xhr-loader + licenseXhrSetup: void 0, + // used by eme-controller + licenseResponseCallback: void 0, + // used by eme-controller + abrController: bg, + bufferController: l4, + capLevelController: s0, + errorController: Ag, + fpsController: ev, + stretchShortVideoTrack: !1, + // used by mp4-remuxer + maxAudioFramesDrift: 1, + // used by mp4-remuxer + forceKeyFrameOnDiscontinuity: !0, + // used by ts-demuxer + abrEwmaFastLive: 3, + // used by abr-controller + abrEwmaSlowLive: 9, + // used by abr-controller + abrEwmaFastVoD: 3, + // used by abr-controller + abrEwmaSlowVoD: 9, + // used by abr-controller + abrEwmaDefaultEstimate: 5e5, + // 500 kbps // used by abr-controller + abrEwmaDefaultEstimateMax: 5e6, + // 5 mbps + abrBandWidthFactor: 0.95, + // used by abr-controller + abrBandWidthUpFactor: 0.7, + // used by abr-controller + abrMaxWithRealBitrate: !1, + // used by abr-controller + maxStarvationDelay: 4, + // used by abr-controller + maxLoadingDelay: 4, + // used by abr-controller + minAutoBitrate: 0, + // used by hls + emeEnabled: !1, + // used by eme-controller + widevineLicenseUrl: void 0, + // used by eme-controller + drmSystems: {}, + // used by eme-controller + drmSystemOptions: {}, + // used by eme-controller + requestMediaKeySystemAccessFunc: Cd, + // used by eme-controller + requireKeySystemAccessOnStart: !1, + // used by eme-controller + testBandwidth: !0, + progressive: !1, + lowLatencyMode: !0, + cmcd: void 0, + enableDateRangeMetadataCues: !0, + enableEmsgMetadataCues: !0, + enableEmsgKLVMetadata: !1, + enableID3MetadataCues: !0, + enableInterstitialPlayback: !0, + interstitialAppendInPlace: !0, + interstitialLiveLookAhead: 10, + useMediaCapabilities: !0, + preserveManualLevelOnError: !1, + certLoadPolicy: { + default: Xv + }, + keyLoadPolicy: { + default: { + maxTimeToFirstByteMs: 8e3, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 2e4, + backoff: "linear" + }, + errorRetry: { + maxNumRetry: 8, + retryDelayMs: 1e3, + maxRetryDelayMs: 2e4, + backoff: "linear" + } + } + }, + manifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1 / 0, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + playlistLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 2, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + fragLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 12e4, + timeoutRetry: { + maxNumRetry: 4, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 6, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + steeringManifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + interstitialAssetListLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 3e4, + timeoutRetry: { + maxNumRetry: 0, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 0, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + // These default settings are deprecated in favor of the above policies + // and are maintained for backwards compatibility + manifestLoadingTimeOut: 1e4, + manifestLoadingMaxRetry: 1, + manifestLoadingRetryDelay: 1e3, + manifestLoadingMaxRetryTimeout: 64e3, + levelLoadingTimeOut: 1e4, + levelLoadingMaxRetry: 4, + levelLoadingRetryDelay: 1e3, + levelLoadingMaxRetryTimeout: 64e3, + fragLoadingTimeOut: 2e4, + fragLoadingMaxRetry: 6, + fragLoadingRetryDelay: 1e3, + fragLoadingMaxRetryTimeout: 64e3 +}, Zv()), {}, { + subtitleStreamController: dv, + subtitleTrackController: rv, + timelineController: Bv, + audioStreamController: n4, + audioTrackController: s4, + emeController: pn, + cmcdController: Q4, + contentSteeringController: J4, + interstitialsController: hv +}); +function Zv() { + return { + cueHandler: Gv, + // used by timeline-controller + enableWebVTT: !0, + // used by timeline-controller + enableIMSC1: !0, + // used by timeline-controller + enableCEA708Captions: !0, + // used by timeline-controller + captionsTextTrack1Label: "English", + // used by timeline-controller + captionsTextTrack1LanguageCode: "en", + // used by timeline-controller + captionsTextTrack2Label: "Spanish", + // used by timeline-controller + captionsTextTrack2LanguageCode: "es", + // used by timeline-controller + captionsTextTrack3Label: "Unknown CC", + // used by timeline-controller + captionsTextTrack3LanguageCode: "", + // used by timeline-controller + captionsTextTrack4Label: "Unknown CC", + // used by timeline-controller + captionsTextTrack4LanguageCode: "", + // used by timeline-controller + renderTextTracksNatively: !0 + }; +} +function Jv(n, e, t) { + if ((e.liveSyncDurationCount || e.liveMaxLatencyDurationCount) && (e.liveSyncDuration || e.liveMaxLatencyDuration)) + throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration"); + if (e.liveMaxLatencyDurationCount !== void 0 && (e.liveSyncDurationCount === void 0 || e.liveMaxLatencyDurationCount <= e.liveSyncDurationCount)) + throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"'); + if (e.liveMaxLatencyDuration !== void 0 && (e.liveSyncDuration === void 0 || e.liveMaxLatencyDuration <= e.liveSyncDuration)) + throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"'); + const i = Tl(n), r = ["manifest", "level", "frag"], s = ["TimeOut", "MaxRetry", "RetryDelay", "MaxRetryTimeout"]; + return r.forEach((a) => { + const o = `${a === "level" ? "playlist" : a}LoadPolicy`, l = e[o] === void 0, u = []; + s.forEach((c) => { + const h = `${a}Loading${c}`, d = e[h]; + if (d !== void 0 && l) { + u.push(h); + const f = i[o].default; + switch (e[o] = { + default: f + }, c) { + case "TimeOut": + f.maxLoadTimeMs = d, f.maxTimeToFirstByteMs = d; + break; + case "MaxRetry": + f.errorRetry.maxNumRetry = d, f.timeoutRetry.maxNumRetry = d; + break; + case "RetryDelay": + f.errorRetry.retryDelayMs = d, f.timeoutRetry.retryDelayMs = d; + break; + case "MaxRetryTimeout": + f.errorRetry.maxRetryDelayMs = d, f.timeoutRetry.maxRetryDelayMs = d; + break; + } + } + }), u.length && t.warn(`hls.js config: "${u.join('", "')}" setting(s) are deprecated, use "${o}": ${it(e[o])}`); + }), He(He({}, i), e); +} +function Tl(n) { + return n && typeof n == "object" ? Array.isArray(n) ? n.map(Tl) : Object.keys(n).reduce((e, t) => (e[t] = Tl(n[t]), e), {}) : n; +} +function e2(n, e) { + const t = n.loader; + t !== lc && t !== If ? (e.log("[config]: Custom loader detected, cannot enable progressive streaming"), n.progressive = !1) : zv() && (n.loader = lc, n.progressive = !0, n.enableSoftwareAES = !0, e.log("[config]: Progressive streaming enabled, using FetchLoader")); +} +const da = 2, t2 = 0.1, i2 = 0.05, r2 = 100; +class n2 extends Ld { + constructor(e, t) { + super("gap-controller", e.logger), this.hls = null, this.fragmentTracker = null, this.media = null, this.mediaSource = void 0, this.nudgeRetry = 0, this.stallReported = !1, this.stalled = null, this.moved = !1, this.seeking = !1, this.buffered = {}, this.lastCurrentTime = 0, this.ended = 0, this.waiting = 0, this.onMediaPlaying = () => { + this.ended = 0, this.waiting = 0; + }, this.onMediaWaiting = () => { + var i; + (i = this.media) != null && i.seeking || (this.waiting = self.performance.now(), this.tick()); + }, this.onMediaEnded = () => { + if (this.hls) { + var i; + this.ended = ((i = this.media) == null ? void 0 : i.currentTime) || 1, this.hls.trigger(S.MEDIA_ENDED, { + stalled: !1 + }); + } + }, this.hls = e, this.fragmentTracker = t, this.registerListeners(); + } + registerListeners() { + const { + hls: e + } = this; + e && (e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.BUFFER_APPENDED, this.onBufferAppended, this)); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.BUFFER_APPENDED, this.onBufferAppended, this)); + } + destroy() { + super.destroy(), this.unregisterListeners(), this.media = this.hls = this.fragmentTracker = null, this.mediaSource = void 0; + } + onMediaAttached(e, t) { + this.setInterval(r2), this.mediaSource = t.mediaSource; + const i = this.media = t.media; + ii(i, "playing", this.onMediaPlaying), ii(i, "waiting", this.onMediaWaiting), ii(i, "ended", this.onMediaEnded); + } + onMediaDetaching(e, t) { + this.clearInterval(); + const { + media: i + } = this; + i && (fi(i, "playing", this.onMediaPlaying), fi(i, "waiting", this.onMediaWaiting), fi(i, "ended", this.onMediaEnded), this.media = null), this.mediaSource = void 0; + } + onBufferAppended(e, t) { + this.buffered = t.timeRanges; + } + get hasBuffered() { + return Object.keys(this.buffered).length > 0; + } + tick() { + var e; + if (!((e = this.media) != null && e.readyState) || !this.hasBuffered) + return; + const t = this.media.currentTime; + this.poll(t, this.lastCurrentTime), this.lastCurrentTime = t; + } + /** + * Checks if the playhead is stuck within a gap, and if so, attempts to free it. + * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range). + * + * @param lastCurrentTime - Previously read playhead position + */ + poll(e, t) { + var i, r; + const s = (i = this.hls) == null ? void 0 : i.config; + if (!s) + return; + const a = this.media; + if (!a) + return; + const { + seeking: o + } = a, l = this.seeking && !o, u = !this.seeking && o, c = a.paused && !o || a.ended || a.playbackRate === 0; + if (this.seeking = o, e !== t) { + t && (this.ended = 0), this.moved = !0, o || (this.nudgeRetry = 0, s.nudgeOnVideoHole && !c && e > t && this.nudgeOnVideoHole(e, t)), this.waiting === 0 && this.stallResolved(e); + return; + } + if (u || l) { + l && this.stallResolved(e); + return; + } + if (c) { + this.nudgeRetry = 0, this.stallResolved(e), !this.ended && a.ended && this.hls && (this.ended = e || 1, this.hls.trigger(S.MEDIA_ENDED, { + stalled: !1 + })); + return; + } + if (!De.getBuffered(a).length) { + this.nudgeRetry = 0; + return; + } + const h = De.bufferInfo(a, e, 0), d = h.nextStart || 0, f = this.fragmentTracker; + if (o && f && this.hls) { + const k = uc(this.hls.inFlightFragments, e), w = h.len > da, L = !d || k || d - e > da && !f.getPartialFragment(e); + if (w || L) + return; + this.moved = !1; + } + const m = (r = this.hls) == null ? void 0 : r.latestLevelDetails; + if (!this.moved && this.stalled !== null && f) { + if (!(h.len > 0) && !d) + return; + const w = Math.max(d, h.start || 0) - e, I = !!(m != null && m.live) ? m.targetduration * 2 : da, R = f.getPartialFragment(e); + if (w > 0 && (w <= I || R)) { + a.paused || this._trySkipBufferHole(R); + return; + } + } + const p = s.detectStallWithCurrentTimeMs, v = self.performance.now(), b = this.waiting; + let E = this.stalled; + if (E === null) + if (b > 0 && v - b < p) + E = this.stalled = b; + else { + this.stalled = v; + return; + } + const y = v - E; + if (!o && (y >= p || b) && this.hls) { + var T; + if (((T = this.mediaSource) == null ? void 0 : T.readyState) === "ended" && !(m != null && m.live) && Math.abs(e - ((m == null ? void 0 : m.edge) || 0)) < 1) { + if (this.ended) + return; + this.ended = e || 1, this.hls.trigger(S.MEDIA_ENDED, { + stalled: !0 + }); + return; + } + if (this._reportStall(h), !this.media || !this.hls) + return; + } + const A = De.bufferInfo(a, e, s.maxBufferHole); + this._tryFixBufferStall(A, y, e); + } + stallResolved(e) { + const t = this.stalled; + if (t && this.hls && (this.stalled = null, this.stallReported)) { + const i = self.performance.now() - t; + this.log(`playback not stuck anymore @${e}, after ${Math.round(i)}ms`), this.stallReported = !1, this.waiting = 0, this.hls.trigger(S.STALL_RESOLVED, {}); + } + } + nudgeOnVideoHole(e, t) { + var i; + const r = this.buffered.video; + if (this.hls && this.media && this.fragmentTracker && (i = this.buffered.audio) != null && i.length && r && r.length > 1 && e > r.end(0)) { + const s = De.bufferedInfo(De.timeRangesToArray(this.buffered.audio), e, 0); + if (s.len > 1 && t >= s.start) { + const a = De.timeRangesToArray(r), o = De.bufferedInfo(a, t, 0).bufferedIndex; + if (o > -1 && o < a.length - 1) { + const l = De.bufferedInfo(a, e, 0).bufferedIndex, u = a[o].end, c = a[o + 1].start; + if ((l === -1 || l > o) && c - u < 1 && // `maxBufferHole` may be too small and setting it to 0 should not disable this feature + e - u < 2) { + const h = new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${e} hole: ${u} -> ${c} buffered index: ${l}`); + this.warn(h.message), this.media.currentTime += 1e-6; + const d = this.fragmentTracker.getPartialFragment(e) || void 0, f = De.bufferInfo(this.media, e, 0); + this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_SEEK_OVER_HOLE, + fatal: !1, + error: h, + reason: h.message, + frag: d, + buffer: f.len, + bufferInfo: f + }); + } + } + } + } + } + /** + * Detects and attempts to fix known buffer stalling issues. + * @param bufferInfo - The properties of the current buffer. + * @param stalledDurationMs - The amount of time Hls.js has been stalling for. + * @private + */ + _tryFixBufferStall(e, t, i) { + var r, s; + const { + fragmentTracker: a, + media: o + } = this, l = (r = this.hls) == null ? void 0 : r.config; + if (!o || !a || !l) + return; + const u = (s = this.hls) == null ? void 0 : s.latestLevelDetails, c = a.getPartialFragment(i); + if ((c || u != null && u.live && i < u.fragmentStart) && (this._trySkipBufferHole(c) || !this.media)) + return; + const h = e.buffered, d = this.adjacentTraversal(e, i); + (h && h.length > 1 && e.len > l.maxBufferHole || e.nextStart && (e.nextStart - i < l.maxBufferHole || d)) && (t > l.highBufferWatchdogPeriod * 1e3 || this.waiting) && (this.warn("Trying to nudge playhead over buffer-hole"), this._tryNudgeBuffer(e)); + } + adjacentTraversal(e, t) { + const i = this.fragmentTracker, r = e.nextStart; + if (i && r) { + const s = i.getFragAtPos(t, ue.MAIN), a = i.getFragAtPos(r, ue.MAIN); + if (s && a) + return a.sn - s.sn < 2; + } + return !1; + } + /** + * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period. + * @param bufferLen - The playhead distance from the end of the current buffer segment. + * @private + */ + _reportStall(e) { + const { + hls: t, + media: i, + stallReported: r, + stalled: s + } = this; + if (!r && s !== null && i && t) { + this.stallReported = !0; + const a = new Error(`Playback stalling at @${i.currentTime} due to low buffer (${it(e)})`); + this.warn(a.message), t.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_STALLED_ERROR, + fatal: !1, + error: a, + buffer: e.len, + bufferInfo: e, + stalled: { + start: s + } + }); + } + } + /** + * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments + * @param partial - The partial fragment found at the current time (where playback is stalling). + * @private + */ + _trySkipBufferHole(e) { + var t; + const { + fragmentTracker: i, + media: r + } = this, s = (t = this.hls) == null ? void 0 : t.config; + if (!r || !i || !s) + return 0; + const a = r.currentTime, o = De.bufferInfo(r, a, 0), l = a < o.start ? o.start : o.nextStart; + if (l && this.hls) { + const c = o.len <= s.maxBufferHole, h = o.len > 0 && o.len < 1 && r.readyState < 3, d = l - a; + if (d > 0 && (c || h)) { + if (d > s.maxBufferHole) { + let m = !1; + if (a === 0) { + const p = i.getAppendedFrag(0, ue.MAIN); + p && l < p.end && (m = !0); + } + if (!m) { + const p = e || i.getAppendedFrag(a, ue.MAIN); + if (p) { + var u; + if (!((u = this.hls.loadLevelObj) != null && u.details) || uc(this.hls.inFlightFragments, l)) + return 0; + let b = !1, E = p.end; + for (; E < l; ) { + const y = i.getPartialFragment(E); + if (y) + E += y.duration; + else { + b = !0; + break; + } + } + if (b) + return 0; + } + } + } + const f = Math.max(l + i2, a + t2); + if (this.warn(`skipping hole, adjusting currentTime from ${a} to ${f}`), this.moved = !0, r.currentTime = f, !(e != null && e.gap)) { + const m = new Error(`fragment loaded with buffer holes, seeking from ${a} to ${f}`); + this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_SEEK_OVER_HOLE, + fatal: !1, + error: m, + reason: m.message, + frag: e || void 0, + buffer: o.len, + bufferInfo: o + }); + } + return f; + } + } + return 0; + } + /** + * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount. + * @private + */ + _tryNudgeBuffer(e) { + const { + hls: t, + media: i, + nudgeRetry: r + } = this, s = t == null ? void 0 : t.config; + if (!i || !s) + return 0; + const a = i.currentTime; + if (this.nudgeRetry++, r < s.nudgeMaxRetry) { + const o = a + (r + 1) * s.nudgeOffset, l = new Error(`Nudging 'currentTime' from ${a} to ${o}`); + this.warn(l.message), i.currentTime = o, t.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_NUDGE_ON_STALL, + error: l, + fatal: !1, + buffer: e.len, + bufferInfo: e + }); + } else { + const o = new Error(`Playhead still not moving while enough data buffered @${a} after ${s.nudgeMaxRetry} nudges`); + this.error(o.message), t.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.BUFFER_STALLED_ERROR, + error: o, + fatal: !0, + buffer: e.len, + bufferInfo: e + }); + } + } +} +function uc(n, e) { + const t = cc(n.main); + if (t && t.start <= e) + return t; + const i = cc(n.audio); + return i && i.start <= e ? i : null; +} +function cc(n) { + if (!n) + return null; + switch (n.state) { + case W.IDLE: + case W.STOPPED: + case W.ENDED: + case W.ERROR: + return null; + } + return n.frag; +} +const s2 = 0.25; +function xl() { + if (!(typeof self > "u")) + return self.VTTCue || self.TextTrackCue; +} +function hc(n, e, t, i, r) { + let s = new n(e, t, ""); + try { + s.value = i, r && (s.type = r); + } catch { + s = new n(e, t, it(r ? He({ + type: r + }, i) : i)); + } + return s; +} +const $s = (() => { + const n = xl(); + try { + n && new n(0, Number.POSITIVE_INFINITY, ""); + } catch { + return Number.MAX_VALUE; + } + return Number.POSITIVE_INFINITY; +})(); +function a2(n) { + return Uint8Array.from(n.replace(/^0x/, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")).buffer; +} +class o2 { + constructor(e) { + this.hls = void 0, this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.removeCues = !0, this.onEventCueEnter = () => { + this.hls && this.hls.trigger(S.EVENT_CUE_ENTER, {}); + }, this.hls = e, this._registerListeners(); + } + destroy() { + this._unregisterListeners(), this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.hls = this.onEventCueEnter = null; + } + _registerListeners() { + const { + hls: e + } = this; + e.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(S.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(S.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + } + // Add ID3 metatadata text track. + onMediaAttaching(e, t) { + var i; + this.media = t.media, ((i = t.overrides) == null ? void 0 : i.cueRemoval) === !1 && (this.removeCues = !1); + } + onMediaAttached() { + const e = this.hls.latestLevelDetails; + e && this.updateDateRangeCues(e); + } + onMediaDetaching(e, t) { + this.media = null, !t.transferMedia && (this.id3Track && (this.removeCues && hn(this.id3Track, this.onEventCueEnter), this.id3Track = null), this.dateRangeCuesAppended = {}); + } + onManifestLoading() { + this.dateRangeCuesAppended = {}; + } + createTrack(e) { + const t = this.getID3Track(e.textTracks); + return t.mode = "hidden", t; + } + getID3Track(e) { + if (this.media) { + for (let t = 0; t < e.length; t++) { + const i = e[t]; + if (i.kind === "metadata" && i.label === "id3") + return yf(i, this.media), i; + } + return this.media.addTextTrack("metadata", "id3"); + } + } + onFragParsingMetadata(e, t) { + if (!this.media) + return; + const { + hls: { + config: { + enableEmsgMetadataCues: i, + enableID3MetadataCues: r + } + } + } = this; + if (!i && !r) + return; + const { + samples: s + } = t; + this.id3Track || (this.id3Track = this.createTrack(this.media)); + const a = xl(); + if (a) + for (let o = 0; o < s.length; o++) { + const l = s[o].type; + if (l === ei.emsg && !i || !r) + continue; + const u = Xd(s[o].data); + if (u) { + const c = s[o].pts; + let h = c + s[o].duration; + h > $s && (h = $s), h - c <= 0 && (h = c + s2); + for (let f = 0; f < u.length; f++) { + const m = u[f]; + if (!Qd(m)) { + this.updateId3CueEnds(c, l); + const p = hc(a, c, h, m, l); + p && this.id3Track.addCue(p); + } + } + } + } + } + updateId3CueEnds(e, t) { + var i; + const r = (i = this.id3Track) == null ? void 0 : i.cues; + if (r) + for (let s = r.length; s--; ) { + const a = r[s]; + a.type === t && a.startTime < e && a.endTime === $s && (a.endTime = e); + } + } + onBufferFlushing(e, { + startOffset: t, + endOffset: i, + type: r + }) { + const { + id3Track: s, + hls: a + } = this; + if (!a) + return; + const { + config: { + enableEmsgMetadataCues: o, + enableID3MetadataCues: l + } + } = a; + if (s && (o || l)) { + let u; + r === "audio" ? u = (c) => c.type === ei.audioId3 && l : r === "video" ? u = (c) => c.type === ei.emsg && o : u = (c) => c.type === ei.audioId3 && l || c.type === ei.emsg && o, El(s, t, i, u); + } + } + onLevelUpdated(e, { + details: t + }) { + this.updateDateRangeCues(t, !0); + } + onLevelPtsUpdated(e, t) { + Math.abs(t.drift) > 0.01 && this.updateDateRangeCues(t.details); + } + updateDateRangeCues(e, t) { + if (!this.media || !e.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) + return; + const { + id3Track: i + } = this, { + dateRanges: r + } = e, s = Object.keys(r); + let a = this.dateRangeCuesAppended; + if (i && t) { + var o; + if ((o = i.cues) != null && o.length) { + const c = Object.keys(a).filter((h) => !s.includes(h)); + for (let h = c.length; h--; ) { + const d = c[h], f = a[d].cues; + delete a[d], Object.keys(f).forEach((m) => { + try { + const p = f[m]; + p.removeEventListener("enter", this.onEventCueEnter), i.removeCue(p); + } catch { + } + }); + } + } else + a = this.dateRangeCuesAppended = {}; + } + const l = e.fragments[e.fragments.length - 1]; + if (s.length === 0 || !se(l == null ? void 0 : l.programDateTime)) + return; + this.id3Track || (this.id3Track = this.createTrack(this.media)); + const u = xl(); + for (let c = 0; c < s.length; c++) { + const h = s[c], d = r[h], f = d.startTime, m = a[h], p = (m == null ? void 0 : m.cues) || {}; + let v = (m == null ? void 0 : m.durationKnown) || !1, b = $s; + const { + duration: E, + endDate: y + } = d; + if (y && E !== null) + b = f + E, v = !0; + else if (d.endOnNext && !v) { + const A = s.reduce((k, w) => { + if (w !== d.id) { + const L = r[w]; + if (L.class === d.class && L.startDate > d.startDate && (!k || d.startDate < k.startDate)) + return L; + } + return k; + }, null); + A && (b = A.startTime, v = !0); + } + const T = Object.keys(d.attr); + for (let A = 0; A < T.length; A++) { + const k = T[A]; + if (!Bg(k)) + continue; + const w = p[k]; + if (w) + v && !m.durationKnown ? w.endTime = b : Math.abs(w.startTime - f) > 0.01 && (w.startTime = f, w.endTime = b); + else if (u) { + let L = d.attr[k]; + Ng(k) && (L = a2(L)); + const R = hc(u, f, b, { + key: k, + data: L + }, ei.dateRange); + R && (R.id = h, this.id3Track.addCue(R), p[k] = R, this.hls.config.interstitialsController && (k === "X-ASSET-LIST" || k === "X-ASSET-URL") && R.addEventListener("enter", this.onEventCueEnter)); + } + } + a[h] = { + cues: p, + dateRange: d, + durationKnown: v + }; + } + } +} +class l2 { + constructor(e) { + this.hls = void 0, this.config = void 0, this.media = null, this.currentTime = 0, this.stallCount = 0, this._latency = null, this._targetLatencyUpdated = !1, this.onTimeupdate = () => { + const { + media: t + } = this, i = this.levelDetails; + if (!t || !i) + return; + this.currentTime = t.currentTime; + const r = this.computeLatency(); + if (r === null) + return; + this._latency = r; + const { + lowLatencyMode: s, + maxLiveSyncPlaybackRate: a + } = this.config; + if (!s || a === 1 || !i.live) + return; + const o = this.targetLatency; + if (o === null) + return; + const l = r - o, u = Math.min(this.maxLatency, o + i.targetduration); + if (l < u && l > 0.05 && this.forwardBufferLength > 1) { + const h = Math.min(2, Math.max(1, a)), d = Math.round(2 / (1 + Math.exp(-0.75 * l - this.edgeStalled)) * 20) / 20, f = Math.min(h, Math.max(1, d)); + this.changeMediaPlaybackRate(t, f); + } else t.playbackRate !== 1 && t.playbackRate !== 0 && this.changeMediaPlaybackRate(t, 1); + }, this.hls = e, this.config = e.config, this.registerListeners(); + } + get levelDetails() { + var e; + return ((e = this.hls) == null ? void 0 : e.latestLevelDetails) || null; + } + get latency() { + return this._latency || 0; + } + get maxLatency() { + const { + config: e + } = this; + if (e.liveMaxLatencyDuration !== void 0) + return e.liveMaxLatencyDuration; + const t = this.levelDetails; + return t ? e.liveMaxLatencyDurationCount * t.targetduration : 0; + } + get targetLatency() { + const e = this.levelDetails; + if (e === null || this.hls === null) + return null; + const { + holdBack: t, + partHoldBack: i, + targetduration: r + } = e, { + liveSyncDuration: s, + liveSyncDurationCount: a, + lowLatencyMode: o + } = this.config, l = this.hls.userConfig; + let u = o && i || t; + (this._targetLatencyUpdated || l.liveSyncDuration || l.liveSyncDurationCount || u === 0) && (u = s !== void 0 ? s : a * r); + const c = r; + return u + Math.min(this.stallCount * this.config.liveSyncOnStallIncrease, c); + } + set targetLatency(e) { + this.stallCount = 0, this.config.liveSyncDuration = e, this._targetLatencyUpdated = !0; + } + get liveSyncPosition() { + const e = this.estimateLiveEdge(), t = this.targetLatency; + if (e === null || t === null) + return null; + const i = this.levelDetails; + if (i === null) + return null; + const r = i.edge, s = e - t - this.edgeStalled, a = r - i.totalduration, o = r - (this.config.lowLatencyMode && i.partTarget || i.targetduration); + return Math.min(Math.max(a, s), o); + } + get drift() { + const e = this.levelDetails; + return e === null ? 1 : e.drift; + } + get edgeStalled() { + const e = this.levelDetails; + if (e === null) + return 0; + const t = (this.config.lowLatencyMode && e.partTarget || e.targetduration) * 3; + return Math.max(e.age - t, 0); + } + get forwardBufferLength() { + const { + media: e + } = this, t = this.levelDetails; + if (!e || !t) + return 0; + const i = e.buffered.length; + return (i ? e.buffered.end(i - 1) : t.edge) - this.currentTime; + } + destroy() { + this.unregisterListeners(), this.onMediaDetaching(), this.hls = null; + } + registerListeners() { + const { + hls: e + } = this; + e && (e.on(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(S.ERROR, this.onError, this)); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(S.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(S.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(S.ERROR, this.onError, this)); + } + onMediaAttached(e, t) { + this.media = t.media, this.media.addEventListener("timeupdate", this.onTimeupdate); + } + onMediaDetaching() { + this.media && (this.media.removeEventListener("timeupdate", this.onTimeupdate), this.media = null); + } + onManifestLoading() { + this._latency = null, this.stallCount = 0; + } + onLevelUpdated(e, { + details: t + }) { + t.advanced && this.onTimeupdate(), !t.live && this.media && this.media.removeEventListener("timeupdate", this.onTimeupdate); + } + onError(e, t) { + var i; + t.details === B.BUFFER_STALLED_ERROR && (this.stallCount++, this.hls && (i = this.levelDetails) != null && i.live && this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency")); + } + changeMediaPlaybackRate(e, t) { + var i, r; + e.playbackRate !== t && ((i = this.hls) == null || i.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(r = this.targetLatency) == null ? void 0 : r.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${e.playbackRate} to ${t}`), e.playbackRate = t); + } + estimateLiveEdge() { + const e = this.levelDetails; + return e === null ? null : e.edge + e.age; + } + computeLatency() { + const e = this.estimateLiveEdge(); + return e === null ? null : e - this.currentTime; + } +} +class u2 extends n0 { + constructor(e, t) { + super(e, "level-controller"), this._levels = [], this._firstLevel = -1, this._maxAutoLevel = -1, this._startLevel = void 0, this.currentLevel = null, this.currentLevelIndex = -1, this.manualLevelIndex = -1, this.steering = void 0, this.onParsedComplete = void 0, this.steering = t, this._registerListeners(); + } + _registerListeners() { + const { + hls: e + } = this; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(S.LEVEL_LOADED, this.onLevelLoaded, this), e.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(S.FRAG_BUFFERED, this.onFragBuffered, this), e.on(S.ERROR, this.onError, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(S.LEVEL_LOADED, this.onLevelLoaded, this), e.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(S.FRAG_BUFFERED, this.onFragBuffered, this), e.off(S.ERROR, this.onError, this); + } + destroy() { + this._unregisterListeners(), this.steering = null, this.resetLevels(), super.destroy(); + } + stopLoad() { + this._levels.forEach((t) => { + t.loadError = 0, t.fragmentError = 0; + }), super.stopLoad(); + } + resetLevels() { + this._startLevel = void 0, this.manualLevelIndex = -1, this.currentLevelIndex = -1, this.currentLevel = null, this._levels = [], this._maxAutoLevel = -1; + } + onManifestLoading(e, t) { + this.resetLevels(); + } + onManifestLoaded(e, t) { + const i = this.hls.config.preferManagedMediaSource, r = [], s = {}, a = {}; + let o = !1, l = !1, u = !1; + t.levels.forEach((c) => { + const h = c.attrs; + let { + audioCodec: d, + videoCodec: f + } = c; + d && (c.audioCodec = d = _a(d, i) || void 0), f && (f = c.videoCodec = ag(f)); + const { + width: m, + height: p, + unknownCodecs: v + } = c; + let b = v ? v.length : 0; + if (v) + for (let R = b; R--; ) { + const O = v[R]; + this.isAudioSupported(O) ? (c.audioCodec = d = d ? `${d},${O}` : O, b--, bn.audio[d.substring(0, 4)] = 2) : this.isVideoSupported(O) && (c.videoCodec = f = f ? `${f},${O}` : O, b--, bn.video[f.substring(0, 4)] = 2); + } + if (o || (o = !!(m && p)), l || (l = !!f), u || (u = !!d), b || d && !this.isAudioSupported(d) || f && !this.isVideoSupported(f)) { + this.log(`Some or all CODECS not supported "${h.CODECS}"`); + return; + } + const { + CODECS: E, + "FRAME-RATE": y, + "HDCP-LEVEL": T, + "PATHWAY-ID": A, + RESOLUTION: k, + "VIDEO-RANGE": w + } = h, I = `${`${A || "."}-`}${c.bitrate}-${k}-${y}-${E}-${w}-${T}`; + if (s[I]) + if (s[I].uri !== c.url && !c.attrs["PATHWAY-ID"]) { + const R = a[I] += 1; + c.attrs["PATHWAY-ID"] = new Array(R + 1).join("."); + const O = this.createLevel(c); + s[I] = O, r.push(O); + } else + s[I].addGroupId("audio", h.AUDIO), s[I].addGroupId("text", h.SUBTITLES); + else { + const R = this.createLevel(c); + s[I] = R, a[I] = 1, r.push(R); + } + }), this.filterAndSortMediaOptions(r, t, o, l, u); + } + createLevel(e) { + const t = new Jn(e), i = e.supplemental; + if (i != null && i.videoCodec && !this.isVideoSupported(i.videoCodec)) { + const r = new Error(`SUPPLEMENTAL-CODECS not supported "${i.videoCodec}"`); + this.log(r.message), t.supportedResult = xd(r, []); + } + return t; + } + isAudioSupported(e) { + return cl(e, "audio", this.hls.config.preferManagedMediaSource); + } + isVideoSupported(e) { + return cl(e, "video", this.hls.config.preferManagedMediaSource); + } + filterAndSortMediaOptions(e, t, i, r, s) { + let a = [], o = [], l = e; + if ((i || r) && s && (l = l.filter(({ + videoCodec: v, + videoRange: b, + width: E, + height: y + }) => (!!v || !!(E && y)) && hg(b))), l.length === 0) { + Promise.resolve().then(() => { + if (this.hls) { + let v = "no level with compatible codecs found in manifest", b = v; + t.levels.length && (b = `one or more CODECS in variant not supported: ${it(t.levels.map((y) => y.attrs.CODECS).filter((y, T, A) => A.indexOf(y) === T))}`, this.warn(b), v += ` (${b})`); + const E = new Error(v); + this.hls.trigger(S.ERROR, { + type: de.MEDIA_ERROR, + details: B.MANIFEST_INCOMPATIBLE_CODECS_ERROR, + fatal: !0, + url: t.url, + error: E, + reason: b + }); + } + }); + return; + } + t.audioTracks && (a = t.audioTracks.filter((v) => !v.audioCodec || this.isAudioSupported(v.audioCodec)), dc(a)), t.subtitles && (o = t.subtitles, dc(o)); + const u = l.slice(0); + l.sort((v, b) => { + if (v.attrs["HDCP-LEVEL"] !== b.attrs["HDCP-LEVEL"]) + return (v.attrs["HDCP-LEVEL"] || "") > (b.attrs["HDCP-LEVEL"] || "") ? 1 : -1; + if (i && v.height !== b.height) + return v.height - b.height; + if (v.frameRate !== b.frameRate) + return v.frameRate - b.frameRate; + if (v.videoRange !== b.videoRange) + return ba.indexOf(v.videoRange) - ba.indexOf(b.videoRange); + if (v.videoCodec !== b.videoCodec) { + const E = su(v.videoCodec), y = su(b.videoCodec); + if (E !== y) + return y - E; + } + if (v.uri === b.uri && v.codecSet !== b.codecSet) { + const E = ya(v.codecSet), y = ya(b.codecSet); + if (E !== y) + return y - E; + } + return v.averageBitrate !== b.averageBitrate ? v.averageBitrate - b.averageBitrate : 0; + }); + let c = u[0]; + if (this.steering && (l = this.steering.filterParsedLevels(l), l.length !== u.length)) { + for (let v = 0; v < u.length; v++) + if (u[v].pathwayId === l[0].pathwayId) { + c = u[v]; + break; + } + } + this._levels = l; + for (let v = 0; v < l.length; v++) + if (l[v] === c) { + var h; + this._firstLevel = v; + const b = c.bitrate, E = this.hls.bandwidthEstimate; + if (this.log(`manifest loaded, ${l.length} level(s) found, first bitrate: ${b}`), ((h = this.hls.userConfig) == null ? void 0 : h.abrEwmaDefaultEstimate) === void 0) { + const y = Math.min(b, this.hls.config.abrEwmaDefaultEstimateMax); + y > E && E === this.hls.abrEwmaDefaultEstimate && (this.hls.bandwidthEstimate = y); + } + break; + } + const d = s && !r, f = this.hls.config, m = !!(f.audioStreamController && f.audioTrackController), p = { + levels: l, + audioTracks: a, + subtitleTracks: o, + sessionData: t.sessionData, + sessionKeys: t.sessionKeys, + firstLevel: this._firstLevel, + stats: t.stats, + audio: s, + video: r, + altAudio: m && !d && a.some((v) => !!v.url) + }; + this.hls.trigger(S.MANIFEST_PARSED, p); + } + get levels() { + return this._levels.length === 0 ? null : this._levels; + } + get loadLevelObj() { + return this.currentLevel; + } + get level() { + return this.currentLevelIndex; + } + set level(e) { + const t = this._levels; + if (t.length === 0) + return; + if (e < 0 || e >= t.length) { + const c = new Error("invalid level idx"), h = e < 0; + if (this.hls.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.LEVEL_SWITCH_ERROR, + level: e, + fatal: h, + error: c, + reason: c.message + }), h) + return; + e = Math.min(e, t.length - 1); + } + const i = this.currentLevelIndex, r = this.currentLevel, s = r ? r.attrs["PATHWAY-ID"] : void 0, a = t[e], o = a.attrs["PATHWAY-ID"]; + if (this.currentLevelIndex = e, this.currentLevel = a, i === e && r && s === o) + return; + this.log(`Switching to level ${e} (${a.height ? a.height + "p " : ""}${a.videoRange ? a.videoRange + " " : ""}${a.codecSet ? a.codecSet + " " : ""}@${a.bitrate})${o ? " with Pathway " + o : ""} from level ${i}${s ? " with Pathway " + s : ""}`); + const l = { + level: e, + attrs: a.attrs, + details: a.details, + bitrate: a.bitrate, + averageBitrate: a.averageBitrate, + maxBitrate: a.maxBitrate, + realBitrate: a.realBitrate, + width: a.width, + height: a.height, + codecSet: a.codecSet, + audioCodec: a.audioCodec, + videoCodec: a.videoCodec, + audioGroups: a.audioGroups, + subtitleGroups: a.subtitleGroups, + loaded: a.loaded, + loadError: a.loadError, + fragmentError: a.fragmentError, + name: a.name, + id: a.id, + uri: a.uri, + url: a.url, + urlId: 0, + audioGroupIds: a.audioGroupIds, + textGroupIds: a.textGroupIds + }; + this.hls.trigger(S.LEVEL_SWITCHING, l); + const u = a.details; + if (!u || u.live) { + const c = this.switchParams(a.uri, r == null ? void 0 : r.details, u); + this.loadPlaylist(c); + } + } + get manualLevel() { + return this.manualLevelIndex; + } + set manualLevel(e) { + this.manualLevelIndex = e, this._startLevel === void 0 && (this._startLevel = e), e !== -1 && (this.level = e); + } + get firstLevel() { + return this._firstLevel; + } + set firstLevel(e) { + this._firstLevel = e; + } + get startLevel() { + if (this._startLevel === void 0) { + const e = this.hls.config.startLevel; + return e !== void 0 ? e : this.hls.firstAutoLevel; + } + return this._startLevel; + } + set startLevel(e) { + this._startLevel = e; + } + get pathways() { + return this.steering ? this.steering.pathways() : []; + } + get pathwayPriority() { + return this.steering ? this.steering.pathwayPriority : null; + } + set pathwayPriority(e) { + if (this.steering) { + const t = this.steering.pathways(), i = e.filter((r) => t.indexOf(r) !== -1); + if (e.length < 1) { + this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`); + return; + } + this.steering.pathwayPriority = i; + } + } + onError(e, t) { + t.fatal || !t.context || t.context.type === Ce.LEVEL && t.context.level === this.level && this.checkRetry(t); + } + // reset errors on the successful load of a fragment + onFragBuffered(e, { + frag: t + }) { + if (t !== void 0 && t.type === ue.MAIN) { + const i = t.elementaryStreams; + if (!Object.keys(i).some((s) => !!i[s])) + return; + const r = this._levels[t.level]; + r != null && r.loadError && (this.log(`Resetting level error count of ${r.loadError} on frag buffered`), r.loadError = 0); + } + } + onLevelLoaded(e, t) { + var i; + const { + level: r, + details: s + } = t, a = t.levelInfo; + if (!a) { + var o; + this.warn(`Invalid level index ${r}`), (o = t.deliveryDirectives) != null && o.skip && (s.deltaUpdateFailed = !0); + return; + } + if (a === this.currentLevel || t.withoutMultiVariant) { + a.fragmentError === 0 && (a.loadError = 0); + let l = a.details; + l === t.details && l.advanced && (l = void 0), this.playlistLoaded(r, t, l); + } else (i = t.deliveryDirectives) != null && i.skip && (s.deltaUpdateFailed = !0); + } + loadPlaylist(e) { + super.loadPlaylist(), this.shouldLoadPlaylist(this.currentLevel) && this.scheduleLoading(this.currentLevel, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const i = this.getUrlWithDirectives(e.uri, t), r = this.currentLevelIndex, s = e.attrs["PATHWAY-ID"], a = e.details, o = a == null ? void 0 : a.age; + this.log(`Loading level index ${r}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${s ? " Pathway " + s : ""}${o && a.live ? " age " + o.toFixed(1) + (a.type && " " + a.type || "") : ""} ${i}`), this.hls.trigger(S.LEVEL_LOADING, { + url: i, + level: r, + levelInfo: e, + pathwayId: e.attrs["PATHWAY-ID"], + id: 0, + // Deprecated Level urlId + deliveryDirectives: t || null + }); + } + get nextLoadLevel() { + return this.manualLevelIndex !== -1 ? this.manualLevelIndex : this.hls.nextAutoLevel; + } + set nextLoadLevel(e) { + this.level = e, this.manualLevelIndex === -1 && (this.hls.nextAutoLevel = e); + } + removeLevel(e) { + var t; + if (this._levels.length === 1) + return; + const i = this._levels.filter((s, a) => a !== e ? !0 : (this.steering && this.steering.removeLevel(s), s === this.currentLevel && (this.currentLevel = null, this.currentLevelIndex = -1, s.details && s.details.fragments.forEach((o) => o.level = -1)), !1)); + Ud(i), this._levels = i, this.currentLevelIndex > -1 && (t = this.currentLevel) != null && t.details && (this.currentLevelIndex = this.currentLevel.details.fragments[0].level), this.manualLevelIndex > -1 && (this.manualLevelIndex = this.currentLevelIndex); + const r = i.length - 1; + this._firstLevel = Math.min(this._firstLevel, r), this._startLevel && (this._startLevel = Math.min(this._startLevel, r)), this.hls.trigger(S.LEVELS_UPDATED, { + levels: i + }); + } + onLevelsUpdated(e, { + levels: t + }) { + this._levels = t; + } + checkMaxAutoUpdated() { + const { + autoLevelCapping: e, + maxAutoLevel: t, + maxHdcpLevel: i + } = this.hls; + this._maxAutoLevel !== t && (this._maxAutoLevel = t, this.hls.trigger(S.MAX_AUTO_LEVEL_UPDATED, { + autoLevelCapping: e, + levels: this.levels, + maxAutoLevel: t, + minAutoLevel: this.hls.minAutoLevel, + maxHdcpLevel: i + })); + } +} +function dc(n) { + const e = {}; + n.forEach((t) => { + const i = t.groupId || ""; + t.id = e[i] = e[i] || 0, e[i]++; + }); +} +function Rf() { + return self.SourceBuffer || self.WebKitSourceBuffer; +} +function Cf() { + if (!Rr()) + return !1; + const e = Rf(); + return !e || e.prototype && typeof e.prototype.appendBuffer == "function" && typeof e.prototype.remove == "function"; +} +function c2() { + if (!Cf()) + return !1; + const n = Rr(); + return typeof (n == null ? void 0 : n.isTypeSupported) == "function" && (["avc1.42E01E,mp4a.40.2", "av01.0.01M.08", "vp09.00.50.08"].some((e) => n.isTypeSupported(Zn(e, "video"))) || ["mp4a.40.2", "fLaC"].some((e) => n.isTypeSupported(Zn(e, "audio")))); +} +function h2() { + var n; + const e = Rf(); + return typeof (e == null || (n = e.prototype) == null ? void 0 : n.changeType) == "function"; +} +const d2 = 100; +class f2 extends Xl { + constructor(e, t, i) { + super(e, t, i, "stream-controller", ue.MAIN), this.audioCodecSwap = !1, this.level = -1, this._forceStartLoad = !1, this._hasEnoughToStart = !1, this.altAudio = 0, this.audioOnly = !1, this.fragPlaying = null, this.fragLastKbps = 0, this.couldBacktrack = !1, this.backtrackFragment = null, this.audioCodecSwitch = !1, this.videoBuffer = null, this.onMediaPlaying = () => { + this.tick(); + }, this.onMediaSeeked = () => { + const r = this.media, s = r ? r.currentTime : null; + if (s === null || !se(s) || (this.log(`Media seeked to ${s.toFixed(3)}`), !this.getBufferedFrag(s))) + return; + const a = this.getFwdBufferInfoAtPos(r, s, ue.MAIN, 0); + if (a === null || a.len === 0) { + this.warn(`Main forward buffer length at ${s} on "seeked" event ${a ? a.len : "empty"})`); + return; + } + this.tick(); + }, this.registerListeners(); + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(S.MANIFEST_PARSED, this.onManifestParsed, this), e.on(S.LEVEL_LOADING, this.onLevelLoading, this), e.on(S.LEVEL_LOADED, this.onLevelLoaded, this), e.on(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), e.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), e.on(S.BUFFER_CREATED, this.onBufferCreated, this), e.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(S.FRAG_BUFFERED, this.onFragBuffered, this); + } + unregisterListeners() { + super.unregisterListeners(); + const { + hls: e + } = this; + e.off(S.MANIFEST_PARSED, this.onManifestParsed, this), e.off(S.LEVEL_LOADED, this.onLevelLoaded, this), e.off(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), e.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), e.off(S.BUFFER_CREATED, this.onBufferCreated, this), e.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(S.FRAG_BUFFERED, this.onFragBuffered, this); + } + onHandlerDestroying() { + this.onMediaPlaying = this.onMediaSeeked = null, this.unregisterListeners(), super.onHandlerDestroying(); + } + startLoad(e, t) { + if (this.levels) { + const { + lastCurrentTime: i, + hls: r + } = this; + if (this.stopLoad(), this.setInterval(d2), this.level = -1, !this.startFragRequested) { + let s = r.startLevel; + s === -1 && (r.config.testBandwidth && this.levels.length > 1 ? (s = 0, this.bitrateTest = !0) : s = r.firstAutoLevel), r.nextLoadLevel = s, this.level = r.loadLevel, this._hasEnoughToStart = !!t; + } + i > 0 && e === -1 && !t && (this.log(`Override startPosition with lastCurrentTime @${i.toFixed(3)}`), e = i), this.state = W.IDLE, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } else + this._forceStartLoad = !0, this.state = W.STOPPED; + } + stopLoad() { + this._forceStartLoad = !1, super.stopLoad(); + } + doTick() { + switch (this.state) { + case W.WAITING_LEVEL: { + const { + levels: t, + level: i + } = this, r = t == null ? void 0 : t[i], s = r == null ? void 0 : r.details; + if (s && (!s.live || this.levelLastLoaded === r && !this.waitForLive(r))) { + if (this.waitForCdnTuneIn(s)) + break; + this.state = W.IDLE; + break; + } else if (this.hls.nextLoadLevel !== this.level) { + this.state = W.IDLE; + break; + } + break; + } + case W.FRAG_LOADING_WAITING_RETRY: + { + var e; + const t = self.performance.now(), i = this.retryDate; + if (!i || t >= i || (e = this.media) != null && e.seeking) { + const { + levels: r, + level: s + } = this, a = r == null ? void 0 : r[s]; + this.resetStartWhenNotLoaded(a || null), this.state = W.IDLE; + } + } + break; + } + this.state === W.IDLE && this.doTickIdle(), this.onTickEnd(); + } + onTickEnd() { + var e; + super.onTickEnd(), (e = this.media) != null && e.readyState && this.media.seeking === !1 && (this.lastCurrentTime = this.media.currentTime), this.checkFragmentChanged(); + } + doTickIdle() { + const { + hls: e, + levelLastLoaded: t, + levels: i, + media: r + } = this; + if (t === null || !r && !this.primaryPrefetch && (this.startFragRequested || !e.config.startFragPrefetch) || this.altAudio && this.audioOnly) + return; + const s = this.buffering ? e.nextLoadLevel : e.loadLevel; + if (!(i != null && i[s])) + return; + const a = i[s], o = this.getMainFwdBufferInfo(); + if (o === null) + return; + const l = this.getLevelDetails(); + if (l && this._streamEnded(o, l)) { + const p = {}; + this.altAudio === 2 && (p.type = "video"), this.hls.trigger(S.BUFFER_EOS, p), this.state = W.ENDED; + return; + } + if (!this.buffering) + return; + e.loadLevel !== s && e.manualLevel === -1 && this.log(`Adapting to level ${s} from level ${this.level}`), this.level = e.nextLoadLevel = s; + const u = a.details; + if (!u || this.state === W.WAITING_LEVEL || this.waitForLive(a)) { + this.level = s, this.state = W.WAITING_LEVEL, this.startFragRequested = !1; + return; + } + const c = o.len, h = this.getMaxBufferLength(a.maxBitrate); + if (c >= h) + return; + this.backtrackFragment && this.backtrackFragment.start > o.end && (this.backtrackFragment = null); + const d = this.backtrackFragment ? this.backtrackFragment.start : o.end; + let f = this.getNextFragment(d, u); + if (this.couldBacktrack && !this.fragPrevious && f && Dt(f) && this.fragmentTracker.getState(f) !== bt.OK) { + var m; + const v = ((m = this.backtrackFragment) != null ? m : f).sn - u.startSN, b = u.fragments[v - 1]; + b && f.cc === b.cc && (f = b, this.fragmentTracker.removeFragment(b)); + } else this.backtrackFragment && o.len && (this.backtrackFragment = null); + if (f && this.isLoopLoading(f, d)) { + if (!f.gap) { + const v = this.audioOnly && !this.altAudio ? Qe.AUDIO : Qe.VIDEO, b = (v === Qe.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + b && this.afterBufferFlushed(b, v, ue.MAIN); + } + f = this.getNextFragmentLoopLoading(f, u, o, ue.MAIN, h); + } + f && (f.initSegment && !f.initSegment.data && !this.bitrateTest && (f = f.initSegment), this.loadFragment(f, a, d)); + } + loadFragment(e, t, i) { + const r = this.fragmentTracker.getState(e); + r === bt.NOT_LOADED || r === bt.PARTIAL ? Dt(e) ? this.bitrateTest ? (this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`), this._loadBitrateTestFrag(e, t)) : super.loadFragment(e, t, i) : this._loadInitSegment(e, t) : this.clearTrackerIfNeeded(e); + } + getBufferedFrag(e) { + return this.fragmentTracker.getBufferedFrag(e, ue.MAIN); + } + followingBufferedFrag(e) { + return e ? this.getBufferedFrag(e.end + 0.5) : null; + } + /* + on immediate level switch : + - pause playback if playing + - cancel any pending load request + - and trigger a buffer flush + */ + immediateLevelSwitch() { + this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + /** + * try to switch ASAP without breaking video playback: + * in order to ensure smooth but quick level switching, + * we need to find the next flushable buffer range + * we should take into account new segment fetch time + */ + nextLevelSwitch() { + const { + levels: e, + media: t + } = this; + if (t != null && t.readyState) { + let i; + const r = this.getAppendedFrag(t.currentTime); + r && r.start > 1 && this.flushMainBuffer(0, r.start - 1); + const s = this.getLevelDetails(); + if (s != null && s.live) { + const o = this.getMainFwdBufferInfo(); + if (!o || o.len < s.targetduration * 2) + return; + } + if (!t.paused && e) { + const o = this.hls.nextLoadLevel, l = e[o], u = this.fragLastKbps; + u && this.fragCurrent ? i = this.fragCurrent.duration * l.maxBitrate / (1e3 * u) + 1 : i = 0; + } else + i = 0; + const a = this.getBufferedFrag(t.currentTime + i); + if (a) { + const o = this.followingBufferedFrag(a); + if (o) { + this.abortCurrentFrag(); + const l = o.maxStartPTS ? o.maxStartPTS : o.start, u = o.duration, c = Math.max(a.end, l + Math.min(Math.max(u - this.config.maxFragLookUpTolerance, u * (this.couldBacktrack ? 0.5 : 0.125)), u * (this.couldBacktrack ? 0.75 : 0.25))); + this.flushMainBuffer(c, Number.POSITIVE_INFINITY); + } + } + } + } + abortCurrentFrag() { + const e = this.fragCurrent; + switch (this.fragCurrent = null, this.backtrackFragment = null, e && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.state) { + case W.KEY_LOADING: + case W.FRAG_LOADING: + case W.FRAG_LOADING_WAITING_RETRY: + case W.PARSING: + case W.PARSED: + this.state = W.IDLE; + break; + } + this.nextLoadPosition = this.getLoadPosition(); + } + flushMainBuffer(e, t) { + super.flushMainBuffer(e, t, this.altAudio === 2 ? "video" : null); + } + onMediaAttached(e, t) { + super.onMediaAttached(e, t); + const i = t.media; + ii(i, "playing", this.onMediaPlaying), ii(i, "seeked", this.onMediaSeeked); + } + onMediaDetaching(e, t) { + const { + media: i + } = this; + i && (fi(i, "playing", this.onMediaPlaying), fi(i, "seeked", this.onMediaSeeked)), this.videoBuffer = null, this.fragPlaying = null, super.onMediaDetaching(e, t), !t.transferMedia && (this._hasEnoughToStart = !1); + } + onManifestLoading() { + super.onManifestLoading(), this.log("Trigger BUFFER_RESET"), this.hls.trigger(S.BUFFER_RESET, void 0), this.couldBacktrack = !1, this.fragLastKbps = 0, this.fragPlaying = this.backtrackFragment = null, this.altAudio = 0, this.audioOnly = !1; + } + onManifestParsed(e, t) { + let i = !1, r = !1; + t.levels.forEach((s) => { + const a = s.audioCodec; + a && (i = i || a.indexOf("mp4a.40.2") !== -1, r = r || a.indexOf("mp4a.40.5") !== -1); + }), this.audioCodecSwitch = i && r && !h2(), this.audioCodecSwitch && this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"), this.levels = t.levels, this.startFragRequested = !1; + } + onLevelLoading(e, t) { + const { + levels: i + } = this; + if (!i || this.state !== W.IDLE) + return; + const r = t.levelInfo; + (!r.details || r.details.live && (this.levelLastLoaded !== r || r.details.expired) || this.waitForCdnTuneIn(r.details)) && (this.state = W.WAITING_LEVEL); + } + onLevelLoaded(e, t) { + var i; + const { + levels: r, + startFragRequested: s + } = this, a = t.level, o = t.details, l = o.totalduration; + if (!r) { + this.warn(`Levels were reset while loading level ${a}`); + return; + } + this.log(`Level ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn ? `[part-${o.lastPartSn}-${o.lastPartIndex}]` : ""}, cc [${o.startCC}, ${o.endCC}] duration:${l}`); + const u = t.levelInfo, c = this.fragCurrent; + c && (this.state === W.FRAG_LOADING || this.state === W.FRAG_LOADING_WAITING_RETRY) && c.level !== t.level && c.loader && this.abortCurrentFrag(); + let h = 0; + if (o.live || (i = u.details) != null && i.live) { + var d; + if (this.checkLiveUpdate(o), o.deltaUpdateFailed) + return; + h = this.alignPlaylists(o, u.details, (d = this.levelLastLoaded) == null ? void 0 : d.details); + } + if (u.details = o, this.levelLastLoaded = u, s || this.setStartPosition(o, h), this.hls.trigger(S.LEVEL_UPDATED, { + details: o, + level: a + }), this.state === W.WAITING_LEVEL) { + if (this.waitForCdnTuneIn(o)) + return; + this.state = W.IDLE; + } + s && o.live && this.synchronizeToLiveEdge(o), this.tick(); + } + synchronizeToLiveEdge(e) { + const { + config: t, + media: i + } = this; + if (!i) + return; + const r = this.hls.liveSyncPosition, s = this.getLoadPosition(), a = e.fragmentStart, o = e.edge, l = s >= a - t.maxFragLookUpTolerance && s <= o; + if (r !== null && i.duration > r && (s < r || !l)) { + const c = t.liveMaxLatencyDuration !== void 0 ? t.liveMaxLatencyDuration : t.liveMaxLatencyDurationCount * e.targetduration; + if ((!l && i.readyState < 4 || s < o - c) && (this._hasEnoughToStart || (this.nextLoadPosition = r), i.readyState)) + if (this.warn(`Playback: ${s.toFixed(3)} is located too far from the end of live sliding playlist: ${o}, reset currentTime to : ${r.toFixed(3)}`), this.config.liveSyncMode === "buffered") { + var u; + const h = De.bufferInfo(i, r, 0); + if (!(h != null && (u = h.buffered) != null && u.length)) { + i.currentTime = r; + return; + } + if (h.start <= s) { + i.currentTime = r; + return; + } + const { + nextStart: f + } = De.bufferedInfo(h.buffered, s, 0); + f && (i.currentTime = f); + } else + i.currentTime = r; + } + } + _handleFragmentLoadProgress(e) { + var t; + const i = e.frag, { + part: r, + payload: s + } = e, { + levels: a + } = this; + if (!a) { + this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`); + return; + } + const o = a[i.level]; + if (!o) { + this.warn(`Level ${i.level} not found on progress`); + return; + } + const l = o.details; + if (!l) { + this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`), this.fragmentTracker.removeFragment(i); + return; + } + const u = o.videoCodec, c = l.PTSKnown || !l.live, h = (t = i.initSegment) == null ? void 0 : t.data, d = this._getAudioCodec(o), f = this.transmuxer = this.transmuxer || new uf(this.hls, ue.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)), m = r ? r.index : -1, p = m !== -1, v = new Yl(i.level, i.sn, i.stats.chunkCount, s.byteLength, m, p), b = this.initPTS[i.cc]; + f.push(s, h, d, u, i, r, l.totalduration, c, v, b); + } + onAudioTrackSwitching(e, t) { + const i = this.hls, r = this.altAudio === 2; + if (Ea(t.url, i)) + this.altAudio = 1; + else { + if (this.mediaBuffer !== this.media) { + this.log("Switching on main audio, use media.buffered to schedule main fragment loading"), this.mediaBuffer = this.media; + const a = this.fragCurrent; + a && (this.log("Switching to main audio track, cancel main fragment load"), a.abortRequests(), this.fragmentTracker.removeFragment(a)), this.resetTransmuxer(), this.resetLoadingState(); + } else this.audioOnly && this.resetTransmuxer(); + if (r) { + this.fragmentTracker.removeAllFragments(), i.once(S.BUFFER_FLUSHED, () => { + var a; + (a = this.hls) == null || a.trigger(S.AUDIO_TRACK_SWITCHED, t); + }), i.trigger(S.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: Number.POSITIVE_INFINITY, + type: null + }); + return; + } + i.trigger(S.AUDIO_TRACK_SWITCHED, t); + } + } + onAudioTrackSwitched(e, t) { + const i = Ea(t.url, this.hls); + if (i) { + const r = this.videoBuffer; + r && this.mediaBuffer !== r && (this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"), this.mediaBuffer = r); + } + this.altAudio = i ? 2 : 0, this.tick(); + } + onBufferCreated(e, t) { + const i = t.tracks; + let r, s, a = !1; + for (const o in i) { + const l = i[o]; + if (l.id === "main") { + if (s = o, r = l, o === "video") { + const u = i[o]; + u && (this.videoBuffer = u.buffer); + } + } else + a = !0; + } + a && r ? (this.log(`Alternate track found, use ${s}.buffered to schedule main fragment loading`), this.mediaBuffer = r.buffer) : this.mediaBuffer = this.media; + } + onFragBuffered(e, t) { + const { + frag: i, + part: r + } = t, s = i.type === ue.MAIN; + if (s) { + if (this.fragContextChanged(i)) { + this.warn(`Fragment ${i.sn}${r ? " p: " + r.index : ""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`), this.state === W.PARSED && (this.state = W.IDLE); + return; + } + const o = r ? r.stats : i.stats; + this.fragLastKbps = Math.round(8 * o.total / (o.buffering.end - o.loading.first)), Dt(i) && (this.fragPrevious = i), this.fragBufferedComplete(i, r); + } + const a = this.media; + a && (!this._hasEnoughToStart && De.getBuffered(a).length && (this._hasEnoughToStart = !0, this.seekToStartPos()), s && this.tick()); + } + get hasEnoughToStart() { + return this._hasEnoughToStart; + } + onError(e, t) { + var i; + if (t.fatal) { + this.state = W.ERROR; + return; + } + switch (t.details) { + case B.FRAG_GAP: + case B.FRAG_PARSING_ERROR: + case B.FRAG_DECRYPT_ERROR: + case B.FRAG_LOAD_ERROR: + case B.FRAG_LOAD_TIMEOUT: + case B.KEY_LOAD_ERROR: + case B.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError(ue.MAIN, t); + break; + case B.LEVEL_LOAD_ERROR: + case B.LEVEL_LOAD_TIMEOUT: + case B.LEVEL_PARSING_ERROR: + !t.levelRetry && this.state === W.WAITING_LEVEL && ((i = t.context) == null ? void 0 : i.type) === Ce.LEVEL && (this.state = W.IDLE); + break; + case B.BUFFER_ADD_CODEC_ERROR: + case B.BUFFER_APPEND_ERROR: + if (t.parent !== "main") + return; + this.resetLoadingState(); + break; + case B.BUFFER_FULL_ERROR: + if (t.parent !== "main") + return; + this.reduceLengthAndFlushBuffer(t) && this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + break; + case B.INTERNAL_EXCEPTION: + this.recoverWorkerError(t); + break; + } + } + onFragLoadEmergencyAborted() { + this.state = W.IDLE, this._hasEnoughToStart || (this.startFragRequested = !1, this.nextLoadPosition = this.lastCurrentTime), this.tickImmediate(); + } + onBufferFlushed(e, { + type: t + }) { + if (t !== Qe.AUDIO || !this.altAudio) { + const i = (t === Qe.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + i && (this.afterBufferFlushed(i, t, ue.MAIN), this.tick()); + } + } + onLevelsUpdated(e, t) { + this.level > -1 && this.fragCurrent && (this.level = this.fragCurrent.level, this.level === -1 && this.resetWhenMissingContext(this.fragCurrent)), this.levels = t.levels; + } + swapAudioCodec() { + this.audioCodecSwap = !this.audioCodecSwap; + } + /** + * Seeks to the set startPosition if not equal to the mediaElement's current time. + */ + seekToStartPos() { + const { + media: e + } = this; + if (!e) + return; + const t = e.currentTime; + let i = this.startPosition; + if (i >= 0 && t < i) { + if (e.seeking) { + this.log(`could not seek to ${i}, already seeking at ${t}`); + return; + } + const r = this.timelineOffset; + r && i && (i += r); + const s = this.getLevelDetails(), a = De.getBuffered(e), o = a.length ? a.start(0) : 0, l = o - i, u = Math.max(this.config.maxBufferHole, this.config.maxFragLookUpTolerance); + (this.config.startOnSegmentBoundary || l > 0 && (l < u || this.loadingParts && l < 2 * ((s == null ? void 0 : s.partTarget) || 0))) && (this.log(`adjusting start position by ${l} to match buffer start`), i += l, this.startPosition = i), t < i && (this.log(`seek to target start position ${i} from current time ${t} buffer start ${o}`), e.currentTime = i); + } + } + _getAudioCodec(e) { + let t = this.config.defaultAudioCodec || e.audioCodec; + return this.audioCodecSwap && t && (this.log("Swapping audio codec"), t.indexOf("mp4a.40.5") !== -1 ? t = "mp4a.40.2" : t = "mp4a.40.5"), t; + } + _loadBitrateTestFrag(e, t) { + e.bitrateTest = !0, this._doFragLoad(e, t).then((i) => { + const { + hls: r + } = this, s = i == null ? void 0 : i.frag; + if (!s || this.fragContextChanged(s)) + return; + t.fragmentError = 0, this.state = W.IDLE, this.startFragRequested = !1, this.bitrateTest = !1; + const a = s.stats; + a.parsing.start = a.parsing.end = a.buffering.start = a.buffering.end = self.performance.now(), r.trigger(S.FRAG_LOADED, i), s.bitrateTest = !1; + }); + } + _handleTransmuxComplete(e) { + var t; + const i = this.playlistType, { + hls: r + } = this, { + remuxResult: s, + chunkMeta: a + } = e, o = this.getCurrentContext(a); + if (!o) { + this.resetWhenMissingContext(a); + return; + } + const { + frag: l, + part: u, + level: c + } = o, { + video: h, + text: d, + id3: f, + initSegment: m + } = s, { + details: p + } = c, v = this.altAudio ? void 0 : s.audio; + if (this.fragContextChanged(l)) { + this.fragmentTracker.removeFragment(l); + return; + } + if (this.state = W.PARSING, m) { + if (m != null && m.tracks) { + const y = l.initSegment || l; + this._bufferInitSegment(c, m.tracks, y, a), r.trigger(S.FRAG_PARSING_INIT_SEGMENT, { + frag: y, + id: i, + tracks: m.tracks + }); + } + const b = m.initPTS, E = m.timescale; + se(b) && (this.initPTS[l.cc] = { + baseTime: b, + timescale: E + }, r.trigger(S.INIT_PTS_FOUND, { + frag: l, + id: i, + initPTS: b, + timescale: E + })); + } + if (h && p) { + v && h.type === "audiovideo" && this.logMuxedErr(l); + const b = p.fragments[l.sn - 1 - p.startSN], E = l.sn === p.startSN, y = !b || l.cc > b.cc; + if (s.independent !== !1) { + const { + startPTS: T, + endPTS: A, + startDTS: k, + endDTS: w + } = h; + if (u) + u.elementaryStreams[h.type] = { + startPTS: T, + endPTS: A, + startDTS: k, + endDTS: w + }; + else if (h.firstKeyFrame && h.independent && a.id === 1 && !y && (this.couldBacktrack = !0), h.dropped && h.independent) { + const L = this.getMainFwdBufferInfo(), I = (L ? L.end : this.getLoadPosition()) + this.config.maxBufferHole, R = h.firstKeyFramePTS ? h.firstKeyFramePTS : T; + if (!E && I < R - this.config.maxBufferHole && !y) { + this.backtrack(l); + return; + } else y && (l.gap = !0); + l.setElementaryStreamInfo(h.type, l.start, A, l.start, w, !0); + } else E && T - (p.appliedTimelineOffset || 0) > da && (l.gap = !0); + l.setElementaryStreamInfo(h.type, T, A, k, w), this.backtrackFragment && (this.backtrackFragment = l), this.bufferFragmentData(h, l, u, a, E || y); + } else if (E || y) + l.gap = !0; + else { + this.backtrack(l); + return; + } + } + if (v) { + const { + startPTS: b, + endPTS: E, + startDTS: y, + endDTS: T + } = v; + u && (u.elementaryStreams[Qe.AUDIO] = { + startPTS: b, + endPTS: E, + startDTS: y, + endDTS: T + }), l.setElementaryStreamInfo(Qe.AUDIO, b, E, y, T), this.bufferFragmentData(v, l, u, a); + } + if (p && f != null && (t = f.samples) != null && t.length) { + const b = { + id: i, + frag: l, + details: p, + samples: f.samples + }; + r.trigger(S.FRAG_PARSING_METADATA, b); + } + if (p && d) { + const b = { + id: i, + frag: l, + details: p, + samples: d.samples + }; + r.trigger(S.FRAG_PARSING_USERDATA, b); + } + } + logMuxedErr(e) { + this.warn(`${Dt(e) ? "Media" : "Init"} segment with muxed audiovideo where only video expected: ${e.url}`); + } + _bufferInitSegment(e, t, i, r) { + if (this.state !== W.PARSING) + return; + this.audioOnly = !!t.audio && !t.video, this.altAudio && !this.audioOnly && (delete t.audio, t.audiovideo && this.logMuxedErr(i)); + const { + audio: s, + video: a, + audiovideo: o + } = t; + if (s) { + let u = sa(s.codec, e.audioCodec); + u === "mp4a" && (u = "mp4a.40.5"); + const c = navigator.userAgent.toLowerCase(); + if (this.audioCodecSwitch) { + u && (u.indexOf("mp4a.40.5") !== -1 ? u = "mp4a.40.2" : u = "mp4a.40.5"); + const h = s.metadata; + h && "channelCount" in h && (h.channelCount || 1) !== 1 && c.indexOf("firefox") === -1 && (u = "mp4a.40.5"); + } + u && u.indexOf("mp4a.40.5") !== -1 && c.indexOf("android") !== -1 && s.container !== "audio/mpeg" && (u = "mp4a.40.2", this.log(`Android: force audio codec to ${u}`)), e.audioCodec && e.audioCodec !== u && this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${u}"`), s.levelCodec = u, s.id = ue.MAIN, this.log(`Init audio buffer, container:${s.container}, codecs[selected/level/parsed]=[${u || ""}/${e.audioCodec || ""}/${s.codec}]`), delete t.audiovideo; + } + if (a) { + a.levelCodec = e.videoCodec, a.id = ue.MAIN; + const u = a.codec; + if ((u == null ? void 0 : u.length) === 4) + switch (u) { + case "hvc1": + case "hev1": + a.codec = "hvc1.1.6.L120.90"; + break; + case "av01": + a.codec = "av01.0.04M.08"; + break; + case "avc1": + a.codec = "avc1.42e01e"; + break; + } + this.log(`Init video buffer, container:${a.container}, codecs[level/parsed]=[${e.videoCodec || ""}/${u}]${a.codec !== u ? " parsed-corrected=" + a.codec : ""}${a.supplemental ? " supplemental=" + a.supplemental : ""}`), delete t.audiovideo; + } + o && (this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`), delete t.video, delete t.audio); + const l = Object.keys(t); + if (l.length) { + if (this.hls.trigger(S.BUFFER_CODECS, t), !this.hls) + return; + l.forEach((u) => { + const h = t[u].initSegment; + h != null && h.byteLength && this.hls.trigger(S.BUFFER_APPENDING, { + type: u, + data: h, + frag: i, + part: null, + chunkMeta: r, + parent: i.type + }); + }); + } + this.tickImmediate(); + } + getMainFwdBufferInfo() { + const e = this.mediaBuffer && this.altAudio === 2 ? this.mediaBuffer : this.media; + return this.getFwdBufferInfo(e, ue.MAIN); + } + get maxBufferLength() { + const { + levels: e, + level: t + } = this, i = e == null ? void 0 : e[t]; + return i ? this.getMaxBufferLength(i.maxBitrate) : this.config.maxBufferLength; + } + backtrack(e) { + this.couldBacktrack = !0, this.backtrackFragment = e, this.resetTransmuxer(), this.flushBufferGap(e), this.fragmentTracker.removeFragment(e), this.fragPrevious = null, this.nextLoadPosition = e.start, this.state = W.IDLE; + } + checkFragmentChanged() { + const e = this.media; + let t = null; + if (e && e.readyState > 1 && e.seeking === !1) { + const i = e.currentTime; + if (De.isBuffered(e, i) ? t = this.getAppendedFrag(i) : De.isBuffered(e, i + 0.1) && (t = this.getAppendedFrag(i + 0.1)), t) { + this.backtrackFragment = null; + const r = this.fragPlaying, s = t.level; + (!r || t.sn !== r.sn || r.level !== s) && (this.fragPlaying = t, this.hls.trigger(S.FRAG_CHANGED, { + frag: t + }), (!r || r.level !== s) && this.hls.trigger(S.LEVEL_SWITCHED, { + level: s + })); + } + } + } + get nextLevel() { + const e = this.nextBufferedFrag; + return e ? e.level : -1; + } + get currentFrag() { + var e; + if (this.fragPlaying) + return this.fragPlaying; + const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime; + return se(t) ? this.getAppendedFrag(t) : null; + } + get currentProgramDateTime() { + var e; + const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime; + if (se(t)) { + const i = this.getLevelDetails(), r = this.currentFrag || (i ? Hr(null, i.fragments, t) : null); + if (r) { + const s = r.programDateTime; + if (s !== null) { + const a = s + (t - r.start) * 1e3; + return new Date(a); + } + } + } + return null; + } + get currentLevel() { + const e = this.currentFrag; + return e ? e.level : -1; + } + get nextBufferedFrag() { + const e = this.currentFrag; + return e ? this.followingBufferedFrag(e) : null; + } + get forceStartLoad() { + return this._forceStartLoad; + } +} +class m2 { + constructor(e) { + this.config = void 0, this.keyUriToKeyInfo = {}, this.emeController = null, this.config = e; + } + abort(e) { + for (const i in this.keyUriToKeyInfo) { + const r = this.keyUriToKeyInfo[i].loader; + if (r) { + var t; + if (e && e !== ((t = r.context) == null ? void 0 : t.frag.type)) + return; + r.abort(); + } + } + } + detach() { + for (const e in this.keyUriToKeyInfo) { + const t = this.keyUriToKeyInfo[e]; + (t.mediaKeySessionContext || t.decryptdata.isCommonEncryption) && delete this.keyUriToKeyInfo[e]; + } + } + destroy() { + this.detach(); + for (const e in this.keyUriToKeyInfo) { + const t = this.keyUriToKeyInfo[e].loader; + t && t.destroy(); + } + this.keyUriToKeyInfo = {}; + } + createKeyLoadError(e, t = B.KEY_LOAD_ERROR, i, r, s) { + return new fr({ + type: de.NETWORK_ERROR, + details: t, + fatal: !1, + frag: e, + response: s, + error: i, + networkDetails: r + }); + } + loadClear(e, t) { + if (this.emeController && this.config.emeEnabled && !this.emeController.getSelectedKeySystemFormats().length) { + if (t.length) { + const { + sn: i, + cc: r + } = e; + for (let s = 0; s < t.length; s++) { + const a = t[s]; + if (r <= a.cc && (i === "initSegment" || a.sn === "initSegment" || i < a.sn)) + return this.emeController.selectKeySystemFormat(a).then((o) => { + if (a.setKeyFormat(o), this.emeController && this.config.requireKeySystemAccessOnStart) { + const l = oa(o); + if (l) + return this.emeController.getKeySystemAccess([l]); + } + }); + } + } else if (this.config.requireKeySystemAccessOnStart) { + const i = Nn(this.config); + if (i.length) + return this.emeController.getKeySystemAccess(i); + } + } + return null; + } + load(e) { + return !e.decryptdata && e.encrypted && this.emeController && this.config.emeEnabled ? this.emeController.selectKeySystemFormat(e).then((t) => this.loadInternal(e, t)) : this.loadInternal(e); + } + loadInternal(e, t) { + var i, r; + t && e.setKeyFormat(t); + const s = e.decryptdata; + if (!s) { + const u = new Error(t ? `Expected frag.decryptdata to be defined after setting format ${t}` : "Missing decryption data on fragment in onKeyLoading"); + return Promise.reject(this.createKeyLoadError(e, B.KEY_LOAD_ERROR, u)); + } + const a = s.uri; + if (!a) + return Promise.reject(this.createKeyLoadError(e, B.KEY_LOAD_ERROR, new Error(`Invalid key URI: "${a}"`))); + let o = this.keyUriToKeyInfo[a]; + if ((i = o) != null && i.decryptdata.key) + return s.key = o.decryptdata.key, Promise.resolve({ + frag: e, + keyInfo: o + }); + if ((r = o) != null && r.keyLoadPromise) { + var l; + switch ((l = o.mediaKeySessionContext) == null ? void 0 : l.keyStatus) { + case void 0: + case "status-pending": + case "usable": + case "usable-in-future": + return o.keyLoadPromise.then((u) => (s.key = u.keyInfo.decryptdata.key, { + frag: e, + keyInfo: o + })); + } + } + switch (o = this.keyUriToKeyInfo[a] = { + decryptdata: s, + keyLoadPromise: null, + loader: null, + mediaKeySessionContext: null + }, s.method) { + case "ISO-23001-7": + case "SAMPLE-AES": + case "SAMPLE-AES-CENC": + case "SAMPLE-AES-CTR": + return s.keyFormat === "identity" ? this.loadKeyHTTP(o, e) : this.loadKeyEME(o, e); + case "AES-128": + case "AES-256": + case "AES-256-CTR": + return this.loadKeyHTTP(o, e); + default: + return Promise.reject(this.createKeyLoadError(e, B.KEY_LOAD_ERROR, new Error(`Key supplied with unsupported METHOD: "${s.method}"`))); + } + } + loadKeyEME(e, t) { + const i = { + frag: t, + keyInfo: e + }; + if (this.emeController && this.config.emeEnabled) { + const r = this.emeController.loadKey(i); + if (r) + return (e.keyLoadPromise = r.then((s) => (e.mediaKeySessionContext = s, i))).catch((s) => { + throw e.keyLoadPromise = null, s; + }); + } + return Promise.resolve(i); + } + loadKeyHTTP(e, t) { + const i = this.config, r = i.loader, s = new r(i); + return t.keyLoader = e.loader = s, e.keyLoadPromise = new Promise((a, o) => { + const l = { + keyInfo: e, + frag: t, + responseType: "arraybuffer", + url: e.decryptdata.uri + }, u = i.keyLoadPolicy.default, c = { + loadPolicy: u, + timeout: u.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, h = { + onSuccess: (d, f, m, p) => { + const { + frag: v, + keyInfo: b, + url: E + } = m; + if (!v.decryptdata || b !== this.keyUriToKeyInfo[E]) + return o(this.createKeyLoadError(v, B.KEY_LOAD_ERROR, new Error("after key load, decryptdata unset or changed"), p)); + b.decryptdata.key = v.decryptdata.key = new Uint8Array(d.data), v.keyLoader = null, b.loader = null, a({ + frag: v, + keyInfo: b + }); + }, + onError: (d, f, m, p) => { + this.resetLoader(f), o(this.createKeyLoadError(t, B.KEY_LOAD_ERROR, new Error(`HTTP Error ${d.code} loading key ${d.text}`), m, He({ + url: l.url, + data: void 0 + }, d))); + }, + onTimeout: (d, f, m) => { + this.resetLoader(f), o(this.createKeyLoadError(t, B.KEY_LOAD_TIMEOUT, new Error("key loading timed out"), m)); + }, + onAbort: (d, f, m) => { + this.resetLoader(f), o(this.createKeyLoadError(t, B.INTERNAL_ABORTED, new Error("key loading aborted"), m)); + } + }; + s.load(l, c, h); + }); + } + resetLoader(e) { + const { + frag: t, + keyInfo: i, + url: r + } = e, s = i.loader; + t.keyLoader === s && (t.keyLoader = null, i.loader = null), delete this.keyUriToKeyInfo[r], s && s.destroy(); + } +} +function fc(n) { + const { + type: e + } = n; + switch (e) { + case Ce.AUDIO_TRACK: + return ue.AUDIO; + case Ce.SUBTITLE_TRACK: + return ue.SUBTITLE; + default: + return ue.MAIN; + } +} +function ko(n, e) { + let t = n.url; + return (t === void 0 || t.indexOf("data:") === 0) && (t = e.url), t; +} +class g2 { + constructor(e) { + this.hls = void 0, this.loaders = /* @__PURE__ */ Object.create(null), this.variableList = null, this.onManifestLoaded = this.checkAutostartLoad, this.hls = e, this.registerListeners(); + } + startLoad(e) { + } + stopLoad() { + this.destroyInternalLoaders(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(S.MANIFEST_LOADING, this.onManifestLoading, this), e.on(S.LEVEL_LOADING, this.onLevelLoading, this), e.on(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.on(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(S.MANIFEST_LOADING, this.onManifestLoading, this), e.off(S.LEVEL_LOADING, this.onLevelLoading, this), e.off(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.off(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this); + } + /** + * Returns defaults or configured loader-type overloads (pLoader and loader config params) + */ + createInternalLoader(e) { + const t = this.hls.config, i = t.pLoader, r = t.loader, s = i || r, a = new s(t); + return this.loaders[e.type] = a, a; + } + getInternalLoader(e) { + return this.loaders[e.type]; + } + resetInternalLoader(e) { + this.loaders[e] && delete this.loaders[e]; + } + /** + * Call `destroy` on all internal loader instances mapped (one per context type) + */ + destroyInternalLoaders() { + for (const e in this.loaders) { + const t = this.loaders[e]; + t && t.destroy(), this.resetInternalLoader(e); + } + } + destroy() { + this.variableList = null, this.unregisterListeners(), this.destroyInternalLoaders(); + } + onManifestLoading(e, t) { + const { + url: i + } = t; + this.variableList = null, this.load({ + id: null, + level: 0, + responseType: "text", + type: Ce.MANIFEST, + url: i, + deliveryDirectives: null, + levelOrTrack: null + }); + } + onLevelLoading(e, t) { + const { + id: i, + level: r, + pathwayId: s, + url: a, + deliveryDirectives: o, + levelInfo: l + } = t; + this.load({ + id: i, + level: r, + pathwayId: s, + responseType: "text", + type: Ce.LEVEL, + url: a, + deliveryDirectives: o, + levelOrTrack: l + }); + } + onAudioTrackLoading(e, t) { + const { + id: i, + groupId: r, + url: s, + deliveryDirectives: a, + track: o + } = t; + this.load({ + id: i, + groupId: r, + level: null, + responseType: "text", + type: Ce.AUDIO_TRACK, + url: s, + deliveryDirectives: a, + levelOrTrack: o + }); + } + onSubtitleTrackLoading(e, t) { + const { + id: i, + groupId: r, + url: s, + deliveryDirectives: a, + track: o + } = t; + this.load({ + id: i, + groupId: r, + level: null, + responseType: "text", + type: Ce.SUBTITLE_TRACK, + url: s, + deliveryDirectives: a, + levelOrTrack: o + }); + } + onLevelsUpdated(e, t) { + const i = this.loaders[Ce.LEVEL]; + if (i) { + const r = i.context; + r && !t.levels.some((s) => s === r.levelOrTrack) && (i.abort(), delete this.loaders[Ce.LEVEL]); + } + } + load(e) { + var t; + const i = this.hls.config; + let r = this.getInternalLoader(e); + if (r) { + const u = this.hls.logger, c = r.context; + if (c && c.levelOrTrack === e.levelOrTrack && (c.url === e.url || c.deliveryDirectives && !e.deliveryDirectives)) { + c.url === e.url ? u.log(`[playlist-loader]: ignore ${e.url} ongoing request`) : u.log(`[playlist-loader]: ignore ${e.url} in favor of ${c.url}`); + return; + } + u.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`), r.abort(); + } + let s; + if (e.type === Ce.MANIFEST ? s = i.manifestLoadPolicy.default : s = Ye({}, i.playlistLoadPolicy.default, { + timeoutRetry: null, + errorRetry: null + }), r = this.createInternalLoader(e), se((t = e.deliveryDirectives) == null ? void 0 : t.part)) { + let u; + if (e.type === Ce.LEVEL && e.level !== null ? u = this.hls.levels[e.level].details : e.type === Ce.AUDIO_TRACK && e.id !== null ? u = this.hls.audioTracks[e.id].details : e.type === Ce.SUBTITLE_TRACK && e.id !== null && (u = this.hls.subtitleTracks[e.id].details), u) { + const c = u.partTarget, h = u.targetduration; + if (c && h) { + const d = Math.max(c * 3, h * 0.8) * 1e3; + s = Ye({}, s, { + maxTimeToFirstByteMs: Math.min(d, s.maxTimeToFirstByteMs), + maxLoadTimeMs: Math.min(d, s.maxTimeToFirstByteMs) + }); + } + } + } + const a = s.errorRetry || s.timeoutRetry || {}, o = { + loadPolicy: s, + timeout: s.maxLoadTimeMs, + maxRetry: a.maxNumRetry || 0, + retryDelay: a.retryDelayMs || 0, + maxRetryDelay: a.maxRetryDelayMs || 0 + }, l = { + onSuccess: (u, c, h, d) => { + const f = this.getInternalLoader(h); + this.resetInternalLoader(h.type); + const m = u.data; + if (m.indexOf("#EXTM3U") !== 0) { + this.handleManifestParsingError(u, h, new Error("no EXTM3U delimiter"), d || null, c); + return; + } + c.parsing.start = performance.now(), Hi.isMediaPlaylist(m) || h.type !== Ce.MANIFEST ? this.handleTrackOrLevelPlaylist(u, c, h, d || null, f) : this.handleMasterPlaylist(u, c, h, d); + }, + onError: (u, c, h, d) => { + this.handleNetworkError(c, h, !1, u, d); + }, + onTimeout: (u, c, h) => { + this.handleNetworkError(c, h, !0, void 0, u); + } + }; + r.load(e, o, l); + } + checkAutostartLoad() { + if (!this.hls) + return; + const { + config: { + autoStartLoad: e, + startPosition: t + }, + forceStartLoad: i + } = this.hls; + (e || i) && (this.hls.logger.log(`${e ? "auto" : "force"} startLoad with configured startPosition ${t}`), this.hls.startLoad(t)); + } + handleMasterPlaylist(e, t, i, r) { + const s = this.hls, a = e.data, o = ko(e, i), l = Hi.parseMasterPlaylist(a, o); + if (l.playlistParsingError) { + this.handleManifestParsingError(e, i, l.playlistParsingError, r, t); + return; + } + const { + contentSteering: u, + levels: c, + sessionData: h, + sessionKeys: d, + startTimeOffset: f, + variableList: m + } = l; + this.variableList = m; + const { + AUDIO: p = [], + SUBTITLES: v, + "CLOSED-CAPTIONS": b + } = Hi.parseMasterPlaylistMedia(a, o, l); + p.length && !p.some((y) => !y.url) && c[0].audioCodec && !c[0].attrs.AUDIO && (this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"), p.unshift({ + type: "main", + name: "main", + groupId: "main", + default: !1, + autoselect: !1, + forced: !1, + id: -1, + attrs: new st({}), + bitrate: 0, + url: "" + })), s.trigger(S.MANIFEST_LOADED, { + levels: c, + audioTracks: p, + subtitles: v, + captions: b, + contentSteering: u, + url: o, + stats: t, + networkDetails: r, + sessionData: h, + sessionKeys: d, + startTimeOffset: f, + variableList: m + }); + } + handleTrackOrLevelPlaylist(e, t, i, r, s) { + const a = this.hls, { + id: o, + level: l, + type: u + } = i, c = ko(e, i), h = se(l) ? l : se(o) ? o : 0, d = fc(i), f = Hi.parseLevelPlaylist(e.data, c, h, d, 0, this.variableList); + if (u === Ce.MANIFEST) { + const m = { + attrs: new st({}), + bitrate: 0, + details: f, + name: "", + url: c + }; + f.requestScheduled = t.loading.start + $d(f, 0), a.trigger(S.MANIFEST_LOADED, { + levels: [m], + audioTracks: [], + url: c, + stats: t, + networkDetails: r, + sessionData: null, + sessionKeys: null, + contentSteering: null, + startTimeOffset: null, + variableList: null + }); + } + t.parsing.end = performance.now(), i.levelDetails = f, this.handlePlaylistLoaded(f, e, t, i, r, s); + } + handleManifestParsingError(e, t, i, r, s) { + this.hls.trigger(S.ERROR, { + type: de.NETWORK_ERROR, + details: B.MANIFEST_PARSING_ERROR, + fatal: t.type === Ce.MANIFEST, + url: e.url, + err: i, + error: i, + reason: i.message, + response: e, + context: t, + networkDetails: r, + stats: s + }); + } + handleNetworkError(e, t, i = !1, r, s) { + let a = `A network ${i ? "timeout" : "error" + (r ? " (status " + r.code + ")" : "")} occurred while loading ${e.type}`; + e.type === Ce.LEVEL ? a += `: ${e.level} id: ${e.id}` : (e.type === Ce.AUDIO_TRACK || e.type === Ce.SUBTITLE_TRACK) && (a += ` id: ${e.id} group-id: "${e.groupId}"`); + const o = new Error(a); + this.hls.logger.warn(`[playlist-loader]: ${a}`); + let l = B.UNKNOWN, u = !1; + const c = this.getInternalLoader(e); + switch (e.type) { + case Ce.MANIFEST: + l = i ? B.MANIFEST_LOAD_TIMEOUT : B.MANIFEST_LOAD_ERROR, u = !0; + break; + case Ce.LEVEL: + l = i ? B.LEVEL_LOAD_TIMEOUT : B.LEVEL_LOAD_ERROR, u = !1; + break; + case Ce.AUDIO_TRACK: + l = i ? B.AUDIO_TRACK_LOAD_TIMEOUT : B.AUDIO_TRACK_LOAD_ERROR, u = !1; + break; + case Ce.SUBTITLE_TRACK: + l = i ? B.SUBTITLE_TRACK_LOAD_TIMEOUT : B.SUBTITLE_LOAD_ERROR, u = !1; + break; + } + c && this.resetInternalLoader(e.type); + const h = { + type: de.NETWORK_ERROR, + details: l, + fatal: u, + url: e.url, + loader: c, + context: e, + error: o, + networkDetails: t, + stats: s + }; + if (r) { + const d = (t == null ? void 0 : t.url) || e.url; + h.response = He({ + url: d, + data: void 0 + }, r); + } + this.hls.trigger(S.ERROR, h); + } + handlePlaylistLoaded(e, t, i, r, s, a) { + const o = this.hls, { + type: l, + level: u, + id: c, + groupId: h, + deliveryDirectives: d + } = r, f = ko(t, r), m = fc(r), p = typeof r.level == "number" && m === ue.MAIN ? u : void 0; + if (!e.fragments.length) { + const b = e.playlistParsingError = new Error("No Segments found in Playlist"); + o.trigger(S.ERROR, { + type: de.NETWORK_ERROR, + details: B.LEVEL_EMPTY_ERROR, + fatal: !1, + url: f, + error: b, + reason: b.message, + response: t, + context: r, + level: p, + parent: m, + networkDetails: s, + stats: i + }); + return; + } + e.targetduration || (e.playlistParsingError = new Error("Missing Target Duration")); + const v = e.playlistParsingError; + if (v) { + if (this.hls.logger.warn(v), !o.config.ignorePlaylistParsingErrors) { + o.trigger(S.ERROR, { + type: de.NETWORK_ERROR, + details: B.LEVEL_PARSING_ERROR, + fatal: !1, + url: f, + error: v, + reason: v.message, + response: t, + context: r, + level: p, + parent: m, + networkDetails: s, + stats: i + }); + return; + } + e.playlistParsingError = null; + } + switch (e.live && a && (a.getCacheAge && (e.ageHeader = a.getCacheAge() || 0), (!a.getCacheAge || isNaN(e.ageHeader)) && (e.ageHeader = 0)), l) { + case Ce.MANIFEST: + case Ce.LEVEL: + o.trigger(S.LEVEL_LOADED, { + details: e, + levelInfo: r.levelOrTrack || o.levels[0], + level: p || 0, + id: c || 0, + stats: i, + networkDetails: s, + deliveryDirectives: d, + withoutMultiVariant: l === Ce.MANIFEST + }); + break; + case Ce.AUDIO_TRACK: + o.trigger(S.AUDIO_TRACK_LOADED, { + details: e, + track: r.levelOrTrack, + id: c || 0, + groupId: h || "", + stats: i, + networkDetails: s, + deliveryDirectives: d + }); + break; + case Ce.SUBTITLE_TRACK: + o.trigger(S.SUBTITLE_TRACK_LOADED, { + details: e, + track: r.levelOrTrack, + id: c || 0, + groupId: h || "", + stats: i, + networkDetails: s, + deliveryDirectives: d + }); + break; + } + } +} +class ti { + /** + * Get the video-dev/hls.js package version. + */ + static get version() { + return is; + } + /** + * Check if the required MediaSource Extensions are available. + */ + static isMSESupported() { + return Cf(); + } + /** + * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs. + */ + static isSupported() { + return c2(); + } + /** + * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource). + */ + static getMediaSource() { + return Rr(); + } + static get Events() { + return S; + } + static get MetadataSchema() { + return ei; + } + static get ErrorTypes() { + return de; + } + static get ErrorDetails() { + return B; + } + /** + * Get the default configuration applied to new instances. + */ + static get DefaultConfig() { + return ti.defaultConfig ? ti.defaultConfig : Qv; + } + /** + * Replace the default configuration applied to new instances. + */ + static set DefaultConfig(e) { + ti.defaultConfig = e; + } + /** + * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`. + * @param userConfig - Configuration options applied over `Hls.DefaultConfig` + */ + constructor(e = {}) { + this.config = void 0, this.userConfig = void 0, this.logger = void 0, this.coreComponents = void 0, this.networkControllers = void 0, this._emitter = new Ql(), this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.abrController = void 0, this.bufferController = void 0, this.capLevelController = void 0, this.latencyController = void 0, this.levelController = void 0, this.streamController = void 0, this.audioStreamController = void 0, this.subtititleStreamController = void 0, this.audioTrackController = void 0, this.subtitleTrackController = void 0, this.interstitialsController = void 0, this.gapController = void 0, this.emeController = void 0, this.cmcdController = void 0, this._media = null, this._url = null, this._sessionId = void 0, this.triggeringException = void 0, this.started = !1; + const t = this.logger = O1(e.debug || !1, "Hls instance", e.assetPlayerId), i = this.config = Jv(ti.DefaultConfig, e, t); + this.userConfig = e, i.progressive && e2(i, t); + const { + abrController: r, + bufferController: s, + capLevelController: a, + errorController: o, + fpsController: l + } = i, u = new o(this), c = this.abrController = new r(this), h = new Dg(this), d = i.interstitialsController, f = d ? this.interstitialsController = new d(this, ti) : null, m = this.bufferController = new s(this, h), p = this.capLevelController = new a(this), v = new l(this), b = new g2(this), E = i.contentSteeringController, y = E ? new E(this) : null, T = this.levelController = new u2(this, y), A = new o2(this), k = new m2(this.config), w = this.streamController = new f2(this, h, k), L = this.gapController = new n2(this, h); + p.setStreamController(w), v.setStreamController(w); + const I = [b, T, w]; + f && I.splice(1, 0, f), y && I.splice(1, 0, y), this.networkControllers = I; + const R = [c, m, L, p, v, A, h]; + this.audioTrackController = this.createController(i.audioTrackController, I); + const O = i.audioStreamController; + O && I.push(this.audioStreamController = new O(this, h, k)), this.subtitleTrackController = this.createController(i.subtitleTrackController, I); + const z = i.subtitleStreamController; + z && I.push(this.subtititleStreamController = new z(this, h, k)), this.createController(i.timelineController, R), k.emeController = this.emeController = this.createController(i.emeController, R), this.cmcdController = this.createController(i.cmcdController, R), this.latencyController = this.createController(l2, R), this.coreComponents = R, I.push(u); + const ie = u.onErrorOut; + typeof ie == "function" && this.on(S.ERROR, ie, u), this.on(S.MANIFEST_LOADED, b.onManifestLoaded, b); + } + createController(e, t) { + if (e) { + const i = new e(this); + return t && t.push(i), i; + } + return null; + } + // Delegate the EventEmitter through the public API of Hls.js + on(e, t, i = this) { + this._emitter.on(e, t, i); + } + once(e, t, i = this) { + this._emitter.once(e, t, i); + } + removeAllListeners(e) { + this._emitter.removeAllListeners(e); + } + off(e, t, i = this, r) { + this._emitter.off(e, t, i, r); + } + listeners(e) { + return this._emitter.listeners(e); + } + emit(e, t, i) { + return this._emitter.emit(e, t, i); + } + trigger(e, t) { + if (this.config.debug) + return this.emit(e, e, t); + try { + return this.emit(e, e, t); + } catch (i) { + if (this.logger.error("An internal error happened while handling event " + e + '. Error message: "' + i.message + '". Here is a stacktrace:', i), !this.triggeringException) { + this.triggeringException = !0; + const r = e === S.ERROR; + this.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.INTERNAL_EXCEPTION, + fatal: r, + event: e, + error: i + }), this.triggeringException = !1; + } + } + return !1; + } + listenerCount(e) { + return this._emitter.listenerCount(e); + } + /** + * Dispose of the instance + */ + destroy() { + this.logger.log("destroy"), this.trigger(S.DESTROYING, void 0), this.detachMedia(), this.removeAllListeners(), this._autoLevelCapping = -1, this._url = null, this.networkControllers.forEach((t) => t.destroy()), this.networkControllers.length = 0, this.coreComponents.forEach((t) => t.destroy()), this.coreComponents.length = 0; + const e = this.config; + e.xhrSetup = e.fetchSetup = void 0, this.userConfig = null; + } + /** + * Attaches Hls.js to a media element + */ + attachMedia(e) { + if (!e || "media" in e && !e.media) { + const s = new Error(`attachMedia failed: invalid argument (${e})`); + this.trigger(S.ERROR, { + type: de.OTHER_ERROR, + details: B.ATTACH_MEDIA_ERROR, + fatal: !0, + error: s + }); + return; + } + this.logger.log("attachMedia"), this._media && (this.logger.warn("media must be detached before attaching"), this.detachMedia()); + const t = "media" in e, i = t ? e.media : e, r = t ? e : { + media: i + }; + this._media = i, this.trigger(S.MEDIA_ATTACHING, r); + } + /** + * Detach Hls.js from the media + */ + detachMedia() { + this.logger.log("detachMedia"), this.trigger(S.MEDIA_DETACHING, {}), this._media = null; + } + /** + * Detach HTMLMediaElement, MediaSource, and SourceBuffers without reset, for attaching to another instance + */ + transferMedia() { + this._media = null; + const e = this.bufferController.transferMedia(); + return this.trigger(S.MEDIA_DETACHING, { + transferMedia: e + }), e; + } + /** + * Set the source URL. Can be relative or absolute. + */ + loadSource(e) { + this.stopLoad(); + const t = this.media, i = this._url, r = this._url = zl.buildAbsoluteURL(self.location.href, e, { + alwaysNormalize: !0 + }); + this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.logger.log(`loadSource:${r}`), t && i && (i !== r || this.bufferController.hasSourceTypes()) && (this.detachMedia(), this.attachMedia(t)), this.trigger(S.MANIFEST_LOADING, { + url: e + }); + } + /** + * Gets the currently loaded URL + */ + get url() { + return this._url; + } + /** + * Whether or not enough has been buffered to seek to start position or use `media.currentTime` to determine next load position + */ + get hasEnoughToStart() { + return this.streamController.hasEnoughToStart; + } + /** + * Get the startPosition set on startLoad(position) or on autostart with config.startPosition + */ + get startPosition() { + return this.streamController.startPositionValue; + } + /** + * Start loading data from the stream source. + * Depending on default config, client starts loading automatically when a source is set. + * + * @param startPosition - Set the start position to stream from. + * Defaults to -1 (None: starts from earliest point) + */ + startLoad(e = -1, t) { + this.logger.log(`startLoad(${e + (t ? ", <skip seek to start>" : "")})`), this.started = !0, this.resumeBuffering(); + for (let i = 0; i < this.networkControllers.length && (this.networkControllers[i].startLoad(e, t), !(!this.started || !this.networkControllers)); i++) + ; + } + /** + * Stop loading of any stream data. + */ + stopLoad() { + this.logger.log("stopLoad"), this.started = !1; + for (let e = 0; e < this.networkControllers.length && (this.networkControllers[e].stopLoad(), !(this.started || !this.networkControllers)); e++) + ; + } + /** + * Returns whether loading, toggled with `startLoad()` and `stopLoad()`, is active or not`. + */ + get loadingEnabled() { + return this.started; + } + /** + * Returns state of fragment loading toggled by calling `pauseBuffering()` and `resumeBuffering()`. + */ + get bufferingEnabled() { + return this.streamController.bufferingEnabled; + } + /** + * Resumes stream controller segment loading after `pauseBuffering` has been called. + */ + resumeBuffering() { + this.bufferingEnabled || (this.logger.log("resume buffering"), this.networkControllers.forEach((e) => { + e.resumeBuffering && e.resumeBuffering(); + })); + } + /** + * Prevents stream controller from loading new segments until `resumeBuffering` is called. + * This allows for media buffering to be paused without interupting playlist loading. + */ + pauseBuffering() { + this.bufferingEnabled && (this.logger.log("pause buffering"), this.networkControllers.forEach((e) => { + e.pauseBuffering && e.pauseBuffering(); + })); + } + get inFlightFragments() { + const e = { + [ue.MAIN]: this.streamController.inFlightFrag + }; + return this.audioStreamController && (e[ue.AUDIO] = this.audioStreamController.inFlightFrag), this.subtititleStreamController && (e[ue.SUBTITLE] = this.subtititleStreamController.inFlightFrag), e; + } + /** + * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1) + */ + swapAudioCodec() { + this.logger.log("swapAudioCodec"), this.streamController.swapAudioCodec(); + } + /** + * When the media-element fails, this allows to detach and then re-attach it + * as one call (convenience method). + * + * Automatic recovery of media-errors by this process is configurable. + */ + recoverMediaError() { + this.logger.log("recoverMediaError"); + const e = this._media, t = e == null ? void 0 : e.currentTime; + this.detachMedia(), e && (this.attachMedia(e), t && this.startLoad(t)); + } + removeLevel(e) { + this.levelController.removeLevel(e); + } + /** + * @returns a UUID for this player instance + */ + get sessionId() { + let e = this._sessionId; + return e || (e = this._sessionId = nv()), e; + } + /** + * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH + */ + get levels() { + const e = this.levelController.levels; + return e || []; + } + /** + * @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist. + */ + get latestLevelDetails() { + return this.streamController.getLevelDetails() || null; + } + /** + * @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed. + */ + get loadLevelObj() { + return this.levelController.loadLevelObj; + } + /** + * Index of quality level (variant) currently played + */ + get currentLevel() { + return this.streamController.currentLevel; + } + /** + * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection. + */ + set currentLevel(e) { + this.logger.log(`set currentLevel:${e}`), this.levelController.manualLevel = e, this.streamController.immediateLevelSwitch(); + } + /** + * Index of next quality level loaded as scheduled by stream controller. + */ + get nextLevel() { + return this.streamController.nextLevel; + } + /** + * Set quality level index for next loaded data. + * This will switch the video quality asap, without interrupting playback. + * May abort current loading of data, and flush parts of buffer (outside currently played fragment region). + * @param newLevel - Pass -1 for automatic level selection + */ + set nextLevel(e) { + this.logger.log(`set nextLevel:${e}`), this.levelController.manualLevel = e, this.streamController.nextLevelSwitch(); + } + /** + * Return the quality level of the currently or last (of none is loaded currently) segment + */ + get loadLevel() { + return this.levelController.level; + } + /** + * Set quality level index for next loaded data in a conservative way. + * This will switch the quality without flushing, but interrupt current loading. + * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer. + * @param newLevel - Pass -1 for automatic level selection + */ + set loadLevel(e) { + this.logger.log(`set loadLevel:${e}`), this.levelController.manualLevel = e; + } + /** + * get next quality level loaded + */ + get nextLoadLevel() { + return this.levelController.nextLoadLevel; + } + /** + * Set quality level of next loaded segment in a fully "non-destructive" way. + * Same as `loadLevel` but will wait for next switch (until current loading is done). + */ + set nextLoadLevel(e) { + this.levelController.nextLoadLevel = e; + } + /** + * Return "first level": like a default level, if not set, + * falls back to index of first level referenced in manifest + */ + get firstLevel() { + return Math.max(this.levelController.firstLevel, this.minAutoLevel); + } + /** + * Sets "first-level", see getter. + */ + set firstLevel(e) { + this.logger.log(`set firstLevel:${e}`), this.levelController.firstLevel = e; + } + /** + * Return the desired start level for the first fragment that will be loaded. + * The default value of -1 indicates automatic start level selection. + * Setting hls.nextAutoLevel without setting a startLevel will result in + * the nextAutoLevel value being used for one fragment load. + */ + get startLevel() { + const e = this.levelController.startLevel; + return e === -1 && this.abrController.forcedAutoLevel > -1 ? this.abrController.forcedAutoLevel : e; + } + /** + * set start level (level of first fragment that will be played back) + * if not overrided by user, first level appearing in manifest will be used as start level + * if -1 : automatic start level selection, playback will start from level matching download bandwidth + * (determined from download of first segment) + */ + set startLevel(e) { + this.logger.log(`set startLevel:${e}`), e !== -1 && (e = Math.max(e, this.minAutoLevel)), this.levelController.startLevel = e; + } + /** + * Whether level capping is enabled. + * Default value is set via `config.capLevelToPlayerSize`. + */ + get capLevelToPlayerSize() { + return this.config.capLevelToPlayerSize; + } + /** + * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called. + */ + set capLevelToPlayerSize(e) { + const t = !!e; + t !== this.config.capLevelToPlayerSize && (t ? this.capLevelController.startCapping() : (this.capLevelController.stopCapping(), this.autoLevelCapping = -1, this.streamController.nextLevelSwitch()), this.config.capLevelToPlayerSize = t); + } + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + get autoLevelCapping() { + return this._autoLevelCapping; + } + /** + * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned. + */ + get bandwidthEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.getEstimate() : NaN; + } + set bandwidthEstimate(e) { + this.abrController.resetEstimator(e); + } + get abrEwmaDefaultEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.defaultEstimate : NaN; + } + /** + * get time to first byte estimate + * @type {number} + */ + get ttfbEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.getEstimateTTFB() : NaN; + } + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + set autoLevelCapping(e) { + this._autoLevelCapping !== e && (this.logger.log(`set autoLevelCapping:${e}`), this._autoLevelCapping = e, this.levelController.checkMaxAutoUpdated()); + } + get maxHdcpLevel() { + return this._maxHdcpLevel; + } + set maxHdcpLevel(e) { + cg(e) && this._maxHdcpLevel !== e && (this._maxHdcpLevel = e, this.levelController.checkMaxAutoUpdated()); + } + /** + * True when automatic level selection enabled + */ + get autoLevelEnabled() { + return this.levelController.manualLevel === -1; + } + /** + * Level set manually (if any) + */ + get manualLevel() { + return this.levelController.manualLevel; + } + /** + * min level selectable in auto mode according to config.minAutoBitrate + */ + get minAutoLevel() { + const { + levels: e, + config: { + minAutoBitrate: t + } + } = this; + if (!e) return 0; + const i = e.length; + for (let r = 0; r < i; r++) + if (e[r].maxBitrate >= t) + return r; + return 0; + } + /** + * max level selectable in auto mode according to autoLevelCapping + */ + get maxAutoLevel() { + const { + levels: e, + autoLevelCapping: t, + maxHdcpLevel: i + } = this; + let r; + if (t === -1 && e != null && e.length ? r = e.length - 1 : r = t, i) + for (let s = r; s--; ) { + const a = e[s].attrs["HDCP-LEVEL"]; + if (a && a <= i) + return s; + } + return r; + } + get firstAutoLevel() { + return this.abrController.firstAutoLevel; + } + /** + * next automatically selected quality level + */ + get nextAutoLevel() { + return this.abrController.nextAutoLevel; + } + /** + * this setter is used to force next auto level. + * this is useful to force a switch down in auto mode: + * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example) + * forced value is valid for one fragment. upon successful frag loading at forced level, + * this value will be resetted to -1 by ABR controller. + */ + set nextAutoLevel(e) { + this.abrController.nextAutoLevel = e; + } + /** + * get the datetime value relative to media.currentTime for the active level Program Date Time if present + */ + get playingDate() { + return this.streamController.currentProgramDateTime; + } + get mainForwardBufferInfo() { + return this.streamController.getMainFwdBufferInfo(); + } + get maxBufferLength() { + return this.streamController.maxBufferLength; + } + /** + * Find and select the best matching audio track, making a level switch when a Group change is necessary. + * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found. + */ + setAudioOption(e) { + var t; + return ((t = this.audioTrackController) == null ? void 0 : t.setAudioOption(e)) || null; + } + /** + * Find and select the best matching subtitle track, making a level switch when a Group change is necessary. + * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found. + */ + setSubtitleOption(e) { + var t; + return ((t = this.subtitleTrackController) == null ? void 0 : t.setSubtitleOption(e)) || null; + } + /** + * Get the complete list of audio tracks across all media groups + */ + get allAudioTracks() { + const e = this.audioTrackController; + return e ? e.allAudioTracks : []; + } + /** + * Get the list of selectable audio tracks + */ + get audioTracks() { + const e = this.audioTrackController; + return e ? e.audioTracks : []; + } + /** + * index of the selected audio track (index in audio track lists) + */ + get audioTrack() { + const e = this.audioTrackController; + return e ? e.audioTrack : -1; + } + /** + * selects an audio track, based on its index in audio track lists + */ + set audioTrack(e) { + const t = this.audioTrackController; + t && (t.audioTrack = e); + } + /** + * get the complete list of subtitle tracks across all media groups + */ + get allSubtitleTracks() { + const e = this.subtitleTrackController; + return e ? e.allSubtitleTracks : []; + } + /** + * get alternate subtitle tracks list from playlist + */ + get subtitleTracks() { + const e = this.subtitleTrackController; + return e ? e.subtitleTracks : []; + } + /** + * index of the selected subtitle track (index in subtitle track lists) + */ + get subtitleTrack() { + const e = this.subtitleTrackController; + return e ? e.subtitleTrack : -1; + } + get media() { + return this._media; + } + /** + * select an subtitle track, based on its index in subtitle track lists + */ + set subtitleTrack(e) { + const t = this.subtitleTrackController; + t && (t.subtitleTrack = e); + } + /** + * Whether subtitle display is enabled or not + */ + get subtitleDisplay() { + const e = this.subtitleTrackController; + return e ? e.subtitleDisplay : !1; + } + /** + * Enable/disable subtitle display rendering + */ + set subtitleDisplay(e) { + const t = this.subtitleTrackController; + t && (t.subtitleDisplay = e); + } + /** + * get mode for Low-Latency HLS loading + */ + get lowLatencyMode() { + return this.config.lowLatencyMode; + } + /** + * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK. + */ + set lowLatencyMode(e) { + this.config.lowLatencyMode = e; + } + /** + * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```) + * @returns null prior to loading live Playlist + */ + get liveSyncPosition() { + return this.latencyController.liveSyncPosition; + } + /** + * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced) + * @returns 0 before first playlist is loaded + */ + get latency() { + return this.latencyController.latency; + } + /** + * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition``` + * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration``` + * @returns 0 before first playlist is loaded + */ + get maxLatency() { + return this.latencyController.maxLatency; + } + /** + * target distance from the edge as calculated by the latency controller + */ + get targetLatency() { + return this.latencyController.targetLatency; + } + set targetLatency(e) { + this.latencyController.targetLatency = e; + } + /** + * the rate at which the edge of the current live playlist is advancing or 1 if there is none + */ + get drift() { + return this.latencyController.drift; + } + /** + * set to true when startLoad is called before MANIFEST_PARSED event + */ + get forceStartLoad() { + return this.streamController.forceStartLoad; + } + /** + * ContentSteering pathways getter + */ + get pathways() { + return this.levelController.pathways; + } + /** + * ContentSteering pathwayPriority getter/setter + */ + get pathwayPriority() { + return this.levelController.pathwayPriority; + } + set pathwayPriority(e) { + this.levelController.pathwayPriority = e; + } + /** + * returns true when all SourceBuffers are buffered to the end + */ + get bufferedToEnd() { + var e; + return !!((e = this.bufferController) != null && e.bufferedToEnd); + } + /** + * returns Interstitials Program Manager + */ + get interstitialsManager() { + var e; + return ((e = this.interstitialsController) == null ? void 0 : e.interstitialsManager) || null; + } + /** + * returns mediaCapabilities.decodingInfo for a variant/rendition + */ + getMediaDecodingInfo(e, t = this.allAudioTracks) { + const i = Dd(t); + return Ad(e, i, navigator.mediaCapabilities); + } +} +ti.defaultConfig = void 0; +const { + SvelteComponent: p2, + action_destroyer: v2, + add_render_callback: y2, + assign: mc, + attr: Ar, + binding_callbacks: _2, + bubble: Lo, + children: b2, + claim_element: gc, + claim_space: E2, + create_slot: S2, + detach: Bs, + element: pc, + exclude_internal_props: vc, + get_all_dirty_from_scope: T2, + get_slot_changes: x2, + get_svelte_dataset: A2, + init: D2, + insert_hydration: Io, + is_function: w2, + listen: Lt, + raf: k2, + run_all: L2, + safe_not_equal: I2, + space: R2, + src_url_equal: yc, + toggle_class: _c, + transition_in: C2, + transition_out: F2, + update_slot_base: P2 +} = window.__gradio__svelte__internal, { createEventDispatcher: M2 } = window.__gradio__svelte__internal; +function O2(n) { + let e, t = '<span class="load-wrap svelte-1pwzuub"><span class="loader svelte-1pwzuub"></span></span>', i, r, s, a, o = !1, l, u = !0, c, h, d, f; + const m = ( + /*#slots*/ + n[18].default + ), p = S2( + m, + n, + /*$$scope*/ + n[17], + null + ); + function v() { + cancelAnimationFrame(l), r.paused || (l = k2(v), o = !0), n[22].call(r); + } + return { + c() { + e = pc("div"), e.innerHTML = t, i = R2(), r = pc("video"), p && p.c(), this.h(); + }, + l(b) { + e = gc(b, "DIV", { class: !0, "data-svelte-h": !0 }), A2(e) !== "svelte-mez4j5" && (e.innerHTML = t), i = E2(b), r = gc(b, "VIDEO", { + src: !0, + preload: !0, + "data-testid": !0, + crossorigin: !0 + }); + var E = b2(r); + p && p.l(E), E.forEach(Bs), this.h(); + }, + h() { + Ar(e, "class", "overlay svelte-1pwzuub"), _c(e, "hidden", !/*processingVideo*/ + n[10]), yc(r.src, s = /*resolved_src*/ + n[11]) || Ar(r, "src", s), r.muted = /*muted*/ + n[4], r.playsInline = /*playsinline*/ + n[5], Ar( + r, + "preload", + /*preload*/ + n[6] + ), r.autoplay = /*autoplay*/ + n[7], r.controls = /*controls*/ + n[8], r.loop = /*loop*/ + n[9], Ar(r, "data-testid", a = /*$$props*/ + n[13]["data-testid"]), Ar(r, "crossorigin", "anonymous"), /*duration*/ + n[2] === void 0 && y2(() => ( + /*video_durationchange_handler*/ + n[23].call(r) + )); + }, + m(b, E) { + Io(b, e, E), Io(b, i, E), Io(b, r, E), p && p.m(r, null), n[25](r), h = !0, d || (f = [ + Lt( + r, + "loadeddata", + /*dispatch*/ + n[12].bind(null, "loadeddata") + ), + Lt( + r, + "click", + /*dispatch*/ + n[12].bind(null, "click") + ), + Lt( + r, + "play", + /*dispatch*/ + n[12].bind(null, "play") + ), + Lt( + r, + "pause", + /*dispatch*/ + n[12].bind(null, "pause") + ), + Lt( + r, + "ended", + /*dispatch*/ + n[12].bind(null, "ended") + ), + Lt( + r, + "mouseover", + /*dispatch*/ + n[12].bind(null, "mouseover") + ), + Lt( + r, + "mouseout", + /*dispatch*/ + n[12].bind(null, "mouseout") + ), + Lt( + r, + "focus", + /*dispatch*/ + n[12].bind(null, "focus") + ), + Lt( + r, + "blur", + /*dispatch*/ + n[12].bind(null, "blur") + ), + Lt( + r, + "error", + /*dispatch*/ + n[12].bind(null, "error", "Video not playable") + ), + Lt( + r, + "loadstart", + /*loadstart_handler*/ + n[19] + ), + Lt( + r, + "loadeddata", + /*loadeddata_handler*/ + n[20] + ), + Lt( + r, + "loadedmetadata", + /*loadedmetadata_handler*/ + n[21] + ), + Lt(r, "timeupdate", v), + Lt( + r, + "durationchange", + /*video_durationchange_handler*/ + n[23] + ), + Lt( + r, + "play", + /*video_play_pause_handler*/ + n[24] + ), + Lt( + r, + "pause", + /*video_play_pause_handler*/ + n[24] + ), + v2(c = _1.call(null, r, { autoplay: ( + /*autoplay*/ + n[7] ?? !1 + ) })) + ], d = !0); + }, + p(b, [E]) { + (!h || E & /*processingVideo*/ + 1024) && _c(e, "hidden", !/*processingVideo*/ + b[10]), p && p.p && (!h || E & /*$$scope*/ + 131072) && P2( + p, + m, + b, + /*$$scope*/ + b[17], + h ? x2( + m, + /*$$scope*/ + b[17], + E, + null + ) : T2( + /*$$scope*/ + b[17] + ), + null + ), (!h || E & /*resolved_src*/ + 2048 && !yc(r.src, s = /*resolved_src*/ + b[11])) && Ar(r, "src", s), (!h || E & /*muted*/ + 16) && (r.muted = /*muted*/ + b[4]), (!h || E & /*playsinline*/ + 32) && (r.playsInline = /*playsinline*/ + b[5]), (!h || E & /*preload*/ + 64) && Ar( + r, + "preload", + /*preload*/ + b[6] + ), (!h || E & /*autoplay*/ + 128) && (r.autoplay = /*autoplay*/ + b[7]), (!h || E & /*controls*/ + 256) && (r.controls = /*controls*/ + b[8]), (!h || E & /*loop*/ + 512) && (r.loop = /*loop*/ + b[9]), (!h || E & /*$$props*/ + 8192 && a !== (a = /*$$props*/ + b[13]["data-testid"])) && Ar(r, "data-testid", a), !o && E & /*currentTime*/ + 2 && !isNaN( + /*currentTime*/ + b[1] + ) && (r.currentTime = /*currentTime*/ + b[1]), o = !1, E & /*paused*/ + 8 && u !== (u = /*paused*/ + b[3]) && r[u ? "pause" : "play"](), c && w2(c.update) && E & /*autoplay*/ + 128 && c.update.call(null, { autoplay: ( + /*autoplay*/ + b[7] ?? !1 + ) }); + }, + i(b) { + h || (C2(p, b), h = !0); + }, + o(b) { + F2(p, b), h = !1; + }, + d(b) { + b && (Bs(e), Bs(i), Bs(r)), p && p.d(b), n[25](null), d = !1, L2(f); + } + }; +} +function $2(n, e, t) { + let { $$slots: i = {}, $$scope: r } = e, { src: s = void 0 } = e, { muted: a = void 0 } = e, { playsinline: o = void 0 } = e, { preload: l = void 0 } = e, { autoplay: u = void 0 } = e, { controls: c = void 0 } = e, { currentTime: h = void 0 } = e, { duration: d = void 0 } = e, { paused: f = void 0 } = e, { node: m = void 0 } = e, { loop: p } = e, { is_stream: v } = e, { processingVideo: b = !1 } = e, E, y = !1, T; + const A = M2(); + function k(N, X, K) { + if (!(!N || !X) && ti.isSupported() && !y) { + const Z = new ti({ + maxBufferLength: 1, + // 0.5 seconds (500 ms) + maxMaxBufferLength: 1, + // Maximum max buffer length in seconds + lowLatencyMode: !0 + // Enable low latency mode + }); + Z.loadSource(N), Z.attachMedia(K), Z.on(ti.Events.MANIFEST_PARSED, function() { + K.play(); + }), Z.on(ti.Events.ERROR, function(Q, H) { + if (console.error("HLS error:", Q, H), H.fatal) + switch (H.type) { + case ti.ErrorTypes.NETWORK_ERROR: + console.error("Fatal network error encountered, trying to recover"), Z.startLoad(); + break; + case ti.ErrorTypes.MEDIA_ERROR: + console.error("Fatal media error encountered, trying to recover"), Z.recoverMediaError(); + break; + default: + console.error("Fatal error, cannot recover"), Z.destroy(); + break; + } + }), y = !0; + } + } + function w(N) { + Lo.call(this, n, N); + } + function L(N) { + Lo.call(this, n, N); + } + function I(N) { + Lo.call(this, n, N); + } + function R() { + h = this.currentTime, t(1, h); + } + function O() { + d = this.duration, t(2, d); + } + function z() { + f = this.paused, t(3, f); + } + function ie(N) { + _2[N ? "unshift" : "push"](() => { + m = N, t(0, m); + }); + } + return n.$$set = (N) => { + t(13, e = mc(mc({}, e), vc(N))), "src" in N && t(14, s = N.src), "muted" in N && t(4, a = N.muted), "playsinline" in N && t(5, o = N.playsinline), "preload" in N && t(6, l = N.preload), "autoplay" in N && t(7, u = N.autoplay), "controls" in N && t(8, c = N.controls), "currentTime" in N && t(1, h = N.currentTime), "duration" in N && t(2, d = N.duration), "paused" in N && t(3, f = N.paused), "node" in N && t(0, m = N.node), "loop" in N && t(9, p = N.loop), "is_stream" in N && t(15, v = N.is_stream), "processingVideo" in N && t(10, b = N.processingVideo), "$$scope" in N && t(17, r = N.$$scope); + }, n.$$.update = () => { + if (n.$$.dirty & /*src, latest_src*/ + 81920) { + t(11, E = s), t(16, T = s); + const N = s; + w1(N).then((X) => { + T === N && t(11, E = X); + }); + } + n.$$.dirty & /*src*/ + 16384 && (y = !1), n.$$.dirty & /*node, src, is_stream*/ + 49153 && m && s && v && k(s, v, m); + }, e = vc(e), [ + m, + h, + d, + f, + a, + o, + l, + u, + c, + p, + b, + E, + A, + e, + s, + v, + T, + r, + i, + w, + L, + I, + R, + O, + z, + ie + ]; +} +class Ff extends p2 { + constructor(e) { + super(), D2(this, e, $2, O2, I2, { + src: 14, + muted: 4, + playsinline: 5, + preload: 6, + autoplay: 7, + controls: 8, + currentTime: 1, + duration: 2, + paused: 3, + node: 0, + loop: 9, + is_stream: 15, + processingVideo: 10 + }); + } +} +new Intl.Collator(0, { numeric: 1 }).compare; +typeof process < "u" && process.versions && process.versions.node; +var gr; +class z7 extends TransformStream { + /** Constructs a new instance. */ + constructor(t = { allowCR: !1 }) { + super({ + transform: (i, r) => { + for (i = en(this, gr) + i; ; ) { + const s = i.indexOf(` +`), a = t.allowCR ? i.indexOf("\r") : -1; + if (a !== -1 && a !== i.length - 1 && (s === -1 || s - 1 > a)) { + r.enqueue(i.slice(0, a)), i = i.slice(a + 1); + continue; + } + if (s === -1) + break; + const o = i[s - 1] === "\r" ? s - 1 : s; + r.enqueue(i.slice(0, o)), i = i.slice(s + 1); + } + Q0(this, gr, i); + }, + flush: (i) => { + if (en(this, gr) === "") + return; + const r = t.allowCR && en(this, gr).endsWith("\r") ? en(this, gr).slice(0, -1) : en(this, gr); + i.enqueue(r); + } + }); + no(this, gr, ""); + } +} +gr = new WeakMap(); +const { + SvelteComponent: B2, + add_flush_callback: N2, + append_hydration: U2, + attr: G2, + bind: z2, + binding_callbacks: q2, + check_outros: H2, + children: Pf, + claim_component: V2, + claim_element: Mf, + claim_text: K2, + create_component: Y2, + destroy_component: W2, + detach: Tn, + element: Of, + empty: ka, + group_outros: j2, + init: X2, + insert_hydration: qa, + is_function: bc, + mount_component: Q2, + noop: Ec, + safe_not_equal: Z2, + set_data: J2, + text: ey, + toggle_class: an, + transition_in: Vn, + transition_out: La +} = window.__gradio__svelte__internal; +function Sc(n) { + let e, t, i, r; + const s = [iy, ty], a = []; + function o(l, u) { + return 0; + } + return e = o(), t = a[e] = s[e](n), { + c() { + t.c(), i = ka(); + }, + l(l) { + t.l(l), i = ka(); + }, + m(l, u) { + a[e].m(l, u), qa(l, i, u), r = !0; + }, + p(l, u) { + t.p(l, u); + }, + i(l) { + r || (Vn(t), r = !0); + }, + o(l) { + La(t), r = !1; + }, + d(l) { + l && Tn(i), a[e].d(l); + } + }; +} +function ty(n) { + let e, t; + return { + c() { + e = Of("div"), t = ey( + /*value*/ + n[2] + ); + }, + l(i) { + e = Mf(i, "DIV", {}); + var r = Pf(e); + t = K2( + r, + /*value*/ + n[2] + ), r.forEach(Tn); + }, + m(i, r) { + qa(i, e, r), U2(e, t); + }, + p(i, r) { + r & /*value*/ + 4 && J2( + t, + /*value*/ + i[2] + ); + }, + i: Ec, + o: Ec, + d(i) { + i && Tn(e); + } + }; +} +function iy(n) { + var o; + let e, t, i, r; + function s(l) { + n[6](l); + } + let a = { + muted: !0, + playsinline: !0, + src: ( + /*value*/ + (o = n[2]) == null ? void 0 : o.video.url + ), + is_stream: !1, + loop: ( + /*loop*/ + n[3] + ) + }; + return ( + /*video*/ + n[4] !== void 0 && (a.node = /*video*/ + n[4]), t = new Ff({ props: a }), q2.push(() => z2(t, "node", s)), t.$on( + "loadeddata", + /*init*/ + n[5] + ), t.$on("mouseover", function() { + bc( + /*video*/ + n[4].play.bind( + /*video*/ + n[4] + ) + ) && n[4].play.bind( + /*video*/ + n[4] + ).apply(this, arguments); + }), t.$on("mouseout", function() { + bc( + /*video*/ + n[4].pause.bind( + /*video*/ + n[4] + ) + ) && n[4].pause.bind( + /*video*/ + n[4] + ).apply(this, arguments); + }), { + c() { + e = Of("div"), Y2(t.$$.fragment), this.h(); + }, + l(l) { + e = Mf(l, "DIV", { class: !0 }); + var u = Pf(e); + V2(t.$$.fragment, u), u.forEach(Tn), this.h(); + }, + h() { + G2(e, "class", "container svelte-13u05e4"), an( + e, + "table", + /*type*/ + n[0] === "table" + ), an( + e, + "gallery", + /*type*/ + n[0] === "gallery" + ), an( + e, + "selected", + /*selected*/ + n[1] + ); + }, + m(l, u) { + qa(l, e, u), Q2(t, e, null), r = !0; + }, + p(l, u) { + var h; + n = l; + const c = {}; + u & /*value*/ + 4 && (c.src = /*value*/ + (h = n[2]) == null ? void 0 : h.video.url), u & /*loop*/ + 8 && (c.loop = /*loop*/ + n[3]), !i && u & /*video*/ + 16 && (i = !0, c.node = /*video*/ + n[4], N2(() => i = !1)), t.$set(c), (!r || u & /*type*/ + 1) && an( + e, + "table", + /*type*/ + n[0] === "table" + ), (!r || u & /*type*/ + 1) && an( + e, + "gallery", + /*type*/ + n[0] === "gallery" + ), (!r || u & /*selected*/ + 2) && an( + e, + "selected", + /*selected*/ + n[1] + ); + }, + i(l) { + r || (Vn(t.$$.fragment, l), r = !0); + }, + o(l) { + La(t.$$.fragment, l), r = !1; + }, + d(l) { + l && Tn(e), W2(t); + } + } + ); +} +function ry(n) { + let e, t, i = ( + /*value*/ + n[2] && Sc(n) + ); + return { + c() { + i && i.c(), e = ka(); + }, + l(r) { + i && i.l(r), e = ka(); + }, + m(r, s) { + i && i.m(r, s), qa(r, e, s), t = !0; + }, + p(r, [s]) { + /*value*/ + r[2] ? i ? (i.p(r, s), s & /*value*/ + 4 && Vn(i, 1)) : (i = Sc(r), i.c(), Vn(i, 1), i.m(e.parentNode, e)) : i && (j2(), La(i, 1, 1, () => { + i = null; + }), H2()); + }, + i(r) { + t || (Vn(i), t = !0); + }, + o(r) { + La(i), t = !1; + }, + d(r) { + r && Tn(e), i && i.d(r); + } + }; +} +function ny(n, e, t) { + var i = this && this.__awaiter || function(h, d, f, m) { + function p(v) { + return v instanceof f ? v : new f(function(b) { + b(v); + }); + } + return new (f || (f = Promise))(function(v, b) { + function E(A) { + try { + T(m.next(A)); + } catch (k) { + b(k); + } + } + function y(A) { + try { + T(m.throw(A)); + } catch (k) { + b(k); + } + } + function T(A) { + A.done ? v(A.value) : p(A.value).then(E, y); + } + T((m = m.apply(h, d || [])).next()); + }); + }; + let { type: r } = e, { selected: s = !1 } = e, { value: a } = e, { loop: o } = e, l; + function u() { + return i(this, void 0, void 0, function* () { + t(4, l.muted = !0, l), t(4, l.playsInline = !0, l), t(4, l.controls = !1, l), l.setAttribute("muted", ""), yield l.play(), l.pause(); + }); + } + function c(h) { + l = h, t(4, l); + } + return n.$$set = (h) => { + "type" in h && t(0, r = h.type), "selected" in h && t(1, s = h.selected), "value" in h && t(2, a = h.value), "loop" in h && t(3, o = h.loop); + }, [r, s, a, o, l, u, c]; +} +class q7 extends B2 { + constructor(e) { + super(), X2(this, e, ny, ry, Z2, { type: 0, selected: 1, value: 2, loop: 3 }); + } +} +const { + SvelteComponent: sy, + append_hydration: Al, + assign: ay, + attr: Bt, + binding_callbacks: oy, + children: Kn, + claim_element: $f, + claim_space: Bf, + claim_svg_element: Ro, + create_slot: ly, + detach: Vi, + element: Nf, + empty: Tc, + get_all_dirty_from_scope: uy, + get_slot_changes: cy, + get_spread_update: hy, + init: dy, + insert_hydration: as, + listen: fy, + noop: my, + safe_not_equal: gy, + set_dynamic_element_data: xc, + set_style: Ke, + space: Uf, + svg_element: Co, + toggle_class: At, + transition_in: Gf, + transition_out: zf, + update_slot_base: py +} = window.__gradio__svelte__internal; +function Ac(n) { + let e, t, i, r, s; + return { + c() { + e = Co("svg"), t = Co("line"), i = Co("line"), this.h(); + }, + l(a) { + e = Ro(a, "svg", { class: !0, xmlns: !0, viewBox: !0 }); + var o = Kn(e); + t = Ro(o, "line", { + x1: !0, + y1: !0, + x2: !0, + y2: !0, + stroke: !0, + "stroke-width": !0 + }), Kn(t).forEach(Vi), i = Ro(o, "line", { + x1: !0, + y1: !0, + x2: !0, + y2: !0, + stroke: !0, + "stroke-width": !0 + }), Kn(i).forEach(Vi), o.forEach(Vi), this.h(); + }, + h() { + Bt(t, "x1", "1"), Bt(t, "y1", "9"), Bt(t, "x2", "9"), Bt(t, "y2", "1"), Bt(t, "stroke", "gray"), Bt(t, "stroke-width", "0.5"), Bt(i, "x1", "5"), Bt(i, "y1", "9"), Bt(i, "x2", "9"), Bt(i, "y2", "5"), Bt(i, "stroke", "gray"), Bt(i, "stroke-width", "0.5"), Bt(e, "class", "resize-handle svelte-239wnu"), Bt(e, "xmlns", "http://www.w3.org/2000/svg"), Bt(e, "viewBox", "0 0 10 10"); + }, + m(a, o) { + as(a, e, o), Al(e, t), Al(e, i), r || (s = fy( + e, + "mousedown", + /*resize*/ + n[27] + ), r = !0); + }, + p: my, + d(a) { + a && Vi(e), r = !1, s(); + } + }; +} +function vy(n) { + var h; + let e, t, i, r, s; + const a = ( + /*#slots*/ + n[31].default + ), o = ly( + a, + n, + /*$$scope*/ + n[30], + null + ); + let l = ( + /*resizable*/ + n[19] && Ac(n) + ), u = [ + { "data-testid": ( + /*test_id*/ + n[11] + ) }, + { id: ( + /*elem_id*/ + n[6] + ) }, + { + class: i = "block " + /*elem_classes*/ + (((h = n[7]) == null ? void 0 : h.join(" ")) || "") + " svelte-239wnu" + }, + { + dir: r = /*rtl*/ + n[20] ? "rtl" : "ltr" + } + ], c = {}; + for (let d = 0; d < u.length; d += 1) + c = ay(c, u[d]); + return { + c() { + e = Nf( + /*tag*/ + n[25] + ), o && o.c(), t = Uf(), l && l.c(), this.h(); + }, + l(d) { + e = $f( + d, + /*tag*/ + (n[25] || "null").toUpperCase(), + { + "data-testid": !0, + id: !0, + class: !0, + dir: !0 + } + ); + var f = Kn(e); + o && o.l(f), t = Bf(f), l && l.l(f), f.forEach(Vi), this.h(); + }, + h() { + xc( + /*tag*/ + n[25] + )(e, c), At( + e, + "hidden", + /*visible*/ + n[14] === !1 + ), At( + e, + "padded", + /*padding*/ + n[10] + ), At( + e, + "flex", + /*flex*/ + n[1] + ), At( + e, + "border_focus", + /*border_mode*/ + n[9] === "focus" + ), At( + e, + "border_contrast", + /*border_mode*/ + n[9] === "contrast" + ), At(e, "hide-container", !/*explicit_call*/ + n[12] && !/*container*/ + n[13]), At( + e, + "fullscreen", + /*fullscreen*/ + n[0] + ), At( + e, + "animating", + /*fullscreen*/ + n[0] && /*preexpansionBoundingRect*/ + n[24] !== null + ), At( + e, + "auto-margin", + /*scale*/ + n[17] === null + ), Ke( + e, + "height", + /*fullscreen*/ + n[0] ? void 0 : ( + /*get_dimension*/ + n[26]( + /*height*/ + n[2] + ) + ) + ), Ke( + e, + "min-height", + /*fullscreen*/ + n[0] ? void 0 : ( + /*get_dimension*/ + n[26]( + /*min_height*/ + n[3] + ) + ) + ), Ke( + e, + "max-height", + /*fullscreen*/ + n[0] ? void 0 : ( + /*get_dimension*/ + n[26]( + /*max_height*/ + n[4] + ) + ) + ), Ke( + e, + "--start-top", + /*preexpansionBoundingRect*/ + n[24] ? `${/*preexpansionBoundingRect*/ + n[24].top}px` : "0px" + ), Ke( + e, + "--start-left", + /*preexpansionBoundingRect*/ + n[24] ? `${/*preexpansionBoundingRect*/ + n[24].left}px` : "0px" + ), Ke( + e, + "--start-width", + /*preexpansionBoundingRect*/ + n[24] ? `${/*preexpansionBoundingRect*/ + n[24].width}px` : "0px" + ), Ke( + e, + "--start-height", + /*preexpansionBoundingRect*/ + n[24] ? `${/*preexpansionBoundingRect*/ + n[24].height}px` : "0px" + ), Ke( + e, + "width", + /*fullscreen*/ + n[0] ? void 0 : typeof /*width*/ + n[5] == "number" ? `calc(min(${/*width*/ + n[5]}px, 100%))` : ( + /*get_dimension*/ + n[26]( + /*width*/ + n[5] + ) + ) + ), Ke( + e, + "border-style", + /*variant*/ + n[8] + ), Ke( + e, + "overflow", + /*allow_overflow*/ + n[15] ? ( + /*overflow_behavior*/ + n[16] + ) : "hidden" + ), Ke( + e, + "flex-grow", + /*scale*/ + n[17] + ), Ke(e, "min-width", `calc(min(${/*min_width*/ + n[18]}px, 100%))`), Ke(e, "border-width", "var(--block-border-width)"); + }, + m(d, f) { + as(d, e, f), o && o.m(e, null), Al(e, t), l && l.m(e, null), n[32](e), s = !0; + }, + p(d, f) { + var m; + o && o.p && (!s || f[0] & /*$$scope*/ + 1073741824) && py( + o, + a, + d, + /*$$scope*/ + d[30], + s ? cy( + a, + /*$$scope*/ + d[30], + f, + null + ) : uy( + /*$$scope*/ + d[30] + ), + null + ), /*resizable*/ + d[19] ? l ? l.p(d, f) : (l = Ac(d), l.c(), l.m(e, null)) : l && (l.d(1), l = null), xc( + /*tag*/ + d[25] + )(e, c = hy(u, [ + (!s || f[0] & /*test_id*/ + 2048) && { "data-testid": ( + /*test_id*/ + d[11] + ) }, + (!s || f[0] & /*elem_id*/ + 64) && { id: ( + /*elem_id*/ + d[6] + ) }, + (!s || f[0] & /*elem_classes*/ + 128 && i !== (i = "block " + /*elem_classes*/ + (((m = d[7]) == null ? void 0 : m.join(" ")) || "") + " svelte-239wnu")) && { class: i }, + (!s || f[0] & /*rtl*/ + 1048576 && r !== (r = /*rtl*/ + d[20] ? "rtl" : "ltr")) && { dir: r } + ])), At( + e, + "hidden", + /*visible*/ + d[14] === !1 + ), At( + e, + "padded", + /*padding*/ + d[10] + ), At( + e, + "flex", + /*flex*/ + d[1] + ), At( + e, + "border_focus", + /*border_mode*/ + d[9] === "focus" + ), At( + e, + "border_contrast", + /*border_mode*/ + d[9] === "contrast" + ), At(e, "hide-container", !/*explicit_call*/ + d[12] && !/*container*/ + d[13]), At( + e, + "fullscreen", + /*fullscreen*/ + d[0] + ), At( + e, + "animating", + /*fullscreen*/ + d[0] && /*preexpansionBoundingRect*/ + d[24] !== null + ), At( + e, + "auto-margin", + /*scale*/ + d[17] === null + ), f[0] & /*fullscreen, height*/ + 5 && Ke( + e, + "height", + /*fullscreen*/ + d[0] ? void 0 : ( + /*get_dimension*/ + d[26]( + /*height*/ + d[2] + ) + ) + ), f[0] & /*fullscreen, min_height*/ + 9 && Ke( + e, + "min-height", + /*fullscreen*/ + d[0] ? void 0 : ( + /*get_dimension*/ + d[26]( + /*min_height*/ + d[3] + ) + ) + ), f[0] & /*fullscreen, max_height*/ + 17 && Ke( + e, + "max-height", + /*fullscreen*/ + d[0] ? void 0 : ( + /*get_dimension*/ + d[26]( + /*max_height*/ + d[4] + ) + ) + ), f[0] & /*preexpansionBoundingRect*/ + 16777216 && Ke( + e, + "--start-top", + /*preexpansionBoundingRect*/ + d[24] ? `${/*preexpansionBoundingRect*/ + d[24].top}px` : "0px" + ), f[0] & /*preexpansionBoundingRect*/ + 16777216 && Ke( + e, + "--start-left", + /*preexpansionBoundingRect*/ + d[24] ? `${/*preexpansionBoundingRect*/ + d[24].left}px` : "0px" + ), f[0] & /*preexpansionBoundingRect*/ + 16777216 && Ke( + e, + "--start-width", + /*preexpansionBoundingRect*/ + d[24] ? `${/*preexpansionBoundingRect*/ + d[24].width}px` : "0px" + ), f[0] & /*preexpansionBoundingRect*/ + 16777216 && Ke( + e, + "--start-height", + /*preexpansionBoundingRect*/ + d[24] ? `${/*preexpansionBoundingRect*/ + d[24].height}px` : "0px" + ), f[0] & /*fullscreen, width*/ + 33 && Ke( + e, + "width", + /*fullscreen*/ + d[0] ? void 0 : typeof /*width*/ + d[5] == "number" ? `calc(min(${/*width*/ + d[5]}px, 100%))` : ( + /*get_dimension*/ + d[26]( + /*width*/ + d[5] + ) + ) + ), f[0] & /*variant*/ + 256 && Ke( + e, + "border-style", + /*variant*/ + d[8] + ), f[0] & /*allow_overflow, overflow_behavior*/ + 98304 && Ke( + e, + "overflow", + /*allow_overflow*/ + d[15] ? ( + /*overflow_behavior*/ + d[16] + ) : "hidden" + ), f[0] & /*scale*/ + 131072 && Ke( + e, + "flex-grow", + /*scale*/ + d[17] + ), f[0] & /*min_width*/ + 262144 && Ke(e, "min-width", `calc(min(${/*min_width*/ + d[18]}px, 100%))`); + }, + i(d) { + s || (Gf(o, d), s = !0); + }, + o(d) { + zf(o, d), s = !1; + }, + d(d) { + d && Vi(e), o && o.d(d), l && l.d(), n[32](null); + } + }; +} +function Dc(n) { + let e; + return { + c() { + e = Nf("div"), this.h(); + }, + l(t) { + e = $f(t, "DIV", { class: !0 }), Kn(e).forEach(Vi), this.h(); + }, + h() { + Bt(e, "class", "placeholder svelte-239wnu"), Ke( + e, + "height", + /*placeholder_height*/ + n[22] + "px" + ), Ke( + e, + "width", + /*placeholder_width*/ + n[23] + "px" + ); + }, + m(t, i) { + as(t, e, i); + }, + p(t, i) { + i[0] & /*placeholder_height*/ + 4194304 && Ke( + e, + "height", + /*placeholder_height*/ + t[22] + "px" + ), i[0] & /*placeholder_width*/ + 8388608 && Ke( + e, + "width", + /*placeholder_width*/ + t[23] + "px" + ); + }, + d(t) { + t && Vi(e); + } + }; +} +function yy(n) { + let e, t, i, r = ( + /*tag*/ + n[25] && vy(n) + ), s = ( + /*fullscreen*/ + n[0] && Dc(n) + ); + return { + c() { + r && r.c(), e = Uf(), s && s.c(), t = Tc(); + }, + l(a) { + r && r.l(a), e = Bf(a), s && s.l(a), t = Tc(); + }, + m(a, o) { + r && r.m(a, o), as(a, e, o), s && s.m(a, o), as(a, t, o), i = !0; + }, + p(a, o) { + /*tag*/ + a[25] && r.p(a, o), /*fullscreen*/ + a[0] ? s ? s.p(a, o) : (s = Dc(a), s.c(), s.m(t.parentNode, t)) : s && (s.d(1), s = null); + }, + i(a) { + i || (Gf(r, a), i = !0); + }, + o(a) { + zf(r, a), i = !1; + }, + d(a) { + a && (Vi(e), Vi(t)), r && r.d(a), s && s.d(a); + } + }; +} +function _y(n, e, t) { + let { $$slots: i = {}, $$scope: r } = e, { height: s = void 0 } = e, { min_height: a = void 0 } = e, { max_height: o = void 0 } = e, { width: l = void 0 } = e, { elem_id: u = "" } = e, { elem_classes: c = [] } = e, { variant: h = "solid" } = e, { border_mode: d = "base" } = e, { padding: f = !0 } = e, { type: m = "normal" } = e, { test_id: p = void 0 } = e, { explicit_call: v = !1 } = e, { container: b = !0 } = e, { visible: E = !0 } = e, { allow_overflow: y = !0 } = e, { overflow_behavior: T = "auto" } = e, { scale: A = null } = e, { min_width: k = 0 } = e, { flex: w = !1 } = e, { resizable: L = !1 } = e, { rtl: I = !1 } = e, { fullscreen: R = !1 } = e, O = R, z, ie = m === "fieldset" ? "fieldset" : "div", N = 0, X = 0, K = null; + function Z(U) { + R && U.key === "Escape" && t(0, R = !1); + } + const Q = (U) => { + if (U !== void 0) { + if (typeof U == "number") + return U + "px"; + if (typeof U == "string") + return U; + } + }, H = (U) => { + let te = U.clientY; + const ne = (V) => { + const le = V.clientY - te; + te = V.clientY, t(21, z.style.height = `${z.offsetHeight + le}px`, z); + }, ce = () => { + window.removeEventListener("mousemove", ne), window.removeEventListener("mouseup", ce); + }; + window.addEventListener("mousemove", ne), window.addEventListener("mouseup", ce); + }; + function Y(U) { + oy[U ? "unshift" : "push"](() => { + z = U, t(21, z); + }); + } + return n.$$set = (U) => { + "height" in U && t(2, s = U.height), "min_height" in U && t(3, a = U.min_height), "max_height" in U && t(4, o = U.max_height), "width" in U && t(5, l = U.width), "elem_id" in U && t(6, u = U.elem_id), "elem_classes" in U && t(7, c = U.elem_classes), "variant" in U && t(8, h = U.variant), "border_mode" in U && t(9, d = U.border_mode), "padding" in U && t(10, f = U.padding), "type" in U && t(28, m = U.type), "test_id" in U && t(11, p = U.test_id), "explicit_call" in U && t(12, v = U.explicit_call), "container" in U && t(13, b = U.container), "visible" in U && t(14, E = U.visible), "allow_overflow" in U && t(15, y = U.allow_overflow), "overflow_behavior" in U && t(16, T = U.overflow_behavior), "scale" in U && t(17, A = U.scale), "min_width" in U && t(18, k = U.min_width), "flex" in U && t(1, w = U.flex), "resizable" in U && t(19, L = U.resizable), "rtl" in U && t(20, I = U.rtl), "fullscreen" in U && t(0, R = U.fullscreen), "$$scope" in U && t(30, r = U.$$scope); + }, n.$$.update = () => { + n.$$.dirty[0] & /*fullscreen, old_fullscreen, element*/ + 538968065 && R !== O && (t(29, O = R), R ? (t(24, K = z.getBoundingClientRect()), t(22, N = z.offsetHeight), t(23, X = z.offsetWidth), window.addEventListener("keydown", Z)) : (t(24, K = null), window.removeEventListener("keydown", Z))), n.$$.dirty[0] & /*visible*/ + 16384 && (E || t(1, w = !1)); + }, [ + R, + w, + s, + a, + o, + l, + u, + c, + h, + d, + f, + p, + v, + b, + E, + y, + T, + A, + k, + L, + I, + z, + N, + X, + K, + ie, + Q, + H, + m, + O, + r, + i, + Y + ]; +} +class by extends sy { + constructor(e) { + super(), dy( + this, + e, + _y, + yy, + gy, + { + height: 2, + min_height: 3, + max_height: 4, + width: 5, + elem_id: 6, + elem_classes: 7, + variant: 8, + border_mode: 9, + padding: 10, + type: 28, + test_id: 11, + explicit_call: 12, + container: 13, + visible: 14, + allow_overflow: 15, + overflow_behavior: 16, + scale: 17, + min_width: 18, + flex: 1, + resizable: 19, + rtl: 20, + fullscreen: 0 + }, + null, + [-1, -1] + ); + } +} +class u0 { + // The + prefix indicates that these fields aren't writeable + // Lexer holding the input string. + // Start offset, zero-based inclusive. + // End offset, zero-based exclusive. + constructor(e, t, i) { + this.lexer = void 0, this.start = void 0, this.end = void 0, this.lexer = e, this.start = t, this.end = i; + } + /** + * Merges two `SourceLocation`s from location providers, given they are + * provided in order of appearance. + * - Returns the first one's location if only the first is provided. + * - Returns a merged range of the first and the last if both are provided + * and their lexers match. + * - Otherwise, returns null. + */ + static range(e, t) { + return t ? !e || !e.loc || !t.loc || e.loc.lexer !== t.loc.lexer ? null : new u0(e.loc.lexer, e.loc.start, t.loc.end) : e && e.loc; + } +} +class c0 { + // don't expand the token + // used in \noexpand + constructor(e, t) { + this.text = void 0, this.loc = void 0, this.noexpand = void 0, this.treatAsRelax = void 0, this.text = e, this.loc = t; + } + /** + * Given a pair of tokens (this and endToken), compute a `Token` encompassing + * the whole input range enclosed by these two. + */ + range(e, t) { + return new c0(t, u0.range(this, e)); + } +} +class ge { + // Error start position based on passed-in Token or ParseNode. + // Length of affected text based on passed-in Token or ParseNode. + // The underlying error message without any context added. + constructor(e, t) { + this.name = void 0, this.position = void 0, this.length = void 0, this.rawMessage = void 0; + var i = "KaTeX parse error: " + e, r, s, a = t && t.loc; + if (a && a.start <= a.end) { + var o = a.lexer.input; + r = a.start, s = a.end, r === o.length ? i += " at end of input: " : i += " at position " + (r + 1) + ": "; + var l = o.slice(r, s).replace(/[^]/g, "$&̲"), u; + r > 15 ? u = "…" + o.slice(r - 15, r) : u = o.slice(0, r); + var c; + s + 15 < o.length ? c = o.slice(s, s + 15) + "…" : c = o.slice(s), i += u + l + c; + } + var h = new Error(i); + return h.name = "ParseError", h.__proto__ = ge.prototype, h.position = r, r != null && s != null && (h.length = s - r), h.rawMessage = e, h; + } +} +ge.prototype.__proto__ = Error.prototype; +var Ey = function(e, t) { + return e.indexOf(t) !== -1; +}, Sy = function(e, t) { + return e === void 0 ? t : e; +}, Ty = /([A-Z])/g, xy = function(e) { + return e.replace(Ty, "-$1").toLowerCase(); +}, Ay = { + "&": "&", + ">": ">", + "<": "<", + '"': """, + "'": "'" +}, Dy = /[&><"']/g; +function wy(n) { + return String(n).replace(Dy, (e) => Ay[e]); +} +var qf = function n(e) { + return e.type === "ordgroup" || e.type === "color" ? e.body.length === 1 ? n(e.body[0]) : e : e.type === "font" ? n(e.body) : e; +}, ky = function(e) { + var t = qf(e); + return t.type === "mathord" || t.type === "textord" || t.type === "atom"; +}, Ly = function(e) { + if (!e) + throw new Error("Expected non-null, but got " + String(e)); + return e; +}, Iy = function(e) { + var t = /^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e); + return t ? t[2] !== ":" || !/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1]) ? null : t[1].toLowerCase() : "_relative"; +}, _e = { + contains: Ey, + deflt: Sy, + escape: wy, + hyphenate: xy, + getBaseElem: qf, + isCharacterBox: ky, + protocolFromUrl: Iy +}; +class Dr { + constructor(e, t, i) { + this.id = void 0, this.size = void 0, this.cramped = void 0, this.id = e, this.size = t, this.cramped = i; + } + /** + * Get the style of a superscript given a base in the current style. + */ + sup() { + return Gi[Ry[this.id]]; + } + /** + * Get the style of a subscript given a base in the current style. + */ + sub() { + return Gi[Cy[this.id]]; + } + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + fracNum() { + return Gi[Fy[this.id]]; + } + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + fracDen() { + return Gi[Py[this.id]]; + } + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + cramp() { + return Gi[My[this.id]]; + } + /** + * Get a text or display version of this style. + */ + text() { + return Gi[Oy[this.id]]; + } + /** + * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + isTight() { + return this.size >= 2; + } +} +var h0 = 0, Ia = 1, yn = 2, vr = 3, os = 4, mi = 5, xn = 6, zt = 7, Gi = [new Dr(h0, 0, !1), new Dr(Ia, 0, !0), new Dr(yn, 1, !1), new Dr(vr, 1, !0), new Dr(os, 2, !1), new Dr(mi, 2, !0), new Dr(xn, 3, !1), new Dr(zt, 3, !0)], Ry = [os, mi, os, mi, xn, zt, xn, zt], Cy = [mi, mi, mi, mi, zt, zt, zt, zt], Fy = [yn, vr, os, mi, xn, zt, xn, zt], Py = [vr, vr, mi, mi, zt, zt, zt, zt], My = [Ia, Ia, vr, vr, mi, mi, zt, zt], Oy = [h0, Ia, yn, vr, yn, vr, yn, vr], Te = { + DISPLAY: Gi[h0], + TEXT: Gi[yn], + SCRIPT: Gi[os], + SCRIPTSCRIPT: Gi[xn] +}, Dl = [{ + // Latin characters beyond the Latin-1 characters we have metrics for. + // Needed for Czech, Hungarian and Turkish text, for example. + name: "latin", + blocks: [ + [256, 591], + // Latin Extended-A and Latin Extended-B + [768, 879] + // Combining Diacritical marks + ] +}, { + // The Cyrillic script used by Russian and related languages. + // A Cyrillic subset used to be supported as explicitly defined + // symbols in symbols.js + name: "cyrillic", + blocks: [[1024, 1279]] +}, { + // Armenian + name: "armenian", + blocks: [[1328, 1423]] +}, { + // The Brahmic scripts of South and Southeast Asia + // Devanagari (0900–097F) + // Bengali (0980–09FF) + // Gurmukhi (0A00–0A7F) + // Gujarati (0A80–0AFF) + // Oriya (0B00–0B7F) + // Tamil (0B80–0BFF) + // Telugu (0C00–0C7F) + // Kannada (0C80–0CFF) + // Malayalam (0D00–0D7F) + // Sinhala (0D80–0DFF) + // Thai (0E00–0E7F) + // Lao (0E80–0EFF) + // Tibetan (0F00–0FFF) + // Myanmar (1000–109F) + name: "brahmic", + blocks: [[2304, 4255]] +}, { + name: "georgian", + blocks: [[4256, 4351]] +}, { + // Chinese and Japanese. + // The "k" in cjk is for Korean, but we've separated Korean out + name: "cjk", + blocks: [ + [12288, 12543], + // CJK symbols and punctuation, Hiragana, Katakana + [19968, 40879], + // CJK ideograms + [65280, 65376] + // Fullwidth punctuation + // TODO: add halfwidth Katakana and Romanji glyphs + ] +}, { + // Korean + name: "hangul", + blocks: [[44032, 55215]] +}]; +function $y(n) { + for (var e = 0; e < Dl.length; e++) + for (var t = Dl[e], i = 0; i < t.blocks.length; i++) { + var r = t.blocks[i]; + if (n >= r[0] && n <= r[1]) + return t.name; + } + return null; +} +var fa = []; +Dl.forEach((n) => n.blocks.forEach((e) => fa.push(...e))); +function By(n) { + for (var e = 0; e < fa.length; e += 2) + if (n >= fa[e] && n <= fa[e + 1]) + return !0; + return !1; +} +var on = 80, Ny = function(e, t) { + return "M95," + (622 + e + t) + ` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l` + e / 2.075 + " -" + e + ` +c5.3,-9.3,12,-14,20,-14 +H400000v` + (40 + e) + `H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M` + (834 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, Uy = function(e, t) { + return "M263," + (601 + e + t) + `c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l` + e / 2.084 + " -" + e + ` +c4.7,-7.3,11,-11,19,-11 +H40000v` + (40 + e) + `H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, Gy = function(e, t) { + return "M983 " + (10 + e + t) + ` +l` + e / 3.13 + " -" + e + ` +c4,-6.7,10,-10,18,-10 H400000v` + (40 + e) + ` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, zy = function(e, t) { + return "M424," + (2398 + e + t) + ` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l` + e / 4.223 + " -" + e + `c4,-6.7,10,-10,18,-10 H400000 +v` + (40 + e) + `H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M` + (1001 + e) + " " + t + ` +h400000v` + (40 + e) + "h-400000z"; +}, qy = function(e, t) { + return "M473," + (2713 + e + t) + ` +c339.3,-1799.3,509.3,-2700,510,-2702 l` + e / 5.298 + " -" + e + ` +c3.3,-7.3,9.3,-11,18,-11 H400000v` + (40 + e) + `H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "H1017.7z"; +}, Hy = function(e) { + var t = e / 2; + return "M400000 " + e + " H0 L" + t + " 0 l65 45 L145 " + (e - 80) + " H400000z"; +}, Vy = function(e, t, i) { + var r = i - 54 - t - e; + return "M702 " + (e + t) + "H400000" + (40 + e) + ` +H742v` + r + `l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 ` + t + "H400000v" + (40 + e) + "H742z"; +}, Ky = function(e, t, i) { + t = 1e3 * t; + var r = ""; + switch (e) { + case "sqrtMain": + r = Ny(t, on); + break; + case "sqrtSize1": + r = Uy(t, on); + break; + case "sqrtSize2": + r = Gy(t, on); + break; + case "sqrtSize3": + r = zy(t, on); + break; + case "sqrtSize4": + r = qy(t, on); + break; + case "sqrtTall": + r = Vy(t, on, i); + } + return r; +}, Yy = function(e, t) { + switch (e) { + case "⎜": + return "M291 0 H417 V" + t + " H291z M291 0 H417 V" + t + " H291z"; + case "∣": + return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z"; + case "∥": + return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z" + ("M367 0 H410 V" + t + " H367z M367 0 H410 V" + t + " H367z"); + case "⎟": + return "M457 0 H583 V" + t + " H457z M457 0 H583 V" + t + " H457z"; + case "⎢": + return "M319 0 H403 V" + t + " H319z M319 0 H403 V" + t + " H319z"; + case "⎥": + return "M263 0 H347 V" + t + " H263z M263 0 H347 V" + t + " H263z"; + case "⎪": + return "M384 0 H504 V" + t + " H384z M384 0 H504 V" + t + " H384z"; + case "⏐": + return "M312 0 H355 V" + t + " H312z M312 0 H355 V" + t + " H312z"; + case "‖": + return "M257 0 H300 V" + t + " H257z M257 0 H300 V" + t + " H257z" + ("M478 0 H521 V" + t + " H478z M478 0 H521 V" + t + " H478z"); + default: + return ""; + } +}, wc = { + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + doubleleftarrow: `M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`, + // doublerightarrow is from glyph U+21D2 in font KaTeX Main + doublerightarrow: `M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`, + // leftarrow is from glyph U+2190 in font KaTeX Main + leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`, + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`, + leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`, + // overgroup is from the MnSymbol package (public domain) + leftgroup: `M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`, + leftgroupunder: `M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`, + // Harpoons are from glyph U+21BD in font KaTeX Main + leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`, + leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`, + leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`, + leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`, + // hook is from glyph U+21A9 in font KaTeX Main + lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`, + leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`, + leftmapsto: `M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`, + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`, + longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`, + midbrace: `M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`, + midbraceunder: `M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`, + oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`, + oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`, + oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`, + oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`, + rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`, + rightbrace: `M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`, + rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`, + rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`, + rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`, + rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`, + rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`, + rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`, + rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`, + righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`, + rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`, + rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`, + // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular + twoheadleftarrow: `M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`, + twoheadrightarrow: `M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`, + // tilde1 is a modified version of a glyph from the MnSymbol package + tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`, + // ditto tilde2, tilde3, & tilde4 + tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`, + tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`, + tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`, + // vec is from glyph U+20D7 in font KaTeX Main + vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`, + // widehat1 is a modified version of a glyph from the MnSymbol package + widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`, + // ditto widehat2, widehat3, & widehat4 + widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + // widecheck paths are all inverted versions of widehat + widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`, + widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + // The next ten paths support reaction arrows from the mhchem package. + // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX + // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main + baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`, + // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main + rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`, + // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end. + // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em + baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`, + rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`, + shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`, + shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z` +}, Wy = function(e, t) { + switch (e) { + case "lbrack": + return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v` + t + " v1759 h84z"; + case "rbrack": + return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v` + t + " v1759 h84z"; + case "vert": + return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + " v585 h43z"; + case "doublevert": + return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + ` v585 h43z +M367 15 v585 v` + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v` + t + " v585 h43z"; + case "lfloor": + return "M319 602 V0 H403 V602 v" + t + ` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v` + t + " v1715 H319z"; + case "rfloor": + return "M319 602 V0 H403 V602 v" + t + ` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v` + t + " v1715 H319z"; + case "lceil": + return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v602 h84z +M403 1759 V0 H319 V1759 v` + t + " v602 h84z"; + case "rceil": + return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v602 h84z +M347 1759 V0 h-84 V1759 v` + t + " v602 h84z"; + case "lparen": + return `M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,` + (t + 84) + `c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-` + (t + 92) + `c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`; + case "rparen": + return `M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,` + (t + 9) + ` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-` + (t + 144) + `c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`; + default: + throw new Error("Unknown stretchy delimiter."); + } +}; +class us { + // HtmlDomNode + // Never used; needed for satisfying interface. + constructor(e) { + this.children = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.children = e, this.classes = [], this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = {}; + } + hasClass(e) { + return _e.contains(this.classes, e); + } + /** Convert the fragment into a node. */ + toNode() { + for (var e = document.createDocumentFragment(), t = 0; t < this.children.length; t++) + e.appendChild(this.children[t].toNode()); + return e; + } + /** Convert the fragment into HTML markup. */ + toMarkup() { + for (var e = "", t = 0; t < this.children.length; t++) + e += this.children[t].toMarkup(); + return e; + } + /** + * Converts the math node into a string, similar to innerText. Applies to + * MathDomNode's only. + */ + toText() { + var e = (t) => t.toText(); + return this.children.map(e).join(""); + } +} +var pr = { + "AMS-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.68889, 0, 0, 0.72222], + 66: [0, 0.68889, 0, 0, 0.66667], + 67: [0, 0.68889, 0, 0, 0.72222], + 68: [0, 0.68889, 0, 0, 0.72222], + 69: [0, 0.68889, 0, 0, 0.66667], + 70: [0, 0.68889, 0, 0, 0.61111], + 71: [0, 0.68889, 0, 0, 0.77778], + 72: [0, 0.68889, 0, 0, 0.77778], + 73: [0, 0.68889, 0, 0, 0.38889], + 74: [0.16667, 0.68889, 0, 0, 0.5], + 75: [0, 0.68889, 0, 0, 0.77778], + 76: [0, 0.68889, 0, 0, 0.66667], + 77: [0, 0.68889, 0, 0, 0.94445], + 78: [0, 0.68889, 0, 0, 0.72222], + 79: [0.16667, 0.68889, 0, 0, 0.77778], + 80: [0, 0.68889, 0, 0, 0.61111], + 81: [0.16667, 0.68889, 0, 0, 0.77778], + 82: [0, 0.68889, 0, 0, 0.72222], + 83: [0, 0.68889, 0, 0, 0.55556], + 84: [0, 0.68889, 0, 0, 0.66667], + 85: [0, 0.68889, 0, 0, 0.72222], + 86: [0, 0.68889, 0, 0, 0.72222], + 87: [0, 0.68889, 0, 0, 1], + 88: [0, 0.68889, 0, 0, 0.72222], + 89: [0, 0.68889, 0, 0, 0.72222], + 90: [0, 0.68889, 0, 0, 0.66667], + 107: [0, 0.68889, 0, 0, 0.55556], + 160: [0, 0, 0, 0, 0.25], + 165: [0, 0.675, 0.025, 0, 0.75], + 174: [0.15559, 0.69224, 0, 0, 0.94666], + 240: [0, 0.68889, 0, 0, 0.55556], + 295: [0, 0.68889, 0, 0, 0.54028], + 710: [0, 0.825, 0, 0, 2.33334], + 732: [0, 0.9, 0, 0, 2.33334], + 770: [0, 0.825, 0, 0, 2.33334], + 771: [0, 0.9, 0, 0, 2.33334], + 989: [0.08167, 0.58167, 0, 0, 0.77778], + 1008: [0, 0.43056, 0.04028, 0, 0.66667], + 8245: [0, 0.54986, 0, 0, 0.275], + 8463: [0, 0.68889, 0, 0, 0.54028], + 8487: [0, 0.68889, 0, 0, 0.72222], + 8498: [0, 0.68889, 0, 0, 0.55556], + 8502: [0, 0.68889, 0, 0, 0.66667], + 8503: [0, 0.68889, 0, 0, 0.44445], + 8504: [0, 0.68889, 0, 0, 0.66667], + 8513: [0, 0.68889, 0, 0, 0.63889], + 8592: [-0.03598, 0.46402, 0, 0, 0.5], + 8594: [-0.03598, 0.46402, 0, 0, 0.5], + 8602: [-0.13313, 0.36687, 0, 0, 1], + 8603: [-0.13313, 0.36687, 0, 0, 1], + 8606: [0.01354, 0.52239, 0, 0, 1], + 8608: [0.01354, 0.52239, 0, 0, 1], + 8610: [0.01354, 0.52239, 0, 0, 1.11111], + 8611: [0.01354, 0.52239, 0, 0, 1.11111], + 8619: [0, 0.54986, 0, 0, 1], + 8620: [0, 0.54986, 0, 0, 1], + 8621: [-0.13313, 0.37788, 0, 0, 1.38889], + 8622: [-0.13313, 0.36687, 0, 0, 1], + 8624: [0, 0.69224, 0, 0, 0.5], + 8625: [0, 0.69224, 0, 0, 0.5], + 8630: [0, 0.43056, 0, 0, 1], + 8631: [0, 0.43056, 0, 0, 1], + 8634: [0.08198, 0.58198, 0, 0, 0.77778], + 8635: [0.08198, 0.58198, 0, 0, 0.77778], + 8638: [0.19444, 0.69224, 0, 0, 0.41667], + 8639: [0.19444, 0.69224, 0, 0, 0.41667], + 8642: [0.19444, 0.69224, 0, 0, 0.41667], + 8643: [0.19444, 0.69224, 0, 0, 0.41667], + 8644: [0.1808, 0.675, 0, 0, 1], + 8646: [0.1808, 0.675, 0, 0, 1], + 8647: [0.1808, 0.675, 0, 0, 1], + 8648: [0.19444, 0.69224, 0, 0, 0.83334], + 8649: [0.1808, 0.675, 0, 0, 1], + 8650: [0.19444, 0.69224, 0, 0, 0.83334], + 8651: [0.01354, 0.52239, 0, 0, 1], + 8652: [0.01354, 0.52239, 0, 0, 1], + 8653: [-0.13313, 0.36687, 0, 0, 1], + 8654: [-0.13313, 0.36687, 0, 0, 1], + 8655: [-0.13313, 0.36687, 0, 0, 1], + 8666: [0.13667, 0.63667, 0, 0, 1], + 8667: [0.13667, 0.63667, 0, 0, 1], + 8669: [-0.13313, 0.37788, 0, 0, 1], + 8672: [-0.064, 0.437, 0, 0, 1.334], + 8674: [-0.064, 0.437, 0, 0, 1.334], + 8705: [0, 0.825, 0, 0, 0.5], + 8708: [0, 0.68889, 0, 0, 0.55556], + 8709: [0.08167, 0.58167, 0, 0, 0.77778], + 8717: [0, 0.43056, 0, 0, 0.42917], + 8722: [-0.03598, 0.46402, 0, 0, 0.5], + 8724: [0.08198, 0.69224, 0, 0, 0.77778], + 8726: [0.08167, 0.58167, 0, 0, 0.77778], + 8733: [0, 0.69224, 0, 0, 0.77778], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8737: [0, 0.69224, 0, 0, 0.72222], + 8738: [0.03517, 0.52239, 0, 0, 0.72222], + 8739: [0.08167, 0.58167, 0, 0, 0.22222], + 8740: [0.25142, 0.74111, 0, 0, 0.27778], + 8741: [0.08167, 0.58167, 0, 0, 0.38889], + 8742: [0.25142, 0.74111, 0, 0, 0.5], + 8756: [0, 0.69224, 0, 0, 0.66667], + 8757: [0, 0.69224, 0, 0, 0.66667], + 8764: [-0.13313, 0.36687, 0, 0, 0.77778], + 8765: [-0.13313, 0.37788, 0, 0, 0.77778], + 8769: [-0.13313, 0.36687, 0, 0, 0.77778], + 8770: [-0.03625, 0.46375, 0, 0, 0.77778], + 8774: [0.30274, 0.79383, 0, 0, 0.77778], + 8776: [-0.01688, 0.48312, 0, 0, 0.77778], + 8778: [0.08167, 0.58167, 0, 0, 0.77778], + 8782: [0.06062, 0.54986, 0, 0, 0.77778], + 8783: [0.06062, 0.54986, 0, 0, 0.77778], + 8785: [0.08198, 0.58198, 0, 0, 0.77778], + 8786: [0.08198, 0.58198, 0, 0, 0.77778], + 8787: [0.08198, 0.58198, 0, 0, 0.77778], + 8790: [0, 0.69224, 0, 0, 0.77778], + 8791: [0.22958, 0.72958, 0, 0, 0.77778], + 8796: [0.08198, 0.91667, 0, 0, 0.77778], + 8806: [0.25583, 0.75583, 0, 0, 0.77778], + 8807: [0.25583, 0.75583, 0, 0, 0.77778], + 8808: [0.25142, 0.75726, 0, 0, 0.77778], + 8809: [0.25142, 0.75726, 0, 0, 0.77778], + 8812: [0.25583, 0.75583, 0, 0, 0.5], + 8814: [0.20576, 0.70576, 0, 0, 0.77778], + 8815: [0.20576, 0.70576, 0, 0, 0.77778], + 8816: [0.30274, 0.79383, 0, 0, 0.77778], + 8817: [0.30274, 0.79383, 0, 0, 0.77778], + 8818: [0.22958, 0.72958, 0, 0, 0.77778], + 8819: [0.22958, 0.72958, 0, 0, 0.77778], + 8822: [0.1808, 0.675, 0, 0, 0.77778], + 8823: [0.1808, 0.675, 0, 0, 0.77778], + 8828: [0.13667, 0.63667, 0, 0, 0.77778], + 8829: [0.13667, 0.63667, 0, 0, 0.77778], + 8830: [0.22958, 0.72958, 0, 0, 0.77778], + 8831: [0.22958, 0.72958, 0, 0, 0.77778], + 8832: [0.20576, 0.70576, 0, 0, 0.77778], + 8833: [0.20576, 0.70576, 0, 0, 0.77778], + 8840: [0.30274, 0.79383, 0, 0, 0.77778], + 8841: [0.30274, 0.79383, 0, 0, 0.77778], + 8842: [0.13597, 0.63597, 0, 0, 0.77778], + 8843: [0.13597, 0.63597, 0, 0, 0.77778], + 8847: [0.03517, 0.54986, 0, 0, 0.77778], + 8848: [0.03517, 0.54986, 0, 0, 0.77778], + 8858: [0.08198, 0.58198, 0, 0, 0.77778], + 8859: [0.08198, 0.58198, 0, 0, 0.77778], + 8861: [0.08198, 0.58198, 0, 0, 0.77778], + 8862: [0, 0.675, 0, 0, 0.77778], + 8863: [0, 0.675, 0, 0, 0.77778], + 8864: [0, 0.675, 0, 0, 0.77778], + 8865: [0, 0.675, 0, 0, 0.77778], + 8872: [0, 0.69224, 0, 0, 0.61111], + 8873: [0, 0.69224, 0, 0, 0.72222], + 8874: [0, 0.69224, 0, 0, 0.88889], + 8876: [0, 0.68889, 0, 0, 0.61111], + 8877: [0, 0.68889, 0, 0, 0.61111], + 8878: [0, 0.68889, 0, 0, 0.72222], + 8879: [0, 0.68889, 0, 0, 0.72222], + 8882: [0.03517, 0.54986, 0, 0, 0.77778], + 8883: [0.03517, 0.54986, 0, 0, 0.77778], + 8884: [0.13667, 0.63667, 0, 0, 0.77778], + 8885: [0.13667, 0.63667, 0, 0, 0.77778], + 8888: [0, 0.54986, 0, 0, 1.11111], + 8890: [0.19444, 0.43056, 0, 0, 0.55556], + 8891: [0.19444, 0.69224, 0, 0, 0.61111], + 8892: [0.19444, 0.69224, 0, 0, 0.61111], + 8901: [0, 0.54986, 0, 0, 0.27778], + 8903: [0.08167, 0.58167, 0, 0, 0.77778], + 8905: [0.08167, 0.58167, 0, 0, 0.77778], + 8906: [0.08167, 0.58167, 0, 0, 0.77778], + 8907: [0, 0.69224, 0, 0, 0.77778], + 8908: [0, 0.69224, 0, 0, 0.77778], + 8909: [-0.03598, 0.46402, 0, 0, 0.77778], + 8910: [0, 0.54986, 0, 0, 0.76042], + 8911: [0, 0.54986, 0, 0, 0.76042], + 8912: [0.03517, 0.54986, 0, 0, 0.77778], + 8913: [0.03517, 0.54986, 0, 0, 0.77778], + 8914: [0, 0.54986, 0, 0, 0.66667], + 8915: [0, 0.54986, 0, 0, 0.66667], + 8916: [0, 0.69224, 0, 0, 0.66667], + 8918: [0.0391, 0.5391, 0, 0, 0.77778], + 8919: [0.0391, 0.5391, 0, 0, 0.77778], + 8920: [0.03517, 0.54986, 0, 0, 1.33334], + 8921: [0.03517, 0.54986, 0, 0, 1.33334], + 8922: [0.38569, 0.88569, 0, 0, 0.77778], + 8923: [0.38569, 0.88569, 0, 0, 0.77778], + 8926: [0.13667, 0.63667, 0, 0, 0.77778], + 8927: [0.13667, 0.63667, 0, 0, 0.77778], + 8928: [0.30274, 0.79383, 0, 0, 0.77778], + 8929: [0.30274, 0.79383, 0, 0, 0.77778], + 8934: [0.23222, 0.74111, 0, 0, 0.77778], + 8935: [0.23222, 0.74111, 0, 0, 0.77778], + 8936: [0.23222, 0.74111, 0, 0, 0.77778], + 8937: [0.23222, 0.74111, 0, 0, 0.77778], + 8938: [0.20576, 0.70576, 0, 0, 0.77778], + 8939: [0.20576, 0.70576, 0, 0, 0.77778], + 8940: [0.30274, 0.79383, 0, 0, 0.77778], + 8941: [0.30274, 0.79383, 0, 0, 0.77778], + 8994: [0.19444, 0.69224, 0, 0, 0.77778], + 8995: [0.19444, 0.69224, 0, 0, 0.77778], + 9416: [0.15559, 0.69224, 0, 0, 0.90222], + 9484: [0, 0.69224, 0, 0, 0.5], + 9488: [0, 0.69224, 0, 0, 0.5], + 9492: [0, 0.37788, 0, 0, 0.5], + 9496: [0, 0.37788, 0, 0, 0.5], + 9585: [0.19444, 0.68889, 0, 0, 0.88889], + 9586: [0.19444, 0.74111, 0, 0, 0.88889], + 9632: [0, 0.675, 0, 0, 0.77778], + 9633: [0, 0.675, 0, 0, 0.77778], + 9650: [0, 0.54986, 0, 0, 0.72222], + 9651: [0, 0.54986, 0, 0, 0.72222], + 9654: [0.03517, 0.54986, 0, 0, 0.77778], + 9660: [0, 0.54986, 0, 0, 0.72222], + 9661: [0, 0.54986, 0, 0, 0.72222], + 9664: [0.03517, 0.54986, 0, 0, 0.77778], + 9674: [0.11111, 0.69224, 0, 0, 0.66667], + 9733: [0.19444, 0.69224, 0, 0, 0.94445], + 10003: [0, 0.69224, 0, 0, 0.83334], + 10016: [0, 0.69224, 0, 0, 0.83334], + 10731: [0.11111, 0.69224, 0, 0, 0.66667], + 10846: [0.19444, 0.75583, 0, 0, 0.61111], + 10877: [0.13667, 0.63667, 0, 0, 0.77778], + 10878: [0.13667, 0.63667, 0, 0, 0.77778], + 10885: [0.25583, 0.75583, 0, 0, 0.77778], + 10886: [0.25583, 0.75583, 0, 0, 0.77778], + 10887: [0.13597, 0.63597, 0, 0, 0.77778], + 10888: [0.13597, 0.63597, 0, 0, 0.77778], + 10889: [0.26167, 0.75726, 0, 0, 0.77778], + 10890: [0.26167, 0.75726, 0, 0, 0.77778], + 10891: [0.48256, 0.98256, 0, 0, 0.77778], + 10892: [0.48256, 0.98256, 0, 0, 0.77778], + 10901: [0.13667, 0.63667, 0, 0, 0.77778], + 10902: [0.13667, 0.63667, 0, 0, 0.77778], + 10933: [0.25142, 0.75726, 0, 0, 0.77778], + 10934: [0.25142, 0.75726, 0, 0, 0.77778], + 10935: [0.26167, 0.75726, 0, 0, 0.77778], + 10936: [0.26167, 0.75726, 0, 0, 0.77778], + 10937: [0.26167, 0.75726, 0, 0, 0.77778], + 10938: [0.26167, 0.75726, 0, 0, 0.77778], + 10949: [0.25583, 0.75583, 0, 0, 0.77778], + 10950: [0.25583, 0.75583, 0, 0, 0.77778], + 10955: [0.28481, 0.79383, 0, 0, 0.77778], + 10956: [0.28481, 0.79383, 0, 0, 0.77778], + 57350: [0.08167, 0.58167, 0, 0, 0.22222], + 57351: [0.08167, 0.58167, 0, 0, 0.38889], + 57352: [0.08167, 0.58167, 0, 0, 0.77778], + 57353: [0, 0.43056, 0.04028, 0, 0.66667], + 57356: [0.25142, 0.75726, 0, 0, 0.77778], + 57357: [0.25142, 0.75726, 0, 0, 0.77778], + 57358: [0.41951, 0.91951, 0, 0, 0.77778], + 57359: [0.30274, 0.79383, 0, 0, 0.77778], + 57360: [0.30274, 0.79383, 0, 0, 0.77778], + 57361: [0.41951, 0.91951, 0, 0, 0.77778], + 57366: [0.25142, 0.75726, 0, 0, 0.77778], + 57367: [0.25142, 0.75726, 0, 0, 0.77778], + 57368: [0.25142, 0.75726, 0, 0, 0.77778], + 57369: [0.25142, 0.75726, 0, 0, 0.77778], + 57370: [0.13597, 0.63597, 0, 0, 0.77778], + 57371: [0.13597, 0.63597, 0, 0, 0.77778] + }, + "Caligraphic-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.68333, 0, 0.19445, 0.79847], + 66: [0, 0.68333, 0.03041, 0.13889, 0.65681], + 67: [0, 0.68333, 0.05834, 0.13889, 0.52653], + 68: [0, 0.68333, 0.02778, 0.08334, 0.77139], + 69: [0, 0.68333, 0.08944, 0.11111, 0.52778], + 70: [0, 0.68333, 0.09931, 0.11111, 0.71875], + 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], + 72: [0, 0.68333, 965e-5, 0.11111, 0.84452], + 73: [0, 0.68333, 0.07382, 0, 0.54452], + 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], + 75: [0, 0.68333, 0.01445, 0.05556, 0.76195], + 76: [0, 0.68333, 0, 0.13889, 0.68972], + 77: [0, 0.68333, 0, 0.13889, 1.2009], + 78: [0, 0.68333, 0.14736, 0.08334, 0.82049], + 79: [0, 0.68333, 0.02778, 0.11111, 0.79611], + 80: [0, 0.68333, 0.08222, 0.08334, 0.69556], + 81: [0.09722, 0.68333, 0, 0.11111, 0.81667], + 82: [0, 0.68333, 0, 0.08334, 0.8475], + 83: [0, 0.68333, 0.075, 0.13889, 0.60556], + 84: [0, 0.68333, 0.25417, 0, 0.54464], + 85: [0, 0.68333, 0.09931, 0.08334, 0.62583], + 86: [0, 0.68333, 0.08222, 0, 0.61278], + 87: [0, 0.68333, 0.08222, 0.08334, 0.98778], + 88: [0, 0.68333, 0.14643, 0.13889, 0.7133], + 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], + 90: [0, 0.68333, 0.07944, 0.13889, 0.72473], + 160: [0, 0, 0, 0, 0.25] + }, + "Fraktur-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69141, 0, 0, 0.29574], + 34: [0, 0.69141, 0, 0, 0.21471], + 38: [0, 0.69141, 0, 0, 0.73786], + 39: [0, 0.69141, 0, 0, 0.21201], + 40: [0.24982, 0.74947, 0, 0, 0.38865], + 41: [0.24982, 0.74947, 0, 0, 0.38865], + 42: [0, 0.62119, 0, 0, 0.27764], + 43: [0.08319, 0.58283, 0, 0, 0.75623], + 44: [0, 0.10803, 0, 0, 0.27764], + 45: [0.08319, 0.58283, 0, 0, 0.75623], + 46: [0, 0.10803, 0, 0, 0.27764], + 47: [0.24982, 0.74947, 0, 0, 0.50181], + 48: [0, 0.47534, 0, 0, 0.50181], + 49: [0, 0.47534, 0, 0, 0.50181], + 50: [0, 0.47534, 0, 0, 0.50181], + 51: [0.18906, 0.47534, 0, 0, 0.50181], + 52: [0.18906, 0.47534, 0, 0, 0.50181], + 53: [0.18906, 0.47534, 0, 0, 0.50181], + 54: [0, 0.69141, 0, 0, 0.50181], + 55: [0.18906, 0.47534, 0, 0, 0.50181], + 56: [0, 0.69141, 0, 0, 0.50181], + 57: [0.18906, 0.47534, 0, 0, 0.50181], + 58: [0, 0.47534, 0, 0, 0.21606], + 59: [0.12604, 0.47534, 0, 0, 0.21606], + 61: [-0.13099, 0.36866, 0, 0, 0.75623], + 63: [0, 0.69141, 0, 0, 0.36245], + 65: [0, 0.69141, 0, 0, 0.7176], + 66: [0, 0.69141, 0, 0, 0.88397], + 67: [0, 0.69141, 0, 0, 0.61254], + 68: [0, 0.69141, 0, 0, 0.83158], + 69: [0, 0.69141, 0, 0, 0.66278], + 70: [0.12604, 0.69141, 0, 0, 0.61119], + 71: [0, 0.69141, 0, 0, 0.78539], + 72: [0.06302, 0.69141, 0, 0, 0.7203], + 73: [0, 0.69141, 0, 0, 0.55448], + 74: [0.12604, 0.69141, 0, 0, 0.55231], + 75: [0, 0.69141, 0, 0, 0.66845], + 76: [0, 0.69141, 0, 0, 0.66602], + 77: [0, 0.69141, 0, 0, 1.04953], + 78: [0, 0.69141, 0, 0, 0.83212], + 79: [0, 0.69141, 0, 0, 0.82699], + 80: [0.18906, 0.69141, 0, 0, 0.82753], + 81: [0.03781, 0.69141, 0, 0, 0.82699], + 82: [0, 0.69141, 0, 0, 0.82807], + 83: [0, 0.69141, 0, 0, 0.82861], + 84: [0, 0.69141, 0, 0, 0.66899], + 85: [0, 0.69141, 0, 0, 0.64576], + 86: [0, 0.69141, 0, 0, 0.83131], + 87: [0, 0.69141, 0, 0, 1.04602], + 88: [0, 0.69141, 0, 0, 0.71922], + 89: [0.18906, 0.69141, 0, 0, 0.83293], + 90: [0.12604, 0.69141, 0, 0, 0.60201], + 91: [0.24982, 0.74947, 0, 0, 0.27764], + 93: [0.24982, 0.74947, 0, 0, 0.27764], + 94: [0, 0.69141, 0, 0, 0.49965], + 97: [0, 0.47534, 0, 0, 0.50046], + 98: [0, 0.69141, 0, 0, 0.51315], + 99: [0, 0.47534, 0, 0, 0.38946], + 100: [0, 0.62119, 0, 0, 0.49857], + 101: [0, 0.47534, 0, 0, 0.40053], + 102: [0.18906, 0.69141, 0, 0, 0.32626], + 103: [0.18906, 0.47534, 0, 0, 0.5037], + 104: [0.18906, 0.69141, 0, 0, 0.52126], + 105: [0, 0.69141, 0, 0, 0.27899], + 106: [0, 0.69141, 0, 0, 0.28088], + 107: [0, 0.69141, 0, 0, 0.38946], + 108: [0, 0.69141, 0, 0, 0.27953], + 109: [0, 0.47534, 0, 0, 0.76676], + 110: [0, 0.47534, 0, 0, 0.52666], + 111: [0, 0.47534, 0, 0, 0.48885], + 112: [0.18906, 0.52396, 0, 0, 0.50046], + 113: [0.18906, 0.47534, 0, 0, 0.48912], + 114: [0, 0.47534, 0, 0, 0.38919], + 115: [0, 0.47534, 0, 0, 0.44266], + 116: [0, 0.62119, 0, 0, 0.33301], + 117: [0, 0.47534, 0, 0, 0.5172], + 118: [0, 0.52396, 0, 0, 0.5118], + 119: [0, 0.52396, 0, 0, 0.77351], + 120: [0.18906, 0.47534, 0, 0, 0.38865], + 121: [0.18906, 0.47534, 0, 0, 0.49884], + 122: [0.18906, 0.47534, 0, 0, 0.39054], + 160: [0, 0, 0, 0, 0.25], + 8216: [0, 0.69141, 0, 0, 0.21471], + 8217: [0, 0.69141, 0, 0, 0.21471], + 58112: [0, 0.62119, 0, 0, 0.49749], + 58113: [0, 0.62119, 0, 0, 0.4983], + 58114: [0.18906, 0.69141, 0, 0, 0.33328], + 58115: [0.18906, 0.69141, 0, 0, 0.32923], + 58116: [0.18906, 0.47534, 0, 0, 0.50343], + 58117: [0, 0.69141, 0, 0, 0.33301], + 58118: [0, 0.62119, 0, 0, 0.33409], + 58119: [0, 0.47534, 0, 0, 0.50073] + }, + "Main-Bold": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.35], + 34: [0, 0.69444, 0, 0, 0.60278], + 35: [0.19444, 0.69444, 0, 0, 0.95833], + 36: [0.05556, 0.75, 0, 0, 0.575], + 37: [0.05556, 0.75, 0, 0, 0.95833], + 38: [0, 0.69444, 0, 0, 0.89444], + 39: [0, 0.69444, 0, 0, 0.31944], + 40: [0.25, 0.75, 0, 0, 0.44722], + 41: [0.25, 0.75, 0, 0, 0.44722], + 42: [0, 0.75, 0, 0, 0.575], + 43: [0.13333, 0.63333, 0, 0, 0.89444], + 44: [0.19444, 0.15556, 0, 0, 0.31944], + 45: [0, 0.44444, 0, 0, 0.38333], + 46: [0, 0.15556, 0, 0, 0.31944], + 47: [0.25, 0.75, 0, 0, 0.575], + 48: [0, 0.64444, 0, 0, 0.575], + 49: [0, 0.64444, 0, 0, 0.575], + 50: [0, 0.64444, 0, 0, 0.575], + 51: [0, 0.64444, 0, 0, 0.575], + 52: [0, 0.64444, 0, 0, 0.575], + 53: [0, 0.64444, 0, 0, 0.575], + 54: [0, 0.64444, 0, 0, 0.575], + 55: [0, 0.64444, 0, 0, 0.575], + 56: [0, 0.64444, 0, 0, 0.575], + 57: [0, 0.64444, 0, 0, 0.575], + 58: [0, 0.44444, 0, 0, 0.31944], + 59: [0.19444, 0.44444, 0, 0, 0.31944], + 60: [0.08556, 0.58556, 0, 0, 0.89444], + 61: [-0.10889, 0.39111, 0, 0, 0.89444], + 62: [0.08556, 0.58556, 0, 0, 0.89444], + 63: [0, 0.69444, 0, 0, 0.54305], + 64: [0, 0.69444, 0, 0, 0.89444], + 65: [0, 0.68611, 0, 0, 0.86944], + 66: [0, 0.68611, 0, 0, 0.81805], + 67: [0, 0.68611, 0, 0, 0.83055], + 68: [0, 0.68611, 0, 0, 0.88194], + 69: [0, 0.68611, 0, 0, 0.75555], + 70: [0, 0.68611, 0, 0, 0.72361], + 71: [0, 0.68611, 0, 0, 0.90416], + 72: [0, 0.68611, 0, 0, 0.9], + 73: [0, 0.68611, 0, 0, 0.43611], + 74: [0, 0.68611, 0, 0, 0.59444], + 75: [0, 0.68611, 0, 0, 0.90138], + 76: [0, 0.68611, 0, 0, 0.69166], + 77: [0, 0.68611, 0, 0, 1.09166], + 78: [0, 0.68611, 0, 0, 0.9], + 79: [0, 0.68611, 0, 0, 0.86388], + 80: [0, 0.68611, 0, 0, 0.78611], + 81: [0.19444, 0.68611, 0, 0, 0.86388], + 82: [0, 0.68611, 0, 0, 0.8625], + 83: [0, 0.68611, 0, 0, 0.63889], + 84: [0, 0.68611, 0, 0, 0.8], + 85: [0, 0.68611, 0, 0, 0.88472], + 86: [0, 0.68611, 0.01597, 0, 0.86944], + 87: [0, 0.68611, 0.01597, 0, 1.18888], + 88: [0, 0.68611, 0, 0, 0.86944], + 89: [0, 0.68611, 0.02875, 0, 0.86944], + 90: [0, 0.68611, 0, 0, 0.70277], + 91: [0.25, 0.75, 0, 0, 0.31944], + 92: [0.25, 0.75, 0, 0, 0.575], + 93: [0.25, 0.75, 0, 0, 0.31944], + 94: [0, 0.69444, 0, 0, 0.575], + 95: [0.31, 0.13444, 0.03194, 0, 0.575], + 97: [0, 0.44444, 0, 0, 0.55902], + 98: [0, 0.69444, 0, 0, 0.63889], + 99: [0, 0.44444, 0, 0, 0.51111], + 100: [0, 0.69444, 0, 0, 0.63889], + 101: [0, 0.44444, 0, 0, 0.52708], + 102: [0, 0.69444, 0.10903, 0, 0.35139], + 103: [0.19444, 0.44444, 0.01597, 0, 0.575], + 104: [0, 0.69444, 0, 0, 0.63889], + 105: [0, 0.69444, 0, 0, 0.31944], + 106: [0.19444, 0.69444, 0, 0, 0.35139], + 107: [0, 0.69444, 0, 0, 0.60694], + 108: [0, 0.69444, 0, 0, 0.31944], + 109: [0, 0.44444, 0, 0, 0.95833], + 110: [0, 0.44444, 0, 0, 0.63889], + 111: [0, 0.44444, 0, 0, 0.575], + 112: [0.19444, 0.44444, 0, 0, 0.63889], + 113: [0.19444, 0.44444, 0, 0, 0.60694], + 114: [0, 0.44444, 0, 0, 0.47361], + 115: [0, 0.44444, 0, 0, 0.45361], + 116: [0, 0.63492, 0, 0, 0.44722], + 117: [0, 0.44444, 0, 0, 0.63889], + 118: [0, 0.44444, 0.01597, 0, 0.60694], + 119: [0, 0.44444, 0.01597, 0, 0.83055], + 120: [0, 0.44444, 0, 0, 0.60694], + 121: [0.19444, 0.44444, 0.01597, 0, 0.60694], + 122: [0, 0.44444, 0, 0, 0.51111], + 123: [0.25, 0.75, 0, 0, 0.575], + 124: [0.25, 0.75, 0, 0, 0.31944], + 125: [0.25, 0.75, 0, 0, 0.575], + 126: [0.35, 0.34444, 0, 0, 0.575], + 160: [0, 0, 0, 0, 0.25], + 163: [0, 0.69444, 0, 0, 0.86853], + 168: [0, 0.69444, 0, 0, 0.575], + 172: [0, 0.44444, 0, 0, 0.76666], + 176: [0, 0.69444, 0, 0, 0.86944], + 177: [0.13333, 0.63333, 0, 0, 0.89444], + 184: [0.17014, 0, 0, 0, 0.51111], + 198: [0, 0.68611, 0, 0, 1.04166], + 215: [0.13333, 0.63333, 0, 0, 0.89444], + 216: [0.04861, 0.73472, 0, 0, 0.89444], + 223: [0, 0.69444, 0, 0, 0.59722], + 230: [0, 0.44444, 0, 0, 0.83055], + 247: [0.13333, 0.63333, 0, 0, 0.89444], + 248: [0.09722, 0.54167, 0, 0, 0.575], + 305: [0, 0.44444, 0, 0, 0.31944], + 338: [0, 0.68611, 0, 0, 1.16944], + 339: [0, 0.44444, 0, 0, 0.89444], + 567: [0.19444, 0.44444, 0, 0, 0.35139], + 710: [0, 0.69444, 0, 0, 0.575], + 711: [0, 0.63194, 0, 0, 0.575], + 713: [0, 0.59611, 0, 0, 0.575], + 714: [0, 0.69444, 0, 0, 0.575], + 715: [0, 0.69444, 0, 0, 0.575], + 728: [0, 0.69444, 0, 0, 0.575], + 729: [0, 0.69444, 0, 0, 0.31944], + 730: [0, 0.69444, 0, 0, 0.86944], + 732: [0, 0.69444, 0, 0, 0.575], + 733: [0, 0.69444, 0, 0, 0.575], + 915: [0, 0.68611, 0, 0, 0.69166], + 916: [0, 0.68611, 0, 0, 0.95833], + 920: [0, 0.68611, 0, 0, 0.89444], + 923: [0, 0.68611, 0, 0, 0.80555], + 926: [0, 0.68611, 0, 0, 0.76666], + 928: [0, 0.68611, 0, 0, 0.9], + 931: [0, 0.68611, 0, 0, 0.83055], + 933: [0, 0.68611, 0, 0, 0.89444], + 934: [0, 0.68611, 0, 0, 0.83055], + 936: [0, 0.68611, 0, 0, 0.89444], + 937: [0, 0.68611, 0, 0, 0.83055], + 8211: [0, 0.44444, 0.03194, 0, 0.575], + 8212: [0, 0.44444, 0.03194, 0, 1.14999], + 8216: [0, 0.69444, 0, 0, 0.31944], + 8217: [0, 0.69444, 0, 0, 0.31944], + 8220: [0, 0.69444, 0, 0, 0.60278], + 8221: [0, 0.69444, 0, 0, 0.60278], + 8224: [0.19444, 0.69444, 0, 0, 0.51111], + 8225: [0.19444, 0.69444, 0, 0, 0.51111], + 8242: [0, 0.55556, 0, 0, 0.34444], + 8407: [0, 0.72444, 0.15486, 0, 0.575], + 8463: [0, 0.69444, 0, 0, 0.66759], + 8465: [0, 0.69444, 0, 0, 0.83055], + 8467: [0, 0.69444, 0, 0, 0.47361], + 8472: [0.19444, 0.44444, 0, 0, 0.74027], + 8476: [0, 0.69444, 0, 0, 0.83055], + 8501: [0, 0.69444, 0, 0, 0.70277], + 8592: [-0.10889, 0.39111, 0, 0, 1.14999], + 8593: [0.19444, 0.69444, 0, 0, 0.575], + 8594: [-0.10889, 0.39111, 0, 0, 1.14999], + 8595: [0.19444, 0.69444, 0, 0, 0.575], + 8596: [-0.10889, 0.39111, 0, 0, 1.14999], + 8597: [0.25, 0.75, 0, 0, 0.575], + 8598: [0.19444, 0.69444, 0, 0, 1.14999], + 8599: [0.19444, 0.69444, 0, 0, 1.14999], + 8600: [0.19444, 0.69444, 0, 0, 1.14999], + 8601: [0.19444, 0.69444, 0, 0, 1.14999], + 8636: [-0.10889, 0.39111, 0, 0, 1.14999], + 8637: [-0.10889, 0.39111, 0, 0, 1.14999], + 8640: [-0.10889, 0.39111, 0, 0, 1.14999], + 8641: [-0.10889, 0.39111, 0, 0, 1.14999], + 8656: [-0.10889, 0.39111, 0, 0, 1.14999], + 8657: [0.19444, 0.69444, 0, 0, 0.70277], + 8658: [-0.10889, 0.39111, 0, 0, 1.14999], + 8659: [0.19444, 0.69444, 0, 0, 0.70277], + 8660: [-0.10889, 0.39111, 0, 0, 1.14999], + 8661: [0.25, 0.75, 0, 0, 0.70277], + 8704: [0, 0.69444, 0, 0, 0.63889], + 8706: [0, 0.69444, 0.06389, 0, 0.62847], + 8707: [0, 0.69444, 0, 0, 0.63889], + 8709: [0.05556, 0.75, 0, 0, 0.575], + 8711: [0, 0.68611, 0, 0, 0.95833], + 8712: [0.08556, 0.58556, 0, 0, 0.76666], + 8715: [0.08556, 0.58556, 0, 0, 0.76666], + 8722: [0.13333, 0.63333, 0, 0, 0.89444], + 8723: [0.13333, 0.63333, 0, 0, 0.89444], + 8725: [0.25, 0.75, 0, 0, 0.575], + 8726: [0.25, 0.75, 0, 0, 0.575], + 8727: [-0.02778, 0.47222, 0, 0, 0.575], + 8728: [-0.02639, 0.47361, 0, 0, 0.575], + 8729: [-0.02639, 0.47361, 0, 0, 0.575], + 8730: [0.18, 0.82, 0, 0, 0.95833], + 8733: [0, 0.44444, 0, 0, 0.89444], + 8734: [0, 0.44444, 0, 0, 1.14999], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8739: [0.25, 0.75, 0, 0, 0.31944], + 8741: [0.25, 0.75, 0, 0, 0.575], + 8743: [0, 0.55556, 0, 0, 0.76666], + 8744: [0, 0.55556, 0, 0, 0.76666], + 8745: [0, 0.55556, 0, 0, 0.76666], + 8746: [0, 0.55556, 0, 0, 0.76666], + 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875], + 8764: [-0.10889, 0.39111, 0, 0, 0.89444], + 8768: [0.19444, 0.69444, 0, 0, 0.31944], + 8771: [222e-5, 0.50222, 0, 0, 0.89444], + 8773: [0.027, 0.638, 0, 0, 0.894], + 8776: [0.02444, 0.52444, 0, 0, 0.89444], + 8781: [222e-5, 0.50222, 0, 0, 0.89444], + 8801: [222e-5, 0.50222, 0, 0, 0.89444], + 8804: [0.19667, 0.69667, 0, 0, 0.89444], + 8805: [0.19667, 0.69667, 0, 0, 0.89444], + 8810: [0.08556, 0.58556, 0, 0, 1.14999], + 8811: [0.08556, 0.58556, 0, 0, 1.14999], + 8826: [0.08556, 0.58556, 0, 0, 0.89444], + 8827: [0.08556, 0.58556, 0, 0, 0.89444], + 8834: [0.08556, 0.58556, 0, 0, 0.89444], + 8835: [0.08556, 0.58556, 0, 0, 0.89444], + 8838: [0.19667, 0.69667, 0, 0, 0.89444], + 8839: [0.19667, 0.69667, 0, 0, 0.89444], + 8846: [0, 0.55556, 0, 0, 0.76666], + 8849: [0.19667, 0.69667, 0, 0, 0.89444], + 8850: [0.19667, 0.69667, 0, 0, 0.89444], + 8851: [0, 0.55556, 0, 0, 0.76666], + 8852: [0, 0.55556, 0, 0, 0.76666], + 8853: [0.13333, 0.63333, 0, 0, 0.89444], + 8854: [0.13333, 0.63333, 0, 0, 0.89444], + 8855: [0.13333, 0.63333, 0, 0, 0.89444], + 8856: [0.13333, 0.63333, 0, 0, 0.89444], + 8857: [0.13333, 0.63333, 0, 0, 0.89444], + 8866: [0, 0.69444, 0, 0, 0.70277], + 8867: [0, 0.69444, 0, 0, 0.70277], + 8868: [0, 0.69444, 0, 0, 0.89444], + 8869: [0, 0.69444, 0, 0, 0.89444], + 8900: [-0.02639, 0.47361, 0, 0, 0.575], + 8901: [-0.02639, 0.47361, 0, 0, 0.31944], + 8902: [-0.02778, 0.47222, 0, 0, 0.575], + 8968: [0.25, 0.75, 0, 0, 0.51111], + 8969: [0.25, 0.75, 0, 0, 0.51111], + 8970: [0.25, 0.75, 0, 0, 0.51111], + 8971: [0.25, 0.75, 0, 0, 0.51111], + 8994: [-0.13889, 0.36111, 0, 0, 1.14999], + 8995: [-0.13889, 0.36111, 0, 0, 1.14999], + 9651: [0.19444, 0.69444, 0, 0, 1.02222], + 9657: [-0.02778, 0.47222, 0, 0, 0.575], + 9661: [0.19444, 0.69444, 0, 0, 1.02222], + 9667: [-0.02778, 0.47222, 0, 0, 0.575], + 9711: [0.19444, 0.69444, 0, 0, 1.14999], + 9824: [0.12963, 0.69444, 0, 0, 0.89444], + 9825: [0.12963, 0.69444, 0, 0, 0.89444], + 9826: [0.12963, 0.69444, 0, 0, 0.89444], + 9827: [0.12963, 0.69444, 0, 0, 0.89444], + 9837: [0, 0.75, 0, 0, 0.44722], + 9838: [0.19444, 0.69444, 0, 0, 0.44722], + 9839: [0.19444, 0.69444, 0, 0, 0.44722], + 10216: [0.25, 0.75, 0, 0, 0.44722], + 10217: [0.25, 0.75, 0, 0, 0.44722], + 10815: [0, 0.68611, 0, 0, 0.9], + 10927: [0.19667, 0.69667, 0, 0, 0.89444], + 10928: [0.19667, 0.69667, 0, 0, 0.89444], + 57376: [0.19444, 0.69444, 0, 0, 0] + }, + "Main-BoldItalic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.11417, 0, 0.38611], + 34: [0, 0.69444, 0.07939, 0, 0.62055], + 35: [0.19444, 0.69444, 0.06833, 0, 0.94444], + 37: [0.05556, 0.75, 0.12861, 0, 0.94444], + 38: [0, 0.69444, 0.08528, 0, 0.88555], + 39: [0, 0.69444, 0.12945, 0, 0.35555], + 40: [0.25, 0.75, 0.15806, 0, 0.47333], + 41: [0.25, 0.75, 0.03306, 0, 0.47333], + 42: [0, 0.75, 0.14333, 0, 0.59111], + 43: [0.10333, 0.60333, 0.03306, 0, 0.88555], + 44: [0.19444, 0.14722, 0, 0, 0.35555], + 45: [0, 0.44444, 0.02611, 0, 0.41444], + 46: [0, 0.14722, 0, 0, 0.35555], + 47: [0.25, 0.75, 0.15806, 0, 0.59111], + 48: [0, 0.64444, 0.13167, 0, 0.59111], + 49: [0, 0.64444, 0.13167, 0, 0.59111], + 50: [0, 0.64444, 0.13167, 0, 0.59111], + 51: [0, 0.64444, 0.13167, 0, 0.59111], + 52: [0.19444, 0.64444, 0.13167, 0, 0.59111], + 53: [0, 0.64444, 0.13167, 0, 0.59111], + 54: [0, 0.64444, 0.13167, 0, 0.59111], + 55: [0.19444, 0.64444, 0.13167, 0, 0.59111], + 56: [0, 0.64444, 0.13167, 0, 0.59111], + 57: [0, 0.64444, 0.13167, 0, 0.59111], + 58: [0, 0.44444, 0.06695, 0, 0.35555], + 59: [0.19444, 0.44444, 0.06695, 0, 0.35555], + 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555], + 63: [0, 0.69444, 0.11472, 0, 0.59111], + 64: [0, 0.69444, 0.09208, 0, 0.88555], + 65: [0, 0.68611, 0, 0, 0.86555], + 66: [0, 0.68611, 0.0992, 0, 0.81666], + 67: [0, 0.68611, 0.14208, 0, 0.82666], + 68: [0, 0.68611, 0.09062, 0, 0.87555], + 69: [0, 0.68611, 0.11431, 0, 0.75666], + 70: [0, 0.68611, 0.12903, 0, 0.72722], + 71: [0, 0.68611, 0.07347, 0, 0.89527], + 72: [0, 0.68611, 0.17208, 0, 0.8961], + 73: [0, 0.68611, 0.15681, 0, 0.47166], + 74: [0, 0.68611, 0.145, 0, 0.61055], + 75: [0, 0.68611, 0.14208, 0, 0.89499], + 76: [0, 0.68611, 0, 0, 0.69777], + 77: [0, 0.68611, 0.17208, 0, 1.07277], + 78: [0, 0.68611, 0.17208, 0, 0.8961], + 79: [0, 0.68611, 0.09062, 0, 0.85499], + 80: [0, 0.68611, 0.0992, 0, 0.78721], + 81: [0.19444, 0.68611, 0.09062, 0, 0.85499], + 82: [0, 0.68611, 0.02559, 0, 0.85944], + 83: [0, 0.68611, 0.11264, 0, 0.64999], + 84: [0, 0.68611, 0.12903, 0, 0.7961], + 85: [0, 0.68611, 0.17208, 0, 0.88083], + 86: [0, 0.68611, 0.18625, 0, 0.86555], + 87: [0, 0.68611, 0.18625, 0, 1.15999], + 88: [0, 0.68611, 0.15681, 0, 0.86555], + 89: [0, 0.68611, 0.19803, 0, 0.86555], + 90: [0, 0.68611, 0.14208, 0, 0.70888], + 91: [0.25, 0.75, 0.1875, 0, 0.35611], + 93: [0.25, 0.75, 0.09972, 0, 0.35611], + 94: [0, 0.69444, 0.06709, 0, 0.59111], + 95: [0.31, 0.13444, 0.09811, 0, 0.59111], + 97: [0, 0.44444, 0.09426, 0, 0.59111], + 98: [0, 0.69444, 0.07861, 0, 0.53222], + 99: [0, 0.44444, 0.05222, 0, 0.53222], + 100: [0, 0.69444, 0.10861, 0, 0.59111], + 101: [0, 0.44444, 0.085, 0, 0.53222], + 102: [0.19444, 0.69444, 0.21778, 0, 0.4], + 103: [0.19444, 0.44444, 0.105, 0, 0.53222], + 104: [0, 0.69444, 0.09426, 0, 0.59111], + 105: [0, 0.69326, 0.11387, 0, 0.35555], + 106: [0.19444, 0.69326, 0.1672, 0, 0.35555], + 107: [0, 0.69444, 0.11111, 0, 0.53222], + 108: [0, 0.69444, 0.10861, 0, 0.29666], + 109: [0, 0.44444, 0.09426, 0, 0.94444], + 110: [0, 0.44444, 0.09426, 0, 0.64999], + 111: [0, 0.44444, 0.07861, 0, 0.59111], + 112: [0.19444, 0.44444, 0.07861, 0, 0.59111], + 113: [0.19444, 0.44444, 0.105, 0, 0.53222], + 114: [0, 0.44444, 0.11111, 0, 0.50167], + 115: [0, 0.44444, 0.08167, 0, 0.48694], + 116: [0, 0.63492, 0.09639, 0, 0.385], + 117: [0, 0.44444, 0.09426, 0, 0.62055], + 118: [0, 0.44444, 0.11111, 0, 0.53222], + 119: [0, 0.44444, 0.11111, 0, 0.76777], + 120: [0, 0.44444, 0.12583, 0, 0.56055], + 121: [0.19444, 0.44444, 0.105, 0, 0.56166], + 122: [0, 0.44444, 0.13889, 0, 0.49055], + 126: [0.35, 0.34444, 0.11472, 0, 0.59111], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.69444, 0.11473, 0, 0.59111], + 176: [0, 0.69444, 0, 0, 0.94888], + 184: [0.17014, 0, 0, 0, 0.53222], + 198: [0, 0.68611, 0.11431, 0, 1.02277], + 216: [0.04861, 0.73472, 0.09062, 0, 0.88555], + 223: [0.19444, 0.69444, 0.09736, 0, 0.665], + 230: [0, 0.44444, 0.085, 0, 0.82666], + 248: [0.09722, 0.54167, 0.09458, 0, 0.59111], + 305: [0, 0.44444, 0.09426, 0, 0.35555], + 338: [0, 0.68611, 0.11431, 0, 1.14054], + 339: [0, 0.44444, 0.085, 0, 0.82666], + 567: [0.19444, 0.44444, 0.04611, 0, 0.385], + 710: [0, 0.69444, 0.06709, 0, 0.59111], + 711: [0, 0.63194, 0.08271, 0, 0.59111], + 713: [0, 0.59444, 0.10444, 0, 0.59111], + 714: [0, 0.69444, 0.08528, 0, 0.59111], + 715: [0, 0.69444, 0, 0, 0.59111], + 728: [0, 0.69444, 0.10333, 0, 0.59111], + 729: [0, 0.69444, 0.12945, 0, 0.35555], + 730: [0, 0.69444, 0, 0, 0.94888], + 732: [0, 0.69444, 0.11472, 0, 0.59111], + 733: [0, 0.69444, 0.11472, 0, 0.59111], + 915: [0, 0.68611, 0.12903, 0, 0.69777], + 916: [0, 0.68611, 0, 0, 0.94444], + 920: [0, 0.68611, 0.09062, 0, 0.88555], + 923: [0, 0.68611, 0, 0, 0.80666], + 926: [0, 0.68611, 0.15092, 0, 0.76777], + 928: [0, 0.68611, 0.17208, 0, 0.8961], + 931: [0, 0.68611, 0.11431, 0, 0.82666], + 933: [0, 0.68611, 0.10778, 0, 0.88555], + 934: [0, 0.68611, 0.05632, 0, 0.82666], + 936: [0, 0.68611, 0.10778, 0, 0.88555], + 937: [0, 0.68611, 0.0992, 0, 0.82666], + 8211: [0, 0.44444, 0.09811, 0, 0.59111], + 8212: [0, 0.44444, 0.09811, 0, 1.18221], + 8216: [0, 0.69444, 0.12945, 0, 0.35555], + 8217: [0, 0.69444, 0.12945, 0, 0.35555], + 8220: [0, 0.69444, 0.16772, 0, 0.62055], + 8221: [0, 0.69444, 0.07939, 0, 0.62055] + }, + "Main-Italic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.12417, 0, 0.30667], + 34: [0, 0.69444, 0.06961, 0, 0.51444], + 35: [0.19444, 0.69444, 0.06616, 0, 0.81777], + 37: [0.05556, 0.75, 0.13639, 0, 0.81777], + 38: [0, 0.69444, 0.09694, 0, 0.76666], + 39: [0, 0.69444, 0.12417, 0, 0.30667], + 40: [0.25, 0.75, 0.16194, 0, 0.40889], + 41: [0.25, 0.75, 0.03694, 0, 0.40889], + 42: [0, 0.75, 0.14917, 0, 0.51111], + 43: [0.05667, 0.56167, 0.03694, 0, 0.76666], + 44: [0.19444, 0.10556, 0, 0, 0.30667], + 45: [0, 0.43056, 0.02826, 0, 0.35778], + 46: [0, 0.10556, 0, 0, 0.30667], + 47: [0.25, 0.75, 0.16194, 0, 0.51111], + 48: [0, 0.64444, 0.13556, 0, 0.51111], + 49: [0, 0.64444, 0.13556, 0, 0.51111], + 50: [0, 0.64444, 0.13556, 0, 0.51111], + 51: [0, 0.64444, 0.13556, 0, 0.51111], + 52: [0.19444, 0.64444, 0.13556, 0, 0.51111], + 53: [0, 0.64444, 0.13556, 0, 0.51111], + 54: [0, 0.64444, 0.13556, 0, 0.51111], + 55: [0.19444, 0.64444, 0.13556, 0, 0.51111], + 56: [0, 0.64444, 0.13556, 0, 0.51111], + 57: [0, 0.64444, 0.13556, 0, 0.51111], + 58: [0, 0.43056, 0.0582, 0, 0.30667], + 59: [0.19444, 0.43056, 0.0582, 0, 0.30667], + 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666], + 63: [0, 0.69444, 0.1225, 0, 0.51111], + 64: [0, 0.69444, 0.09597, 0, 0.76666], + 65: [0, 0.68333, 0, 0, 0.74333], + 66: [0, 0.68333, 0.10257, 0, 0.70389], + 67: [0, 0.68333, 0.14528, 0, 0.71555], + 68: [0, 0.68333, 0.09403, 0, 0.755], + 69: [0, 0.68333, 0.12028, 0, 0.67833], + 70: [0, 0.68333, 0.13305, 0, 0.65277], + 71: [0, 0.68333, 0.08722, 0, 0.77361], + 72: [0, 0.68333, 0.16389, 0, 0.74333], + 73: [0, 0.68333, 0.15806, 0, 0.38555], + 74: [0, 0.68333, 0.14028, 0, 0.525], + 75: [0, 0.68333, 0.14528, 0, 0.76888], + 76: [0, 0.68333, 0, 0, 0.62722], + 77: [0, 0.68333, 0.16389, 0, 0.89666], + 78: [0, 0.68333, 0.16389, 0, 0.74333], + 79: [0, 0.68333, 0.09403, 0, 0.76666], + 80: [0, 0.68333, 0.10257, 0, 0.67833], + 81: [0.19444, 0.68333, 0.09403, 0, 0.76666], + 82: [0, 0.68333, 0.03868, 0, 0.72944], + 83: [0, 0.68333, 0.11972, 0, 0.56222], + 84: [0, 0.68333, 0.13305, 0, 0.71555], + 85: [0, 0.68333, 0.16389, 0, 0.74333], + 86: [0, 0.68333, 0.18361, 0, 0.74333], + 87: [0, 0.68333, 0.18361, 0, 0.99888], + 88: [0, 0.68333, 0.15806, 0, 0.74333], + 89: [0, 0.68333, 0.19383, 0, 0.74333], + 90: [0, 0.68333, 0.14528, 0, 0.61333], + 91: [0.25, 0.75, 0.1875, 0, 0.30667], + 93: [0.25, 0.75, 0.10528, 0, 0.30667], + 94: [0, 0.69444, 0.06646, 0, 0.51111], + 95: [0.31, 0.12056, 0.09208, 0, 0.51111], + 97: [0, 0.43056, 0.07671, 0, 0.51111], + 98: [0, 0.69444, 0.06312, 0, 0.46], + 99: [0, 0.43056, 0.05653, 0, 0.46], + 100: [0, 0.69444, 0.10333, 0, 0.51111], + 101: [0, 0.43056, 0.07514, 0, 0.46], + 102: [0.19444, 0.69444, 0.21194, 0, 0.30667], + 103: [0.19444, 0.43056, 0.08847, 0, 0.46], + 104: [0, 0.69444, 0.07671, 0, 0.51111], + 105: [0, 0.65536, 0.1019, 0, 0.30667], + 106: [0.19444, 0.65536, 0.14467, 0, 0.30667], + 107: [0, 0.69444, 0.10764, 0, 0.46], + 108: [0, 0.69444, 0.10333, 0, 0.25555], + 109: [0, 0.43056, 0.07671, 0, 0.81777], + 110: [0, 0.43056, 0.07671, 0, 0.56222], + 111: [0, 0.43056, 0.06312, 0, 0.51111], + 112: [0.19444, 0.43056, 0.06312, 0, 0.51111], + 113: [0.19444, 0.43056, 0.08847, 0, 0.46], + 114: [0, 0.43056, 0.10764, 0, 0.42166], + 115: [0, 0.43056, 0.08208, 0, 0.40889], + 116: [0, 0.61508, 0.09486, 0, 0.33222], + 117: [0, 0.43056, 0.07671, 0, 0.53666], + 118: [0, 0.43056, 0.10764, 0, 0.46], + 119: [0, 0.43056, 0.10764, 0, 0.66444], + 120: [0, 0.43056, 0.12042, 0, 0.46389], + 121: [0.19444, 0.43056, 0.08847, 0, 0.48555], + 122: [0, 0.43056, 0.12292, 0, 0.40889], + 126: [0.35, 0.31786, 0.11585, 0, 0.51111], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.66786, 0.10474, 0, 0.51111], + 176: [0, 0.69444, 0, 0, 0.83129], + 184: [0.17014, 0, 0, 0, 0.46], + 198: [0, 0.68333, 0.12028, 0, 0.88277], + 216: [0.04861, 0.73194, 0.09403, 0, 0.76666], + 223: [0.19444, 0.69444, 0.10514, 0, 0.53666], + 230: [0, 0.43056, 0.07514, 0, 0.71555], + 248: [0.09722, 0.52778, 0.09194, 0, 0.51111], + 338: [0, 0.68333, 0.12028, 0, 0.98499], + 339: [0, 0.43056, 0.07514, 0, 0.71555], + 710: [0, 0.69444, 0.06646, 0, 0.51111], + 711: [0, 0.62847, 0.08295, 0, 0.51111], + 713: [0, 0.56167, 0.10333, 0, 0.51111], + 714: [0, 0.69444, 0.09694, 0, 0.51111], + 715: [0, 0.69444, 0, 0, 0.51111], + 728: [0, 0.69444, 0.10806, 0, 0.51111], + 729: [0, 0.66786, 0.11752, 0, 0.30667], + 730: [0, 0.69444, 0, 0, 0.83129], + 732: [0, 0.66786, 0.11585, 0, 0.51111], + 733: [0, 0.69444, 0.1225, 0, 0.51111], + 915: [0, 0.68333, 0.13305, 0, 0.62722], + 916: [0, 0.68333, 0, 0, 0.81777], + 920: [0, 0.68333, 0.09403, 0, 0.76666], + 923: [0, 0.68333, 0, 0, 0.69222], + 926: [0, 0.68333, 0.15294, 0, 0.66444], + 928: [0, 0.68333, 0.16389, 0, 0.74333], + 931: [0, 0.68333, 0.12028, 0, 0.71555], + 933: [0, 0.68333, 0.11111, 0, 0.76666], + 934: [0, 0.68333, 0.05986, 0, 0.71555], + 936: [0, 0.68333, 0.11111, 0, 0.76666], + 937: [0, 0.68333, 0.10257, 0, 0.71555], + 8211: [0, 0.43056, 0.09208, 0, 0.51111], + 8212: [0, 0.43056, 0.09208, 0, 1.02222], + 8216: [0, 0.69444, 0.12417, 0, 0.30667], + 8217: [0, 0.69444, 0.12417, 0, 0.30667], + 8220: [0, 0.69444, 0.1685, 0, 0.51444], + 8221: [0, 0.69444, 0.06961, 0, 0.51444], + 8463: [0, 0.68889, 0, 0, 0.54028] + }, + "Main-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.27778], + 34: [0, 0.69444, 0, 0, 0.5], + 35: [0.19444, 0.69444, 0, 0, 0.83334], + 36: [0.05556, 0.75, 0, 0, 0.5], + 37: [0.05556, 0.75, 0, 0, 0.83334], + 38: [0, 0.69444, 0, 0, 0.77778], + 39: [0, 0.69444, 0, 0, 0.27778], + 40: [0.25, 0.75, 0, 0, 0.38889], + 41: [0.25, 0.75, 0, 0, 0.38889], + 42: [0, 0.75, 0, 0, 0.5], + 43: [0.08333, 0.58333, 0, 0, 0.77778], + 44: [0.19444, 0.10556, 0, 0, 0.27778], + 45: [0, 0.43056, 0, 0, 0.33333], + 46: [0, 0.10556, 0, 0, 0.27778], + 47: [0.25, 0.75, 0, 0, 0.5], + 48: [0, 0.64444, 0, 0, 0.5], + 49: [0, 0.64444, 0, 0, 0.5], + 50: [0, 0.64444, 0, 0, 0.5], + 51: [0, 0.64444, 0, 0, 0.5], + 52: [0, 0.64444, 0, 0, 0.5], + 53: [0, 0.64444, 0, 0, 0.5], + 54: [0, 0.64444, 0, 0, 0.5], + 55: [0, 0.64444, 0, 0, 0.5], + 56: [0, 0.64444, 0, 0, 0.5], + 57: [0, 0.64444, 0, 0, 0.5], + 58: [0, 0.43056, 0, 0, 0.27778], + 59: [0.19444, 0.43056, 0, 0, 0.27778], + 60: [0.0391, 0.5391, 0, 0, 0.77778], + 61: [-0.13313, 0.36687, 0, 0, 0.77778], + 62: [0.0391, 0.5391, 0, 0, 0.77778], + 63: [0, 0.69444, 0, 0, 0.47222], + 64: [0, 0.69444, 0, 0, 0.77778], + 65: [0, 0.68333, 0, 0, 0.75], + 66: [0, 0.68333, 0, 0, 0.70834], + 67: [0, 0.68333, 0, 0, 0.72222], + 68: [0, 0.68333, 0, 0, 0.76389], + 69: [0, 0.68333, 0, 0, 0.68056], + 70: [0, 0.68333, 0, 0, 0.65278], + 71: [0, 0.68333, 0, 0, 0.78472], + 72: [0, 0.68333, 0, 0, 0.75], + 73: [0, 0.68333, 0, 0, 0.36111], + 74: [0, 0.68333, 0, 0, 0.51389], + 75: [0, 0.68333, 0, 0, 0.77778], + 76: [0, 0.68333, 0, 0, 0.625], + 77: [0, 0.68333, 0, 0, 0.91667], + 78: [0, 0.68333, 0, 0, 0.75], + 79: [0, 0.68333, 0, 0, 0.77778], + 80: [0, 0.68333, 0, 0, 0.68056], + 81: [0.19444, 0.68333, 0, 0, 0.77778], + 82: [0, 0.68333, 0, 0, 0.73611], + 83: [0, 0.68333, 0, 0, 0.55556], + 84: [0, 0.68333, 0, 0, 0.72222], + 85: [0, 0.68333, 0, 0, 0.75], + 86: [0, 0.68333, 0.01389, 0, 0.75], + 87: [0, 0.68333, 0.01389, 0, 1.02778], + 88: [0, 0.68333, 0, 0, 0.75], + 89: [0, 0.68333, 0.025, 0, 0.75], + 90: [0, 0.68333, 0, 0, 0.61111], + 91: [0.25, 0.75, 0, 0, 0.27778], + 92: [0.25, 0.75, 0, 0, 0.5], + 93: [0.25, 0.75, 0, 0, 0.27778], + 94: [0, 0.69444, 0, 0, 0.5], + 95: [0.31, 0.12056, 0.02778, 0, 0.5], + 97: [0, 0.43056, 0, 0, 0.5], + 98: [0, 0.69444, 0, 0, 0.55556], + 99: [0, 0.43056, 0, 0, 0.44445], + 100: [0, 0.69444, 0, 0, 0.55556], + 101: [0, 0.43056, 0, 0, 0.44445], + 102: [0, 0.69444, 0.07778, 0, 0.30556], + 103: [0.19444, 0.43056, 0.01389, 0, 0.5], + 104: [0, 0.69444, 0, 0, 0.55556], + 105: [0, 0.66786, 0, 0, 0.27778], + 106: [0.19444, 0.66786, 0, 0, 0.30556], + 107: [0, 0.69444, 0, 0, 0.52778], + 108: [0, 0.69444, 0, 0, 0.27778], + 109: [0, 0.43056, 0, 0, 0.83334], + 110: [0, 0.43056, 0, 0, 0.55556], + 111: [0, 0.43056, 0, 0, 0.5], + 112: [0.19444, 0.43056, 0, 0, 0.55556], + 113: [0.19444, 0.43056, 0, 0, 0.52778], + 114: [0, 0.43056, 0, 0, 0.39167], + 115: [0, 0.43056, 0, 0, 0.39445], + 116: [0, 0.61508, 0, 0, 0.38889], + 117: [0, 0.43056, 0, 0, 0.55556], + 118: [0, 0.43056, 0.01389, 0, 0.52778], + 119: [0, 0.43056, 0.01389, 0, 0.72222], + 120: [0, 0.43056, 0, 0, 0.52778], + 121: [0.19444, 0.43056, 0.01389, 0, 0.52778], + 122: [0, 0.43056, 0, 0, 0.44445], + 123: [0.25, 0.75, 0, 0, 0.5], + 124: [0.25, 0.75, 0, 0, 0.27778], + 125: [0.25, 0.75, 0, 0, 0.5], + 126: [0.35, 0.31786, 0, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 163: [0, 0.69444, 0, 0, 0.76909], + 167: [0.19444, 0.69444, 0, 0, 0.44445], + 168: [0, 0.66786, 0, 0, 0.5], + 172: [0, 0.43056, 0, 0, 0.66667], + 176: [0, 0.69444, 0, 0, 0.75], + 177: [0.08333, 0.58333, 0, 0, 0.77778], + 182: [0.19444, 0.69444, 0, 0, 0.61111], + 184: [0.17014, 0, 0, 0, 0.44445], + 198: [0, 0.68333, 0, 0, 0.90278], + 215: [0.08333, 0.58333, 0, 0, 0.77778], + 216: [0.04861, 0.73194, 0, 0, 0.77778], + 223: [0, 0.69444, 0, 0, 0.5], + 230: [0, 0.43056, 0, 0, 0.72222], + 247: [0.08333, 0.58333, 0, 0, 0.77778], + 248: [0.09722, 0.52778, 0, 0, 0.5], + 305: [0, 0.43056, 0, 0, 0.27778], + 338: [0, 0.68333, 0, 0, 1.01389], + 339: [0, 0.43056, 0, 0, 0.77778], + 567: [0.19444, 0.43056, 0, 0, 0.30556], + 710: [0, 0.69444, 0, 0, 0.5], + 711: [0, 0.62847, 0, 0, 0.5], + 713: [0, 0.56778, 0, 0, 0.5], + 714: [0, 0.69444, 0, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0, 0, 0.5], + 729: [0, 0.66786, 0, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.75], + 732: [0, 0.66786, 0, 0, 0.5], + 733: [0, 0.69444, 0, 0, 0.5], + 915: [0, 0.68333, 0, 0, 0.625], + 916: [0, 0.68333, 0, 0, 0.83334], + 920: [0, 0.68333, 0, 0, 0.77778], + 923: [0, 0.68333, 0, 0, 0.69445], + 926: [0, 0.68333, 0, 0, 0.66667], + 928: [0, 0.68333, 0, 0, 0.75], + 931: [0, 0.68333, 0, 0, 0.72222], + 933: [0, 0.68333, 0, 0, 0.77778], + 934: [0, 0.68333, 0, 0, 0.72222], + 936: [0, 0.68333, 0, 0, 0.77778], + 937: [0, 0.68333, 0, 0, 0.72222], + 8211: [0, 0.43056, 0.02778, 0, 0.5], + 8212: [0, 0.43056, 0.02778, 0, 1], + 8216: [0, 0.69444, 0, 0, 0.27778], + 8217: [0, 0.69444, 0, 0, 0.27778], + 8220: [0, 0.69444, 0, 0, 0.5], + 8221: [0, 0.69444, 0, 0, 0.5], + 8224: [0.19444, 0.69444, 0, 0, 0.44445], + 8225: [0.19444, 0.69444, 0, 0, 0.44445], + 8230: [0, 0.123, 0, 0, 1.172], + 8242: [0, 0.55556, 0, 0, 0.275], + 8407: [0, 0.71444, 0.15382, 0, 0.5], + 8463: [0, 0.68889, 0, 0, 0.54028], + 8465: [0, 0.69444, 0, 0, 0.72222], + 8467: [0, 0.69444, 0, 0.11111, 0.41667], + 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646], + 8476: [0, 0.69444, 0, 0, 0.72222], + 8501: [0, 0.69444, 0, 0, 0.61111], + 8592: [-0.13313, 0.36687, 0, 0, 1], + 8593: [0.19444, 0.69444, 0, 0, 0.5], + 8594: [-0.13313, 0.36687, 0, 0, 1], + 8595: [0.19444, 0.69444, 0, 0, 0.5], + 8596: [-0.13313, 0.36687, 0, 0, 1], + 8597: [0.25, 0.75, 0, 0, 0.5], + 8598: [0.19444, 0.69444, 0, 0, 1], + 8599: [0.19444, 0.69444, 0, 0, 1], + 8600: [0.19444, 0.69444, 0, 0, 1], + 8601: [0.19444, 0.69444, 0, 0, 1], + 8614: [0.011, 0.511, 0, 0, 1], + 8617: [0.011, 0.511, 0, 0, 1.126], + 8618: [0.011, 0.511, 0, 0, 1.126], + 8636: [-0.13313, 0.36687, 0, 0, 1], + 8637: [-0.13313, 0.36687, 0, 0, 1], + 8640: [-0.13313, 0.36687, 0, 0, 1], + 8641: [-0.13313, 0.36687, 0, 0, 1], + 8652: [0.011, 0.671, 0, 0, 1], + 8656: [-0.13313, 0.36687, 0, 0, 1], + 8657: [0.19444, 0.69444, 0, 0, 0.61111], + 8658: [-0.13313, 0.36687, 0, 0, 1], + 8659: [0.19444, 0.69444, 0, 0, 0.61111], + 8660: [-0.13313, 0.36687, 0, 0, 1], + 8661: [0.25, 0.75, 0, 0, 0.61111], + 8704: [0, 0.69444, 0, 0, 0.55556], + 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309], + 8707: [0, 0.69444, 0, 0, 0.55556], + 8709: [0.05556, 0.75, 0, 0, 0.5], + 8711: [0, 0.68333, 0, 0, 0.83334], + 8712: [0.0391, 0.5391, 0, 0, 0.66667], + 8715: [0.0391, 0.5391, 0, 0, 0.66667], + 8722: [0.08333, 0.58333, 0, 0, 0.77778], + 8723: [0.08333, 0.58333, 0, 0, 0.77778], + 8725: [0.25, 0.75, 0, 0, 0.5], + 8726: [0.25, 0.75, 0, 0, 0.5], + 8727: [-0.03472, 0.46528, 0, 0, 0.5], + 8728: [-0.05555, 0.44445, 0, 0, 0.5], + 8729: [-0.05555, 0.44445, 0, 0, 0.5], + 8730: [0.2, 0.8, 0, 0, 0.83334], + 8733: [0, 0.43056, 0, 0, 0.77778], + 8734: [0, 0.43056, 0, 0, 1], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8739: [0.25, 0.75, 0, 0, 0.27778], + 8741: [0.25, 0.75, 0, 0, 0.5], + 8743: [0, 0.55556, 0, 0, 0.66667], + 8744: [0, 0.55556, 0, 0, 0.66667], + 8745: [0, 0.55556, 0, 0, 0.66667], + 8746: [0, 0.55556, 0, 0, 0.66667], + 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667], + 8764: [-0.13313, 0.36687, 0, 0, 0.77778], + 8768: [0.19444, 0.69444, 0, 0, 0.27778], + 8771: [-0.03625, 0.46375, 0, 0, 0.77778], + 8773: [-0.022, 0.589, 0, 0, 0.778], + 8776: [-0.01688, 0.48312, 0, 0, 0.77778], + 8781: [-0.03625, 0.46375, 0, 0, 0.77778], + 8784: [-0.133, 0.673, 0, 0, 0.778], + 8801: [-0.03625, 0.46375, 0, 0, 0.77778], + 8804: [0.13597, 0.63597, 0, 0, 0.77778], + 8805: [0.13597, 0.63597, 0, 0, 0.77778], + 8810: [0.0391, 0.5391, 0, 0, 1], + 8811: [0.0391, 0.5391, 0, 0, 1], + 8826: [0.0391, 0.5391, 0, 0, 0.77778], + 8827: [0.0391, 0.5391, 0, 0, 0.77778], + 8834: [0.0391, 0.5391, 0, 0, 0.77778], + 8835: [0.0391, 0.5391, 0, 0, 0.77778], + 8838: [0.13597, 0.63597, 0, 0, 0.77778], + 8839: [0.13597, 0.63597, 0, 0, 0.77778], + 8846: [0, 0.55556, 0, 0, 0.66667], + 8849: [0.13597, 0.63597, 0, 0, 0.77778], + 8850: [0.13597, 0.63597, 0, 0, 0.77778], + 8851: [0, 0.55556, 0, 0, 0.66667], + 8852: [0, 0.55556, 0, 0, 0.66667], + 8853: [0.08333, 0.58333, 0, 0, 0.77778], + 8854: [0.08333, 0.58333, 0, 0, 0.77778], + 8855: [0.08333, 0.58333, 0, 0, 0.77778], + 8856: [0.08333, 0.58333, 0, 0, 0.77778], + 8857: [0.08333, 0.58333, 0, 0, 0.77778], + 8866: [0, 0.69444, 0, 0, 0.61111], + 8867: [0, 0.69444, 0, 0, 0.61111], + 8868: [0, 0.69444, 0, 0, 0.77778], + 8869: [0, 0.69444, 0, 0, 0.77778], + 8872: [0.249, 0.75, 0, 0, 0.867], + 8900: [-0.05555, 0.44445, 0, 0, 0.5], + 8901: [-0.05555, 0.44445, 0, 0, 0.27778], + 8902: [-0.03472, 0.46528, 0, 0, 0.5], + 8904: [5e-3, 0.505, 0, 0, 0.9], + 8942: [0.03, 0.903, 0, 0, 0.278], + 8943: [-0.19, 0.313, 0, 0, 1.172], + 8945: [-0.1, 0.823, 0, 0, 1.282], + 8968: [0.25, 0.75, 0, 0, 0.44445], + 8969: [0.25, 0.75, 0, 0, 0.44445], + 8970: [0.25, 0.75, 0, 0, 0.44445], + 8971: [0.25, 0.75, 0, 0, 0.44445], + 8994: [-0.14236, 0.35764, 0, 0, 1], + 8995: [-0.14236, 0.35764, 0, 0, 1], + 9136: [0.244, 0.744, 0, 0, 0.412], + 9137: [0.244, 0.745, 0, 0, 0.412], + 9651: [0.19444, 0.69444, 0, 0, 0.88889], + 9657: [-0.03472, 0.46528, 0, 0, 0.5], + 9661: [0.19444, 0.69444, 0, 0, 0.88889], + 9667: [-0.03472, 0.46528, 0, 0, 0.5], + 9711: [0.19444, 0.69444, 0, 0, 1], + 9824: [0.12963, 0.69444, 0, 0, 0.77778], + 9825: [0.12963, 0.69444, 0, 0, 0.77778], + 9826: [0.12963, 0.69444, 0, 0, 0.77778], + 9827: [0.12963, 0.69444, 0, 0, 0.77778], + 9837: [0, 0.75, 0, 0, 0.38889], + 9838: [0.19444, 0.69444, 0, 0, 0.38889], + 9839: [0.19444, 0.69444, 0, 0, 0.38889], + 10216: [0.25, 0.75, 0, 0, 0.38889], + 10217: [0.25, 0.75, 0, 0, 0.38889], + 10222: [0.244, 0.744, 0, 0, 0.412], + 10223: [0.244, 0.745, 0, 0, 0.412], + 10229: [0.011, 0.511, 0, 0, 1.609], + 10230: [0.011, 0.511, 0, 0, 1.638], + 10231: [0.011, 0.511, 0, 0, 1.859], + 10232: [0.024, 0.525, 0, 0, 1.609], + 10233: [0.024, 0.525, 0, 0, 1.638], + 10234: [0.024, 0.525, 0, 0, 1.858], + 10236: [0.011, 0.511, 0, 0, 1.638], + 10815: [0, 0.68333, 0, 0, 0.75], + 10927: [0.13597, 0.63597, 0, 0, 0.77778], + 10928: [0.13597, 0.63597, 0, 0, 0.77778], + 57376: [0.19444, 0.69444, 0, 0, 0] + }, + "Math-BoldItalic": { + 32: [0, 0, 0, 0, 0.25], + 48: [0, 0.44444, 0, 0, 0.575], + 49: [0, 0.44444, 0, 0, 0.575], + 50: [0, 0.44444, 0, 0, 0.575], + 51: [0.19444, 0.44444, 0, 0, 0.575], + 52: [0.19444, 0.44444, 0, 0, 0.575], + 53: [0.19444, 0.44444, 0, 0, 0.575], + 54: [0, 0.64444, 0, 0, 0.575], + 55: [0.19444, 0.44444, 0, 0, 0.575], + 56: [0, 0.64444, 0, 0, 0.575], + 57: [0.19444, 0.44444, 0, 0, 0.575], + 65: [0, 0.68611, 0, 0, 0.86944], + 66: [0, 0.68611, 0.04835, 0, 0.8664], + 67: [0, 0.68611, 0.06979, 0, 0.81694], + 68: [0, 0.68611, 0.03194, 0, 0.93812], + 69: [0, 0.68611, 0.05451, 0, 0.81007], + 70: [0, 0.68611, 0.15972, 0, 0.68889], + 71: [0, 0.68611, 0, 0, 0.88673], + 72: [0, 0.68611, 0.08229, 0, 0.98229], + 73: [0, 0.68611, 0.07778, 0, 0.51111], + 74: [0, 0.68611, 0.10069, 0, 0.63125], + 75: [0, 0.68611, 0.06979, 0, 0.97118], + 76: [0, 0.68611, 0, 0, 0.75555], + 77: [0, 0.68611, 0.11424, 0, 1.14201], + 78: [0, 0.68611, 0.11424, 0, 0.95034], + 79: [0, 0.68611, 0.03194, 0, 0.83666], + 80: [0, 0.68611, 0.15972, 0, 0.72309], + 81: [0.19444, 0.68611, 0, 0, 0.86861], + 82: [0, 0.68611, 421e-5, 0, 0.87235], + 83: [0, 0.68611, 0.05382, 0, 0.69271], + 84: [0, 0.68611, 0.15972, 0, 0.63663], + 85: [0, 0.68611, 0.11424, 0, 0.80027], + 86: [0, 0.68611, 0.25555, 0, 0.67778], + 87: [0, 0.68611, 0.15972, 0, 1.09305], + 88: [0, 0.68611, 0.07778, 0, 0.94722], + 89: [0, 0.68611, 0.25555, 0, 0.67458], + 90: [0, 0.68611, 0.06979, 0, 0.77257], + 97: [0, 0.44444, 0, 0, 0.63287], + 98: [0, 0.69444, 0, 0, 0.52083], + 99: [0, 0.44444, 0, 0, 0.51342], + 100: [0, 0.69444, 0, 0, 0.60972], + 101: [0, 0.44444, 0, 0, 0.55361], + 102: [0.19444, 0.69444, 0.11042, 0, 0.56806], + 103: [0.19444, 0.44444, 0.03704, 0, 0.5449], + 104: [0, 0.69444, 0, 0, 0.66759], + 105: [0, 0.69326, 0, 0, 0.4048], + 106: [0.19444, 0.69326, 0.0622, 0, 0.47083], + 107: [0, 0.69444, 0.01852, 0, 0.6037], + 108: [0, 0.69444, 88e-4, 0, 0.34815], + 109: [0, 0.44444, 0, 0, 1.0324], + 110: [0, 0.44444, 0, 0, 0.71296], + 111: [0, 0.44444, 0, 0, 0.58472], + 112: [0.19444, 0.44444, 0, 0, 0.60092], + 113: [0.19444, 0.44444, 0.03704, 0, 0.54213], + 114: [0, 0.44444, 0.03194, 0, 0.5287], + 115: [0, 0.44444, 0, 0, 0.53125], + 116: [0, 0.63492, 0, 0, 0.41528], + 117: [0, 0.44444, 0, 0, 0.68102], + 118: [0, 0.44444, 0.03704, 0, 0.56666], + 119: [0, 0.44444, 0.02778, 0, 0.83148], + 120: [0, 0.44444, 0, 0, 0.65903], + 121: [0.19444, 0.44444, 0.03704, 0, 0.59028], + 122: [0, 0.44444, 0.04213, 0, 0.55509], + 160: [0, 0, 0, 0, 0.25], + 915: [0, 0.68611, 0.15972, 0, 0.65694], + 916: [0, 0.68611, 0, 0, 0.95833], + 920: [0, 0.68611, 0.03194, 0, 0.86722], + 923: [0, 0.68611, 0, 0, 0.80555], + 926: [0, 0.68611, 0.07458, 0, 0.84125], + 928: [0, 0.68611, 0.08229, 0, 0.98229], + 931: [0, 0.68611, 0.05451, 0, 0.88507], + 933: [0, 0.68611, 0.15972, 0, 0.67083], + 934: [0, 0.68611, 0, 0, 0.76666], + 936: [0, 0.68611, 0.11653, 0, 0.71402], + 937: [0, 0.68611, 0.04835, 0, 0.8789], + 945: [0, 0.44444, 0, 0, 0.76064], + 946: [0.19444, 0.69444, 0.03403, 0, 0.65972], + 947: [0.19444, 0.44444, 0.06389, 0, 0.59003], + 948: [0, 0.69444, 0.03819, 0, 0.52222], + 949: [0, 0.44444, 0, 0, 0.52882], + 950: [0.19444, 0.69444, 0.06215, 0, 0.50833], + 951: [0.19444, 0.44444, 0.03704, 0, 0.6], + 952: [0, 0.69444, 0.03194, 0, 0.5618], + 953: [0, 0.44444, 0, 0, 0.41204], + 954: [0, 0.44444, 0, 0, 0.66759], + 955: [0, 0.69444, 0, 0, 0.67083], + 956: [0.19444, 0.44444, 0, 0, 0.70787], + 957: [0, 0.44444, 0.06898, 0, 0.57685], + 958: [0.19444, 0.69444, 0.03021, 0, 0.50833], + 959: [0, 0.44444, 0, 0, 0.58472], + 960: [0, 0.44444, 0.03704, 0, 0.68241], + 961: [0.19444, 0.44444, 0, 0, 0.6118], + 962: [0.09722, 0.44444, 0.07917, 0, 0.42361], + 963: [0, 0.44444, 0.03704, 0, 0.68588], + 964: [0, 0.44444, 0.13472, 0, 0.52083], + 965: [0, 0.44444, 0.03704, 0, 0.63055], + 966: [0.19444, 0.44444, 0, 0, 0.74722], + 967: [0.19444, 0.44444, 0, 0, 0.71805], + 968: [0.19444, 0.69444, 0.03704, 0, 0.75833], + 969: [0, 0.44444, 0.03704, 0, 0.71782], + 977: [0, 0.69444, 0, 0, 0.69155], + 981: [0.19444, 0.69444, 0, 0, 0.7125], + 982: [0, 0.44444, 0.03194, 0, 0.975], + 1009: [0.19444, 0.44444, 0, 0, 0.6118], + 1013: [0, 0.44444, 0, 0, 0.48333], + 57649: [0, 0.44444, 0, 0, 0.39352], + 57911: [0.19444, 0.44444, 0, 0, 0.43889] + }, + "Math-Italic": { + 32: [0, 0, 0, 0, 0.25], + 48: [0, 0.43056, 0, 0, 0.5], + 49: [0, 0.43056, 0, 0, 0.5], + 50: [0, 0.43056, 0, 0, 0.5], + 51: [0.19444, 0.43056, 0, 0, 0.5], + 52: [0.19444, 0.43056, 0, 0, 0.5], + 53: [0.19444, 0.43056, 0, 0, 0.5], + 54: [0, 0.64444, 0, 0, 0.5], + 55: [0.19444, 0.43056, 0, 0, 0.5], + 56: [0, 0.64444, 0, 0, 0.5], + 57: [0.19444, 0.43056, 0, 0, 0.5], + 65: [0, 0.68333, 0, 0.13889, 0.75], + 66: [0, 0.68333, 0.05017, 0.08334, 0.75851], + 67: [0, 0.68333, 0.07153, 0.08334, 0.71472], + 68: [0, 0.68333, 0.02778, 0.05556, 0.82792], + 69: [0, 0.68333, 0.05764, 0.08334, 0.7382], + 70: [0, 0.68333, 0.13889, 0.08334, 0.64306], + 71: [0, 0.68333, 0, 0.08334, 0.78625], + 72: [0, 0.68333, 0.08125, 0.05556, 0.83125], + 73: [0, 0.68333, 0.07847, 0.11111, 0.43958], + 74: [0, 0.68333, 0.09618, 0.16667, 0.55451], + 75: [0, 0.68333, 0.07153, 0.05556, 0.84931], + 76: [0, 0.68333, 0, 0.02778, 0.68056], + 77: [0, 0.68333, 0.10903, 0.08334, 0.97014], + 78: [0, 0.68333, 0.10903, 0.08334, 0.80347], + 79: [0, 0.68333, 0.02778, 0.08334, 0.76278], + 80: [0, 0.68333, 0.13889, 0.08334, 0.64201], + 81: [0.19444, 0.68333, 0, 0.08334, 0.79056], + 82: [0, 0.68333, 773e-5, 0.08334, 0.75929], + 83: [0, 0.68333, 0.05764, 0.08334, 0.6132], + 84: [0, 0.68333, 0.13889, 0.08334, 0.58438], + 85: [0, 0.68333, 0.10903, 0.02778, 0.68278], + 86: [0, 0.68333, 0.22222, 0, 0.58333], + 87: [0, 0.68333, 0.13889, 0, 0.94445], + 88: [0, 0.68333, 0.07847, 0.08334, 0.82847], + 89: [0, 0.68333, 0.22222, 0, 0.58056], + 90: [0, 0.68333, 0.07153, 0.08334, 0.68264], + 97: [0, 0.43056, 0, 0, 0.52859], + 98: [0, 0.69444, 0, 0, 0.42917], + 99: [0, 0.43056, 0, 0.05556, 0.43276], + 100: [0, 0.69444, 0, 0.16667, 0.52049], + 101: [0, 0.43056, 0, 0.05556, 0.46563], + 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + 104: [0, 0.69444, 0, 0, 0.57616], + 105: [0, 0.65952, 0, 0, 0.34451], + 106: [0.19444, 0.65952, 0.05724, 0, 0.41181], + 107: [0, 0.69444, 0.03148, 0, 0.5206], + 108: [0, 0.69444, 0.01968, 0.08334, 0.29838], + 109: [0, 0.43056, 0, 0, 0.87801], + 110: [0, 0.43056, 0, 0, 0.60023], + 111: [0, 0.43056, 0, 0.05556, 0.48472], + 112: [0.19444, 0.43056, 0, 0.08334, 0.50313], + 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + 114: [0, 0.43056, 0.02778, 0.05556, 0.45116], + 115: [0, 0.43056, 0, 0.05556, 0.46875], + 116: [0, 0.61508, 0, 0.08334, 0.36111], + 117: [0, 0.43056, 0, 0.02778, 0.57246], + 118: [0, 0.43056, 0.03588, 0.02778, 0.48472], + 119: [0, 0.43056, 0.02691, 0.08334, 0.71592], + 120: [0, 0.43056, 0, 0.02778, 0.57153], + 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + 122: [0, 0.43056, 0.04398, 0.05556, 0.46505], + 160: [0, 0, 0, 0, 0.25], + 915: [0, 0.68333, 0.13889, 0.08334, 0.61528], + 916: [0, 0.68333, 0, 0.16667, 0.83334], + 920: [0, 0.68333, 0.02778, 0.08334, 0.76278], + 923: [0, 0.68333, 0, 0.16667, 0.69445], + 926: [0, 0.68333, 0.07569, 0.08334, 0.74236], + 928: [0, 0.68333, 0.08125, 0.05556, 0.83125], + 931: [0, 0.68333, 0.05764, 0.08334, 0.77986], + 933: [0, 0.68333, 0.13889, 0.05556, 0.58333], + 934: [0, 0.68333, 0, 0.08334, 0.66667], + 936: [0, 0.68333, 0.11, 0.05556, 0.61222], + 937: [0, 0.68333, 0.05017, 0.08334, 0.7724], + 945: [0, 0.43056, 37e-4, 0.02778, 0.6397], + 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + 947: [0.19444, 0.43056, 0.05556, 0, 0.51773], + 948: [0, 0.69444, 0.03785, 0.05556, 0.44444], + 949: [0, 0.43056, 0, 0.08334, 0.46632], + 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + 952: [0, 0.69444, 0.02778, 0.08334, 0.46944], + 953: [0, 0.43056, 0, 0.05556, 0.35394], + 954: [0, 0.43056, 0, 0, 0.57616], + 955: [0, 0.69444, 0, 0, 0.58334], + 956: [0.19444, 0.43056, 0, 0.02778, 0.60255], + 957: [0, 0.43056, 0.06366, 0.02778, 0.49398], + 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + 959: [0, 0.43056, 0, 0.05556, 0.48472], + 960: [0, 0.43056, 0.03588, 0, 0.57003], + 961: [0.19444, 0.43056, 0, 0.08334, 0.51702], + 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + 963: [0, 0.43056, 0.03588, 0, 0.57141], + 964: [0, 0.43056, 0.1132, 0.02778, 0.43715], + 965: [0, 0.43056, 0.03588, 0.02778, 0.54028], + 966: [0.19444, 0.43056, 0, 0.08334, 0.65417], + 967: [0.19444, 0.43056, 0, 0.05556, 0.62569], + 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + 969: [0, 0.43056, 0.03588, 0, 0.62245], + 977: [0, 0.69444, 0, 0.08334, 0.59144], + 981: [0.19444, 0.69444, 0, 0.08334, 0.59583], + 982: [0, 0.43056, 0.02778, 0, 0.82813], + 1009: [0.19444, 0.43056, 0, 0.08334, 0.51702], + 1013: [0, 0.43056, 0, 0.05556, 0.4059], + 57649: [0, 0.43056, 0, 0.02778, 0.32246], + 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403] + }, + "SansSerif-Bold": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.36667], + 34: [0, 0.69444, 0, 0, 0.55834], + 35: [0.19444, 0.69444, 0, 0, 0.91667], + 36: [0.05556, 0.75, 0, 0, 0.55], + 37: [0.05556, 0.75, 0, 0, 1.02912], + 38: [0, 0.69444, 0, 0, 0.83056], + 39: [0, 0.69444, 0, 0, 0.30556], + 40: [0.25, 0.75, 0, 0, 0.42778], + 41: [0.25, 0.75, 0, 0, 0.42778], + 42: [0, 0.75, 0, 0, 0.55], + 43: [0.11667, 0.61667, 0, 0, 0.85556], + 44: [0.10556, 0.13056, 0, 0, 0.30556], + 45: [0, 0.45833, 0, 0, 0.36667], + 46: [0, 0.13056, 0, 0, 0.30556], + 47: [0.25, 0.75, 0, 0, 0.55], + 48: [0, 0.69444, 0, 0, 0.55], + 49: [0, 0.69444, 0, 0, 0.55], + 50: [0, 0.69444, 0, 0, 0.55], + 51: [0, 0.69444, 0, 0, 0.55], + 52: [0, 0.69444, 0, 0, 0.55], + 53: [0, 0.69444, 0, 0, 0.55], + 54: [0, 0.69444, 0, 0, 0.55], + 55: [0, 0.69444, 0, 0, 0.55], + 56: [0, 0.69444, 0, 0, 0.55], + 57: [0, 0.69444, 0, 0, 0.55], + 58: [0, 0.45833, 0, 0, 0.30556], + 59: [0.10556, 0.45833, 0, 0, 0.30556], + 61: [-0.09375, 0.40625, 0, 0, 0.85556], + 63: [0, 0.69444, 0, 0, 0.51945], + 64: [0, 0.69444, 0, 0, 0.73334], + 65: [0, 0.69444, 0, 0, 0.73334], + 66: [0, 0.69444, 0, 0, 0.73334], + 67: [0, 0.69444, 0, 0, 0.70278], + 68: [0, 0.69444, 0, 0, 0.79445], + 69: [0, 0.69444, 0, 0, 0.64167], + 70: [0, 0.69444, 0, 0, 0.61111], + 71: [0, 0.69444, 0, 0, 0.73334], + 72: [0, 0.69444, 0, 0, 0.79445], + 73: [0, 0.69444, 0, 0, 0.33056], + 74: [0, 0.69444, 0, 0, 0.51945], + 75: [0, 0.69444, 0, 0, 0.76389], + 76: [0, 0.69444, 0, 0, 0.58056], + 77: [0, 0.69444, 0, 0, 0.97778], + 78: [0, 0.69444, 0, 0, 0.79445], + 79: [0, 0.69444, 0, 0, 0.79445], + 80: [0, 0.69444, 0, 0, 0.70278], + 81: [0.10556, 0.69444, 0, 0, 0.79445], + 82: [0, 0.69444, 0, 0, 0.70278], + 83: [0, 0.69444, 0, 0, 0.61111], + 84: [0, 0.69444, 0, 0, 0.73334], + 85: [0, 0.69444, 0, 0, 0.76389], + 86: [0, 0.69444, 0.01528, 0, 0.73334], + 87: [0, 0.69444, 0.01528, 0, 1.03889], + 88: [0, 0.69444, 0, 0, 0.73334], + 89: [0, 0.69444, 0.0275, 0, 0.73334], + 90: [0, 0.69444, 0, 0, 0.67223], + 91: [0.25, 0.75, 0, 0, 0.34306], + 93: [0.25, 0.75, 0, 0, 0.34306], + 94: [0, 0.69444, 0, 0, 0.55], + 95: [0.35, 0.10833, 0.03056, 0, 0.55], + 97: [0, 0.45833, 0, 0, 0.525], + 98: [0, 0.69444, 0, 0, 0.56111], + 99: [0, 0.45833, 0, 0, 0.48889], + 100: [0, 0.69444, 0, 0, 0.56111], + 101: [0, 0.45833, 0, 0, 0.51111], + 102: [0, 0.69444, 0.07639, 0, 0.33611], + 103: [0.19444, 0.45833, 0.01528, 0, 0.55], + 104: [0, 0.69444, 0, 0, 0.56111], + 105: [0, 0.69444, 0, 0, 0.25556], + 106: [0.19444, 0.69444, 0, 0, 0.28611], + 107: [0, 0.69444, 0, 0, 0.53056], + 108: [0, 0.69444, 0, 0, 0.25556], + 109: [0, 0.45833, 0, 0, 0.86667], + 110: [0, 0.45833, 0, 0, 0.56111], + 111: [0, 0.45833, 0, 0, 0.55], + 112: [0.19444, 0.45833, 0, 0, 0.56111], + 113: [0.19444, 0.45833, 0, 0, 0.56111], + 114: [0, 0.45833, 0.01528, 0, 0.37222], + 115: [0, 0.45833, 0, 0, 0.42167], + 116: [0, 0.58929, 0, 0, 0.40417], + 117: [0, 0.45833, 0, 0, 0.56111], + 118: [0, 0.45833, 0.01528, 0, 0.5], + 119: [0, 0.45833, 0.01528, 0, 0.74445], + 120: [0, 0.45833, 0, 0, 0.5], + 121: [0.19444, 0.45833, 0.01528, 0, 0.5], + 122: [0, 0.45833, 0, 0, 0.47639], + 126: [0.35, 0.34444, 0, 0, 0.55], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.69444, 0, 0, 0.55], + 176: [0, 0.69444, 0, 0, 0.73334], + 180: [0, 0.69444, 0, 0, 0.55], + 184: [0.17014, 0, 0, 0, 0.48889], + 305: [0, 0.45833, 0, 0, 0.25556], + 567: [0.19444, 0.45833, 0, 0, 0.28611], + 710: [0, 0.69444, 0, 0, 0.55], + 711: [0, 0.63542, 0, 0, 0.55], + 713: [0, 0.63778, 0, 0, 0.55], + 728: [0, 0.69444, 0, 0, 0.55], + 729: [0, 0.69444, 0, 0, 0.30556], + 730: [0, 0.69444, 0, 0, 0.73334], + 732: [0, 0.69444, 0, 0, 0.55], + 733: [0, 0.69444, 0, 0, 0.55], + 915: [0, 0.69444, 0, 0, 0.58056], + 916: [0, 0.69444, 0, 0, 0.91667], + 920: [0, 0.69444, 0, 0, 0.85556], + 923: [0, 0.69444, 0, 0, 0.67223], + 926: [0, 0.69444, 0, 0, 0.73334], + 928: [0, 0.69444, 0, 0, 0.79445], + 931: [0, 0.69444, 0, 0, 0.79445], + 933: [0, 0.69444, 0, 0, 0.85556], + 934: [0, 0.69444, 0, 0, 0.79445], + 936: [0, 0.69444, 0, 0, 0.85556], + 937: [0, 0.69444, 0, 0, 0.79445], + 8211: [0, 0.45833, 0.03056, 0, 0.55], + 8212: [0, 0.45833, 0.03056, 0, 1.10001], + 8216: [0, 0.69444, 0, 0, 0.30556], + 8217: [0, 0.69444, 0, 0, 0.30556], + 8220: [0, 0.69444, 0, 0, 0.55834], + 8221: [0, 0.69444, 0, 0, 0.55834] + }, + "SansSerif-Italic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.05733, 0, 0.31945], + 34: [0, 0.69444, 316e-5, 0, 0.5], + 35: [0.19444, 0.69444, 0.05087, 0, 0.83334], + 36: [0.05556, 0.75, 0.11156, 0, 0.5], + 37: [0.05556, 0.75, 0.03126, 0, 0.83334], + 38: [0, 0.69444, 0.03058, 0, 0.75834], + 39: [0, 0.69444, 0.07816, 0, 0.27778], + 40: [0.25, 0.75, 0.13164, 0, 0.38889], + 41: [0.25, 0.75, 0.02536, 0, 0.38889], + 42: [0, 0.75, 0.11775, 0, 0.5], + 43: [0.08333, 0.58333, 0.02536, 0, 0.77778], + 44: [0.125, 0.08333, 0, 0, 0.27778], + 45: [0, 0.44444, 0.01946, 0, 0.33333], + 46: [0, 0.08333, 0, 0, 0.27778], + 47: [0.25, 0.75, 0.13164, 0, 0.5], + 48: [0, 0.65556, 0.11156, 0, 0.5], + 49: [0, 0.65556, 0.11156, 0, 0.5], + 50: [0, 0.65556, 0.11156, 0, 0.5], + 51: [0, 0.65556, 0.11156, 0, 0.5], + 52: [0, 0.65556, 0.11156, 0, 0.5], + 53: [0, 0.65556, 0.11156, 0, 0.5], + 54: [0, 0.65556, 0.11156, 0, 0.5], + 55: [0, 0.65556, 0.11156, 0, 0.5], + 56: [0, 0.65556, 0.11156, 0, 0.5], + 57: [0, 0.65556, 0.11156, 0, 0.5], + 58: [0, 0.44444, 0.02502, 0, 0.27778], + 59: [0.125, 0.44444, 0.02502, 0, 0.27778], + 61: [-0.13, 0.37, 0.05087, 0, 0.77778], + 63: [0, 0.69444, 0.11809, 0, 0.47222], + 64: [0, 0.69444, 0.07555, 0, 0.66667], + 65: [0, 0.69444, 0, 0, 0.66667], + 66: [0, 0.69444, 0.08293, 0, 0.66667], + 67: [0, 0.69444, 0.11983, 0, 0.63889], + 68: [0, 0.69444, 0.07555, 0, 0.72223], + 69: [0, 0.69444, 0.11983, 0, 0.59722], + 70: [0, 0.69444, 0.13372, 0, 0.56945], + 71: [0, 0.69444, 0.11983, 0, 0.66667], + 72: [0, 0.69444, 0.08094, 0, 0.70834], + 73: [0, 0.69444, 0.13372, 0, 0.27778], + 74: [0, 0.69444, 0.08094, 0, 0.47222], + 75: [0, 0.69444, 0.11983, 0, 0.69445], + 76: [0, 0.69444, 0, 0, 0.54167], + 77: [0, 0.69444, 0.08094, 0, 0.875], + 78: [0, 0.69444, 0.08094, 0, 0.70834], + 79: [0, 0.69444, 0.07555, 0, 0.73611], + 80: [0, 0.69444, 0.08293, 0, 0.63889], + 81: [0.125, 0.69444, 0.07555, 0, 0.73611], + 82: [0, 0.69444, 0.08293, 0, 0.64584], + 83: [0, 0.69444, 0.09205, 0, 0.55556], + 84: [0, 0.69444, 0.13372, 0, 0.68056], + 85: [0, 0.69444, 0.08094, 0, 0.6875], + 86: [0, 0.69444, 0.1615, 0, 0.66667], + 87: [0, 0.69444, 0.1615, 0, 0.94445], + 88: [0, 0.69444, 0.13372, 0, 0.66667], + 89: [0, 0.69444, 0.17261, 0, 0.66667], + 90: [0, 0.69444, 0.11983, 0, 0.61111], + 91: [0.25, 0.75, 0.15942, 0, 0.28889], + 93: [0.25, 0.75, 0.08719, 0, 0.28889], + 94: [0, 0.69444, 0.0799, 0, 0.5], + 95: [0.35, 0.09444, 0.08616, 0, 0.5], + 97: [0, 0.44444, 981e-5, 0, 0.48056], + 98: [0, 0.69444, 0.03057, 0, 0.51667], + 99: [0, 0.44444, 0.08336, 0, 0.44445], + 100: [0, 0.69444, 0.09483, 0, 0.51667], + 101: [0, 0.44444, 0.06778, 0, 0.44445], + 102: [0, 0.69444, 0.21705, 0, 0.30556], + 103: [0.19444, 0.44444, 0.10836, 0, 0.5], + 104: [0, 0.69444, 0.01778, 0, 0.51667], + 105: [0, 0.67937, 0.09718, 0, 0.23889], + 106: [0.19444, 0.67937, 0.09162, 0, 0.26667], + 107: [0, 0.69444, 0.08336, 0, 0.48889], + 108: [0, 0.69444, 0.09483, 0, 0.23889], + 109: [0, 0.44444, 0.01778, 0, 0.79445], + 110: [0, 0.44444, 0.01778, 0, 0.51667], + 111: [0, 0.44444, 0.06613, 0, 0.5], + 112: [0.19444, 0.44444, 0.0389, 0, 0.51667], + 113: [0.19444, 0.44444, 0.04169, 0, 0.51667], + 114: [0, 0.44444, 0.10836, 0, 0.34167], + 115: [0, 0.44444, 0.0778, 0, 0.38333], + 116: [0, 0.57143, 0.07225, 0, 0.36111], + 117: [0, 0.44444, 0.04169, 0, 0.51667], + 118: [0, 0.44444, 0.10836, 0, 0.46111], + 119: [0, 0.44444, 0.10836, 0, 0.68334], + 120: [0, 0.44444, 0.09169, 0, 0.46111], + 121: [0.19444, 0.44444, 0.10836, 0, 0.46111], + 122: [0, 0.44444, 0.08752, 0, 0.43472], + 126: [0.35, 0.32659, 0.08826, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.67937, 0.06385, 0, 0.5], + 176: [0, 0.69444, 0, 0, 0.73752], + 184: [0.17014, 0, 0, 0, 0.44445], + 305: [0, 0.44444, 0.04169, 0, 0.23889], + 567: [0.19444, 0.44444, 0.04169, 0, 0.26667], + 710: [0, 0.69444, 0.0799, 0, 0.5], + 711: [0, 0.63194, 0.08432, 0, 0.5], + 713: [0, 0.60889, 0.08776, 0, 0.5], + 714: [0, 0.69444, 0.09205, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0.09483, 0, 0.5], + 729: [0, 0.67937, 0.07774, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.73752], + 732: [0, 0.67659, 0.08826, 0, 0.5], + 733: [0, 0.69444, 0.09205, 0, 0.5], + 915: [0, 0.69444, 0.13372, 0, 0.54167], + 916: [0, 0.69444, 0, 0, 0.83334], + 920: [0, 0.69444, 0.07555, 0, 0.77778], + 923: [0, 0.69444, 0, 0, 0.61111], + 926: [0, 0.69444, 0.12816, 0, 0.66667], + 928: [0, 0.69444, 0.08094, 0, 0.70834], + 931: [0, 0.69444, 0.11983, 0, 0.72222], + 933: [0, 0.69444, 0.09031, 0, 0.77778], + 934: [0, 0.69444, 0.04603, 0, 0.72222], + 936: [0, 0.69444, 0.09031, 0, 0.77778], + 937: [0, 0.69444, 0.08293, 0, 0.72222], + 8211: [0, 0.44444, 0.08616, 0, 0.5], + 8212: [0, 0.44444, 0.08616, 0, 1], + 8216: [0, 0.69444, 0.07816, 0, 0.27778], + 8217: [0, 0.69444, 0.07816, 0, 0.27778], + 8220: [0, 0.69444, 0.14205, 0, 0.5], + 8221: [0, 0.69444, 316e-5, 0, 0.5] + }, + "SansSerif-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.31945], + 34: [0, 0.69444, 0, 0, 0.5], + 35: [0.19444, 0.69444, 0, 0, 0.83334], + 36: [0.05556, 0.75, 0, 0, 0.5], + 37: [0.05556, 0.75, 0, 0, 0.83334], + 38: [0, 0.69444, 0, 0, 0.75834], + 39: [0, 0.69444, 0, 0, 0.27778], + 40: [0.25, 0.75, 0, 0, 0.38889], + 41: [0.25, 0.75, 0, 0, 0.38889], + 42: [0, 0.75, 0, 0, 0.5], + 43: [0.08333, 0.58333, 0, 0, 0.77778], + 44: [0.125, 0.08333, 0, 0, 0.27778], + 45: [0, 0.44444, 0, 0, 0.33333], + 46: [0, 0.08333, 0, 0, 0.27778], + 47: [0.25, 0.75, 0, 0, 0.5], + 48: [0, 0.65556, 0, 0, 0.5], + 49: [0, 0.65556, 0, 0, 0.5], + 50: [0, 0.65556, 0, 0, 0.5], + 51: [0, 0.65556, 0, 0, 0.5], + 52: [0, 0.65556, 0, 0, 0.5], + 53: [0, 0.65556, 0, 0, 0.5], + 54: [0, 0.65556, 0, 0, 0.5], + 55: [0, 0.65556, 0, 0, 0.5], + 56: [0, 0.65556, 0, 0, 0.5], + 57: [0, 0.65556, 0, 0, 0.5], + 58: [0, 0.44444, 0, 0, 0.27778], + 59: [0.125, 0.44444, 0, 0, 0.27778], + 61: [-0.13, 0.37, 0, 0, 0.77778], + 63: [0, 0.69444, 0, 0, 0.47222], + 64: [0, 0.69444, 0, 0, 0.66667], + 65: [0, 0.69444, 0, 0, 0.66667], + 66: [0, 0.69444, 0, 0, 0.66667], + 67: [0, 0.69444, 0, 0, 0.63889], + 68: [0, 0.69444, 0, 0, 0.72223], + 69: [0, 0.69444, 0, 0, 0.59722], + 70: [0, 0.69444, 0, 0, 0.56945], + 71: [0, 0.69444, 0, 0, 0.66667], + 72: [0, 0.69444, 0, 0, 0.70834], + 73: [0, 0.69444, 0, 0, 0.27778], + 74: [0, 0.69444, 0, 0, 0.47222], + 75: [0, 0.69444, 0, 0, 0.69445], + 76: [0, 0.69444, 0, 0, 0.54167], + 77: [0, 0.69444, 0, 0, 0.875], + 78: [0, 0.69444, 0, 0, 0.70834], + 79: [0, 0.69444, 0, 0, 0.73611], + 80: [0, 0.69444, 0, 0, 0.63889], + 81: [0.125, 0.69444, 0, 0, 0.73611], + 82: [0, 0.69444, 0, 0, 0.64584], + 83: [0, 0.69444, 0, 0, 0.55556], + 84: [0, 0.69444, 0, 0, 0.68056], + 85: [0, 0.69444, 0, 0, 0.6875], + 86: [0, 0.69444, 0.01389, 0, 0.66667], + 87: [0, 0.69444, 0.01389, 0, 0.94445], + 88: [0, 0.69444, 0, 0, 0.66667], + 89: [0, 0.69444, 0.025, 0, 0.66667], + 90: [0, 0.69444, 0, 0, 0.61111], + 91: [0.25, 0.75, 0, 0, 0.28889], + 93: [0.25, 0.75, 0, 0, 0.28889], + 94: [0, 0.69444, 0, 0, 0.5], + 95: [0.35, 0.09444, 0.02778, 0, 0.5], + 97: [0, 0.44444, 0, 0, 0.48056], + 98: [0, 0.69444, 0, 0, 0.51667], + 99: [0, 0.44444, 0, 0, 0.44445], + 100: [0, 0.69444, 0, 0, 0.51667], + 101: [0, 0.44444, 0, 0, 0.44445], + 102: [0, 0.69444, 0.06944, 0, 0.30556], + 103: [0.19444, 0.44444, 0.01389, 0, 0.5], + 104: [0, 0.69444, 0, 0, 0.51667], + 105: [0, 0.67937, 0, 0, 0.23889], + 106: [0.19444, 0.67937, 0, 0, 0.26667], + 107: [0, 0.69444, 0, 0, 0.48889], + 108: [0, 0.69444, 0, 0, 0.23889], + 109: [0, 0.44444, 0, 0, 0.79445], + 110: [0, 0.44444, 0, 0, 0.51667], + 111: [0, 0.44444, 0, 0, 0.5], + 112: [0.19444, 0.44444, 0, 0, 0.51667], + 113: [0.19444, 0.44444, 0, 0, 0.51667], + 114: [0, 0.44444, 0.01389, 0, 0.34167], + 115: [0, 0.44444, 0, 0, 0.38333], + 116: [0, 0.57143, 0, 0, 0.36111], + 117: [0, 0.44444, 0, 0, 0.51667], + 118: [0, 0.44444, 0.01389, 0, 0.46111], + 119: [0, 0.44444, 0.01389, 0, 0.68334], + 120: [0, 0.44444, 0, 0, 0.46111], + 121: [0.19444, 0.44444, 0.01389, 0, 0.46111], + 122: [0, 0.44444, 0, 0, 0.43472], + 126: [0.35, 0.32659, 0, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.67937, 0, 0, 0.5], + 176: [0, 0.69444, 0, 0, 0.66667], + 184: [0.17014, 0, 0, 0, 0.44445], + 305: [0, 0.44444, 0, 0, 0.23889], + 567: [0.19444, 0.44444, 0, 0, 0.26667], + 710: [0, 0.69444, 0, 0, 0.5], + 711: [0, 0.63194, 0, 0, 0.5], + 713: [0, 0.60889, 0, 0, 0.5], + 714: [0, 0.69444, 0, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0, 0, 0.5], + 729: [0, 0.67937, 0, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.66667], + 732: [0, 0.67659, 0, 0, 0.5], + 733: [0, 0.69444, 0, 0, 0.5], + 915: [0, 0.69444, 0, 0, 0.54167], + 916: [0, 0.69444, 0, 0, 0.83334], + 920: [0, 0.69444, 0, 0, 0.77778], + 923: [0, 0.69444, 0, 0, 0.61111], + 926: [0, 0.69444, 0, 0, 0.66667], + 928: [0, 0.69444, 0, 0, 0.70834], + 931: [0, 0.69444, 0, 0, 0.72222], + 933: [0, 0.69444, 0, 0, 0.77778], + 934: [0, 0.69444, 0, 0, 0.72222], + 936: [0, 0.69444, 0, 0, 0.77778], + 937: [0, 0.69444, 0, 0, 0.72222], + 8211: [0, 0.44444, 0.02778, 0, 0.5], + 8212: [0, 0.44444, 0.02778, 0, 1], + 8216: [0, 0.69444, 0, 0, 0.27778], + 8217: [0, 0.69444, 0, 0, 0.27778], + 8220: [0, 0.69444, 0, 0, 0.5], + 8221: [0, 0.69444, 0, 0, 0.5] + }, + "Script-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.7, 0.22925, 0, 0.80253], + 66: [0, 0.7, 0.04087, 0, 0.90757], + 67: [0, 0.7, 0.1689, 0, 0.66619], + 68: [0, 0.7, 0.09371, 0, 0.77443], + 69: [0, 0.7, 0.18583, 0, 0.56162], + 70: [0, 0.7, 0.13634, 0, 0.89544], + 71: [0, 0.7, 0.17322, 0, 0.60961], + 72: [0, 0.7, 0.29694, 0, 0.96919], + 73: [0, 0.7, 0.19189, 0, 0.80907], + 74: [0.27778, 0.7, 0.19189, 0, 1.05159], + 75: [0, 0.7, 0.31259, 0, 0.91364], + 76: [0, 0.7, 0.19189, 0, 0.87373], + 77: [0, 0.7, 0.15981, 0, 1.08031], + 78: [0, 0.7, 0.3525, 0, 0.9015], + 79: [0, 0.7, 0.08078, 0, 0.73787], + 80: [0, 0.7, 0.08078, 0, 1.01262], + 81: [0, 0.7, 0.03305, 0, 0.88282], + 82: [0, 0.7, 0.06259, 0, 0.85], + 83: [0, 0.7, 0.19189, 0, 0.86767], + 84: [0, 0.7, 0.29087, 0, 0.74697], + 85: [0, 0.7, 0.25815, 0, 0.79996], + 86: [0, 0.7, 0.27523, 0, 0.62204], + 87: [0, 0.7, 0.27523, 0, 0.80532], + 88: [0, 0.7, 0.26006, 0, 0.94445], + 89: [0, 0.7, 0.2939, 0, 0.70961], + 90: [0, 0.7, 0.24037, 0, 0.8212], + 160: [0, 0, 0, 0, 0.25] + }, + "Size1-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.35001, 0.85, 0, 0, 0.45834], + 41: [0.35001, 0.85, 0, 0, 0.45834], + 47: [0.35001, 0.85, 0, 0, 0.57778], + 91: [0.35001, 0.85, 0, 0, 0.41667], + 92: [0.35001, 0.85, 0, 0, 0.57778], + 93: [0.35001, 0.85, 0, 0, 0.41667], + 123: [0.35001, 0.85, 0, 0, 0.58334], + 125: [0.35001, 0.85, 0, 0, 0.58334], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.72222, 0, 0, 0.55556], + 732: [0, 0.72222, 0, 0, 0.55556], + 770: [0, 0.72222, 0, 0, 0.55556], + 771: [0, 0.72222, 0, 0, 0.55556], + 8214: [-99e-5, 0.601, 0, 0, 0.77778], + 8593: [1e-5, 0.6, 0, 0, 0.66667], + 8595: [1e-5, 0.6, 0, 0, 0.66667], + 8657: [1e-5, 0.6, 0, 0, 0.77778], + 8659: [1e-5, 0.6, 0, 0, 0.77778], + 8719: [0.25001, 0.75, 0, 0, 0.94445], + 8720: [0.25001, 0.75, 0, 0, 0.94445], + 8721: [0.25001, 0.75, 0, 0, 1.05556], + 8730: [0.35001, 0.85, 0, 0, 1], + 8739: [-599e-5, 0.606, 0, 0, 0.33333], + 8741: [-599e-5, 0.606, 0, 0, 0.55556], + 8747: [0.30612, 0.805, 0.19445, 0, 0.47222], + 8748: [0.306, 0.805, 0.19445, 0, 0.47222], + 8749: [0.306, 0.805, 0.19445, 0, 0.47222], + 8750: [0.30612, 0.805, 0.19445, 0, 0.47222], + 8896: [0.25001, 0.75, 0, 0, 0.83334], + 8897: [0.25001, 0.75, 0, 0, 0.83334], + 8898: [0.25001, 0.75, 0, 0, 0.83334], + 8899: [0.25001, 0.75, 0, 0, 0.83334], + 8968: [0.35001, 0.85, 0, 0, 0.47222], + 8969: [0.35001, 0.85, 0, 0, 0.47222], + 8970: [0.35001, 0.85, 0, 0, 0.47222], + 8971: [0.35001, 0.85, 0, 0, 0.47222], + 9168: [-99e-5, 0.601, 0, 0, 0.66667], + 10216: [0.35001, 0.85, 0, 0, 0.47222], + 10217: [0.35001, 0.85, 0, 0, 0.47222], + 10752: [0.25001, 0.75, 0, 0, 1.11111], + 10753: [0.25001, 0.75, 0, 0, 1.11111], + 10754: [0.25001, 0.75, 0, 0, 1.11111], + 10756: [0.25001, 0.75, 0, 0, 0.83334], + 10758: [0.25001, 0.75, 0, 0, 0.83334] + }, + "Size2-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.65002, 1.15, 0, 0, 0.59722], + 41: [0.65002, 1.15, 0, 0, 0.59722], + 47: [0.65002, 1.15, 0, 0, 0.81111], + 91: [0.65002, 1.15, 0, 0, 0.47222], + 92: [0.65002, 1.15, 0, 0, 0.81111], + 93: [0.65002, 1.15, 0, 0, 0.47222], + 123: [0.65002, 1.15, 0, 0, 0.66667], + 125: [0.65002, 1.15, 0, 0, 0.66667], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.75, 0, 0, 1], + 732: [0, 0.75, 0, 0, 1], + 770: [0, 0.75, 0, 0, 1], + 771: [0, 0.75, 0, 0, 1], + 8719: [0.55001, 1.05, 0, 0, 1.27778], + 8720: [0.55001, 1.05, 0, 0, 1.27778], + 8721: [0.55001, 1.05, 0, 0, 1.44445], + 8730: [0.65002, 1.15, 0, 0, 1], + 8747: [0.86225, 1.36, 0.44445, 0, 0.55556], + 8748: [0.862, 1.36, 0.44445, 0, 0.55556], + 8749: [0.862, 1.36, 0.44445, 0, 0.55556], + 8750: [0.86225, 1.36, 0.44445, 0, 0.55556], + 8896: [0.55001, 1.05, 0, 0, 1.11111], + 8897: [0.55001, 1.05, 0, 0, 1.11111], + 8898: [0.55001, 1.05, 0, 0, 1.11111], + 8899: [0.55001, 1.05, 0, 0, 1.11111], + 8968: [0.65002, 1.15, 0, 0, 0.52778], + 8969: [0.65002, 1.15, 0, 0, 0.52778], + 8970: [0.65002, 1.15, 0, 0, 0.52778], + 8971: [0.65002, 1.15, 0, 0, 0.52778], + 10216: [0.65002, 1.15, 0, 0, 0.61111], + 10217: [0.65002, 1.15, 0, 0, 0.61111], + 10752: [0.55001, 1.05, 0, 0, 1.51112], + 10753: [0.55001, 1.05, 0, 0, 1.51112], + 10754: [0.55001, 1.05, 0, 0, 1.51112], + 10756: [0.55001, 1.05, 0, 0, 1.11111], + 10758: [0.55001, 1.05, 0, 0, 1.11111] + }, + "Size3-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.95003, 1.45, 0, 0, 0.73611], + 41: [0.95003, 1.45, 0, 0, 0.73611], + 47: [0.95003, 1.45, 0, 0, 1.04445], + 91: [0.95003, 1.45, 0, 0, 0.52778], + 92: [0.95003, 1.45, 0, 0, 1.04445], + 93: [0.95003, 1.45, 0, 0, 0.52778], + 123: [0.95003, 1.45, 0, 0, 0.75], + 125: [0.95003, 1.45, 0, 0, 0.75], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.75, 0, 0, 1.44445], + 732: [0, 0.75, 0, 0, 1.44445], + 770: [0, 0.75, 0, 0, 1.44445], + 771: [0, 0.75, 0, 0, 1.44445], + 8730: [0.95003, 1.45, 0, 0, 1], + 8968: [0.95003, 1.45, 0, 0, 0.58334], + 8969: [0.95003, 1.45, 0, 0, 0.58334], + 8970: [0.95003, 1.45, 0, 0, 0.58334], + 8971: [0.95003, 1.45, 0, 0, 0.58334], + 10216: [0.95003, 1.45, 0, 0, 0.75], + 10217: [0.95003, 1.45, 0, 0, 0.75] + }, + "Size4-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [1.25003, 1.75, 0, 0, 0.79167], + 41: [1.25003, 1.75, 0, 0, 0.79167], + 47: [1.25003, 1.75, 0, 0, 1.27778], + 91: [1.25003, 1.75, 0, 0, 0.58334], + 92: [1.25003, 1.75, 0, 0, 1.27778], + 93: [1.25003, 1.75, 0, 0, 0.58334], + 123: [1.25003, 1.75, 0, 0, 0.80556], + 125: [1.25003, 1.75, 0, 0, 0.80556], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.825, 0, 0, 1.8889], + 732: [0, 0.825, 0, 0, 1.8889], + 770: [0, 0.825, 0, 0, 1.8889], + 771: [0, 0.825, 0, 0, 1.8889], + 8730: [1.25003, 1.75, 0, 0, 1], + 8968: [1.25003, 1.75, 0, 0, 0.63889], + 8969: [1.25003, 1.75, 0, 0, 0.63889], + 8970: [1.25003, 1.75, 0, 0, 0.63889], + 8971: [1.25003, 1.75, 0, 0, 0.63889], + 9115: [0.64502, 1.155, 0, 0, 0.875], + 9116: [1e-5, 0.6, 0, 0, 0.875], + 9117: [0.64502, 1.155, 0, 0, 0.875], + 9118: [0.64502, 1.155, 0, 0, 0.875], + 9119: [1e-5, 0.6, 0, 0, 0.875], + 9120: [0.64502, 1.155, 0, 0, 0.875], + 9121: [0.64502, 1.155, 0, 0, 0.66667], + 9122: [-99e-5, 0.601, 0, 0, 0.66667], + 9123: [0.64502, 1.155, 0, 0, 0.66667], + 9124: [0.64502, 1.155, 0, 0, 0.66667], + 9125: [-99e-5, 0.601, 0, 0, 0.66667], + 9126: [0.64502, 1.155, 0, 0, 0.66667], + 9127: [1e-5, 0.9, 0, 0, 0.88889], + 9128: [0.65002, 1.15, 0, 0, 0.88889], + 9129: [0.90001, 0, 0, 0, 0.88889], + 9130: [0, 0.3, 0, 0, 0.88889], + 9131: [1e-5, 0.9, 0, 0, 0.88889], + 9132: [0.65002, 1.15, 0, 0, 0.88889], + 9133: [0.90001, 0, 0, 0, 0.88889], + 9143: [0.88502, 0.915, 0, 0, 1.05556], + 10216: [1.25003, 1.75, 0, 0, 0.80556], + 10217: [1.25003, 1.75, 0, 0, 0.80556], + 57344: [-499e-5, 0.605, 0, 0, 1.05556], + 57345: [-499e-5, 0.605, 0, 0, 1.05556], + 57680: [0, 0.12, 0, 0, 0.45], + 57681: [0, 0.12, 0, 0, 0.45], + 57682: [0, 0.12, 0, 0, 0.45], + 57683: [0, 0.12, 0, 0, 0.45] + }, + "Typewriter-Regular": { + 32: [0, 0, 0, 0, 0.525], + 33: [0, 0.61111, 0, 0, 0.525], + 34: [0, 0.61111, 0, 0, 0.525], + 35: [0, 0.61111, 0, 0, 0.525], + 36: [0.08333, 0.69444, 0, 0, 0.525], + 37: [0.08333, 0.69444, 0, 0, 0.525], + 38: [0, 0.61111, 0, 0, 0.525], + 39: [0, 0.61111, 0, 0, 0.525], + 40: [0.08333, 0.69444, 0, 0, 0.525], + 41: [0.08333, 0.69444, 0, 0, 0.525], + 42: [0, 0.52083, 0, 0, 0.525], + 43: [-0.08056, 0.53055, 0, 0, 0.525], + 44: [0.13889, 0.125, 0, 0, 0.525], + 45: [-0.08056, 0.53055, 0, 0, 0.525], + 46: [0, 0.125, 0, 0, 0.525], + 47: [0.08333, 0.69444, 0, 0, 0.525], + 48: [0, 0.61111, 0, 0, 0.525], + 49: [0, 0.61111, 0, 0, 0.525], + 50: [0, 0.61111, 0, 0, 0.525], + 51: [0, 0.61111, 0, 0, 0.525], + 52: [0, 0.61111, 0, 0, 0.525], + 53: [0, 0.61111, 0, 0, 0.525], + 54: [0, 0.61111, 0, 0, 0.525], + 55: [0, 0.61111, 0, 0, 0.525], + 56: [0, 0.61111, 0, 0, 0.525], + 57: [0, 0.61111, 0, 0, 0.525], + 58: [0, 0.43056, 0, 0, 0.525], + 59: [0.13889, 0.43056, 0, 0, 0.525], + 60: [-0.05556, 0.55556, 0, 0, 0.525], + 61: [-0.19549, 0.41562, 0, 0, 0.525], + 62: [-0.05556, 0.55556, 0, 0, 0.525], + 63: [0, 0.61111, 0, 0, 0.525], + 64: [0, 0.61111, 0, 0, 0.525], + 65: [0, 0.61111, 0, 0, 0.525], + 66: [0, 0.61111, 0, 0, 0.525], + 67: [0, 0.61111, 0, 0, 0.525], + 68: [0, 0.61111, 0, 0, 0.525], + 69: [0, 0.61111, 0, 0, 0.525], + 70: [0, 0.61111, 0, 0, 0.525], + 71: [0, 0.61111, 0, 0, 0.525], + 72: [0, 0.61111, 0, 0, 0.525], + 73: [0, 0.61111, 0, 0, 0.525], + 74: [0, 0.61111, 0, 0, 0.525], + 75: [0, 0.61111, 0, 0, 0.525], + 76: [0, 0.61111, 0, 0, 0.525], + 77: [0, 0.61111, 0, 0, 0.525], + 78: [0, 0.61111, 0, 0, 0.525], + 79: [0, 0.61111, 0, 0, 0.525], + 80: [0, 0.61111, 0, 0, 0.525], + 81: [0.13889, 0.61111, 0, 0, 0.525], + 82: [0, 0.61111, 0, 0, 0.525], + 83: [0, 0.61111, 0, 0, 0.525], + 84: [0, 0.61111, 0, 0, 0.525], + 85: [0, 0.61111, 0, 0, 0.525], + 86: [0, 0.61111, 0, 0, 0.525], + 87: [0, 0.61111, 0, 0, 0.525], + 88: [0, 0.61111, 0, 0, 0.525], + 89: [0, 0.61111, 0, 0, 0.525], + 90: [0, 0.61111, 0, 0, 0.525], + 91: [0.08333, 0.69444, 0, 0, 0.525], + 92: [0.08333, 0.69444, 0, 0, 0.525], + 93: [0.08333, 0.69444, 0, 0, 0.525], + 94: [0, 0.61111, 0, 0, 0.525], + 95: [0.09514, 0, 0, 0, 0.525], + 96: [0, 0.61111, 0, 0, 0.525], + 97: [0, 0.43056, 0, 0, 0.525], + 98: [0, 0.61111, 0, 0, 0.525], + 99: [0, 0.43056, 0, 0, 0.525], + 100: [0, 0.61111, 0, 0, 0.525], + 101: [0, 0.43056, 0, 0, 0.525], + 102: [0, 0.61111, 0, 0, 0.525], + 103: [0.22222, 0.43056, 0, 0, 0.525], + 104: [0, 0.61111, 0, 0, 0.525], + 105: [0, 0.61111, 0, 0, 0.525], + 106: [0.22222, 0.61111, 0, 0, 0.525], + 107: [0, 0.61111, 0, 0, 0.525], + 108: [0, 0.61111, 0, 0, 0.525], + 109: [0, 0.43056, 0, 0, 0.525], + 110: [0, 0.43056, 0, 0, 0.525], + 111: [0, 0.43056, 0, 0, 0.525], + 112: [0.22222, 0.43056, 0, 0, 0.525], + 113: [0.22222, 0.43056, 0, 0, 0.525], + 114: [0, 0.43056, 0, 0, 0.525], + 115: [0, 0.43056, 0, 0, 0.525], + 116: [0, 0.55358, 0, 0, 0.525], + 117: [0, 0.43056, 0, 0, 0.525], + 118: [0, 0.43056, 0, 0, 0.525], + 119: [0, 0.43056, 0, 0, 0.525], + 120: [0, 0.43056, 0, 0, 0.525], + 121: [0.22222, 0.43056, 0, 0, 0.525], + 122: [0, 0.43056, 0, 0, 0.525], + 123: [0.08333, 0.69444, 0, 0, 0.525], + 124: [0.08333, 0.69444, 0, 0, 0.525], + 125: [0.08333, 0.69444, 0, 0, 0.525], + 126: [0, 0.61111, 0, 0, 0.525], + 127: [0, 0.61111, 0, 0, 0.525], + 160: [0, 0, 0, 0, 0.525], + 176: [0, 0.61111, 0, 0, 0.525], + 184: [0.19445, 0, 0, 0, 0.525], + 305: [0, 0.43056, 0, 0, 0.525], + 567: [0.22222, 0.43056, 0, 0, 0.525], + 711: [0, 0.56597, 0, 0, 0.525], + 713: [0, 0.56555, 0, 0, 0.525], + 714: [0, 0.61111, 0, 0, 0.525], + 715: [0, 0.61111, 0, 0, 0.525], + 728: [0, 0.61111, 0, 0, 0.525], + 730: [0, 0.61111, 0, 0, 0.525], + 770: [0, 0.61111, 0, 0, 0.525], + 771: [0, 0.61111, 0, 0, 0.525], + 776: [0, 0.61111, 0, 0, 0.525], + 915: [0, 0.61111, 0, 0, 0.525], + 916: [0, 0.61111, 0, 0, 0.525], + 920: [0, 0.61111, 0, 0, 0.525], + 923: [0, 0.61111, 0, 0, 0.525], + 926: [0, 0.61111, 0, 0, 0.525], + 928: [0, 0.61111, 0, 0, 0.525], + 931: [0, 0.61111, 0, 0, 0.525], + 933: [0, 0.61111, 0, 0, 0.525], + 934: [0, 0.61111, 0, 0, 0.525], + 936: [0, 0.61111, 0, 0, 0.525], + 937: [0, 0.61111, 0, 0, 0.525], + 8216: [0, 0.61111, 0, 0, 0.525], + 8217: [0, 0.61111, 0, 0, 0.525], + 8242: [0, 0.61111, 0, 0, 0.525], + 9251: [0.11111, 0.21944, 0, 0, 0.525] + } +}, kc = { + // Latin-1 + Å: "A", + Ð: "D", + Þ: "o", + å: "a", + ð: "d", + þ: "o", + // Cyrillic + А: "A", + Б: "B", + В: "B", + Г: "F", + Д: "A", + Е: "E", + Ж: "K", + З: "3", + И: "N", + Й: "N", + К: "K", + Л: "N", + М: "M", + Н: "H", + О: "O", + П: "N", + Р: "P", + С: "C", + Т: "T", + У: "y", + Ф: "O", + Х: "X", + Ц: "U", + Ч: "h", + Ш: "W", + Щ: "W", + Ъ: "B", + Ы: "X", + Ь: "B", + Э: "3", + Ю: "X", + Я: "R", + а: "a", + б: "b", + в: "a", + г: "r", + д: "y", + е: "e", + ж: "m", + з: "e", + и: "n", + й: "n", + к: "n", + л: "n", + м: "m", + н: "n", + о: "o", + п: "n", + р: "p", + с: "c", + т: "o", + у: "y", + ф: "b", + х: "x", + ц: "n", + ч: "n", + ш: "w", + щ: "w", + ъ: "a", + ы: "m", + ь: "a", + э: "e", + ю: "m", + я: "r" +}; +function d0(n, e, t) { + if (!pr[e]) + throw new Error("Font metrics not found for font: " + e + "."); + var i = n.charCodeAt(0), r = pr[e][i]; + if (!r && n[0] in kc && (i = kc[n[0]].charCodeAt(0), r = pr[e][i]), !r && t === "text" && By(i) && (r = pr[e][77]), r) + return { + depth: r[0], + height: r[1], + italic: r[2], + skew: r[3], + width: r[4] + }; +} +var wl = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + pt: 1, + // TeX point + mm: 7227 / 2540, + // millimeter + cm: 7227 / 254, + // centimeter + in: 72.27, + // inch + bp: 803 / 800, + // big (PostScript) points + pc: 12, + // pica + dd: 1238 / 1157, + // didot + cc: 14856 / 1157, + // cicero (12 didot) + nd: 685 / 642, + // new didot + nc: 1370 / 107, + // new cicero (12 new didot) + sp: 1 / 65536, + // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + px: 803 / 800 + // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX +}, jy = { + ex: !0, + em: !0, + mu: !0 +}, Xy = function(e) { + return typeof e != "string" && (e = e.unit), e in wl || e in jy || e === "ex"; +}, at = function(e, t) { + var i; + if (e.unit in wl) + i = wl[e.unit] / t.fontMetrics().ptPerEm / t.sizeMultiplier; + else if (e.unit === "mu") + i = t.fontMetrics().cssEmPerMu; + else { + var r; + if (t.style.isTight() ? r = t.havingStyle(t.style.text()) : r = t, e.unit === "ex") + i = r.fontMetrics().xHeight; + else if (e.unit === "em") + i = r.fontMetrics().quad; + else + throw new ge("Invalid unit: '" + e.unit + "'"); + r !== t && (i *= r.sizeMultiplier / t.sizeMultiplier); + } + return Math.min(e.number * i, t.maxSize); +}, re = function(e) { + return +e.toFixed(4) + "em"; +}, Fr = function(e) { + return e.filter((t) => t).join(" "); +}, Hf = function(e, t, i) { + if (this.classes = e || [], this.attributes = {}, this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = i || {}, t) { + t.style.isTight() && this.classes.push("mtight"); + var r = t.getColor(); + r && (this.style.color = r); + } +}, Vf = function(e) { + var t = document.createElement(e); + t.className = Fr(this.classes); + for (var i in this.style) + this.style.hasOwnProperty(i) && (t.style[i] = this.style[i]); + for (var r in this.attributes) + this.attributes.hasOwnProperty(r) && t.setAttribute(r, this.attributes[r]); + for (var s = 0; s < this.children.length; s++) + t.appendChild(this.children[s].toNode()); + return t; +}, Qy = /[\s"'>/=\x00-\x1f]/, Kf = function(e) { + var t = "<" + e; + this.classes.length && (t += ' class="' + _e.escape(Fr(this.classes)) + '"'); + var i = ""; + for (var r in this.style) + this.style.hasOwnProperty(r) && (i += _e.hyphenate(r) + ":" + this.style[r] + ";"); + i && (t += ' style="' + _e.escape(i) + '"'); + for (var s in this.attributes) + if (this.attributes.hasOwnProperty(s)) { + if (Qy.test(s)) + throw new ge("Invalid attribute name '" + s + "'"); + t += " " + s + '="' + _e.escape(this.attributes[s]) + '"'; + } + t += ">"; + for (var a = 0; a < this.children.length; a++) + t += this.children[a].toMarkup(); + return t += "</" + e + ">", t; +}; +class Ha { + constructor(e, t, i, r) { + this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.width = void 0, this.maxFontSize = void 0, this.style = void 0, Hf.call(this, e, i, r), this.children = t || []; + } + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not + * all browsers support attributes the same, and having too many custom + * attributes is probably bad. + */ + setAttribute(e, t) { + this.attributes[e] = t; + } + hasClass(e) { + return _e.contains(this.classes, e); + } + toNode() { + return Vf.call(this, "span"); + } + toMarkup() { + return Kf.call(this, "span"); + } +} +class Yf { + constructor(e, t, i, r) { + this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, Hf.call(this, t, r), this.children = i || [], this.setAttribute("href", e); + } + setAttribute(e, t) { + this.attributes[e] = t; + } + hasClass(e) { + return _e.contains(this.classes, e); + } + toNode() { + return Vf.call(this, "a"); + } + toMarkup() { + return Kf.call(this, "a"); + } +} +class Zy { + constructor(e, t, i) { + this.src = void 0, this.alt = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.alt = t, this.src = e, this.classes = ["mord"], this.style = i; + } + hasClass(e) { + return _e.contains(this.classes, e); + } + toNode() { + var e = document.createElement("img"); + e.src = this.src, e.alt = this.alt, e.className = "mord"; + for (var t in this.style) + this.style.hasOwnProperty(t) && (e.style[t] = this.style[t]); + return e; + } + toMarkup() { + var e = '<img src="' + _e.escape(this.src) + '"' + (' alt="' + _e.escape(this.alt) + '"'), t = ""; + for (var i in this.style) + this.style.hasOwnProperty(i) && (t += _e.hyphenate(i) + ":" + this.style[i] + ";"); + return t && (e += ' style="' + _e.escape(t) + '"'), e += "'/>", e; + } +} +var Jy = { + î: "ı̂", + ï: "ı̈", + í: "ı́", + // 'ī': '\u0131\u0304', // enable when we add Extended Latin + ì: "ı̀" +}; +class er { + constructor(e, t, i, r, s, a, o, l) { + this.text = void 0, this.height = void 0, this.depth = void 0, this.italic = void 0, this.skew = void 0, this.width = void 0, this.maxFontSize = void 0, this.classes = void 0, this.style = void 0, this.text = e, this.height = t || 0, this.depth = i || 0, this.italic = r || 0, this.skew = s || 0, this.width = a || 0, this.classes = o || [], this.style = l || {}, this.maxFontSize = 0; + var u = $y(this.text.charCodeAt(0)); + u && this.classes.push(u + "_fallback"), /[îïíì]/.test(this.text) && (this.text = Jy[this.text]); + } + hasClass(e) { + return _e.contains(this.classes, e); + } + /** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ + toNode() { + var e = document.createTextNode(this.text), t = null; + this.italic > 0 && (t = document.createElement("span"), t.style.marginRight = re(this.italic)), this.classes.length > 0 && (t = t || document.createElement("span"), t.className = Fr(this.classes)); + for (var i in this.style) + this.style.hasOwnProperty(i) && (t = t || document.createElement("span"), t.style[i] = this.style[i]); + return t ? (t.appendChild(e), t) : e; + } + /** + * Creates markup for a symbol node. + */ + toMarkup() { + var e = !1, t = "<span"; + this.classes.length && (e = !0, t += ' class="', t += _e.escape(Fr(this.classes)), t += '"'); + var i = ""; + this.italic > 0 && (i += "margin-right:" + this.italic + "em;"); + for (var r in this.style) + this.style.hasOwnProperty(r) && (i += _e.hyphenate(r) + ":" + this.style[r] + ";"); + i && (e = !0, t += ' style="' + _e.escape(i) + '"'); + var s = _e.escape(this.text); + return e ? (t += ">", t += s, t += "</span>", t) : s; + } +} +class Pr { + constructor(e, t) { + this.children = void 0, this.attributes = void 0, this.children = e || [], this.attributes = t || {}; + } + toNode() { + var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "svg"); + for (var i in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, i) && t.setAttribute(i, this.attributes[i]); + for (var r = 0; r < this.children.length; r++) + t.appendChild(this.children[r].toNode()); + return t; + } + toMarkup() { + var e = '<svg xmlns="http://www.w3.org/2000/svg"'; + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + '="' + _e.escape(this.attributes[t]) + '"'); + e += ">"; + for (var i = 0; i < this.children.length; i++) + e += this.children[i].toMarkup(); + return e += "</svg>", e; + } +} +class Vr { + constructor(e, t) { + this.pathName = void 0, this.alternate = void 0, this.pathName = e, this.alternate = t; + } + toNode() { + var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "path"); + return this.alternate ? t.setAttribute("d", this.alternate) : t.setAttribute("d", wc[this.pathName]), t; + } + toMarkup() { + return this.alternate ? '<path d="' + _e.escape(this.alternate) + '"/>' : '<path d="' + _e.escape(wc[this.pathName]) + '"/>'; + } +} +class Lc { + constructor(e) { + this.attributes = void 0, this.attributes = e || {}; + } + toNode() { + var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "line"); + for (var i in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, i) && t.setAttribute(i, this.attributes[i]); + return t; + } + toMarkup() { + var e = "<line"; + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + '="' + _e.escape(this.attributes[t]) + '"'); + return e += "/>", e; + } +} +function Ic(n) { + if (n instanceof er) + return n; + throw new Error("Expected symbolNode but got " + String(n) + "."); +} +function e_(n) { + if (n instanceof Ha) + return n; + throw new Error("Expected span<HtmlDomNode> but got " + String(n) + "."); +} +var t_ = { + "accent-token": 1, + mathord: 1, + "op-token": 1, + spacing: 1, + textord: 1 +}, mt = { + math: {}, + text: {} +}; +function g(n, e, t, i, r, s) { + mt[n][r] = { + font: e, + group: t, + replace: i + }, s && i && (mt[n][i] = mt[n][r]); +} +var _ = "math", j = "text", x = "main", C = "ams", rt = "accent-token", oe = "bin", Vt = "close", Dn = "inner", ye = "mathord", gt = "op-token", si = "open", Va = "punct", F = "rel", Er = "spacing", P = "textord"; +g(_, x, F, "≡", "\\equiv", !0); +g(_, x, F, "≺", "\\prec", !0); +g(_, x, F, "≻", "\\succ", !0); +g(_, x, F, "∼", "\\sim", !0); +g(_, x, F, "⊥", "\\perp"); +g(_, x, F, "⪯", "\\preceq", !0); +g(_, x, F, "⪰", "\\succeq", !0); +g(_, x, F, "≃", "\\simeq", !0); +g(_, x, F, "∣", "\\mid", !0); +g(_, x, F, "≪", "\\ll", !0); +g(_, x, F, "≫", "\\gg", !0); +g(_, x, F, "≍", "\\asymp", !0); +g(_, x, F, "∥", "\\parallel"); +g(_, x, F, "⋈", "\\bowtie", !0); +g(_, x, F, "⌣", "\\smile", !0); +g(_, x, F, "⊑", "\\sqsubseteq", !0); +g(_, x, F, "⊒", "\\sqsupseteq", !0); +g(_, x, F, "≐", "\\doteq", !0); +g(_, x, F, "⌢", "\\frown", !0); +g(_, x, F, "∋", "\\ni", !0); +g(_, x, F, "∝", "\\propto", !0); +g(_, x, F, "⊢", "\\vdash", !0); +g(_, x, F, "⊣", "\\dashv", !0); +g(_, x, F, "∋", "\\owns"); +g(_, x, Va, ".", "\\ldotp"); +g(_, x, Va, "⋅", "\\cdotp"); +g(_, x, P, "#", "\\#"); +g(j, x, P, "#", "\\#"); +g(_, x, P, "&", "\\&"); +g(j, x, P, "&", "\\&"); +g(_, x, P, "ℵ", "\\aleph", !0); +g(_, x, P, "∀", "\\forall", !0); +g(_, x, P, "ℏ", "\\hbar", !0); +g(_, x, P, "∃", "\\exists", !0); +g(_, x, P, "∇", "\\nabla", !0); +g(_, x, P, "♭", "\\flat", !0); +g(_, x, P, "ℓ", "\\ell", !0); +g(_, x, P, "♮", "\\natural", !0); +g(_, x, P, "♣", "\\clubsuit", !0); +g(_, x, P, "℘", "\\wp", !0); +g(_, x, P, "♯", "\\sharp", !0); +g(_, x, P, "♢", "\\diamondsuit", !0); +g(_, x, P, "ℜ", "\\Re", !0); +g(_, x, P, "♡", "\\heartsuit", !0); +g(_, x, P, "ℑ", "\\Im", !0); +g(_, x, P, "♠", "\\spadesuit", !0); +g(_, x, P, "§", "\\S", !0); +g(j, x, P, "§", "\\S"); +g(_, x, P, "¶", "\\P", !0); +g(j, x, P, "¶", "\\P"); +g(_, x, P, "†", "\\dag"); +g(j, x, P, "†", "\\dag"); +g(j, x, P, "†", "\\textdagger"); +g(_, x, P, "‡", "\\ddag"); +g(j, x, P, "‡", "\\ddag"); +g(j, x, P, "‡", "\\textdaggerdbl"); +g(_, x, Vt, "⎱", "\\rmoustache", !0); +g(_, x, si, "⎰", "\\lmoustache", !0); +g(_, x, Vt, "⟯", "\\rgroup", !0); +g(_, x, si, "⟮", "\\lgroup", !0); +g(_, x, oe, "∓", "\\mp", !0); +g(_, x, oe, "⊖", "\\ominus", !0); +g(_, x, oe, "⊎", "\\uplus", !0); +g(_, x, oe, "⊓", "\\sqcap", !0); +g(_, x, oe, "∗", "\\ast"); +g(_, x, oe, "⊔", "\\sqcup", !0); +g(_, x, oe, "◯", "\\bigcirc", !0); +g(_, x, oe, "∙", "\\bullet", !0); +g(_, x, oe, "‡", "\\ddagger"); +g(_, x, oe, "≀", "\\wr", !0); +g(_, x, oe, "⨿", "\\amalg"); +g(_, x, oe, "&", "\\And"); +g(_, x, F, "⟵", "\\longleftarrow", !0); +g(_, x, F, "⇐", "\\Leftarrow", !0); +g(_, x, F, "⟸", "\\Longleftarrow", !0); +g(_, x, F, "⟶", "\\longrightarrow", !0); +g(_, x, F, "⇒", "\\Rightarrow", !0); +g(_, x, F, "⟹", "\\Longrightarrow", !0); +g(_, x, F, "↔", "\\leftrightarrow", !0); +g(_, x, F, "⟷", "\\longleftrightarrow", !0); +g(_, x, F, "⇔", "\\Leftrightarrow", !0); +g(_, x, F, "⟺", "\\Longleftrightarrow", !0); +g(_, x, F, "↦", "\\mapsto", !0); +g(_, x, F, "⟼", "\\longmapsto", !0); +g(_, x, F, "↗", "\\nearrow", !0); +g(_, x, F, "↩", "\\hookleftarrow", !0); +g(_, x, F, "↪", "\\hookrightarrow", !0); +g(_, x, F, "↘", "\\searrow", !0); +g(_, x, F, "↼", "\\leftharpoonup", !0); +g(_, x, F, "⇀", "\\rightharpoonup", !0); +g(_, x, F, "↙", "\\swarrow", !0); +g(_, x, F, "↽", "\\leftharpoondown", !0); +g(_, x, F, "⇁", "\\rightharpoondown", !0); +g(_, x, F, "↖", "\\nwarrow", !0); +g(_, x, F, "⇌", "\\rightleftharpoons", !0); +g(_, C, F, "≮", "\\nless", !0); +g(_, C, F, "", "\\@nleqslant"); +g(_, C, F, "", "\\@nleqq"); +g(_, C, F, "⪇", "\\lneq", !0); +g(_, C, F, "≨", "\\lneqq", !0); +g(_, C, F, "", "\\@lvertneqq"); +g(_, C, F, "⋦", "\\lnsim", !0); +g(_, C, F, "⪉", "\\lnapprox", !0); +g(_, C, F, "⊀", "\\nprec", !0); +g(_, C, F, "⋠", "\\npreceq", !0); +g(_, C, F, "⋨", "\\precnsim", !0); +g(_, C, F, "⪹", "\\precnapprox", !0); +g(_, C, F, "≁", "\\nsim", !0); +g(_, C, F, "", "\\@nshortmid"); +g(_, C, F, "∤", "\\nmid", !0); +g(_, C, F, "⊬", "\\nvdash", !0); +g(_, C, F, "⊭", "\\nvDash", !0); +g(_, C, F, "⋪", "\\ntriangleleft"); +g(_, C, F, "⋬", "\\ntrianglelefteq", !0); +g(_, C, F, "⊊", "\\subsetneq", !0); +g(_, C, F, "", "\\@varsubsetneq"); +g(_, C, F, "⫋", "\\subsetneqq", !0); +g(_, C, F, "", "\\@varsubsetneqq"); +g(_, C, F, "≯", "\\ngtr", !0); +g(_, C, F, "", "\\@ngeqslant"); +g(_, C, F, "", "\\@ngeqq"); +g(_, C, F, "⪈", "\\gneq", !0); +g(_, C, F, "≩", "\\gneqq", !0); +g(_, C, F, "", "\\@gvertneqq"); +g(_, C, F, "⋧", "\\gnsim", !0); +g(_, C, F, "⪊", "\\gnapprox", !0); +g(_, C, F, "⊁", "\\nsucc", !0); +g(_, C, F, "⋡", "\\nsucceq", !0); +g(_, C, F, "⋩", "\\succnsim", !0); +g(_, C, F, "⪺", "\\succnapprox", !0); +g(_, C, F, "≆", "\\ncong", !0); +g(_, C, F, "", "\\@nshortparallel"); +g(_, C, F, "∦", "\\nparallel", !0); +g(_, C, F, "⊯", "\\nVDash", !0); +g(_, C, F, "⋫", "\\ntriangleright"); +g(_, C, F, "⋭", "\\ntrianglerighteq", !0); +g(_, C, F, "", "\\@nsupseteqq"); +g(_, C, F, "⊋", "\\supsetneq", !0); +g(_, C, F, "", "\\@varsupsetneq"); +g(_, C, F, "⫌", "\\supsetneqq", !0); +g(_, C, F, "", "\\@varsupsetneqq"); +g(_, C, F, "⊮", "\\nVdash", !0); +g(_, C, F, "⪵", "\\precneqq", !0); +g(_, C, F, "⪶", "\\succneqq", !0); +g(_, C, F, "", "\\@nsubseteqq"); +g(_, C, oe, "⊴", "\\unlhd"); +g(_, C, oe, "⊵", "\\unrhd"); +g(_, C, F, "↚", "\\nleftarrow", !0); +g(_, C, F, "↛", "\\nrightarrow", !0); +g(_, C, F, "⇍", "\\nLeftarrow", !0); +g(_, C, F, "⇏", "\\nRightarrow", !0); +g(_, C, F, "↮", "\\nleftrightarrow", !0); +g(_, C, F, "⇎", "\\nLeftrightarrow", !0); +g(_, C, F, "△", "\\vartriangle"); +g(_, C, P, "ℏ", "\\hslash"); +g(_, C, P, "▽", "\\triangledown"); +g(_, C, P, "◊", "\\lozenge"); +g(_, C, P, "Ⓢ", "\\circledS"); +g(_, C, P, "®", "\\circledR"); +g(j, C, P, "®", "\\circledR"); +g(_, C, P, "∡", "\\measuredangle", !0); +g(_, C, P, "∄", "\\nexists"); +g(_, C, P, "℧", "\\mho"); +g(_, C, P, "Ⅎ", "\\Finv", !0); +g(_, C, P, "⅁", "\\Game", !0); +g(_, C, P, "‵", "\\backprime"); +g(_, C, P, "▲", "\\blacktriangle"); +g(_, C, P, "▼", "\\blacktriangledown"); +g(_, C, P, "■", "\\blacksquare"); +g(_, C, P, "⧫", "\\blacklozenge"); +g(_, C, P, "★", "\\bigstar"); +g(_, C, P, "∢", "\\sphericalangle", !0); +g(_, C, P, "∁", "\\complement", !0); +g(_, C, P, "ð", "\\eth", !0); +g(j, x, P, "ð", "ð"); +g(_, C, P, "╱", "\\diagup"); +g(_, C, P, "╲", "\\diagdown"); +g(_, C, P, "□", "\\square"); +g(_, C, P, "□", "\\Box"); +g(_, C, P, "◊", "\\Diamond"); +g(_, C, P, "¥", "\\yen", !0); +g(j, C, P, "¥", "\\yen", !0); +g(_, C, P, "✓", "\\checkmark", !0); +g(j, C, P, "✓", "\\checkmark"); +g(_, C, P, "ℶ", "\\beth", !0); +g(_, C, P, "ℸ", "\\daleth", !0); +g(_, C, P, "ℷ", "\\gimel", !0); +g(_, C, P, "ϝ", "\\digamma", !0); +g(_, C, P, "ϰ", "\\varkappa"); +g(_, C, si, "┌", "\\@ulcorner", !0); +g(_, C, Vt, "┐", "\\@urcorner", !0); +g(_, C, si, "└", "\\@llcorner", !0); +g(_, C, Vt, "┘", "\\@lrcorner", !0); +g(_, C, F, "≦", "\\leqq", !0); +g(_, C, F, "⩽", "\\leqslant", !0); +g(_, C, F, "⪕", "\\eqslantless", !0); +g(_, C, F, "≲", "\\lesssim", !0); +g(_, C, F, "⪅", "\\lessapprox", !0); +g(_, C, F, "≊", "\\approxeq", !0); +g(_, C, oe, "⋖", "\\lessdot"); +g(_, C, F, "⋘", "\\lll", !0); +g(_, C, F, "≶", "\\lessgtr", !0); +g(_, C, F, "⋚", "\\lesseqgtr", !0); +g(_, C, F, "⪋", "\\lesseqqgtr", !0); +g(_, C, F, "≑", "\\doteqdot"); +g(_, C, F, "≓", "\\risingdotseq", !0); +g(_, C, F, "≒", "\\fallingdotseq", !0); +g(_, C, F, "∽", "\\backsim", !0); +g(_, C, F, "⋍", "\\backsimeq", !0); +g(_, C, F, "⫅", "\\subseteqq", !0); +g(_, C, F, "⋐", "\\Subset", !0); +g(_, C, F, "⊏", "\\sqsubset", !0); +g(_, C, F, "≼", "\\preccurlyeq", !0); +g(_, C, F, "⋞", "\\curlyeqprec", !0); +g(_, C, F, "≾", "\\precsim", !0); +g(_, C, F, "⪷", "\\precapprox", !0); +g(_, C, F, "⊲", "\\vartriangleleft"); +g(_, C, F, "⊴", "\\trianglelefteq"); +g(_, C, F, "⊨", "\\vDash", !0); +g(_, C, F, "⊪", "\\Vvdash", !0); +g(_, C, F, "⌣", "\\smallsmile"); +g(_, C, F, "⌢", "\\smallfrown"); +g(_, C, F, "≏", "\\bumpeq", !0); +g(_, C, F, "≎", "\\Bumpeq", !0); +g(_, C, F, "≧", "\\geqq", !0); +g(_, C, F, "⩾", "\\geqslant", !0); +g(_, C, F, "⪖", "\\eqslantgtr", !0); +g(_, C, F, "≳", "\\gtrsim", !0); +g(_, C, F, "⪆", "\\gtrapprox", !0); +g(_, C, oe, "⋗", "\\gtrdot"); +g(_, C, F, "⋙", "\\ggg", !0); +g(_, C, F, "≷", "\\gtrless", !0); +g(_, C, F, "⋛", "\\gtreqless", !0); +g(_, C, F, "⪌", "\\gtreqqless", !0); +g(_, C, F, "≖", "\\eqcirc", !0); +g(_, C, F, "≗", "\\circeq", !0); +g(_, C, F, "≜", "\\triangleq", !0); +g(_, C, F, "∼", "\\thicksim"); +g(_, C, F, "≈", "\\thickapprox"); +g(_, C, F, "⫆", "\\supseteqq", !0); +g(_, C, F, "⋑", "\\Supset", !0); +g(_, C, F, "⊐", "\\sqsupset", !0); +g(_, C, F, "≽", "\\succcurlyeq", !0); +g(_, C, F, "⋟", "\\curlyeqsucc", !0); +g(_, C, F, "≿", "\\succsim", !0); +g(_, C, F, "⪸", "\\succapprox", !0); +g(_, C, F, "⊳", "\\vartriangleright"); +g(_, C, F, "⊵", "\\trianglerighteq"); +g(_, C, F, "⊩", "\\Vdash", !0); +g(_, C, F, "∣", "\\shortmid"); +g(_, C, F, "∥", "\\shortparallel"); +g(_, C, F, "≬", "\\between", !0); +g(_, C, F, "⋔", "\\pitchfork", !0); +g(_, C, F, "∝", "\\varpropto"); +g(_, C, F, "◀", "\\blacktriangleleft"); +g(_, C, F, "∴", "\\therefore", !0); +g(_, C, F, "∍", "\\backepsilon"); +g(_, C, F, "▶", "\\blacktriangleright"); +g(_, C, F, "∵", "\\because", !0); +g(_, C, F, "⋘", "\\llless"); +g(_, C, F, "⋙", "\\gggtr"); +g(_, C, oe, "⊲", "\\lhd"); +g(_, C, oe, "⊳", "\\rhd"); +g(_, C, F, "≂", "\\eqsim", !0); +g(_, x, F, "⋈", "\\Join"); +g(_, C, F, "≑", "\\Doteq", !0); +g(_, C, oe, "∔", "\\dotplus", !0); +g(_, C, oe, "∖", "\\smallsetminus"); +g(_, C, oe, "⋒", "\\Cap", !0); +g(_, C, oe, "⋓", "\\Cup", !0); +g(_, C, oe, "⩞", "\\doublebarwedge", !0); +g(_, C, oe, "⊟", "\\boxminus", !0); +g(_, C, oe, "⊞", "\\boxplus", !0); +g(_, C, oe, "⋇", "\\divideontimes", !0); +g(_, C, oe, "⋉", "\\ltimes", !0); +g(_, C, oe, "⋊", "\\rtimes", !0); +g(_, C, oe, "⋋", "\\leftthreetimes", !0); +g(_, C, oe, "⋌", "\\rightthreetimes", !0); +g(_, C, oe, "⋏", "\\curlywedge", !0); +g(_, C, oe, "⋎", "\\curlyvee", !0); +g(_, C, oe, "⊝", "\\circleddash", !0); +g(_, C, oe, "⊛", "\\circledast", !0); +g(_, C, oe, "⋅", "\\centerdot"); +g(_, C, oe, "⊺", "\\intercal", !0); +g(_, C, oe, "⋒", "\\doublecap"); +g(_, C, oe, "⋓", "\\doublecup"); +g(_, C, oe, "⊠", "\\boxtimes", !0); +g(_, C, F, "⇢", "\\dashrightarrow", !0); +g(_, C, F, "⇠", "\\dashleftarrow", !0); +g(_, C, F, "⇇", "\\leftleftarrows", !0); +g(_, C, F, "⇆", "\\leftrightarrows", !0); +g(_, C, F, "⇚", "\\Lleftarrow", !0); +g(_, C, F, "↞", "\\twoheadleftarrow", !0); +g(_, C, F, "↢", "\\leftarrowtail", !0); +g(_, C, F, "↫", "\\looparrowleft", !0); +g(_, C, F, "⇋", "\\leftrightharpoons", !0); +g(_, C, F, "↶", "\\curvearrowleft", !0); +g(_, C, F, "↺", "\\circlearrowleft", !0); +g(_, C, F, "↰", "\\Lsh", !0); +g(_, C, F, "⇈", "\\upuparrows", !0); +g(_, C, F, "↿", "\\upharpoonleft", !0); +g(_, C, F, "⇃", "\\downharpoonleft", !0); +g(_, x, F, "⊶", "\\origof", !0); +g(_, x, F, "⊷", "\\imageof", !0); +g(_, C, F, "⊸", "\\multimap", !0); +g(_, C, F, "↭", "\\leftrightsquigarrow", !0); +g(_, C, F, "⇉", "\\rightrightarrows", !0); +g(_, C, F, "⇄", "\\rightleftarrows", !0); +g(_, C, F, "↠", "\\twoheadrightarrow", !0); +g(_, C, F, "↣", "\\rightarrowtail", !0); +g(_, C, F, "↬", "\\looparrowright", !0); +g(_, C, F, "↷", "\\curvearrowright", !0); +g(_, C, F, "↻", "\\circlearrowright", !0); +g(_, C, F, "↱", "\\Rsh", !0); +g(_, C, F, "⇊", "\\downdownarrows", !0); +g(_, C, F, "↾", "\\upharpoonright", !0); +g(_, C, F, "⇂", "\\downharpoonright", !0); +g(_, C, F, "⇝", "\\rightsquigarrow", !0); +g(_, C, F, "⇝", "\\leadsto"); +g(_, C, F, "⇛", "\\Rrightarrow", !0); +g(_, C, F, "↾", "\\restriction"); +g(_, x, P, "‘", "`"); +g(_, x, P, "$", "\\$"); +g(j, x, P, "$", "\\$"); +g(j, x, P, "$", "\\textdollar"); +g(_, x, P, "%", "\\%"); +g(j, x, P, "%", "\\%"); +g(_, x, P, "_", "\\_"); +g(j, x, P, "_", "\\_"); +g(j, x, P, "_", "\\textunderscore"); +g(_, x, P, "∠", "\\angle", !0); +g(_, x, P, "∞", "\\infty", !0); +g(_, x, P, "′", "\\prime"); +g(_, x, P, "△", "\\triangle"); +g(_, x, P, "Γ", "\\Gamma", !0); +g(_, x, P, "Δ", "\\Delta", !0); +g(_, x, P, "Θ", "\\Theta", !0); +g(_, x, P, "Λ", "\\Lambda", !0); +g(_, x, P, "Ξ", "\\Xi", !0); +g(_, x, P, "Π", "\\Pi", !0); +g(_, x, P, "Σ", "\\Sigma", !0); +g(_, x, P, "Υ", "\\Upsilon", !0); +g(_, x, P, "Φ", "\\Phi", !0); +g(_, x, P, "Ψ", "\\Psi", !0); +g(_, x, P, "Ω", "\\Omega", !0); +g(_, x, P, "A", "Α"); +g(_, x, P, "B", "Β"); +g(_, x, P, "E", "Ε"); +g(_, x, P, "Z", "Ζ"); +g(_, x, P, "H", "Η"); +g(_, x, P, "I", "Ι"); +g(_, x, P, "K", "Κ"); +g(_, x, P, "M", "Μ"); +g(_, x, P, "N", "Ν"); +g(_, x, P, "O", "Ο"); +g(_, x, P, "P", "Ρ"); +g(_, x, P, "T", "Τ"); +g(_, x, P, "X", "Χ"); +g(_, x, P, "¬", "\\neg", !0); +g(_, x, P, "¬", "\\lnot"); +g(_, x, P, "⊤", "\\top"); +g(_, x, P, "⊥", "\\bot"); +g(_, x, P, "∅", "\\emptyset"); +g(_, C, P, "∅", "\\varnothing"); +g(_, x, ye, "α", "\\alpha", !0); +g(_, x, ye, "β", "\\beta", !0); +g(_, x, ye, "γ", "\\gamma", !0); +g(_, x, ye, "δ", "\\delta", !0); +g(_, x, ye, "ϵ", "\\epsilon", !0); +g(_, x, ye, "ζ", "\\zeta", !0); +g(_, x, ye, "η", "\\eta", !0); +g(_, x, ye, "θ", "\\theta", !0); +g(_, x, ye, "ι", "\\iota", !0); +g(_, x, ye, "κ", "\\kappa", !0); +g(_, x, ye, "λ", "\\lambda", !0); +g(_, x, ye, "μ", "\\mu", !0); +g(_, x, ye, "ν", "\\nu", !0); +g(_, x, ye, "ξ", "\\xi", !0); +g(_, x, ye, "ο", "\\omicron", !0); +g(_, x, ye, "π", "\\pi", !0); +g(_, x, ye, "ρ", "\\rho", !0); +g(_, x, ye, "σ", "\\sigma", !0); +g(_, x, ye, "τ", "\\tau", !0); +g(_, x, ye, "υ", "\\upsilon", !0); +g(_, x, ye, "ϕ", "\\phi", !0); +g(_, x, ye, "χ", "\\chi", !0); +g(_, x, ye, "ψ", "\\psi", !0); +g(_, x, ye, "ω", "\\omega", !0); +g(_, x, ye, "ε", "\\varepsilon", !0); +g(_, x, ye, "ϑ", "\\vartheta", !0); +g(_, x, ye, "ϖ", "\\varpi", !0); +g(_, x, ye, "ϱ", "\\varrho", !0); +g(_, x, ye, "ς", "\\varsigma", !0); +g(_, x, ye, "φ", "\\varphi", !0); +g(_, x, oe, "∗", "*", !0); +g(_, x, oe, "+", "+"); +g(_, x, oe, "−", "-", !0); +g(_, x, oe, "⋅", "\\cdot", !0); +g(_, x, oe, "∘", "\\circ", !0); +g(_, x, oe, "÷", "\\div", !0); +g(_, x, oe, "±", "\\pm", !0); +g(_, x, oe, "×", "\\times", !0); +g(_, x, oe, "∩", "\\cap", !0); +g(_, x, oe, "∪", "\\cup", !0); +g(_, x, oe, "∖", "\\setminus", !0); +g(_, x, oe, "∧", "\\land"); +g(_, x, oe, "∨", "\\lor"); +g(_, x, oe, "∧", "\\wedge", !0); +g(_, x, oe, "∨", "\\vee", !0); +g(_, x, P, "√", "\\surd"); +g(_, x, si, "⟨", "\\langle", !0); +g(_, x, si, "∣", "\\lvert"); +g(_, x, si, "∥", "\\lVert"); +g(_, x, Vt, "?", "?"); +g(_, x, Vt, "!", "!"); +g(_, x, Vt, "⟩", "\\rangle", !0); +g(_, x, Vt, "∣", "\\rvert"); +g(_, x, Vt, "∥", "\\rVert"); +g(_, x, F, "=", "="); +g(_, x, F, ":", ":"); +g(_, x, F, "≈", "\\approx", !0); +g(_, x, F, "≅", "\\cong", !0); +g(_, x, F, "≥", "\\ge"); +g(_, x, F, "≥", "\\geq", !0); +g(_, x, F, "←", "\\gets"); +g(_, x, F, ">", "\\gt", !0); +g(_, x, F, "∈", "\\in", !0); +g(_, x, F, "", "\\@not"); +g(_, x, F, "⊂", "\\subset", !0); +g(_, x, F, "⊃", "\\supset", !0); +g(_, x, F, "⊆", "\\subseteq", !0); +g(_, x, F, "⊇", "\\supseteq", !0); +g(_, C, F, "⊈", "\\nsubseteq", !0); +g(_, C, F, "⊉", "\\nsupseteq", !0); +g(_, x, F, "⊨", "\\models"); +g(_, x, F, "←", "\\leftarrow", !0); +g(_, x, F, "≤", "\\le"); +g(_, x, F, "≤", "\\leq", !0); +g(_, x, F, "<", "\\lt", !0); +g(_, x, F, "→", "\\rightarrow", !0); +g(_, x, F, "→", "\\to"); +g(_, C, F, "≱", "\\ngeq", !0); +g(_, C, F, "≰", "\\nleq", !0); +g(_, x, Er, " ", "\\ "); +g(_, x, Er, " ", "\\space"); +g(_, x, Er, " ", "\\nobreakspace"); +g(j, x, Er, " ", "\\ "); +g(j, x, Er, " ", " "); +g(j, x, Er, " ", "\\space"); +g(j, x, Er, " ", "\\nobreakspace"); +g(_, x, Er, null, "\\nobreak"); +g(_, x, Er, null, "\\allowbreak"); +g(_, x, Va, ",", ","); +g(_, x, Va, ";", ";"); +g(_, C, oe, "⊼", "\\barwedge", !0); +g(_, C, oe, "⊻", "\\veebar", !0); +g(_, x, oe, "⊙", "\\odot", !0); +g(_, x, oe, "⊕", "\\oplus", !0); +g(_, x, oe, "⊗", "\\otimes", !0); +g(_, x, P, "∂", "\\partial", !0); +g(_, x, oe, "⊘", "\\oslash", !0); +g(_, C, oe, "⊚", "\\circledcirc", !0); +g(_, C, oe, "⊡", "\\boxdot", !0); +g(_, x, oe, "△", "\\bigtriangleup"); +g(_, x, oe, "▽", "\\bigtriangledown"); +g(_, x, oe, "†", "\\dagger"); +g(_, x, oe, "⋄", "\\diamond"); +g(_, x, oe, "⋆", "\\star"); +g(_, x, oe, "◃", "\\triangleleft"); +g(_, x, oe, "▹", "\\triangleright"); +g(_, x, si, "{", "\\{"); +g(j, x, P, "{", "\\{"); +g(j, x, P, "{", "\\textbraceleft"); +g(_, x, Vt, "}", "\\}"); +g(j, x, P, "}", "\\}"); +g(j, x, P, "}", "\\textbraceright"); +g(_, x, si, "{", "\\lbrace"); +g(_, x, Vt, "}", "\\rbrace"); +g(_, x, si, "[", "\\lbrack", !0); +g(j, x, P, "[", "\\lbrack", !0); +g(_, x, Vt, "]", "\\rbrack", !0); +g(j, x, P, "]", "\\rbrack", !0); +g(_, x, si, "(", "\\lparen", !0); +g(_, x, Vt, ")", "\\rparen", !0); +g(j, x, P, "<", "\\textless", !0); +g(j, x, P, ">", "\\textgreater", !0); +g(_, x, si, "⌊", "\\lfloor", !0); +g(_, x, Vt, "⌋", "\\rfloor", !0); +g(_, x, si, "⌈", "\\lceil", !0); +g(_, x, Vt, "⌉", "\\rceil", !0); +g(_, x, P, "\\", "\\backslash"); +g(_, x, P, "∣", "|"); +g(_, x, P, "∣", "\\vert"); +g(j, x, P, "|", "\\textbar", !0); +g(_, x, P, "∥", "\\|"); +g(_, x, P, "∥", "\\Vert"); +g(j, x, P, "∥", "\\textbardbl"); +g(j, x, P, "~", "\\textasciitilde"); +g(j, x, P, "\\", "\\textbackslash"); +g(j, x, P, "^", "\\textasciicircum"); +g(_, x, F, "↑", "\\uparrow", !0); +g(_, x, F, "⇑", "\\Uparrow", !0); +g(_, x, F, "↓", "\\downarrow", !0); +g(_, x, F, "⇓", "\\Downarrow", !0); +g(_, x, F, "↕", "\\updownarrow", !0); +g(_, x, F, "⇕", "\\Updownarrow", !0); +g(_, x, gt, "∐", "\\coprod"); +g(_, x, gt, "⋁", "\\bigvee"); +g(_, x, gt, "⋀", "\\bigwedge"); +g(_, x, gt, "⨄", "\\biguplus"); +g(_, x, gt, "⋂", "\\bigcap"); +g(_, x, gt, "⋃", "\\bigcup"); +g(_, x, gt, "∫", "\\int"); +g(_, x, gt, "∫", "\\intop"); +g(_, x, gt, "∬", "\\iint"); +g(_, x, gt, "∭", "\\iiint"); +g(_, x, gt, "∏", "\\prod"); +g(_, x, gt, "∑", "\\sum"); +g(_, x, gt, "⨂", "\\bigotimes"); +g(_, x, gt, "⨁", "\\bigoplus"); +g(_, x, gt, "⨀", "\\bigodot"); +g(_, x, gt, "∮", "\\oint"); +g(_, x, gt, "∯", "\\oiint"); +g(_, x, gt, "∰", "\\oiiint"); +g(_, x, gt, "⨆", "\\bigsqcup"); +g(_, x, gt, "∫", "\\smallint"); +g(j, x, Dn, "…", "\\textellipsis"); +g(_, x, Dn, "…", "\\mathellipsis"); +g(j, x, Dn, "…", "\\ldots", !0); +g(_, x, Dn, "…", "\\ldots", !0); +g(_, x, Dn, "⋯", "\\@cdots", !0); +g(_, x, Dn, "⋱", "\\ddots", !0); +g(_, x, P, "⋮", "\\varvdots"); +g(j, x, P, "⋮", "\\varvdots"); +g(_, x, rt, "ˊ", "\\acute"); +g(_, x, rt, "ˋ", "\\grave"); +g(_, x, rt, "¨", "\\ddot"); +g(_, x, rt, "~", "\\tilde"); +g(_, x, rt, "ˉ", "\\bar"); +g(_, x, rt, "˘", "\\breve"); +g(_, x, rt, "ˇ", "\\check"); +g(_, x, rt, "^", "\\hat"); +g(_, x, rt, "⃗", "\\vec"); +g(_, x, rt, "˙", "\\dot"); +g(_, x, rt, "˚", "\\mathring"); +g(_, x, ye, "", "\\@imath"); +g(_, x, ye, "", "\\@jmath"); +g(_, x, P, "ı", "ı"); +g(_, x, P, "ȷ", "ȷ"); +g(j, x, P, "ı", "\\i", !0); +g(j, x, P, "ȷ", "\\j", !0); +g(j, x, P, "ß", "\\ss", !0); +g(j, x, P, "æ", "\\ae", !0); +g(j, x, P, "œ", "\\oe", !0); +g(j, x, P, "ø", "\\o", !0); +g(j, x, P, "Æ", "\\AE", !0); +g(j, x, P, "Œ", "\\OE", !0); +g(j, x, P, "Ø", "\\O", !0); +g(j, x, rt, "ˊ", "\\'"); +g(j, x, rt, "ˋ", "\\`"); +g(j, x, rt, "ˆ", "\\^"); +g(j, x, rt, "˜", "\\~"); +g(j, x, rt, "ˉ", "\\="); +g(j, x, rt, "˘", "\\u"); +g(j, x, rt, "˙", "\\."); +g(j, x, rt, "¸", "\\c"); +g(j, x, rt, "˚", "\\r"); +g(j, x, rt, "ˇ", "\\v"); +g(j, x, rt, "¨", '\\"'); +g(j, x, rt, "˝", "\\H"); +g(j, x, rt, "◯", "\\textcircled"); +var Wf = { + "--": !0, + "---": !0, + "``": !0, + "''": !0 +}; +g(j, x, P, "–", "--", !0); +g(j, x, P, "–", "\\textendash"); +g(j, x, P, "—", "---", !0); +g(j, x, P, "—", "\\textemdash"); +g(j, x, P, "‘", "`", !0); +g(j, x, P, "‘", "\\textquoteleft"); +g(j, x, P, "’", "'", !0); +g(j, x, P, "’", "\\textquoteright"); +g(j, x, P, "“", "``", !0); +g(j, x, P, "“", "\\textquotedblleft"); +g(j, x, P, "”", "''", !0); +g(j, x, P, "”", "\\textquotedblright"); +g(_, x, P, "°", "\\degree", !0); +g(j, x, P, "°", "\\degree"); +g(j, x, P, "°", "\\textdegree", !0); +g(_, x, P, "£", "\\pounds"); +g(_, x, P, "£", "\\mathsterling", !0); +g(j, x, P, "£", "\\pounds"); +g(j, x, P, "£", "\\textsterling", !0); +g(_, C, P, "✠", "\\maltese"); +g(j, C, P, "✠", "\\maltese"); +var Rc = '0123456789/@."'; +for (var Fo = 0; Fo < Rc.length; Fo++) { + var Cc = Rc.charAt(Fo); + g(_, x, P, Cc, Cc); +} +var Fc = '0123456789!@*()-=+";:?/.,'; +for (var Po = 0; Po < Fc.length; Po++) { + var Pc = Fc.charAt(Po); + g(j, x, P, Pc, Pc); +} +var Ra = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +for (var Mo = 0; Mo < Ra.length; Mo++) { + var Ns = Ra.charAt(Mo); + g(_, x, ye, Ns, Ns), g(j, x, P, Ns, Ns); +} +g(_, C, P, "C", "ℂ"); +g(j, C, P, "C", "ℂ"); +g(_, C, P, "H", "ℍ"); +g(j, C, P, "H", "ℍ"); +g(_, C, P, "N", "ℕ"); +g(j, C, P, "N", "ℕ"); +g(_, C, P, "P", "ℙ"); +g(j, C, P, "P", "ℙ"); +g(_, C, P, "Q", "ℚ"); +g(j, C, P, "Q", "ℚ"); +g(_, C, P, "R", "ℝ"); +g(j, C, P, "R", "ℝ"); +g(_, C, P, "Z", "ℤ"); +g(j, C, P, "Z", "ℤ"); +g(_, x, ye, "h", "ℎ"); +g(j, x, ye, "h", "ℎ"); +var xe = ""; +for (var Ut = 0; Ut < Ra.length; Ut++) { + var ut = Ra.charAt(Ut); + xe = String.fromCharCode(55349, 56320 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56372 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56424 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56580 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56684 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56736 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56788 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56840 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56944 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), Ut < 26 && (xe = String.fromCharCode(55349, 56632 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe), xe = String.fromCharCode(55349, 56476 + Ut), g(_, x, ye, ut, xe), g(j, x, P, ut, xe)); +} +xe = "𝕜"; +g(_, x, ye, "k", xe); +g(j, x, P, "k", xe); +for (var Nr = 0; Nr < 10; Nr++) { + var wr = Nr.toString(); + xe = String.fromCharCode(55349, 57294 + Nr), g(_, x, ye, wr, xe), g(j, x, P, wr, xe), xe = String.fromCharCode(55349, 57314 + Nr), g(_, x, ye, wr, xe), g(j, x, P, wr, xe), xe = String.fromCharCode(55349, 57324 + Nr), g(_, x, ye, wr, xe), g(j, x, P, wr, xe), xe = String.fromCharCode(55349, 57334 + Nr), g(_, x, ye, wr, xe), g(j, x, P, wr, xe); +} +var Mc = "ÐÞþ"; +for (var Oo = 0; Oo < Mc.length; Oo++) { + var Us = Mc.charAt(Oo); + g(_, x, ye, Us, Us), g(j, x, P, Us, Us); +} +var Gs = [ + ["mathbf", "textbf", "Main-Bold"], + // A-Z bold upright + ["mathbf", "textbf", "Main-Bold"], + // a-z bold upright + ["mathnormal", "textit", "Math-Italic"], + // A-Z italic + ["mathnormal", "textit", "Math-Italic"], + // a-z italic + ["boldsymbol", "boldsymbol", "Main-BoldItalic"], + // A-Z bold italic + ["boldsymbol", "boldsymbol", "Main-BoldItalic"], + // a-z bold italic + // Map fancy A-Z letters to script, not calligraphic. + // This aligns with unicode-math and math fonts (except Cambria Math). + ["mathscr", "textscr", "Script-Regular"], + // A-Z script + ["", "", ""], + // a-z script. No font + ["", "", ""], + // A-Z bold script. No font + ["", "", ""], + // a-z bold script. No font + ["mathfrak", "textfrak", "Fraktur-Regular"], + // A-Z Fraktur + ["mathfrak", "textfrak", "Fraktur-Regular"], + // a-z Fraktur + ["mathbb", "textbb", "AMS-Regular"], + // A-Z double-struck + ["mathbb", "textbb", "AMS-Regular"], + // k double-struck + // Note that we are using a bold font, but font metrics for regular Fraktur. + ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], + // A-Z bold Fraktur + ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], + // a-z bold Fraktur + ["mathsf", "textsf", "SansSerif-Regular"], + // A-Z sans-serif + ["mathsf", "textsf", "SansSerif-Regular"], + // a-z sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // A-Z bold sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // a-z bold sans-serif + ["mathitsf", "textitsf", "SansSerif-Italic"], + // A-Z italic sans-serif + ["mathitsf", "textitsf", "SansSerif-Italic"], + // a-z italic sans-serif + ["", "", ""], + // A-Z bold italic sans. No font + ["", "", ""], + // a-z bold italic sans. No font + ["mathtt", "texttt", "Typewriter-Regular"], + // A-Z monospace + ["mathtt", "texttt", "Typewriter-Regular"] + // a-z monospace +], Oc = [ + ["mathbf", "textbf", "Main-Bold"], + // 0-9 bold + ["", "", ""], + // 0-9 double-struck. No KaTeX font. + ["mathsf", "textsf", "SansSerif-Regular"], + // 0-9 sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // 0-9 bold sans-serif + ["mathtt", "texttt", "Typewriter-Regular"] + // 0-9 monospace +], i_ = function(e, t) { + var i = e.charCodeAt(0), r = e.charCodeAt(1), s = (i - 55296) * 1024 + (r - 56320) + 65536, a = t === "math" ? 0 : 1; + if (119808 <= s && s < 120484) { + var o = Math.floor((s - 119808) / 26); + return [Gs[o][2], Gs[o][a]]; + } else if (120782 <= s && s <= 120831) { + var l = Math.floor((s - 120782) / 10); + return [Oc[l][2], Oc[l][a]]; + } else { + if (s === 120485 || s === 120486) + return [Gs[0][2], Gs[0][a]]; + if (120486 < s && s < 120782) + return ["", ""]; + throw new ge("Unsupported character: " + e); + } +}, Ka = function(e, t, i) { + return mt[i][e] && mt[i][e].replace && (e = mt[i][e].replace), { + value: e, + metrics: d0(e, t, i) + }; +}, Ri = function(e, t, i, r, s) { + var a = Ka(e, t, i), o = a.metrics; + e = a.value; + var l; + if (o) { + var u = o.italic; + (i === "text" || r && r.font === "mathit") && (u = 0), l = new er(e, o.height, o.depth, u, o.skew, o.width, s); + } else + typeof console < "u" && console.warn("No character metrics " + ("for '" + e + "' in style '" + t + "' and mode '" + i + "'")), l = new er(e, 0, 0, 0, 0, 0, s); + if (r) { + l.maxFontSize = r.sizeMultiplier, r.style.isTight() && l.classes.push("mtight"); + var c = r.getColor(); + c && (l.style.color = c); + } + return l; +}, r_ = function(e, t, i, r) { + return r === void 0 && (r = []), i.font === "boldsymbol" && Ka(e, "Main-Bold", t).metrics ? Ri(e, "Main-Bold", t, i, r.concat(["mathbf"])) : e === "\\" || mt[t][e].font === "main" ? Ri(e, "Main-Regular", t, i, r) : Ri(e, "AMS-Regular", t, i, r.concat(["amsrm"])); +}, n_ = function(e, t, i, r, s) { + return s !== "textord" && Ka(e, "Math-BoldItalic", t).metrics ? { + fontName: "Math-BoldItalic", + fontClass: "boldsymbol" + } : { + fontName: "Main-Bold", + fontClass: "mathbf" + }; +}, s_ = function(e, t, i) { + var r = e.mode, s = e.text, a = ["mord"], o = r === "math" || r === "text" && t.font, l = o ? t.font : t.fontFamily, u = "", c = ""; + if (s.charCodeAt(0) === 55349 && ([u, c] = i_(s, r)), u.length > 0) + return Ri(s, u, r, t, a.concat(c)); + if (l) { + var h, d; + if (l === "boldsymbol") { + var f = n_(s, r, t, a, i); + h = f.fontName, d = [f.fontClass]; + } else o ? (h = Qf[l].fontName, d = [l]) : (h = zs(l, t.fontWeight, t.fontShape), d = [l, t.fontWeight, t.fontShape]); + if (Ka(s, h, r).metrics) + return Ri(s, h, r, t, a.concat(d)); + if (Wf.hasOwnProperty(s) && h.slice(0, 10) === "Typewriter") { + for (var m = [], p = 0; p < s.length; p++) + m.push(Ri(s[p], h, r, t, a.concat(d))); + return Xf(m); + } + } + if (i === "mathord") + return Ri(s, "Math-Italic", r, t, a.concat(["mathnormal"])); + if (i === "textord") { + var v = mt[r][s] && mt[r][s].font; + if (v === "ams") { + var b = zs("amsrm", t.fontWeight, t.fontShape); + return Ri(s, b, r, t, a.concat("amsrm", t.fontWeight, t.fontShape)); + } else if (v === "main" || !v) { + var E = zs("textrm", t.fontWeight, t.fontShape); + return Ri(s, E, r, t, a.concat(t.fontWeight, t.fontShape)); + } else { + var y = zs(v, t.fontWeight, t.fontShape); + return Ri(s, y, r, t, a.concat(y, t.fontWeight, t.fontShape)); + } + } else + throw new Error("unexpected type: " + i + " in makeOrd"); +}, a_ = (n, e) => { + if (Fr(n.classes) !== Fr(e.classes) || n.skew !== e.skew || n.maxFontSize !== e.maxFontSize) + return !1; + if (n.classes.length === 1) { + var t = n.classes[0]; + if (t === "mbin" || t === "mord") + return !1; + } + for (var i in n.style) + if (n.style.hasOwnProperty(i) && n.style[i] !== e.style[i]) + return !1; + for (var r in e.style) + if (e.style.hasOwnProperty(r) && n.style[r] !== e.style[r]) + return !1; + return !0; +}, o_ = (n) => { + for (var e = 0; e < n.length - 1; e++) { + var t = n[e], i = n[e + 1]; + t instanceof er && i instanceof er && a_(t, i) && (t.text += i.text, t.height = Math.max(t.height, i.height), t.depth = Math.max(t.depth, i.depth), t.italic = i.italic, n.splice(e + 1, 1), e--); + } + return n; +}, f0 = function(e) { + for (var t = 0, i = 0, r = 0, s = 0; s < e.children.length; s++) { + var a = e.children[s]; + a.height > t && (t = a.height), a.depth > i && (i = a.depth), a.maxFontSize > r && (r = a.maxFontSize); + } + e.height = t, e.depth = i, e.maxFontSize = r; +}, Wt = function(e, t, i, r) { + var s = new Ha(e, t, i, r); + return f0(s), s; +}, jf = (n, e, t, i) => new Ha(n, e, t, i), l_ = function(e, t, i) { + var r = Wt([e], [], t); + return r.height = Math.max(i || t.fontMetrics().defaultRuleThickness, t.minRuleThickness), r.style.borderBottomWidth = re(r.height), r.maxFontSize = 1, r; +}, u_ = function(e, t, i, r) { + var s = new Yf(e, t, i, r); + return f0(s), s; +}, Xf = function(e) { + var t = new us(e); + return f0(t), t; +}, c_ = function(e, t) { + return e instanceof us ? Wt([], [e], t) : e; +}, h_ = function(e) { + if (e.positionType === "individualShift") { + for (var t = e.children, i = [t[0]], r = -t[0].shift - t[0].elem.depth, s = r, a = 1; a < t.length; a++) { + var o = -t[a].shift - s - t[a].elem.depth, l = o - (t[a - 1].elem.height + t[a - 1].elem.depth); + s = s + o, i.push({ + type: "kern", + size: l + }), i.push(t[a]); + } + return { + children: i, + depth: r + }; + } + var u; + if (e.positionType === "top") { + for (var c = e.positionData, h = 0; h < e.children.length; h++) { + var d = e.children[h]; + c -= d.type === "kern" ? d.size : d.elem.height + d.elem.depth; + } + u = c; + } else if (e.positionType === "bottom") + u = -e.positionData; + else { + var f = e.children[0]; + if (f.type !== "elem") + throw new Error('First child must have type "elem".'); + if (e.positionType === "shift") + u = -f.elem.depth - e.positionData; + else if (e.positionType === "firstBaseline") + u = -f.elem.depth; + else + throw new Error("Invalid positionType " + e.positionType + "."); + } + return { + children: e.children, + depth: u + }; +}, d_ = function(e, t) { + for (var { + children: i, + depth: r + } = h_(e), s = 0, a = 0; a < i.length; a++) { + var o = i[a]; + if (o.type === "elem") { + var l = o.elem; + s = Math.max(s, l.maxFontSize, l.height); + } + } + s += 2; + var u = Wt(["pstrut"], []); + u.style.height = re(s); + for (var c = [], h = r, d = r, f = r, m = 0; m < i.length; m++) { + var p = i[m]; + if (p.type === "kern") + f += p.size; + else { + var v = p.elem, b = p.wrapperClasses || [], E = p.wrapperStyle || {}, y = Wt(b, [u, v], void 0, E); + y.style.top = re(-s - f - v.depth), p.marginLeft && (y.style.marginLeft = p.marginLeft), p.marginRight && (y.style.marginRight = p.marginRight), c.push(y), f += v.height + v.depth; + } + h = Math.min(h, f), d = Math.max(d, f); + } + var T = Wt(["vlist"], c); + T.style.height = re(d); + var A; + if (h < 0) { + var k = Wt([], []), w = Wt(["vlist"], [k]); + w.style.height = re(-h); + var L = Wt(["vlist-s"], [new er("​")]); + A = [Wt(["vlist-r"], [T, L]), Wt(["vlist-r"], [w])]; + } else + A = [Wt(["vlist-r"], [T])]; + var I = Wt(["vlist-t"], A); + return A.length === 2 && I.classes.push("vlist-t2"), I.height = d, I.depth = -h, I; +}, f_ = (n, e) => { + var t = Wt(["mspace"], [], e), i = at(n, e); + return t.style.marginRight = re(i), t; +}, zs = function(e, t, i) { + var r = ""; + switch (e) { + case "amsrm": + r = "AMS"; + break; + case "textrm": + r = "Main"; + break; + case "textsf": + r = "SansSerif"; + break; + case "texttt": + r = "Typewriter"; + break; + default: + r = e; + } + var s; + return t === "textbf" && i === "textit" ? s = "BoldItalic" : t === "textbf" ? s = "Bold" : t === "textit" ? s = "Italic" : s = "Regular", r + "-" + s; +}, Qf = { + // styles + mathbf: { + variant: "bold", + fontName: "Main-Bold" + }, + mathrm: { + variant: "normal", + fontName: "Main-Regular" + }, + textit: { + variant: "italic", + fontName: "Main-Italic" + }, + mathit: { + variant: "italic", + fontName: "Main-Italic" + }, + mathnormal: { + variant: "italic", + fontName: "Math-Italic" + }, + mathsfit: { + variant: "sans-serif-italic", + fontName: "SansSerif-Italic" + }, + // "boldsymbol" is missing because they require the use of multiple fonts: + // Math-BoldItalic and Main-Bold. This is handled by a special case in + // makeOrd which ends up calling boldsymbol. + // families + mathbb: { + variant: "double-struck", + fontName: "AMS-Regular" + }, + mathcal: { + variant: "script", + fontName: "Caligraphic-Regular" + }, + mathfrak: { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + mathscr: { + variant: "script", + fontName: "Script-Regular" + }, + mathsf: { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + mathtt: { + variant: "monospace", + fontName: "Typewriter-Regular" + } +}, Zf = { + // path, width, height + vec: ["vec", 0.471, 0.714], + // values from the font glyph + oiintSize1: ["oiintSize1", 0.957, 0.499], + // oval to overlay the integrand + oiintSize2: ["oiintSize2", 1.472, 0.659], + oiiintSize1: ["oiiintSize1", 1.304, 0.499], + oiiintSize2: ["oiiintSize2", 1.98, 0.659] +}, m_ = function(e, t) { + var [i, r, s] = Zf[e], a = new Vr(i), o = new Pr([a], { + width: re(r), + height: re(s), + // Override CSS rule `.katex svg { width: 100% }` + style: "width:" + re(r), + viewBox: "0 0 " + 1e3 * r + " " + 1e3 * s, + preserveAspectRatio: "xMinYMin" + }), l = jf(["overlay"], [o], t); + return l.height = s, l.style.height = re(s), l.style.width = re(r), l; +}, G = { + fontMap: Qf, + makeSymbol: Ri, + mathsym: r_, + makeSpan: Wt, + makeSvgSpan: jf, + makeLineSpan: l_, + makeAnchor: u_, + makeFragment: Xf, + wrapFragment: c_, + makeVList: d_, + makeOrd: s_, + makeGlue: f_, + staticSvg: m_, + svgData: Zf, + tryCombineChars: o_ +}, nt = { + number: 3, + unit: "mu" +}, Ur = { + number: 4, + unit: "mu" +}, cr = { + number: 5, + unit: "mu" +}, g_ = { + mord: { + mop: nt, + mbin: Ur, + mrel: cr, + minner: nt + }, + mop: { + mord: nt, + mop: nt, + mrel: cr, + minner: nt + }, + mbin: { + mord: Ur, + mop: Ur, + mopen: Ur, + minner: Ur + }, + mrel: { + mord: cr, + mop: cr, + mopen: cr, + minner: cr + }, + mopen: {}, + mclose: { + mop: nt, + mbin: Ur, + mrel: cr, + minner: nt + }, + mpunct: { + mord: nt, + mop: nt, + mrel: cr, + mopen: nt, + mclose: nt, + mpunct: nt, + minner: nt + }, + minner: { + mord: nt, + mop: nt, + mbin: Ur, + mrel: cr, + mopen: nt, + mpunct: nt, + minner: nt + } +}, p_ = { + mord: { + mop: nt + }, + mop: { + mord: nt, + mop: nt + }, + mbin: {}, + mrel: {}, + mopen: {}, + mclose: { + mop: nt + }, + mpunct: {}, + minner: { + mop: nt + } +}, Jf = {}, Ca = {}, Fa = {}; +function ae(n) { + for (var { + type: e, + names: t, + props: i, + handler: r, + htmlBuilder: s, + mathmlBuilder: a + } = n, o = { + type: e, + numArgs: i.numArgs, + argTypes: i.argTypes, + allowedInArgument: !!i.allowedInArgument, + allowedInText: !!i.allowedInText, + allowedInMath: i.allowedInMath === void 0 ? !0 : i.allowedInMath, + numOptionalArgs: i.numOptionalArgs || 0, + infix: !!i.infix, + primitive: !!i.primitive, + handler: r + }, l = 0; l < t.length; ++l) + Jf[t[l]] = o; + e && (s && (Ca[e] = s), a && (Fa[e] = a)); +} +function Wr(n) { + var { + type: e, + htmlBuilder: t, + mathmlBuilder: i + } = n; + ae({ + type: e, + names: [], + props: { + numArgs: 0 + }, + handler() { + throw new Error("Should never be called."); + }, + htmlBuilder: t, + mathmlBuilder: i + }); +} +var Pa = function(e) { + return e.type === "ordgroup" && e.body.length === 1 ? e.body[0] : e; +}, ft = function(e) { + return e.type === "ordgroup" ? e.body : [e]; +}, An = G.makeSpan, v_ = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"], y_ = ["rightmost", "mrel", "mclose", "mpunct"], __ = { + display: Te.DISPLAY, + text: Te.TEXT, + script: Te.SCRIPT, + scriptscript: Te.SCRIPTSCRIPT +}, b_ = { + mord: "mord", + mop: "mop", + mbin: "mbin", + mrel: "mrel", + mopen: "mopen", + mclose: "mclose", + mpunct: "mpunct", + minner: "minner" +}, Ct = function(e, t, i, r) { + r === void 0 && (r = [null, null]); + for (var s = [], a = 0; a < e.length; a++) { + var o = Be(e[a], t); + if (o instanceof us) { + var l = o.children; + s.push(...l); + } else + s.push(o); + } + if (G.tryCombineChars(s), !i) + return s; + var u = t; + if (e.length === 1) { + var c = e[0]; + c.type === "sizing" ? u = t.havingSize(c.size) : c.type === "styling" && (u = t.havingStyle(__[c.style])); + } + var h = An([r[0] || "leftmost"], [], t), d = An([r[1] || "rightmost"], [], t), f = i === "root"; + return $c(s, (m, p) => { + var v = p.classes[0], b = m.classes[0]; + v === "mbin" && _e.contains(y_, b) ? p.classes[0] = "mord" : b === "mbin" && _e.contains(v_, v) && (m.classes[0] = "mord"); + }, { + node: h + }, d, f), $c(s, (m, p) => { + var v = kl(p), b = kl(m), E = v && b ? m.hasClass("mtight") ? p_[v][b] : g_[v][b] : null; + if (E) + return G.makeGlue(E, u); + }, { + node: h + }, d, f), s; +}, $c = function n(e, t, i, r, s) { + r && e.push(r); + for (var a = 0; a < e.length; a++) { + var o = e[a], l = em(o); + if (l) { + n(l.children, t, i, null, s); + continue; + } + var u = !o.hasClass("mspace"); + if (u) { + var c = t(o, i.node); + c && (i.insertAfter ? i.insertAfter(c) : (e.unshift(c), a++)); + } + u ? i.node = o : s && o.hasClass("newline") && (i.node = An(["leftmost"])), i.insertAfter = /* @__PURE__ */ ((h) => (d) => { + e.splice(h + 1, 0, d), a++; + })(a); + } + r && e.pop(); +}, em = function(e) { + return e instanceof us || e instanceof Yf || e instanceof Ha && e.hasClass("enclosing") ? e : null; +}, E_ = function n(e, t) { + var i = em(e); + if (i) { + var r = i.children; + if (r.length) { + if (t === "right") + return n(r[r.length - 1], "right"); + if (t === "left") + return n(r[0], "left"); + } + } + return e; +}, kl = function(e, t) { + return e ? (t && (e = E_(e, t)), b_[e.classes[0]] || null) : null; +}, ls = function(e, t) { + var i = ["nulldelimiter"].concat(e.baseSizingClasses()); + return An(t.concat(i)); +}, Be = function(e, t, i) { + if (!e) + return An(); + if (Ca[e.type]) { + var r = Ca[e.type](e, t); + if (i && t.size !== i.size) { + r = An(t.sizingClasses(i), [r], t); + var s = t.sizeMultiplier / i.sizeMultiplier; + r.height *= s, r.depth *= s; + } + return r; + } else + throw new ge("Got group of unknown type: '" + e.type + "'"); +}; +function tm(n) { + return new us(n); +} +class di { + constructor(e, t, i) { + this.type = void 0, this.attributes = void 0, this.children = void 0, this.classes = void 0, this.type = e, this.attributes = {}, this.children = t || [], this.classes = i || []; + } + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + setAttribute(e, t) { + this.attributes[e] = t; + } + /** + * Gets an attribute on a MathML node. + */ + getAttribute(e) { + return this.attributes[e]; + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + toNode() { + var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]); + this.classes.length > 0 && (e.className = Fr(this.classes)); + for (var i = 0; i < this.children.length; i++) + if (this.children[i] instanceof Ki && this.children[i + 1] instanceof Ki) { + for (var r = this.children[i].toText() + this.children[++i].toText(); this.children[i + 1] instanceof Ki; ) + r += this.children[++i].toText(); + e.appendChild(new Ki(r).toNode()); + } else + e.appendChild(this.children[i].toNode()); + return e; + } + /** + * Converts the math node into an HTML markup string. + */ + toMarkup() { + var e = "<" + this.type; + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + '="', e += _e.escape(this.attributes[t]), e += '"'); + this.classes.length > 0 && (e += ' class ="' + _e.escape(Fr(this.classes)) + '"'), e += ">"; + for (var i = 0; i < this.children.length; i++) + e += this.children[i].toMarkup(); + return e += "</" + this.type + ">", e; + } + /** + * Converts the math node into a string, similar to innerText, but escaped. + */ + toText() { + return this.children.map((e) => e.toText()).join(""); + } +} +class Ki { + constructor(e) { + this.text = void 0, this.text = e; + } + /** + * Converts the text node into a DOM text node. + */ + toNode() { + return document.createTextNode(this.text); + } + /** + * Converts the text node into escaped HTML markup + * (representing the text itself). + */ + toMarkup() { + return _e.escape(this.toText()); + } + /** + * Converts the text node into a string + * (representing the text itself). + */ + toText() { + return this.text; + } +} +class S_ { + /** + * Create a Space node with width given in CSS ems. + */ + constructor(e) { + this.width = void 0, this.character = void 0, this.width = e, e >= 0.05555 && e <= 0.05556 ? this.character = " " : e >= 0.1666 && e <= 0.1667 ? this.character = " " : e >= 0.2222 && e <= 0.2223 ? this.character = " " : e >= 0.2777 && e <= 0.2778 ? this.character = "  " : e >= -0.05556 && e <= -0.05555 ? this.character = " ⁣" : e >= -0.1667 && e <= -0.1666 ? this.character = " ⁣" : e >= -0.2223 && e <= -0.2222 ? this.character = " ⁣" : e >= -0.2778 && e <= -0.2777 ? this.character = " ⁣" : this.character = null; + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + toNode() { + if (this.character) + return document.createTextNode(this.character); + var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace"); + return e.setAttribute("width", re(this.width)), e; + } + /** + * Converts the math node into an HTML markup string. + */ + toMarkup() { + return this.character ? "<mtext>" + this.character + "</mtext>" : '<mspace width="' + re(this.width) + '"/>'; + } + /** + * Converts the math node into a string, similar to innerText. + */ + toText() { + return this.character ? this.character : " "; + } +} +var J = { + MathNode: di, + TextNode: Ki, + SpaceNode: S_, + newDocumentFragment: tm +}, bi = function(e, t, i) { + return mt[t][e] && mt[t][e].replace && e.charCodeAt(0) !== 55349 && !(Wf.hasOwnProperty(e) && i && (i.fontFamily && i.fontFamily.slice(4, 6) === "tt" || i.font && i.font.slice(4, 6) === "tt")) && (e = mt[t][e].replace), new J.TextNode(e); +}, m0 = function(e) { + return e.length === 1 ? e[0] : new J.MathNode("mrow", e); +}, g0 = function(e, t) { + if (t.fontFamily === "texttt") + return "monospace"; + if (t.fontFamily === "textsf") + return t.fontShape === "textit" && t.fontWeight === "textbf" ? "sans-serif-bold-italic" : t.fontShape === "textit" ? "sans-serif-italic" : t.fontWeight === "textbf" ? "bold-sans-serif" : "sans-serif"; + if (t.fontShape === "textit" && t.fontWeight === "textbf") + return "bold-italic"; + if (t.fontShape === "textit") + return "italic"; + if (t.fontWeight === "textbf") + return "bold"; + var i = t.font; + if (!i || i === "mathnormal") + return null; + var r = e.mode; + if (i === "mathit") + return "italic"; + if (i === "boldsymbol") + return e.type === "textord" ? "bold" : "bold-italic"; + if (i === "mathbf") + return "bold"; + if (i === "mathbb") + return "double-struck"; + if (i === "mathsfit") + return "sans-serif-italic"; + if (i === "mathfrak") + return "fraktur"; + if (i === "mathscr" || i === "mathcal") + return "script"; + if (i === "mathsf") + return "sans-serif"; + if (i === "mathtt") + return "monospace"; + var s = e.text; + if (_e.contains(["\\imath", "\\jmath"], s)) + return null; + mt[r][s] && mt[r][s].replace && (s = mt[r][s].replace); + var a = G.fontMap[i].fontName; + return d0(s, a, r) ? G.fontMap[i].variant : null; +}; +function $o(n) { + if (!n) + return !1; + if (n.type === "mi" && n.children.length === 1) { + var e = n.children[0]; + return e instanceof Ki && e.text === "."; + } else if (n.type === "mo" && n.children.length === 1 && n.getAttribute("separator") === "true" && n.getAttribute("lspace") === "0em" && n.getAttribute("rspace") === "0em") { + var t = n.children[0]; + return t instanceof Ki && t.text === ","; + } else + return !1; +} +var ai = function(e, t, i) { + if (e.length === 1) { + var r = Ze(e[0], t); + return i && r instanceof di && r.type === "mo" && (r.setAttribute("lspace", "0em"), r.setAttribute("rspace", "0em")), [r]; + } + for (var s = [], a, o = 0; o < e.length; o++) { + var l = Ze(e[o], t); + if (l instanceof di && a instanceof di) { + if (l.type === "mtext" && a.type === "mtext" && l.getAttribute("mathvariant") === a.getAttribute("mathvariant")) { + a.children.push(...l.children); + continue; + } else if (l.type === "mn" && a.type === "mn") { + a.children.push(...l.children); + continue; + } else if ($o(l) && a.type === "mn") { + a.children.push(...l.children); + continue; + } else if (l.type === "mn" && $o(a)) + l.children = [...a.children, ...l.children], s.pop(); + else if ((l.type === "msup" || l.type === "msub") && l.children.length >= 1 && (a.type === "mn" || $o(a))) { + var u = l.children[0]; + u instanceof di && u.type === "mn" && (u.children = [...a.children, ...u.children], s.pop()); + } else if (a.type === "mi" && a.children.length === 1) { + var c = a.children[0]; + if (c instanceof Ki && c.text === "̸" && (l.type === "mo" || l.type === "mi" || l.type === "mn")) { + var h = l.children[0]; + h instanceof Ki && h.text.length > 0 && (h.text = h.text.slice(0, 1) + "̸" + h.text.slice(1), s.pop()); + } + } + } + s.push(l), a = l; + } + return s; +}, Mr = function(e, t, i) { + return m0(ai(e, t, i)); +}, Ze = function(e, t) { + if (!e) + return new J.MathNode("mrow"); + if (Fa[e.type]) { + var i = Fa[e.type](e, t); + return i; + } else + throw new ge("Got group of unknown type: '" + e.type + "'"); +}, T_ = { + widehat: "^", + widecheck: "ˇ", + widetilde: "~", + utilde: "~", + overleftarrow: "←", + underleftarrow: "←", + xleftarrow: "←", + overrightarrow: "→", + underrightarrow: "→", + xrightarrow: "→", + underbrace: "⏟", + overbrace: "⏞", + overgroup: "⏠", + undergroup: "⏡", + overleftrightarrow: "↔", + underleftrightarrow: "↔", + xleftrightarrow: "↔", + Overrightarrow: "⇒", + xRightarrow: "⇒", + overleftharpoon: "↼", + xleftharpoonup: "↼", + overrightharpoon: "⇀", + xrightharpoonup: "⇀", + xLeftarrow: "⇐", + xLeftrightarrow: "⇔", + xhookleftarrow: "↩", + xhookrightarrow: "↪", + xmapsto: "↦", + xrightharpoondown: "⇁", + xleftharpoondown: "↽", + xrightleftharpoons: "⇌", + xleftrightharpoons: "⇋", + xtwoheadleftarrow: "↞", + xtwoheadrightarrow: "↠", + xlongequal: "=", + xtofrom: "⇄", + xrightleftarrows: "⇄", + xrightequilibrium: "⇌", + // Not a perfect match. + xleftequilibrium: "⇋", + // None better available. + "\\cdrightarrow": "→", + "\\cdleftarrow": "←", + "\\cdlongequal": "=" +}, x_ = function(e) { + var t = new J.MathNode("mo", [new J.TextNode(T_[e.replace(/^\\/, "")])]); + return t.setAttribute("stretchy", "true"), t; +}, A_ = { + // path(s), minWidth, height, align + overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], + "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"], + // CD minwwidth2.5pc + xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], + "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"], + Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], + xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], + xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], + overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], + overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], + xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], + "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"], + xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], + xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], + overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], + underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], + underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], + xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], + xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], + xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], + xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], + xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], + overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + overgroup: [["leftgroup", "rightgroup"], 0.888, 342], + undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], + xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], + xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], + // The next three arrows are from the mhchem package. + // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the + // document as \xrightarrow or \xrightleftharpoons. Those have + // min-length = 1.75em, so we set min-length on these next three to match. + xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], + xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], + xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] +}, D_ = function(e) { + return e.type === "ordgroup" ? e.body.length : 1; +}, w_ = function(e, t) { + function i() { + var o = 4e5, l = e.label.slice(1); + if (_e.contains(["widehat", "widecheck", "widetilde", "utilde"], l)) { + var u = e, c = D_(u.base), h, d, f; + if (c > 5) + l === "widehat" || l === "widecheck" ? (h = 420, o = 2364, f = 0.42, d = l + "4") : (h = 312, o = 2340, f = 0.34, d = "tilde4"); + else { + var m = [1, 1, 2, 2, 3, 3][c]; + l === "widehat" || l === "widecheck" ? (o = [0, 1062, 2364, 2364, 2364][m], h = [0, 239, 300, 360, 420][m], f = [0, 0.24, 0.3, 0.3, 0.36, 0.42][m], d = l + m) : (o = [0, 600, 1033, 2339, 2340][m], h = [0, 260, 286, 306, 312][m], f = [0, 0.26, 0.286, 0.3, 0.306, 0.34][m], d = "tilde" + m); + } + var p = new Vr(d), v = new Pr([p], { + width: "100%", + height: re(f), + viewBox: "0 0 " + o + " " + h, + preserveAspectRatio: "none" + }); + return { + span: G.makeSvgSpan([], [v], t), + minWidth: 0, + height: f + }; + } else { + var b = [], E = A_[l], [y, T, A] = E, k = A / 1e3, w = y.length, L, I; + if (w === 1) { + var R = E[3]; + L = ["hide-tail"], I = [R]; + } else if (w === 2) + L = ["halfarrow-left", "halfarrow-right"], I = ["xMinYMin", "xMaxYMin"]; + else if (w === 3) + L = ["brace-left", "brace-center", "brace-right"], I = ["xMinYMin", "xMidYMin", "xMaxYMin"]; + else + throw new Error(`Correct katexImagesData or update code here to support + ` + w + " children."); + for (var O = 0; O < w; O++) { + var z = new Vr(y[O]), ie = new Pr([z], { + width: "400em", + height: re(k), + viewBox: "0 0 " + o + " " + A, + preserveAspectRatio: I[O] + " slice" + }), N = G.makeSvgSpan([L[O]], [ie], t); + if (w === 1) + return { + span: N, + minWidth: T, + height: k + }; + N.style.height = re(k), b.push(N); + } + return { + span: G.makeSpan(["stretchy"], b, t), + minWidth: T, + height: k + }; + } + } + var { + span: r, + minWidth: s, + height: a + } = i(); + return r.height = a, r.style.height = re(a), s > 0 && (r.style.minWidth = re(s)), r; +}, k_ = function(e, t, i, r, s) { + var a, o = e.height + e.depth + i + r; + if (/fbox|color|angl/.test(t)) { + if (a = G.makeSpan(["stretchy", t], [], s), t === "fbox") { + var l = s.color && s.getColor(); + l && (a.style.borderColor = l); + } + } else { + var u = []; + /^[bx]cancel$/.test(t) && u.push(new Lc({ + x1: "0", + y1: "0", + x2: "100%", + y2: "100%", + "stroke-width": "0.046em" + })), /^x?cancel$/.test(t) && u.push(new Lc({ + x1: "0", + y1: "100%", + x2: "100%", + y2: "0", + "stroke-width": "0.046em" + })); + var c = new Pr(u, { + width: "100%", + height: re(o) + }); + a = G.makeSvgSpan([], [c], s); + } + return a.height = o, a.style.height = re(o), a; +}, _r = { + encloseSpan: k_, + mathMLnode: x_, + svgSpan: w_ +}; +function Ie(n, e) { + if (!n || n.type !== e) + throw new Error("Expected node of type " + e + ", but got " + (n ? "node of type " + n.type : String(n))); + return n; +} +function p0(n) { + var e = Ya(n); + if (!e) + throw new Error("Expected node of symbol group type, but got " + (n ? "node of type " + n.type : String(n))); + return e; +} +function Ya(n) { + return n && (n.type === "atom" || t_.hasOwnProperty(n.type)) ? n : null; +} +var v0 = (n, e) => { + var t, i, r; + n && n.type === "supsub" ? (i = Ie(n.base, "accent"), t = i.base, n.base = t, r = e_(Be(n, e)), n.base = i) : (i = Ie(n, "accent"), t = i.base); + var s = Be(t, e.havingCrampedStyle()), a = i.isShifty && _e.isCharacterBox(t), o = 0; + if (a) { + var l = _e.getBaseElem(t), u = Be(l, e.havingCrampedStyle()); + o = Ic(u).skew; + } + var c = i.label === "\\c", h = c ? s.height + s.depth : Math.min(s.height, e.fontMetrics().xHeight), d; + if (i.isStretchy) + d = _r.svgSpan(i, e), d = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "elem", + elem: d, + wrapperClasses: ["svg-align"], + wrapperStyle: o > 0 ? { + width: "calc(100% - " + re(2 * o) + ")", + marginLeft: re(2 * o) + } : void 0 + }] + }, e); + else { + var f, m; + i.label === "\\vec" ? (f = G.staticSvg("vec", e), m = G.svgData.vec[1]) : (f = G.makeOrd({ + mode: i.mode, + text: i.label + }, e, "textord"), f = Ic(f), f.italic = 0, m = f.width, c && (h += f.depth)), d = G.makeSpan(["accent-body"], [f]); + var p = i.label === "\\textcircled"; + p && (d.classes.push("accent-full"), h = s.height); + var v = o; + p || (v -= m / 2), d.style.left = re(v), i.label === "\\textcircled" && (d.style.top = ".2em"), d = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "kern", + size: -h + }, { + type: "elem", + elem: d + }] + }, e); + } + var b = G.makeSpan(["mord", "accent"], [d], e); + return r ? (r.children[0] = b, r.height = Math.max(b.height, r.height), r.classes[0] = "mord", r) : b; +}, im = (n, e) => { + var t = n.isStretchy ? _r.mathMLnode(n.label) : new J.MathNode("mo", [bi(n.label, n.mode)]), i = new J.MathNode("mover", [Ze(n.base, e), t]); + return i.setAttribute("accent", "true"), i; +}, L_ = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map((n) => "\\" + n).join("|")); +ae({ + type: "accent", + names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], + props: { + numArgs: 1 + }, + handler: (n, e) => { + var t = Pa(e[0]), i = !L_.test(n.funcName), r = !i || n.funcName === "\\widehat" || n.funcName === "\\widetilde" || n.funcName === "\\widecheck"; + return { + type: "accent", + mode: n.parser.mode, + label: n.funcName, + isStretchy: i, + isShifty: r, + base: t + }; + }, + htmlBuilder: v0, + mathmlBuilder: im +}); +ae({ + type: "accent", + names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"], + props: { + numArgs: 1, + allowedInText: !0, + allowedInMath: !0, + // unless in strict mode + argTypes: ["primitive"] + }, + handler: (n, e) => { + var t = e[0], i = n.parser.mode; + return i === "math" && (n.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + n.funcName + " works only in text mode"), i = "text"), { + type: "accent", + mode: i, + label: n.funcName, + isStretchy: !1, + isShifty: !0, + base: t + }; + }, + htmlBuilder: v0, + mathmlBuilder: im +}); +ae({ + type: "accentUnder", + names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], + props: { + numArgs: 1 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "accentUnder", + mode: t.mode, + label: i, + base: r + }; + }, + htmlBuilder: (n, e) => { + var t = Be(n.base, e), i = _r.svgSpan(n, e), r = n.label === "\\utilde" ? 0.12 : 0, s = G.makeVList({ + positionType: "top", + positionData: t.height, + children: [{ + type: "elem", + elem: i, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: r + }, { + type: "elem", + elem: t + }] + }, e); + return G.makeSpan(["mord", "accentunder"], [s], e); + }, + mathmlBuilder: (n, e) => { + var t = _r.mathMLnode(n.label), i = new J.MathNode("munder", [Ze(n.base, e), t]); + return i.setAttribute("accentunder", "true"), i; + } +}); +var qs = (n) => { + var e = new J.MathNode("mpadded", n ? [n] : []); + return e.setAttribute("width", "+0.6em"), e.setAttribute("lspace", "0.3em"), e; +}; +ae({ + type: "xArrow", + names: [ + "\\xleftarrow", + "\\xrightarrow", + "\\xLeftarrow", + "\\xRightarrow", + "\\xleftrightarrow", + "\\xLeftrightarrow", + "\\xhookleftarrow", + "\\xhookrightarrow", + "\\xmapsto", + "\\xrightharpoondown", + "\\xrightharpoonup", + "\\xleftharpoondown", + "\\xleftharpoonup", + "\\xrightleftharpoons", + "\\xleftrightharpoons", + "\\xlongequal", + "\\xtwoheadrightarrow", + "\\xtwoheadleftarrow", + "\\xtofrom", + // The next 3 functions are here to support the mhchem extension. + // Direct use of these functions is discouraged and may break someday. + "\\xrightleftarrows", + "\\xrightequilibrium", + "\\xleftequilibrium", + // The next 3 functions are here only to support the {CD} environment. + "\\\\cdrightarrow", + "\\\\cdleftarrow", + "\\\\cdlongequal" + ], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler(n, e, t) { + var { + parser: i, + funcName: r + } = n; + return { + type: "xArrow", + mode: i.mode, + label: r, + body: e[0], + below: t[0] + }; + }, + // Flow is unable to correctly infer the type of `group`, even though it's + // unambiguously determined from the passed-in `type` above. + htmlBuilder(n, e) { + var t = e.style, i = e.havingStyle(t.sup()), r = G.wrapFragment(Be(n.body, i, e), e), s = n.label.slice(0, 2) === "\\x" ? "x" : "cd"; + r.classes.push(s + "-arrow-pad"); + var a; + n.below && (i = e.havingStyle(t.sub()), a = G.wrapFragment(Be(n.below, i, e), e), a.classes.push(s + "-arrow-pad")); + var o = _r.svgSpan(n, e), l = -e.fontMetrics().axisHeight + 0.5 * o.height, u = -e.fontMetrics().axisHeight - 0.5 * o.height - 0.111; + (r.depth > 0.25 || n.label === "\\xleftequilibrium") && (u -= r.depth); + var c; + if (a) { + var h = -e.fontMetrics().axisHeight + a.height + 0.5 * o.height + 0.111; + c = G.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: r, + shift: u + }, { + type: "elem", + elem: o, + shift: l + }, { + type: "elem", + elem: a, + shift: h + }] + }, e); + } else + c = G.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: r, + shift: u + }, { + type: "elem", + elem: o, + shift: l + }] + }, e); + return c.children[0].children[0].children[1].classes.push("svg-align"), G.makeSpan(["mrel", "x-arrow"], [c], e); + }, + mathmlBuilder(n, e) { + var t = _r.mathMLnode(n.label); + t.setAttribute("minsize", n.label.charAt(0) === "x" ? "1.75em" : "3.0em"); + var i; + if (n.body) { + var r = qs(Ze(n.body, e)); + if (n.below) { + var s = qs(Ze(n.below, e)); + i = new J.MathNode("munderover", [t, s, r]); + } else + i = new J.MathNode("mover", [t, r]); + } else if (n.below) { + var a = qs(Ze(n.below, e)); + i = new J.MathNode("munder", [t, a]); + } else + i = qs(), i = new J.MathNode("mover", [t, i]); + return i; + } +}); +var I_ = G.makeSpan; +function rm(n, e) { + var t = Ct(n.body, e, !0); + return I_([n.mclass], t, e); +} +function nm(n, e) { + var t, i = ai(n.body, e); + return n.mclass === "minner" ? t = new J.MathNode("mpadded", i) : n.mclass === "mord" ? n.isCharacterBox ? (t = i[0], t.type = "mi") : t = new J.MathNode("mi", i) : (n.isCharacterBox ? (t = i[0], t.type = "mo") : t = new J.MathNode("mo", i), n.mclass === "mbin" ? (t.attributes.lspace = "0.22em", t.attributes.rspace = "0.22em") : n.mclass === "mpunct" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0.17em") : n.mclass === "mopen" || n.mclass === "mclose" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0em") : n.mclass === "minner" && (t.attributes.lspace = "0.0556em", t.attributes.width = "+0.1111em")), t; +} +ae({ + type: "mclass", + names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], + props: { + numArgs: 1, + primitive: !0 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "mclass", + mode: t.mode, + mclass: "m" + i.slice(5), + // TODO(kevinb): don't prefix with 'm' + body: ft(r), + isCharacterBox: _e.isCharacterBox(r) + }; + }, + htmlBuilder: rm, + mathmlBuilder: nm +}); +var Wa = (n) => { + var e = n.type === "ordgroup" && n.body.length ? n.body[0] : n; + return e.type === "atom" && (e.family === "bin" || e.family === "rel") ? "m" + e.family : "mord"; +}; +ae({ + type: "mclass", + names: ["\\@binrel"], + props: { + numArgs: 2 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "mclass", + mode: t.mode, + mclass: Wa(e[0]), + body: ft(e[1]), + isCharacterBox: _e.isCharacterBox(e[1]) + }; + } +}); +ae({ + type: "mclass", + names: ["\\stackrel", "\\overset", "\\underset"], + props: { + numArgs: 2 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = e[1], s = e[0], a; + i !== "\\stackrel" ? a = Wa(r) : a = "mrel"; + var o = { + type: "op", + mode: r.mode, + limits: !0, + alwaysHandleSupSub: !0, + parentIsSupSub: !1, + symbol: !1, + suppressBaseShift: i !== "\\stackrel", + body: ft(r) + }, l = { + type: "supsub", + mode: s.mode, + base: o, + sup: i === "\\underset" ? null : s, + sub: i === "\\underset" ? s : null + }; + return { + type: "mclass", + mode: t.mode, + mclass: a, + body: [l], + isCharacterBox: _e.isCharacterBox(l) + }; + }, + htmlBuilder: rm, + mathmlBuilder: nm +}); +ae({ + type: "pmb", + names: ["\\pmb"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "pmb", + mode: t.mode, + mclass: Wa(e[0]), + body: ft(e[0]) + }; + }, + htmlBuilder(n, e) { + var t = Ct(n.body, e, !0), i = G.makeSpan([n.mclass], t, e); + return i.style.textShadow = "0.02em 0.01em 0.04px", i; + }, + mathmlBuilder(n, e) { + var t = ai(n.body, e), i = new J.MathNode("mstyle", t); + return i.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"), i; + } +}); +var R_ = { + ">": "\\\\cdrightarrow", + "<": "\\\\cdleftarrow", + "=": "\\\\cdlongequal", + A: "\\uparrow", + V: "\\downarrow", + "|": "\\Vert", + ".": "no arrow" +}, Bc = () => ({ + type: "styling", + body: [], + mode: "math", + style: "display" +}), Nc = (n) => n.type === "textord" && n.text === "@", C_ = (n, e) => (n.type === "mathord" || n.type === "atom") && n.text === e; +function F_(n, e, t) { + var i = R_[n]; + switch (i) { + case "\\\\cdrightarrow": + case "\\\\cdleftarrow": + return t.callFunction(i, [e[0]], [e[1]]); + case "\\uparrow": + case "\\downarrow": { + var r = t.callFunction("\\\\cdleft", [e[0]], []), s = { + type: "atom", + text: i, + mode: "math", + family: "rel" + }, a = t.callFunction("\\Big", [s], []), o = t.callFunction("\\\\cdright", [e[1]], []), l = { + type: "ordgroup", + mode: "math", + body: [r, a, o] + }; + return t.callFunction("\\\\cdparent", [l], []); + } + case "\\\\cdlongequal": + return t.callFunction("\\\\cdlongequal", [], []); + case "\\Vert": { + var u = { + type: "textord", + text: "\\Vert", + mode: "math" + }; + return t.callFunction("\\Big", [u], []); + } + default: + return { + type: "textord", + text: " ", + mode: "math" + }; + } +} +function P_(n) { + var e = []; + for (n.gullet.beginGroup(), n.gullet.macros.set("\\cr", "\\\\\\relax"), n.gullet.beginGroup(); ; ) { + e.push(n.parseExpression(!1, "\\\\")), n.gullet.endGroup(), n.gullet.beginGroup(); + var t = n.fetch().text; + if (t === "&" || t === "\\\\") + n.consume(); + else if (t === "\\end") { + e[e.length - 1].length === 0 && e.pop(); + break; + } else + throw new ge("Expected \\\\ or \\cr or \\end", n.nextToken); + } + for (var i = [], r = [i], s = 0; s < e.length; s++) { + for (var a = e[s], o = Bc(), l = 0; l < a.length; l++) + if (!Nc(a[l])) + o.body.push(a[l]); + else { + i.push(o), l += 1; + var u = p0(a[l]).text, c = new Array(2); + if (c[0] = { + type: "ordgroup", + mode: "math", + body: [] + }, c[1] = { + type: "ordgroup", + mode: "math", + body: [] + }, !("=|.".indexOf(u) > -1)) if ("<>AV".indexOf(u) > -1) + for (var h = 0; h < 2; h++) { + for (var d = !0, f = l + 1; f < a.length; f++) { + if (C_(a[f], u)) { + d = !1, l = f; + break; + } + if (Nc(a[f])) + throw new ge("Missing a " + u + " character to complete a CD arrow.", a[f]); + c[h].body.push(a[f]); + } + if (d) + throw new ge("Missing a " + u + " character to complete a CD arrow.", a[l]); + } + else + throw new ge('Expected one of "<>AV=|." after @', a[l]); + var m = F_(u, c, n), p = { + type: "styling", + body: [m], + mode: "math", + style: "display" + // CD is always displaystyle. + }; + i.push(p), o = Bc(); + } + s % 2 === 0 ? i.push(o) : i.shift(), i = [], r.push(i); + } + n.gullet.endGroup(), n.gullet.endGroup(); + var v = new Array(r[0].length).fill({ + type: "align", + align: "c", + pregap: 0.25, + // CD package sets \enskip between columns. + postgap: 0.25 + // So pre and post each get half an \enskip, i.e. 0.25em. + }); + return { + type: "array", + mode: "math", + body: r, + arraystretch: 1, + addJot: !0, + rowGaps: [null], + cols: v, + colSeparationType: "CD", + hLinesBeforeRow: new Array(r.length + 1).fill([]) + }; +} +ae({ + type: "cdlabel", + names: ["\\\\cdleft", "\\\\cdright"], + props: { + numArgs: 1 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n; + return { + type: "cdlabel", + mode: t.mode, + side: i.slice(4), + label: e[0] + }; + }, + htmlBuilder(n, e) { + var t = e.havingStyle(e.style.sup()), i = G.wrapFragment(Be(n.label, t, e), e); + return i.classes.push("cd-label-" + n.side), i.style.bottom = re(0.8 - i.depth), i.height = 0, i.depth = 0, i; + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mrow", [Ze(n.label, e)]); + return t = new J.MathNode("mpadded", [t]), t.setAttribute("width", "0"), n.side === "left" && t.setAttribute("lspace", "-1width"), t.setAttribute("voffset", "0.7em"), t = new J.MathNode("mstyle", [t]), t.setAttribute("displaystyle", "false"), t.setAttribute("scriptlevel", "1"), t; + } +}); +ae({ + type: "cdlabelparent", + names: ["\\\\cdparent"], + props: { + numArgs: 1 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "cdlabelparent", + mode: t.mode, + fragment: e[0] + }; + }, + htmlBuilder(n, e) { + var t = G.wrapFragment(Be(n.fragment, e), e); + return t.classes.push("cd-vert-arrow"), t; + }, + mathmlBuilder(n, e) { + return new J.MathNode("mrow", [Ze(n.fragment, e)]); + } +}); +ae({ + type: "textord", + names: ["\\@char"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(n, e) { + for (var { + parser: t + } = n, i = Ie(e[0], "ordgroup"), r = i.body, s = "", a = 0; a < r.length; a++) { + var o = Ie(r[a], "textord"); + s += o.text; + } + var l = parseInt(s), u; + if (isNaN(l)) + throw new ge("\\@char has non-numeric argument " + s); + if (l < 0 || l >= 1114111) + throw new ge("\\@char with invalid code point " + s); + return l <= 65535 ? u = String.fromCharCode(l) : (l -= 65536, u = String.fromCharCode((l >> 10) + 55296, (l & 1023) + 56320)), { + type: "textord", + mode: t.mode, + text: u + }; + } +}); +var sm = (n, e) => { + var t = Ct(n.body, e.withColor(n.color), !1); + return G.makeFragment(t); +}, am = (n, e) => { + var t = ai(n.body, e.withColor(n.color)), i = new J.MathNode("mstyle", t); + return i.setAttribute("mathcolor", n.color), i; +}; +ae({ + type: "color", + names: ["\\textcolor"], + props: { + numArgs: 2, + allowedInText: !0, + argTypes: ["color", "original"] + }, + handler(n, e) { + var { + parser: t + } = n, i = Ie(e[0], "color-token").color, r = e[1]; + return { + type: "color", + mode: t.mode, + color: i, + body: ft(r) + }; + }, + htmlBuilder: sm, + mathmlBuilder: am +}); +ae({ + type: "color", + names: ["\\color"], + props: { + numArgs: 1, + allowedInText: !0, + argTypes: ["color"] + }, + handler(n, e) { + var { + parser: t, + breakOnTokenText: i + } = n, r = Ie(e[0], "color-token").color; + t.gullet.macros.set("\\current@color", r); + var s = t.parseExpression(!0, i); + return { + type: "color", + mode: t.mode, + color: r, + body: s + }; + }, + htmlBuilder: sm, + mathmlBuilder: am +}); +ae({ + type: "cr", + names: ["\\\\"], + props: { + numArgs: 0, + numOptionalArgs: 0, + allowedInText: !0 + }, + handler(n, e, t) { + var { + parser: i + } = n, r = i.gullet.future().text === "[" ? i.parseSizeGroup(!0) : null, s = !i.settings.displayMode || !i.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode"); + return { + type: "cr", + mode: i.mode, + newLine: s, + size: r && Ie(r, "size").value + }; + }, + // The following builders are called only at the top level, + // not within tabular/array environments. + htmlBuilder(n, e) { + var t = G.makeSpan(["mspace"], [], e); + return n.newLine && (t.classes.push("newline"), n.size && (t.style.marginTop = re(at(n.size, e)))), t; + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mspace"); + return n.newLine && (t.setAttribute("linebreak", "newline"), n.size && t.setAttribute("height", re(at(n.size, e)))), t; + } +}); +var Ll = { + "\\global": "\\global", + "\\long": "\\\\globallong", + "\\\\globallong": "\\\\globallong", + "\\def": "\\gdef", + "\\gdef": "\\gdef", + "\\edef": "\\xdef", + "\\xdef": "\\xdef", + "\\let": "\\\\globallet", + "\\futurelet": "\\\\globalfuture" +}, om = (n) => { + var e = n.text; + if (/^(?:[\\{}$&#^_]|EOF)$/.test(e)) + throw new ge("Expected a control sequence", n); + return e; +}, M_ = (n) => { + var e = n.gullet.popToken(); + return e.text === "=" && (e = n.gullet.popToken(), e.text === " " && (e = n.gullet.popToken())), e; +}, lm = (n, e, t, i) => { + var r = n.gullet.macros.get(t.text); + r == null && (t.noexpand = !0, r = { + tokens: [t], + numArgs: 0, + // reproduce the same behavior in expansion + unexpandable: !n.gullet.isExpandable(t.text) + }), n.gullet.macros.set(e, r, i); +}; +ae({ + type: "internal", + names: [ + "\\global", + "\\long", + "\\\\globallong" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n; + e.consumeSpaces(); + var i = e.fetch(); + if (Ll[i.text]) + return (t === "\\global" || t === "\\\\globallong") && (i.text = Ll[i.text]), Ie(e.parseFunction(), "internal"); + throw new ge("Invalid token after macro prefix", i); + } +}); +ae({ + type: "internal", + names: ["\\def", "\\gdef", "\\edef", "\\xdef"], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n, i = e.gullet.popToken(), r = i.text; + if (/^(?:[\\{}$&#^_]|EOF)$/.test(r)) + throw new ge("Expected a control sequence", i); + for (var s = 0, a, o = [[]]; e.gullet.future().text !== "{"; ) + if (i = e.gullet.popToken(), i.text === "#") { + if (e.gullet.future().text === "{") { + a = e.gullet.future(), o[s].push("{"); + break; + } + if (i = e.gullet.popToken(), !/^[1-9]$/.test(i.text)) + throw new ge('Invalid argument number "' + i.text + '"'); + if (parseInt(i.text) !== s + 1) + throw new ge('Argument number "' + i.text + '" out of order'); + s++, o.push([]); + } else { + if (i.text === "EOF") + throw new ge("Expected a macro definition"); + o[s].push(i.text); + } + var { + tokens: l + } = e.gullet.consumeArg(); + return a && l.unshift(a), (t === "\\edef" || t === "\\xdef") && (l = e.gullet.expandTokens(l), l.reverse()), e.gullet.macros.set(r, { + tokens: l, + numArgs: s, + delimiters: o + }, t === Ll[t]), { + type: "internal", + mode: e.mode + }; + } +}); +ae({ + type: "internal", + names: [ + "\\let", + "\\\\globallet" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n, i = om(e.gullet.popToken()); + e.gullet.consumeSpaces(); + var r = M_(e); + return lm(e, i, r, t === "\\\\globallet"), { + type: "internal", + mode: e.mode + }; + } +}); +ae({ + type: "internal", + names: [ + "\\futurelet", + "\\\\globalfuture" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n, i = om(e.gullet.popToken()), r = e.gullet.popToken(), s = e.gullet.popToken(); + return lm(e, i, s, t === "\\\\globalfuture"), e.gullet.pushToken(s), e.gullet.pushToken(r), { + type: "internal", + mode: e.mode + }; + } +}); +var Gn = function(e, t, i) { + var r = mt.math[e] && mt.math[e].replace, s = d0(r || e, t, i); + if (!s) + throw new Error("Unsupported symbol " + e + " and font size " + t + "."); + return s; +}, y0 = function(e, t, i, r) { + var s = i.havingBaseStyle(t), a = G.makeSpan(r.concat(s.sizingClasses(i)), [e], i), o = s.sizeMultiplier / i.sizeMultiplier; + return a.height *= o, a.depth *= o, a.maxFontSize = s.sizeMultiplier, a; +}, um = function(e, t, i) { + var r = t.havingBaseStyle(i), s = (1 - t.sizeMultiplier / r.sizeMultiplier) * t.fontMetrics().axisHeight; + e.classes.push("delimcenter"), e.style.top = re(s), e.height -= s, e.depth += s; +}, O_ = function(e, t, i, r, s, a) { + var o = G.makeSymbol(e, "Main-Regular", s, r), l = y0(o, t, r, a); + return i && um(l, r, t), l; +}, $_ = function(e, t, i, r) { + return G.makeSymbol(e, "Size" + t + "-Regular", i, r); +}, cm = function(e, t, i, r, s, a) { + var o = $_(e, t, s, r), l = y0(G.makeSpan(["delimsizing", "size" + t], [o], r), Te.TEXT, r, a); + return i && um(l, r, Te.TEXT), l; +}, Bo = function(e, t, i) { + var r; + t === "Size1-Regular" ? r = "delim-size1" : r = "delim-size4"; + var s = G.makeSpan(["delimsizinginner", r], [G.makeSpan([], [G.makeSymbol(e, t, i)])]); + return { + type: "elem", + elem: s + }; +}, No = function(e, t, i) { + var r = pr["Size4-Regular"][e.charCodeAt(0)] ? pr["Size4-Regular"][e.charCodeAt(0)][4] : pr["Size1-Regular"][e.charCodeAt(0)][4], s = new Vr("inner", Yy(e, Math.round(1e3 * t))), a = new Pr([s], { + width: re(r), + height: re(t), + // Override CSS rule `.katex svg { width: 100% }` + style: "width:" + re(r), + viewBox: "0 0 " + 1e3 * r + " " + Math.round(1e3 * t), + preserveAspectRatio: "xMinYMin" + }), o = G.makeSvgSpan([], [a], i); + return o.height = t, o.style.height = re(t), o.style.width = re(r), { + type: "elem", + elem: o + }; +}, Il = 8e-3, Hs = { + type: "kern", + size: -1 * Il +}, B_ = ["|", "\\lvert", "\\rvert", "\\vert"], N_ = ["\\|", "\\lVert", "\\rVert", "\\Vert"], hm = function(e, t, i, r, s, a) { + var o, l, u, c, h = "", d = 0; + o = u = c = e, l = null; + var f = "Size1-Regular"; + e === "\\uparrow" ? u = c = "⏐" : e === "\\Uparrow" ? u = c = "‖" : e === "\\downarrow" ? o = u = "⏐" : e === "\\Downarrow" ? o = u = "‖" : e === "\\updownarrow" ? (o = "\\uparrow", u = "⏐", c = "\\downarrow") : e === "\\Updownarrow" ? (o = "\\Uparrow", u = "‖", c = "\\Downarrow") : _e.contains(B_, e) ? (u = "∣", h = "vert", d = 333) : _e.contains(N_, e) ? (u = "∥", h = "doublevert", d = 556) : e === "[" || e === "\\lbrack" ? (o = "⎡", u = "⎢", c = "⎣", f = "Size4-Regular", h = "lbrack", d = 667) : e === "]" || e === "\\rbrack" ? (o = "⎤", u = "⎥", c = "⎦", f = "Size4-Regular", h = "rbrack", d = 667) : e === "\\lfloor" || e === "⌊" ? (u = o = "⎢", c = "⎣", f = "Size4-Regular", h = "lfloor", d = 667) : e === "\\lceil" || e === "⌈" ? (o = "⎡", u = c = "⎢", f = "Size4-Regular", h = "lceil", d = 667) : e === "\\rfloor" || e === "⌋" ? (u = o = "⎥", c = "⎦", f = "Size4-Regular", h = "rfloor", d = 667) : e === "\\rceil" || e === "⌉" ? (o = "⎤", u = c = "⎥", f = "Size4-Regular", h = "rceil", d = 667) : e === "(" || e === "\\lparen" ? (o = "⎛", u = "⎜", c = "⎝", f = "Size4-Regular", h = "lparen", d = 875) : e === ")" || e === "\\rparen" ? (o = "⎞", u = "⎟", c = "⎠", f = "Size4-Regular", h = "rparen", d = 875) : e === "\\{" || e === "\\lbrace" ? (o = "⎧", l = "⎨", c = "⎩", u = "⎪", f = "Size4-Regular") : e === "\\}" || e === "\\rbrace" ? (o = "⎫", l = "⎬", c = "⎭", u = "⎪", f = "Size4-Regular") : e === "\\lgroup" || e === "⟮" ? (o = "⎧", c = "⎩", u = "⎪", f = "Size4-Regular") : e === "\\rgroup" || e === "⟯" ? (o = "⎫", c = "⎭", u = "⎪", f = "Size4-Regular") : e === "\\lmoustache" || e === "⎰" ? (o = "⎧", c = "⎭", u = "⎪", f = "Size4-Regular") : (e === "\\rmoustache" || e === "⎱") && (o = "⎫", c = "⎩", u = "⎪", f = "Size4-Regular"); + var m = Gn(o, f, s), p = m.height + m.depth, v = Gn(u, f, s), b = v.height + v.depth, E = Gn(c, f, s), y = E.height + E.depth, T = 0, A = 1; + if (l !== null) { + var k = Gn(l, f, s); + T = k.height + k.depth, A = 2; + } + var w = p + y + T, L = Math.max(0, Math.ceil((t - w) / (A * b))), I = w + L * A * b, R = r.fontMetrics().axisHeight; + i && (R *= r.sizeMultiplier); + var O = I / 2 - R, z = []; + if (h.length > 0) { + var ie = I - p - y, N = Math.round(I * 1e3), X = Wy(h, Math.round(ie * 1e3)), K = new Vr(h, X), Z = (d / 1e3).toFixed(3) + "em", Q = (N / 1e3).toFixed(3) + "em", H = new Pr([K], { + width: Z, + height: Q, + viewBox: "0 0 " + d + " " + N + }), Y = G.makeSvgSpan([], [H], r); + Y.height = N / 1e3, Y.style.width = Z, Y.style.height = Q, z.push({ + type: "elem", + elem: Y + }); + } else { + if (z.push(Bo(c, f, s)), z.push(Hs), l === null) { + var U = I - p - y + 2 * Il; + z.push(No(u, U, r)); + } else { + var te = (I - p - y - T) / 2 + 2 * Il; + z.push(No(u, te, r)), z.push(Hs), z.push(Bo(l, f, s)), z.push(Hs), z.push(No(u, te, r)); + } + z.push(Hs), z.push(Bo(o, f, s)); + } + var ne = r.havingBaseStyle(Te.TEXT), ce = G.makeVList({ + positionType: "bottom", + positionData: O, + children: z + }, ne); + return y0(G.makeSpan(["delimsizing", "mult"], [ce], ne), Te.TEXT, r, a); +}, Uo = 80, Go = 0.08, zo = function(e, t, i, r, s) { + var a = Ky(e, r, i), o = new Vr(e, a), l = new Pr([o], { + // Note: 1000:1 ratio of viewBox to document em width. + width: "400em", + height: re(t), + viewBox: "0 0 400000 " + i, + preserveAspectRatio: "xMinYMin slice" + }); + return G.makeSvgSpan(["hide-tail"], [l], s); +}, U_ = function(e, t) { + var i = t.havingBaseSizing(), r = gm("\\surd", e * i.sizeMultiplier, mm, i), s = i.sizeMultiplier, a = Math.max(0, t.minRuleThickness - t.fontMetrics().sqrtRuleThickness), o, l = 0, u = 0, c = 0, h; + return r.type === "small" ? (c = 1e3 + 1e3 * a + Uo, e < 1 ? s = 1 : e < 1.4 && (s = 0.7), l = (1 + a + Go) / s, u = (1 + a) / s, o = zo("sqrtMain", l, c, a, t), o.style.minWidth = "0.853em", h = 0.833 / s) : r.type === "large" ? (c = (1e3 + Uo) * Yn[r.size], u = (Yn[r.size] + a) / s, l = (Yn[r.size] + a + Go) / s, o = zo("sqrtSize" + r.size, l, c, a, t), o.style.minWidth = "1.02em", h = 1 / s) : (l = e + a + Go, u = e + a, c = Math.floor(1e3 * e + a) + Uo, o = zo("sqrtTall", l, c, a, t), o.style.minWidth = "0.742em", h = 1.056), o.height = u, o.style.height = re(l), { + span: o, + advanceWidth: h, + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + ruleWidth: (t.fontMetrics().sqrtRuleThickness + a) * s + }; +}, dm = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "\\surd"], G_ = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱"], fm = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"], Yn = [0, 1.2, 1.8, 2.4, 3], z_ = function(e, t, i, r, s) { + if (e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle"), _e.contains(dm, e) || _e.contains(fm, e)) + return cm(e, t, !1, i, r, s); + if (_e.contains(G_, e)) + return hm(e, Yn[t], !1, i, r, s); + throw new ge("Illegal delimiter: '" + e + "'"); +}, q_ = [{ + type: "small", + style: Te.SCRIPTSCRIPT +}, { + type: "small", + style: Te.SCRIPT +}, { + type: "small", + style: Te.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}], H_ = [{ + type: "small", + style: Te.SCRIPTSCRIPT +}, { + type: "small", + style: Te.SCRIPT +}, { + type: "small", + style: Te.TEXT +}, { + type: "stack" +}], mm = [{ + type: "small", + style: Te.SCRIPTSCRIPT +}, { + type: "small", + style: Te.SCRIPT +}, { + type: "small", + style: Te.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}, { + type: "stack" +}], V_ = function(e) { + if (e.type === "small") + return "Main-Regular"; + if (e.type === "large") + return "Size" + e.size + "-Regular"; + if (e.type === "stack") + return "Size4-Regular"; + throw new Error("Add support for delim type '" + e.type + "' here."); +}, gm = function(e, t, i, r) { + for (var s = Math.min(2, 3 - r.style.size), a = s; a < i.length && i[a].type !== "stack"; a++) { + var o = Gn(e, V_(i[a]), "math"), l = o.height + o.depth; + if (i[a].type === "small") { + var u = r.havingBaseStyle(i[a].style); + l *= u.sizeMultiplier; + } + if (l > t) + return i[a]; + } + return i[i.length - 1]; +}, pm = function(e, t, i, r, s, a) { + e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle"); + var o; + _e.contains(fm, e) ? o = q_ : _e.contains(dm, e) ? o = mm : o = H_; + var l = gm(e, t, o, r); + return l.type === "small" ? O_(e, l.style, i, r, s, a) : l.type === "large" ? cm(e, l.size, i, r, s, a) : hm(e, t, i, r, s, a); +}, K_ = function(e, t, i, r, s, a) { + var o = r.fontMetrics().axisHeight * r.sizeMultiplier, l = 901, u = 5 / r.fontMetrics().ptPerEm, c = Math.max(t - o, i + o), h = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + c / 500 * l, + 2 * c - u + ); + return pm(e, h, !0, r, s, a); +}, yr = { + sqrtImage: U_, + sizedDelim: z_, + sizeToMaxHeight: Yn, + customSizedDelim: pm, + leftRightDelim: K_ +}, Uc = { + "\\bigl": { + mclass: "mopen", + size: 1 + }, + "\\Bigl": { + mclass: "mopen", + size: 2 + }, + "\\biggl": { + mclass: "mopen", + size: 3 + }, + "\\Biggl": { + mclass: "mopen", + size: 4 + }, + "\\bigr": { + mclass: "mclose", + size: 1 + }, + "\\Bigr": { + mclass: "mclose", + size: 2 + }, + "\\biggr": { + mclass: "mclose", + size: 3 + }, + "\\Biggr": { + mclass: "mclose", + size: 4 + }, + "\\bigm": { + mclass: "mrel", + size: 1 + }, + "\\Bigm": { + mclass: "mrel", + size: 2 + }, + "\\biggm": { + mclass: "mrel", + size: 3 + }, + "\\Biggm": { + mclass: "mrel", + size: 4 + }, + "\\big": { + mclass: "mord", + size: 1 + }, + "\\Big": { + mclass: "mord", + size: 2 + }, + "\\bigg": { + mclass: "mord", + size: 3 + }, + "\\Bigg": { + mclass: "mord", + size: 4 + } +}, Y_ = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "<", ">", "\\langle", "⟨", "\\rangle", "⟩", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; +function ja(n, e) { + var t = Ya(n); + if (t && _e.contains(Y_, t.text)) + return t; + throw t ? new ge("Invalid delimiter '" + t.text + "' after '" + e.funcName + "'", n) : new ge("Invalid delimiter type '" + n.type + "'", n); +} +ae({ + type: "delimsizing", + names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], + props: { + numArgs: 1, + argTypes: ["primitive"] + }, + handler: (n, e) => { + var t = ja(e[0], n); + return { + type: "delimsizing", + mode: n.parser.mode, + size: Uc[n.funcName].size, + mclass: Uc[n.funcName].mclass, + delim: t.text + }; + }, + htmlBuilder: (n, e) => n.delim === "." ? G.makeSpan([n.mclass]) : yr.sizedDelim(n.delim, n.size, e, n.mode, [n.mclass]), + mathmlBuilder: (n) => { + var e = []; + n.delim !== "." && e.push(bi(n.delim, n.mode)); + var t = new J.MathNode("mo", e); + n.mclass === "mopen" || n.mclass === "mclose" ? t.setAttribute("fence", "true") : t.setAttribute("fence", "false"), t.setAttribute("stretchy", "true"); + var i = re(yr.sizeToMaxHeight[n.size]); + return t.setAttribute("minsize", i), t.setAttribute("maxsize", i), t; + } +}); +function Gc(n) { + if (!n.body) + throw new Error("Bug: The leftright ParseNode wasn't fully parsed."); +} +ae({ + type: "leftright-right", + names: ["\\right"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (n, e) => { + var t = n.parser.gullet.macros.get("\\current@color"); + if (t && typeof t != "string") + throw new ge("\\current@color set to non-string in \\right"); + return { + type: "leftright-right", + mode: n.parser.mode, + delim: ja(e[0], n).text, + color: t + // undefined if not set via \color + }; + } +}); +ae({ + type: "leftright", + names: ["\\left"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (n, e) => { + var t = ja(e[0], n), i = n.parser; + ++i.leftrightDepth; + var r = i.parseExpression(!1); + --i.leftrightDepth, i.expect("\\right", !1); + var s = Ie(i.parseFunction(), "leftright-right"); + return { + type: "leftright", + mode: i.mode, + body: r, + left: t.text, + right: s.delim, + rightColor: s.color + }; + }, + htmlBuilder: (n, e) => { + Gc(n); + for (var t = Ct(n.body, e, !0, ["mopen", "mclose"]), i = 0, r = 0, s = !1, a = 0; a < t.length; a++) + t[a].isMiddle ? s = !0 : (i = Math.max(t[a].height, i), r = Math.max(t[a].depth, r)); + i *= e.sizeMultiplier, r *= e.sizeMultiplier; + var o; + if (n.left === "." ? o = ls(e, ["mopen"]) : o = yr.leftRightDelim(n.left, i, r, e, n.mode, ["mopen"]), t.unshift(o), s) + for (var l = 1; l < t.length; l++) { + var u = t[l], c = u.isMiddle; + c && (t[l] = yr.leftRightDelim(c.delim, i, r, c.options, n.mode, [])); + } + var h; + if (n.right === ".") + h = ls(e, ["mclose"]); + else { + var d = n.rightColor ? e.withColor(n.rightColor) : e; + h = yr.leftRightDelim(n.right, i, r, d, n.mode, ["mclose"]); + } + return t.push(h), G.makeSpan(["minner"], t, e); + }, + mathmlBuilder: (n, e) => { + Gc(n); + var t = ai(n.body, e); + if (n.left !== ".") { + var i = new J.MathNode("mo", [bi(n.left, n.mode)]); + i.setAttribute("fence", "true"), t.unshift(i); + } + if (n.right !== ".") { + var r = new J.MathNode("mo", [bi(n.right, n.mode)]); + r.setAttribute("fence", "true"), n.rightColor && r.setAttribute("mathcolor", n.rightColor), t.push(r); + } + return m0(t); + } +}); +ae({ + type: "middle", + names: ["\\middle"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (n, e) => { + var t = ja(e[0], n); + if (!n.parser.leftrightDepth) + throw new ge("\\middle without preceding \\left", t); + return { + type: "middle", + mode: n.parser.mode, + delim: t.text + }; + }, + htmlBuilder: (n, e) => { + var t; + if (n.delim === ".") + t = ls(e, []); + else { + t = yr.sizedDelim(n.delim, 1, e, n.mode, []); + var i = { + delim: n.delim, + options: e + }; + t.isMiddle = i; + } + return t; + }, + mathmlBuilder: (n, e) => { + var t = n.delim === "\\vert" || n.delim === "|" ? bi("|", "text") : bi(n.delim, n.mode), i = new J.MathNode("mo", [t]); + return i.setAttribute("fence", "true"), i.setAttribute("lspace", "0.05em"), i.setAttribute("rspace", "0.05em"), i; + } +}); +var _0 = (n, e) => { + var t = G.wrapFragment(Be(n.body, e), e), i = n.label.slice(1), r = e.sizeMultiplier, s, a = 0, o = _e.isCharacterBox(n.body); + if (i === "sout") + s = G.makeSpan(["stretchy", "sout"]), s.height = e.fontMetrics().defaultRuleThickness / r, a = -0.5 * e.fontMetrics().xHeight; + else if (i === "phase") { + var l = at({ + number: 0.6, + unit: "pt" + }, e), u = at({ + number: 0.35, + unit: "ex" + }, e), c = e.havingBaseSizing(); + r = r / c.sizeMultiplier; + var h = t.height + t.depth + l + u; + t.style.paddingLeft = re(h / 2 + l); + var d = Math.floor(1e3 * h * r), f = Hy(d), m = new Pr([new Vr("phase", f)], { + width: "400em", + height: re(d / 1e3), + viewBox: "0 0 400000 " + d, + preserveAspectRatio: "xMinYMin slice" + }); + s = G.makeSvgSpan(["hide-tail"], [m], e), s.style.height = re(h), a = t.depth + l + u; + } else { + /cancel/.test(i) ? o || t.classes.push("cancel-pad") : i === "angl" ? t.classes.push("anglpad") : t.classes.push("boxpad"); + var p = 0, v = 0, b = 0; + /box/.test(i) ? (b = Math.max( + e.fontMetrics().fboxrule, + // default + e.minRuleThickness + // User override. + ), p = e.fontMetrics().fboxsep + (i === "colorbox" ? 0 : b), v = p) : i === "angl" ? (b = Math.max(e.fontMetrics().defaultRuleThickness, e.minRuleThickness), p = 4 * b, v = Math.max(0, 0.25 - t.depth)) : (p = o ? 0.2 : 0, v = p), s = _r.encloseSpan(t, i, p, v, e), /fbox|boxed|fcolorbox/.test(i) ? (s.style.borderStyle = "solid", s.style.borderWidth = re(b)) : i === "angl" && b !== 0.049 && (s.style.borderTopWidth = re(b), s.style.borderRightWidth = re(b)), a = t.depth + v, n.backgroundColor && (s.style.backgroundColor = n.backgroundColor, n.borderColor && (s.style.borderColor = n.borderColor)); + } + var E; + if (n.backgroundColor) + E = G.makeVList({ + positionType: "individualShift", + children: [ + // Put the color background behind inner; + { + type: "elem", + elem: s, + shift: a + }, + { + type: "elem", + elem: t, + shift: 0 + } + ] + }, e); + else { + var y = /cancel|phase/.test(i) ? ["svg-align"] : []; + E = G.makeVList({ + positionType: "individualShift", + children: [ + // Write the \cancel stroke on top of inner. + { + type: "elem", + elem: t, + shift: 0 + }, + { + type: "elem", + elem: s, + shift: a, + wrapperClasses: y + } + ] + }, e); + } + return /cancel/.test(i) && (E.height = t.height, E.depth = t.depth), /cancel/.test(i) && !o ? G.makeSpan(["mord", "cancel-lap"], [E], e) : G.makeSpan(["mord"], [E], e); +}, b0 = (n, e) => { + var t = 0, i = new J.MathNode(n.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [Ze(n.body, e)]); + switch (n.label) { + case "\\cancel": + i.setAttribute("notation", "updiagonalstrike"); + break; + case "\\bcancel": + i.setAttribute("notation", "downdiagonalstrike"); + break; + case "\\phase": + i.setAttribute("notation", "phasorangle"); + break; + case "\\sout": + i.setAttribute("notation", "horizontalstrike"); + break; + case "\\fbox": + i.setAttribute("notation", "box"); + break; + case "\\angl": + i.setAttribute("notation", "actuarial"); + break; + case "\\fcolorbox": + case "\\colorbox": + if (t = e.fontMetrics().fboxsep * e.fontMetrics().ptPerEm, i.setAttribute("width", "+" + 2 * t + "pt"), i.setAttribute("height", "+" + 2 * t + "pt"), i.setAttribute("lspace", t + "pt"), i.setAttribute("voffset", t + "pt"), n.label === "\\fcolorbox") { + var r = Math.max( + e.fontMetrics().fboxrule, + // default + e.minRuleThickness + // user override + ); + i.setAttribute("style", "border: " + r + "em solid " + String(n.borderColor)); + } + break; + case "\\xcancel": + i.setAttribute("notation", "updiagonalstrike downdiagonalstrike"); + break; + } + return n.backgroundColor && i.setAttribute("mathbackground", n.backgroundColor), i; +}; +ae({ + type: "enclose", + names: ["\\colorbox"], + props: { + numArgs: 2, + allowedInText: !0, + argTypes: ["color", "text"] + }, + handler(n, e, t) { + var { + parser: i, + funcName: r + } = n, s = Ie(e[0], "color-token").color, a = e[1]; + return { + type: "enclose", + mode: i.mode, + label: r, + backgroundColor: s, + body: a + }; + }, + htmlBuilder: _0, + mathmlBuilder: b0 +}); +ae({ + type: "enclose", + names: ["\\fcolorbox"], + props: { + numArgs: 3, + allowedInText: !0, + argTypes: ["color", "color", "text"] + }, + handler(n, e, t) { + var { + parser: i, + funcName: r + } = n, s = Ie(e[0], "color-token").color, a = Ie(e[1], "color-token").color, o = e[2]; + return { + type: "enclose", + mode: i.mode, + label: r, + backgroundColor: a, + borderColor: s, + body: o + }; + }, + htmlBuilder: _0, + mathmlBuilder: b0 +}); +ae({ + type: "enclose", + names: ["\\fbox"], + props: { + numArgs: 1, + argTypes: ["hbox"], + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "enclose", + mode: t.mode, + label: "\\fbox", + body: e[0] + }; + } +}); +ae({ + type: "enclose", + names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"], + props: { + numArgs: 1 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "enclose", + mode: t.mode, + label: i, + body: r + }; + }, + htmlBuilder: _0, + mathmlBuilder: b0 +}); +ae({ + type: "enclose", + names: ["\\angl"], + props: { + numArgs: 1, + argTypes: ["hbox"], + allowedInText: !1 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "enclose", + mode: t.mode, + label: "\\angl", + body: e[0] + }; + } +}); +var vm = {}; +function tr(n) { + for (var { + type: e, + names: t, + props: i, + handler: r, + htmlBuilder: s, + mathmlBuilder: a + } = n, o = { + type: e, + numArgs: i.numArgs || 0, + allowedInText: !1, + numOptionalArgs: 0, + handler: r + }, l = 0; l < t.length; ++l) + vm[t[l]] = o; + s && (Ca[e] = s), a && (Fa[e] = a); +} +var W_ = {}; +function D(n, e) { + W_[n] = e; +} +function zc(n) { + var e = []; + n.consumeSpaces(); + var t = n.fetch().text; + for (t === "\\relax" && (n.consume(), n.consumeSpaces(), t = n.fetch().text); t === "\\hline" || t === "\\hdashline"; ) + n.consume(), e.push(t === "\\hdashline"), n.consumeSpaces(), t = n.fetch().text; + return e; +} +var Xa = (n) => { + var e = n.parser.settings; + if (!e.displayMode) + throw new ge("{" + n.envName + "} can be used only in display mode."); +}; +function E0(n) { + if (n.indexOf("ed") === -1) + return n.indexOf("*") === -1; +} +function $r(n, e, t) { + var { + hskipBeforeAndAfter: i, + addJot: r, + cols: s, + arraystretch: a, + colSeparationType: o, + autoTag: l, + singleRow: u, + emptySingleRow: c, + maxNumCols: h, + leqno: d + } = e; + if (n.gullet.beginGroup(), u || n.gullet.macros.set("\\cr", "\\\\\\relax"), !a) { + var f = n.gullet.expandMacroAsText("\\arraystretch"); + if (f == null) + a = 1; + else if (a = parseFloat(f), !a || a < 0) + throw new ge("Invalid \\arraystretch: " + f); + } + n.gullet.beginGroup(); + var m = [], p = [m], v = [], b = [], E = l != null ? [] : void 0; + function y() { + l && n.gullet.macros.set("\\@eqnsw", "1", !0); + } + function T() { + E && (n.gullet.macros.get("\\df@tag") ? (E.push(n.subparse([new c0("\\df@tag")])), n.gullet.macros.set("\\df@tag", void 0, !0)) : E.push(!!l && n.gullet.macros.get("\\@eqnsw") === "1")); + } + for (y(), b.push(zc(n)); ; ) { + var A = n.parseExpression(!1, u ? "\\end" : "\\\\"); + n.gullet.endGroup(), n.gullet.beginGroup(), A = { + type: "ordgroup", + mode: n.mode, + body: A + }, t && (A = { + type: "styling", + mode: n.mode, + style: t, + body: [A] + }), m.push(A); + var k = n.fetch().text; + if (k === "&") { + if (h && m.length === h) { + if (u || o) + throw new ge("Too many tab characters: &", n.nextToken); + n.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument."); + } + n.consume(); + } else if (k === "\\end") { + T(), m.length === 1 && A.type === "styling" && A.body[0].body.length === 0 && (p.length > 1 || !c) && p.pop(), b.length < p.length + 1 && b.push([]); + break; + } else if (k === "\\\\") { + n.consume(); + var w = void 0; + n.gullet.future().text !== " " && (w = n.parseSizeGroup(!0)), v.push(w ? w.value : null), T(), b.push(zc(n)), m = [], p.push(m), y(); + } else + throw new ge("Expected & or \\\\ or \\cr or \\end", n.nextToken); + } + return n.gullet.endGroup(), n.gullet.endGroup(), { + type: "array", + mode: n.mode, + addJot: r, + arraystretch: a, + body: p, + cols: s, + rowGaps: v, + hskipBeforeAndAfter: i, + hLinesBeforeRow: b, + colSeparationType: o, + tags: E, + leqno: d + }; +} +function S0(n) { + return n.slice(0, 1) === "d" ? "display" : "text"; +} +var ir = function(e, t) { + var i, r, s = e.body.length, a = e.hLinesBeforeRow, o = 0, l = new Array(s), u = [], c = Math.max( + // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em. + t.fontMetrics().arrayRuleWidth, + t.minRuleThickness + // User override. + ), h = 1 / t.fontMetrics().ptPerEm, d = 5 * h; + if (e.colSeparationType && e.colSeparationType === "small") { + var f = t.havingStyle(Te.SCRIPT).sizeMultiplier; + d = 0.2778 * (f / t.sizeMultiplier); + } + var m = e.colSeparationType === "CD" ? at({ + number: 3, + unit: "ex" + }, t) : 12 * h, p = 3 * h, v = e.arraystretch * m, b = 0.7 * v, E = 0.3 * v, y = 0; + function T(Ae) { + for (var Ee = 0; Ee < Ae.length; ++Ee) + Ee > 0 && (y += 0.25), u.push({ + pos: y, + isDashed: Ae[Ee] + }); + } + for (T(a[0]), i = 0; i < e.body.length; ++i) { + var A = e.body[i], k = b, w = E; + o < A.length && (o = A.length); + var L = new Array(A.length); + for (r = 0; r < A.length; ++r) { + var I = Be(A[r], t); + w < I.depth && (w = I.depth), k < I.height && (k = I.height), L[r] = I; + } + var R = e.rowGaps[i], O = 0; + R && (O = at(R, t), O > 0 && (O += E, w < O && (w = O), O = 0)), e.addJot && (w += p), L.height = k, L.depth = w, y += k, L.pos = y, y += w + O, l[i] = L, T(a[i + 1]); + } + var z = y / 2 + t.fontMetrics().axisHeight, ie = e.cols || [], N = [], X, K, Z = []; + if (e.tags && e.tags.some((Ae) => Ae)) + for (i = 0; i < s; ++i) { + var Q = l[i], H = Q.pos - z, Y = e.tags[i], U = void 0; + Y === !0 ? U = G.makeSpan(["eqn-num"], [], t) : Y === !1 ? U = G.makeSpan([], [], t) : U = G.makeSpan([], Ct(Y, t, !0), t), U.depth = Q.depth, U.height = Q.height, Z.push({ + type: "elem", + elem: U, + shift: H + }); + } + for ( + r = 0, K = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + r < o || K < ie.length; + ++r, ++K + ) { + for (var te = ie[K] || {}, ne = !0; te.type === "separator"; ) { + if (ne || (X = G.makeSpan(["arraycolsep"], []), X.style.width = re(t.fontMetrics().doubleRuleSep), N.push(X)), te.separator === "|" || te.separator === ":") { + var ce = te.separator === "|" ? "solid" : "dashed", V = G.makeSpan(["vertical-separator"], [], t); + V.style.height = re(y), V.style.borderRightWidth = re(c), V.style.borderRightStyle = ce, V.style.margin = "0 " + re(-c / 2); + var le = y - z; + le && (V.style.verticalAlign = re(-le)), N.push(V); + } else + throw new ge("Invalid separator type: " + te.separator); + K++, te = ie[K] || {}, ne = !1; + } + if (!(r >= o)) { + var be = void 0; + (r > 0 || e.hskipBeforeAndAfter) && (be = _e.deflt(te.pregap, d), be !== 0 && (X = G.makeSpan(["arraycolsep"], []), X.style.width = re(be), N.push(X))); + var Oe = []; + for (i = 0; i < s; ++i) { + var Ue = l[i], pt = Ue[r]; + if (pt) { + var Ge = Ue.pos - z; + pt.depth = Ue.depth, pt.height = Ue.height, Oe.push({ + type: "elem", + elem: pt, + shift: Ge + }); + } + } + Oe = G.makeVList({ + positionType: "individualShift", + children: Oe + }, t), Oe = G.makeSpan(["col-align-" + (te.align || "c")], [Oe]), N.push(Oe), (r < o - 1 || e.hskipBeforeAndAfter) && (be = _e.deflt(te.postgap, d), be !== 0 && (X = G.makeSpan(["arraycolsep"], []), X.style.width = re(be), N.push(X))); + } + } + if (l = G.makeSpan(["mtable"], N), u.length > 0) { + for (var wt = G.makeLineSpan("hline", t, c), q = G.makeLineSpan("hdashline", t, c), Pe = [{ + type: "elem", + elem: l, + shift: 0 + }]; u.length > 0; ) { + var We = u.pop(), fe = We.pos - z; + We.isDashed ? Pe.push({ + type: "elem", + elem: q, + shift: fe + }) : Pe.push({ + type: "elem", + elem: wt, + shift: fe + }); + } + l = G.makeVList({ + positionType: "individualShift", + children: Pe + }, t); + } + if (Z.length === 0) + return G.makeSpan(["mord"], [l], t); + var Re = G.makeVList({ + positionType: "individualShift", + children: Z + }, t); + return Re = G.makeSpan(["tag"], [Re], t), G.makeFragment([l, Re]); +}, j_ = { + c: "center ", + l: "left ", + r: "right " +}, rr = function(e, t) { + for (var i = [], r = new J.MathNode("mtd", [], ["mtr-glue"]), s = new J.MathNode("mtd", [], ["mml-eqn-num"]), a = 0; a < e.body.length; a++) { + for (var o = e.body[a], l = [], u = 0; u < o.length; u++) + l.push(new J.MathNode("mtd", [Ze(o[u], t)])); + e.tags && e.tags[a] && (l.unshift(r), l.push(r), e.leqno ? l.unshift(s) : l.push(s)), i.push(new J.MathNode("mtr", l)); + } + var c = new J.MathNode("mtable", i), h = e.arraystretch === 0.5 ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0); + c.setAttribute("rowspacing", re(h)); + var d = "", f = ""; + if (e.cols && e.cols.length > 0) { + var m = e.cols, p = "", v = !1, b = 0, E = m.length; + m[0].type === "separator" && (d += "top ", b = 1), m[m.length - 1].type === "separator" && (d += "bottom ", E -= 1); + for (var y = b; y < E; y++) + m[y].type === "align" ? (f += j_[m[y].align], v && (p += "none "), v = !0) : m[y].type === "separator" && v && (p += m[y].separator === "|" ? "solid " : "dashed ", v = !1); + c.setAttribute("columnalign", f.trim()), /[sd]/.test(p) && c.setAttribute("columnlines", p.trim()); + } + if (e.colSeparationType === "align") { + for (var T = e.cols || [], A = "", k = 1; k < T.length; k++) + A += k % 2 ? "0em " : "1em "; + c.setAttribute("columnspacing", A.trim()); + } else e.colSeparationType === "alignat" || e.colSeparationType === "gather" ? c.setAttribute("columnspacing", "0em") : e.colSeparationType === "small" ? c.setAttribute("columnspacing", "0.2778em") : e.colSeparationType === "CD" ? c.setAttribute("columnspacing", "0.5em") : c.setAttribute("columnspacing", "1em"); + var w = "", L = e.hLinesBeforeRow; + d += L[0].length > 0 ? "left " : "", d += L[L.length - 1].length > 0 ? "right " : ""; + for (var I = 1; I < L.length - 1; I++) + w += L[I].length === 0 ? "none " : L[I][0] ? "dashed " : "solid "; + return /[sd]/.test(w) && c.setAttribute("rowlines", w.trim()), d !== "" && (c = new J.MathNode("menclose", [c]), c.setAttribute("notation", d.trim())), e.arraystretch && e.arraystretch < 1 && (c = new J.MathNode("mstyle", [c]), c.setAttribute("scriptlevel", "1")), c; +}, ym = function(e, t) { + e.envName.indexOf("ed") === -1 && Xa(e); + var i = [], r = e.envName.indexOf("at") > -1 ? "alignat" : "align", s = e.envName === "split", a = $r(e.parser, { + cols: i, + addJot: !0, + autoTag: s ? void 0 : E0(e.envName), + emptySingleRow: !0, + colSeparationType: r, + maxNumCols: s ? 2 : void 0, + leqno: e.parser.settings.leqno + }, "display"), o, l = 0, u = { + type: "ordgroup", + mode: e.mode, + body: [] + }; + if (t[0] && t[0].type === "ordgroup") { + for (var c = "", h = 0; h < t[0].body.length; h++) { + var d = Ie(t[0].body[h], "textord"); + c += d.text; + } + o = Number(c), l = o * 2; + } + var f = !l; + a.body.forEach(function(b) { + for (var E = 1; E < b.length; E += 2) { + var y = Ie(b[E], "styling"), T = Ie(y.body[0], "ordgroup"); + T.body.unshift(u); + } + if (f) + l < b.length && (l = b.length); + else { + var A = b.length / 2; + if (o < A) + throw new ge("Too many math in a row: " + ("expected " + o + ", but got " + A), b[0]); + } + }); + for (var m = 0; m < l; ++m) { + var p = "r", v = 0; + m % 2 === 1 ? p = "l" : m > 0 && f && (v = 1), i[m] = { + type: "align", + align: p, + pregap: v, + postgap: 0 + }; + } + return a.colSeparationType = f ? "align" : "alignat", a; +}; +tr({ + type: "array", + names: ["array", "darray"], + props: { + numArgs: 1 + }, + handler(n, e) { + var t = Ya(e[0]), i = t ? [e[0]] : Ie(e[0], "ordgroup").body, r = i.map(function(a) { + var o = p0(a), l = o.text; + if ("lcr".indexOf(l) !== -1) + return { + type: "align", + align: l + }; + if (l === "|") + return { + type: "separator", + separator: "|" + }; + if (l === ":") + return { + type: "separator", + separator: ":" + }; + throw new ge("Unknown column alignment: " + l, a); + }), s = { + cols: r, + hskipBeforeAndAfter: !0, + // \@preamble in lttab.dtx + maxNumCols: r.length + }; + return $r(n.parser, s, S0(n.envName)); + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"], + props: { + numArgs: 0 + }, + handler(n) { + var e = { + matrix: null, + pmatrix: ["(", ")"], + bmatrix: ["[", "]"], + Bmatrix: ["\\{", "\\}"], + vmatrix: ["|", "|"], + Vmatrix: ["\\Vert", "\\Vert"] + }[n.envName.replace("*", "")], t = "c", i = { + hskipBeforeAndAfter: !1, + cols: [{ + type: "align", + align: t + }] + }; + if (n.envName.charAt(n.envName.length - 1) === "*") { + var r = n.parser; + if (r.consumeSpaces(), r.fetch().text === "[") { + if (r.consume(), r.consumeSpaces(), t = r.fetch().text, "lcr".indexOf(t) === -1) + throw new ge("Expected l or c or r", r.nextToken); + r.consume(), r.consumeSpaces(), r.expect("]"), r.consume(), i.cols = [{ + type: "align", + align: t + }]; + } + } + var s = $r(n.parser, i, S0(n.envName)), a = Math.max(0, ...s.body.map((o) => o.length)); + return s.cols = new Array(a).fill({ + type: "align", + align: t + }), e ? { + type: "leftright", + mode: n.mode, + body: [s], + left: e[0], + right: e[1], + rightColor: void 0 + // \right uninfluenced by \color in array + } : s; + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["smallmatrix"], + props: { + numArgs: 0 + }, + handler(n) { + var e = { + arraystretch: 0.5 + }, t = $r(n.parser, e, "script"); + return t.colSeparationType = "small", t; + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["subarray"], + props: { + numArgs: 1 + }, + handler(n, e) { + var t = Ya(e[0]), i = t ? [e[0]] : Ie(e[0], "ordgroup").body, r = i.map(function(a) { + var o = p0(a), l = o.text; + if ("lc".indexOf(l) !== -1) + return { + type: "align", + align: l + }; + throw new ge("Unknown column alignment: " + l, a); + }); + if (r.length > 1) + throw new ge("{subarray} can contain only one column"); + var s = { + cols: r, + hskipBeforeAndAfter: !1, + arraystretch: 0.5 + }; + if (s = $r(n.parser, s, "script"), s.body.length > 0 && s.body[0].length > 1) + throw new ge("{subarray} can contain only one column"); + return s; + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["cases", "dcases", "rcases", "drcases"], + props: { + numArgs: 0 + }, + handler(n) { + var e = { + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1 + /* 1em quad */ + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }, t = $r(n.parser, e, S0(n.envName)); + return { + type: "leftright", + mode: n.mode, + body: [t], + left: n.envName.indexOf("r") > -1 ? "." : "\\{", + right: n.envName.indexOf("r") > -1 ? "\\}" : ".", + rightColor: void 0 + }; + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["align", "align*", "aligned", "split"], + props: { + numArgs: 0 + }, + handler: ym, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["gathered", "gather", "gather*"], + props: { + numArgs: 0 + }, + handler(n) { + _e.contains(["gather", "gather*"], n.envName) && Xa(n); + var e = { + cols: [{ + type: "align", + align: "c" + }], + addJot: !0, + colSeparationType: "gather", + autoTag: E0(n.envName), + emptySingleRow: !0, + leqno: n.parser.settings.leqno + }; + return $r(n.parser, e, "display"); + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["alignat", "alignat*", "alignedat"], + props: { + numArgs: 1 + }, + handler: ym, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["equation", "equation*"], + props: { + numArgs: 0 + }, + handler(n) { + Xa(n); + var e = { + autoTag: E0(n.envName), + emptySingleRow: !0, + singleRow: !0, + maxNumCols: 1, + leqno: n.parser.settings.leqno + }; + return $r(n.parser, e, "display"); + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +tr({ + type: "array", + names: ["CD"], + props: { + numArgs: 0 + }, + handler(n) { + return Xa(n), P_(n.parser); + }, + htmlBuilder: ir, + mathmlBuilder: rr +}); +D("\\nonumber", "\\gdef\\@eqnsw{0}"); +D("\\notag", "\\nonumber"); +ae({ + type: "text", + // Doesn't matter what this is. + names: ["\\hline", "\\hdashline"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !0 + }, + handler(n, e) { + throw new ge(n.funcName + " valid only within array environment"); + } +}); +var qc = vm; +ae({ + type: "environment", + names: ["\\begin", "\\end"], + props: { + numArgs: 1, + argTypes: ["text"] + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = e[0]; + if (r.type !== "ordgroup") + throw new ge("Invalid environment name", r); + for (var s = "", a = 0; a < r.body.length; ++a) + s += Ie(r.body[a], "textord").text; + if (i === "\\begin") { + if (!qc.hasOwnProperty(s)) + throw new ge("No such environment: " + s, r); + var o = qc[s], { + args: l, + optArgs: u + } = t.parseArguments("\\begin{" + s + "}", o), c = { + mode: t.mode, + envName: s, + parser: t + }, h = o.handler(c, l, u); + t.expect("\\end", !1); + var d = t.nextToken, f = Ie(t.parseFunction(), "environment"); + if (f.name !== s) + throw new ge("Mismatch: \\begin{" + s + "} matched by \\end{" + f.name + "}", d); + return h; + } + return { + type: "environment", + mode: t.mode, + name: s, + nameGroup: r + }; + } +}); +var _m = (n, e) => { + var t = n.font, i = e.withFont(t); + return Be(n.body, i); +}, bm = (n, e) => { + var t = n.font, i = e.withFont(t); + return Ze(n.body, i); +}, Hc = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak", + "\\bm": "\\boldsymbol" +}; +ae({ + type: "font", + names: [ + // styles, except \boldsymbol defined below + "\\mathrm", + "\\mathit", + "\\mathbf", + "\\mathnormal", + "\\mathsfit", + // families + "\\mathbb", + "\\mathcal", + "\\mathfrak", + "\\mathscr", + "\\mathsf", + "\\mathtt", + // aliases, except \bm defined below + "\\Bbb", + "\\bold", + "\\frak" + ], + props: { + numArgs: 1, + allowedInArgument: !0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = Pa(e[0]), s = i; + return s in Hc && (s = Hc[s]), { + type: "font", + mode: t.mode, + font: s.slice(1), + body: r + }; + }, + htmlBuilder: _m, + mathmlBuilder: bm +}); +ae({ + type: "mclass", + names: ["\\boldsymbol", "\\bm"], + props: { + numArgs: 1 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[0], r = _e.isCharacterBox(i); + return { + type: "mclass", + mode: t.mode, + mclass: Wa(i), + body: [{ + type: "font", + mode: t.mode, + font: "boldsymbol", + body: i + }], + isCharacterBox: r + }; + } +}); +ae({ + type: "font", + names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i, + breakOnTokenText: r + } = n, { + mode: s + } = t, a = t.parseExpression(!0, r), o = "math" + i.slice(1); + return { + type: "font", + mode: s, + font: o, + body: { + type: "ordgroup", + mode: t.mode, + body: a + } + }; + }, + htmlBuilder: _m, + mathmlBuilder: bm +}); +var Em = (n, e) => { + var t = e; + return n === "display" ? t = t.id >= Te.SCRIPT.id ? t.text() : Te.DISPLAY : n === "text" && t.size === Te.DISPLAY.size ? t = Te.TEXT : n === "script" ? t = Te.SCRIPT : n === "scriptscript" && (t = Te.SCRIPTSCRIPT), t; +}, T0 = (n, e) => { + var t = Em(n.size, e.style), i = t.fracNum(), r = t.fracDen(), s; + s = e.havingStyle(i); + var a = Be(n.numer, s, e); + if (n.continued) { + var o = 8.5 / e.fontMetrics().ptPerEm, l = 3.5 / e.fontMetrics().ptPerEm; + a.height = a.height < o ? o : a.height, a.depth = a.depth < l ? l : a.depth; + } + s = e.havingStyle(r); + var u = Be(n.denom, s, e), c, h, d; + n.hasBarLine ? (n.barSize ? (h = at(n.barSize, e), c = G.makeLineSpan("frac-line", e, h)) : c = G.makeLineSpan("frac-line", e), h = c.height, d = c.height) : (c = null, h = 0, d = e.fontMetrics().defaultRuleThickness); + var f, m, p; + t.size === Te.DISPLAY.size || n.size === "display" ? (f = e.fontMetrics().num1, h > 0 ? m = 3 * d : m = 7 * d, p = e.fontMetrics().denom1) : (h > 0 ? (f = e.fontMetrics().num2, m = d) : (f = e.fontMetrics().num3, m = 3 * d), p = e.fontMetrics().denom2); + var v; + if (c) { + var E = e.fontMetrics().axisHeight; + f - a.depth - (E + 0.5 * h) < m && (f += m - (f - a.depth - (E + 0.5 * h))), E - 0.5 * h - (u.height - p) < m && (p += m - (E - 0.5 * h - (u.height - p))); + var y = -(E - 0.5 * h); + v = G.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: u, + shift: p + }, { + type: "elem", + elem: c, + shift: y + }, { + type: "elem", + elem: a, + shift: -f + }] + }, e); + } else { + var b = f - a.depth - (u.height - p); + b < m && (f += 0.5 * (m - b), p += 0.5 * (m - b)), v = G.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: u, + shift: p + }, { + type: "elem", + elem: a, + shift: -f + }] + }, e); + } + s = e.havingStyle(t), v.height *= s.sizeMultiplier / e.sizeMultiplier, v.depth *= s.sizeMultiplier / e.sizeMultiplier; + var T; + t.size === Te.DISPLAY.size ? T = e.fontMetrics().delim1 : t.size === Te.SCRIPTSCRIPT.size ? T = e.havingStyle(Te.SCRIPT).fontMetrics().delim2 : T = e.fontMetrics().delim2; + var A, k; + return n.leftDelim == null ? A = ls(e, ["mopen"]) : A = yr.customSizedDelim(n.leftDelim, T, !0, e.havingStyle(t), n.mode, ["mopen"]), n.continued ? k = G.makeSpan([]) : n.rightDelim == null ? k = ls(e, ["mclose"]) : k = yr.customSizedDelim(n.rightDelim, T, !0, e.havingStyle(t), n.mode, ["mclose"]), G.makeSpan(["mord"].concat(s.sizingClasses(e)), [A, G.makeSpan(["mfrac"], [v]), k], e); +}, x0 = (n, e) => { + var t = new J.MathNode("mfrac", [Ze(n.numer, e), Ze(n.denom, e)]); + if (!n.hasBarLine) + t.setAttribute("linethickness", "0px"); + else if (n.barSize) { + var i = at(n.barSize, e); + t.setAttribute("linethickness", re(i)); + } + var r = Em(n.size, e.style); + if (r.size !== e.style.size) { + t = new J.MathNode("mstyle", [t]); + var s = r.size === Te.DISPLAY.size ? "true" : "false"; + t.setAttribute("displaystyle", s), t.setAttribute("scriptlevel", "0"); + } + if (n.leftDelim != null || n.rightDelim != null) { + var a = []; + if (n.leftDelim != null) { + var o = new J.MathNode("mo", [new J.TextNode(n.leftDelim.replace("\\", ""))]); + o.setAttribute("fence", "true"), a.push(o); + } + if (a.push(t), n.rightDelim != null) { + var l = new J.MathNode("mo", [new J.TextNode(n.rightDelim.replace("\\", ""))]); + l.setAttribute("fence", "true"), a.push(l); + } + return m0(a); + } + return t; +}; +ae({ + type: "genfrac", + names: [ + "\\dfrac", + "\\frac", + "\\tfrac", + "\\dbinom", + "\\binom", + "\\tbinom", + "\\\\atopfrac", + // can’t be entered directly + "\\\\bracefrac", + "\\\\brackfrac" + // ditto + ], + props: { + numArgs: 2, + allowedInArgument: !0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0], s = e[1], a, o = null, l = null, u = "auto"; + switch (i) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + a = !0; + break; + case "\\\\atopfrac": + a = !1; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + a = !1, o = "(", l = ")"; + break; + case "\\\\bracefrac": + a = !1, o = "\\{", l = "\\}"; + break; + case "\\\\brackfrac": + a = !1, o = "[", l = "]"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + switch (i) { + case "\\dfrac": + case "\\dbinom": + u = "display"; + break; + case "\\tfrac": + case "\\tbinom": + u = "text"; + break; + } + return { + type: "genfrac", + mode: t.mode, + continued: !1, + numer: r, + denom: s, + hasBarLine: a, + leftDelim: o, + rightDelim: l, + size: u, + barSize: null + }; + }, + htmlBuilder: T0, + mathmlBuilder: x0 +}); +ae({ + type: "genfrac", + names: ["\\cfrac"], + props: { + numArgs: 2 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0], s = e[1]; + return { + type: "genfrac", + mode: t.mode, + continued: !0, + numer: r, + denom: s, + hasBarLine: !0, + leftDelim: null, + rightDelim: null, + size: "display", + barSize: null + }; + } +}); +ae({ + type: "infix", + names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"], + props: { + numArgs: 0, + infix: !0 + }, + handler(n) { + var { + parser: e, + funcName: t, + token: i + } = n, r; + switch (t) { + case "\\over": + r = "\\frac"; + break; + case "\\choose": + r = "\\binom"; + break; + case "\\atop": + r = "\\\\atopfrac"; + break; + case "\\brace": + r = "\\\\bracefrac"; + break; + case "\\brack": + r = "\\\\brackfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + mode: e.mode, + replaceWith: r, + token: i + }; + } +}); +var Vc = ["display", "text", "script", "scriptscript"], Kc = function(e) { + var t = null; + return e.length > 0 && (t = e, t = t === "." ? null : t), t; +}; +ae({ + type: "genfrac", + names: ["\\genfrac"], + props: { + numArgs: 6, + allowedInArgument: !0, + argTypes: ["math", "math", "size", "text", "math", "math"] + }, + handler(n, e) { + var { + parser: t + } = n, i = e[4], r = e[5], s = Pa(e[0]), a = s.type === "atom" && s.family === "open" ? Kc(s.text) : null, o = Pa(e[1]), l = o.type === "atom" && o.family === "close" ? Kc(o.text) : null, u = Ie(e[2], "size"), c, h = null; + u.isBlank ? c = !0 : (h = u.value, c = h.number > 0); + var d = "auto", f = e[3]; + if (f.type === "ordgroup") { + if (f.body.length > 0) { + var m = Ie(f.body[0], "textord"); + d = Vc[Number(m.text)]; + } + } else + f = Ie(f, "textord"), d = Vc[Number(f.text)]; + return { + type: "genfrac", + mode: t.mode, + numer: i, + denom: r, + continued: !1, + hasBarLine: c, + barSize: h, + leftDelim: a, + rightDelim: l, + size: d + }; + }, + htmlBuilder: T0, + mathmlBuilder: x0 +}); +ae({ + type: "infix", + names: ["\\above"], + props: { + numArgs: 1, + argTypes: ["size"], + infix: !0 + }, + handler(n, e) { + var { + parser: t, + funcName: i, + token: r + } = n; + return { + type: "infix", + mode: t.mode, + replaceWith: "\\\\abovefrac", + size: Ie(e[0], "size").value, + token: r + }; + } +}); +ae({ + type: "genfrac", + names: ["\\\\abovefrac"], + props: { + numArgs: 3, + argTypes: ["math", "size", "math"] + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0], s = Ly(Ie(e[1], "infix").size), a = e[2], o = s.number > 0; + return { + type: "genfrac", + mode: t.mode, + numer: r, + denom: a, + continued: !1, + hasBarLine: o, + barSize: s, + leftDelim: null, + rightDelim: null, + size: "auto" + }; + }, + htmlBuilder: T0, + mathmlBuilder: x0 +}); +var Sm = (n, e) => { + var t = e.style, i, r; + n.type === "supsub" ? (i = n.sup ? Be(n.sup, e.havingStyle(t.sup()), e) : Be(n.sub, e.havingStyle(t.sub()), e), r = Ie(n.base, "horizBrace")) : r = Ie(n, "horizBrace"); + var s = Be(r.base, e.havingBaseStyle(Te.DISPLAY)), a = _r.svgSpan(r, e), o; + if (r.isOver ? (o = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: a + }] + }, e), o.children[0].children[0].children[1].classes.push("svg-align")) : (o = G.makeVList({ + positionType: "bottom", + positionData: s.depth + 0.1 + a.height, + children: [{ + type: "elem", + elem: a + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: s + }] + }, e), o.children[0].children[0].children[0].classes.push("svg-align")), i) { + var l = G.makeSpan(["mord", r.isOver ? "mover" : "munder"], [o], e); + r.isOver ? o = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: l + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: i + }] + }, e) : o = G.makeVList({ + positionType: "bottom", + positionData: l.depth + 0.2 + i.height + i.depth, + children: [{ + type: "elem", + elem: i + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: l + }] + }, e); + } + return G.makeSpan(["mord", r.isOver ? "mover" : "munder"], [o], e); +}, X_ = (n, e) => { + var t = _r.mathMLnode(n.label); + return new J.MathNode(n.isOver ? "mover" : "munder", [Ze(n.base, e), t]); +}; +ae({ + type: "horizBrace", + names: ["\\overbrace", "\\underbrace"], + props: { + numArgs: 1 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n; + return { + type: "horizBrace", + mode: t.mode, + label: i, + isOver: /^\\over/.test(i), + base: e[0] + }; + }, + htmlBuilder: Sm, + mathmlBuilder: X_ +}); +ae({ + type: "href", + names: ["\\href"], + props: { + numArgs: 2, + argTypes: ["url", "original"], + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[1], r = Ie(e[0], "url").url; + return t.settings.isTrusted({ + command: "\\href", + url: r + }) ? { + type: "href", + mode: t.mode, + href: r, + body: ft(i) + } : t.formatUnsupportedCmd("\\href"); + }, + htmlBuilder: (n, e) => { + var t = Ct(n.body, e, !1); + return G.makeAnchor(n.href, [], t, e); + }, + mathmlBuilder: (n, e) => { + var t = Mr(n.body, e); + return t instanceof di || (t = new di("mrow", [t])), t.setAttribute("href", n.href), t; + } +}); +ae({ + type: "href", + names: ["\\url"], + props: { + numArgs: 1, + argTypes: ["url"], + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = Ie(e[0], "url").url; + if (!t.settings.isTrusted({ + command: "\\url", + url: i + })) + return t.formatUnsupportedCmd("\\url"); + for (var r = [], s = 0; s < i.length; s++) { + var a = i[s]; + a === "~" && (a = "\\textasciitilde"), r.push({ + type: "textord", + mode: "text", + text: a + }); + } + var o = { + type: "text", + mode: t.mode, + font: "\\texttt", + body: r + }; + return { + type: "href", + mode: t.mode, + href: i, + body: ft(o) + }; + } +}); +ae({ + type: "hbox", + names: ["\\hbox"], + props: { + numArgs: 1, + argTypes: ["text"], + allowedInText: !0, + primitive: !0 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "hbox", + mode: t.mode, + body: ft(e[0]) + }; + }, + htmlBuilder(n, e) { + var t = Ct(n.body, e, !1); + return G.makeFragment(t); + }, + mathmlBuilder(n, e) { + return new J.MathNode("mrow", ai(n.body, e)); + } +}); +ae({ + type: "html", + names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"], + props: { + numArgs: 2, + argTypes: ["raw", "original"], + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i, + token: r + } = n, s = Ie(e[0], "raw").string, a = e[1]; + t.settings.strict && t.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode"); + var o, l = {}; + switch (i) { + case "\\htmlClass": + l.class = s, o = { + command: "\\htmlClass", + class: s + }; + break; + case "\\htmlId": + l.id = s, o = { + command: "\\htmlId", + id: s + }; + break; + case "\\htmlStyle": + l.style = s, o = { + command: "\\htmlStyle", + style: s + }; + break; + case "\\htmlData": { + for (var u = s.split(","), c = 0; c < u.length; c++) { + var h = u[c].split("="); + if (h.length !== 2) + throw new ge("Error parsing key-value for \\htmlData"); + l["data-" + h[0].trim()] = h[1].trim(); + } + o = { + command: "\\htmlData", + attributes: l + }; + break; + } + default: + throw new Error("Unrecognized html command"); + } + return t.settings.isTrusted(o) ? { + type: "html", + mode: t.mode, + attributes: l, + body: ft(a) + } : t.formatUnsupportedCmd(i); + }, + htmlBuilder: (n, e) => { + var t = Ct(n.body, e, !1), i = ["enclosing"]; + n.attributes.class && i.push(...n.attributes.class.trim().split(/\s+/)); + var r = G.makeSpan(i, t, e); + for (var s in n.attributes) + s !== "class" && n.attributes.hasOwnProperty(s) && r.setAttribute(s, n.attributes[s]); + return r; + }, + mathmlBuilder: (n, e) => Mr(n.body, e) +}); +ae({ + type: "htmlmathml", + names: ["\\html@mathml"], + props: { + numArgs: 2, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n; + return { + type: "htmlmathml", + mode: t.mode, + html: ft(e[0]), + mathml: ft(e[1]) + }; + }, + htmlBuilder: (n, e) => { + var t = Ct(n.html, e, !1); + return G.makeFragment(t); + }, + mathmlBuilder: (n, e) => Mr(n.mathml, e) +}); +var qo = function(e) { + if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e)) + return { + number: +e, + unit: "bp" + }; + var t = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e); + if (!t) + throw new ge("Invalid size: '" + e + "' in \\includegraphics"); + var i = { + number: +(t[1] + t[2]), + // sign + magnitude, cast to number + unit: t[3] + }; + if (!Xy(i)) + throw new ge("Invalid unit: '" + i.unit + "' in \\includegraphics."); + return i; +}; +ae({ + type: "includegraphics", + names: ["\\includegraphics"], + props: { + numArgs: 1, + numOptionalArgs: 1, + argTypes: ["raw", "url"], + allowedInText: !1 + }, + handler: (n, e, t) => { + var { + parser: i + } = n, r = { + number: 0, + unit: "em" + }, s = { + number: 0.9, + unit: "em" + }, a = { + number: 0, + unit: "em" + }, o = ""; + if (t[0]) + for (var l = Ie(t[0], "raw").string, u = l.split(","), c = 0; c < u.length; c++) { + var h = u[c].split("="); + if (h.length === 2) { + var d = h[1].trim(); + switch (h[0].trim()) { + case "alt": + o = d; + break; + case "width": + r = qo(d); + break; + case "height": + s = qo(d); + break; + case "totalheight": + a = qo(d); + break; + default: + throw new ge("Invalid key: '" + h[0] + "' in \\includegraphics."); + } + } + } + var f = Ie(e[0], "url").url; + return o === "" && (o = f, o = o.replace(/^.*[\\/]/, ""), o = o.substring(0, o.lastIndexOf("."))), i.settings.isTrusted({ + command: "\\includegraphics", + url: f + }) ? { + type: "includegraphics", + mode: i.mode, + alt: o, + width: r, + height: s, + totalheight: a, + src: f + } : i.formatUnsupportedCmd("\\includegraphics"); + }, + htmlBuilder: (n, e) => { + var t = at(n.height, e), i = 0; + n.totalheight.number > 0 && (i = at(n.totalheight, e) - t); + var r = 0; + n.width.number > 0 && (r = at(n.width, e)); + var s = { + height: re(t + i) + }; + r > 0 && (s.width = re(r)), i > 0 && (s.verticalAlign = re(-i)); + var a = new Zy(n.src, n.alt, s); + return a.height = t, a.depth = i, a; + }, + mathmlBuilder: (n, e) => { + var t = new J.MathNode("mglyph", []); + t.setAttribute("alt", n.alt); + var i = at(n.height, e), r = 0; + if (n.totalheight.number > 0 && (r = at(n.totalheight, e) - i, t.setAttribute("valign", re(-r))), t.setAttribute("height", re(i + r)), n.width.number > 0) { + var s = at(n.width, e); + t.setAttribute("width", re(s)); + } + return t.setAttribute("src", n.src), t; + } +}); +ae({ + type: "kern", + names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], + props: { + numArgs: 1, + argTypes: ["size"], + primitive: !0, + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = Ie(e[0], "size"); + if (t.settings.strict) { + var s = i[1] === "m", a = r.value.unit === "mu"; + s ? (a || t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + i + " supports only mu units, " + ("not " + r.value.unit + " units")), t.mode !== "math" && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + i + " works only in math mode")) : a && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + i + " doesn't support mu units"); + } + return { + type: "kern", + mode: t.mode, + dimension: r.value + }; + }, + htmlBuilder(n, e) { + return G.makeGlue(n.dimension, e); + }, + mathmlBuilder(n, e) { + var t = at(n.dimension, e); + return new J.SpaceNode(t); + } +}); +ae({ + type: "lap", + names: ["\\mathllap", "\\mathrlap", "\\mathclap"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "lap", + mode: t.mode, + alignment: i.slice(5), + body: r + }; + }, + htmlBuilder: (n, e) => { + var t; + n.alignment === "clap" ? (t = G.makeSpan([], [Be(n.body, e)]), t = G.makeSpan(["inner"], [t], e)) : t = G.makeSpan(["inner"], [Be(n.body, e)]); + var i = G.makeSpan(["fix"], []), r = G.makeSpan([n.alignment], [t, i], e), s = G.makeSpan(["strut"]); + return s.style.height = re(r.height + r.depth), r.depth && (s.style.verticalAlign = re(-r.depth)), r.children.unshift(s), r = G.makeSpan(["thinbox"], [r], e), G.makeSpan(["mord", "vbox"], [r], e); + }, + mathmlBuilder: (n, e) => { + var t = new J.MathNode("mpadded", [Ze(n.body, e)]); + if (n.alignment !== "rlap") { + var i = n.alignment === "llap" ? "-1" : "-0.5"; + t.setAttribute("lspace", i + "width"); + } + return t.setAttribute("width", "0px"), t; + } +}); +ae({ + type: "styling", + names: ["\\(", "$"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !1 + }, + handler(n, e) { + var { + funcName: t, + parser: i + } = n, r = i.mode; + i.switchMode("math"); + var s = t === "\\(" ? "\\)" : "$", a = i.parseExpression(!1, s); + return i.expect(s), i.switchMode(r), { + type: "styling", + mode: i.mode, + style: "text", + body: a + }; + } +}); +ae({ + type: "text", + // Doesn't matter what this is. + names: ["\\)", "\\]"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !1 + }, + handler(n, e) { + throw new ge("Mismatched " + n.funcName); + } +}); +var Yc = (n, e) => { + switch (e.style.size) { + case Te.DISPLAY.size: + return n.display; + case Te.TEXT.size: + return n.text; + case Te.SCRIPT.size: + return n.script; + case Te.SCRIPTSCRIPT.size: + return n.scriptscript; + default: + return n.text; + } +}; +ae({ + type: "mathchoice", + names: ["\\mathchoice"], + props: { + numArgs: 4, + primitive: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n; + return { + type: "mathchoice", + mode: t.mode, + display: ft(e[0]), + text: ft(e[1]), + script: ft(e[2]), + scriptscript: ft(e[3]) + }; + }, + htmlBuilder: (n, e) => { + var t = Yc(n, e), i = Ct(t, e, !1); + return G.makeFragment(i); + }, + mathmlBuilder: (n, e) => { + var t = Yc(n, e); + return Mr(t, e); + } +}); +var Tm = (n, e, t, i, r, s, a) => { + n = G.makeSpan([], [n]); + var o = t && _e.isCharacterBox(t), l, u; + if (e) { + var c = Be(e, i.havingStyle(r.sup()), i); + u = { + elem: c, + kern: Math.max(i.fontMetrics().bigOpSpacing1, i.fontMetrics().bigOpSpacing3 - c.depth) + }; + } + if (t) { + var h = Be(t, i.havingStyle(r.sub()), i); + l = { + elem: h, + kern: Math.max(i.fontMetrics().bigOpSpacing2, i.fontMetrics().bigOpSpacing4 - h.height) + }; + } + var d; + if (u && l) { + var f = i.fontMetrics().bigOpSpacing5 + l.elem.height + l.elem.depth + l.kern + n.depth + a; + d = G.makeVList({ + positionType: "bottom", + positionData: f, + children: [{ + type: "kern", + size: i.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: l.elem, + marginLeft: re(-s) + }, { + type: "kern", + size: l.kern + }, { + type: "elem", + elem: n + }, { + type: "kern", + size: u.kern + }, { + type: "elem", + elem: u.elem, + marginLeft: re(s) + }, { + type: "kern", + size: i.fontMetrics().bigOpSpacing5 + }] + }, i); + } else if (l) { + var m = n.height - a; + d = G.makeVList({ + positionType: "top", + positionData: m, + children: [{ + type: "kern", + size: i.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: l.elem, + marginLeft: re(-s) + }, { + type: "kern", + size: l.kern + }, { + type: "elem", + elem: n + }] + }, i); + } else if (u) { + var p = n.depth + a; + d = G.makeVList({ + positionType: "bottom", + positionData: p, + children: [{ + type: "elem", + elem: n + }, { + type: "kern", + size: u.kern + }, { + type: "elem", + elem: u.elem, + marginLeft: re(s) + }, { + type: "kern", + size: i.fontMetrics().bigOpSpacing5 + }] + }, i); + } else + return n; + var v = [d]; + if (l && s !== 0 && !o) { + var b = G.makeSpan(["mspace"], [], i); + b.style.marginRight = re(s), v.unshift(b); + } + return G.makeSpan(["mop", "op-limits"], v, i); +}, xm = ["\\smallint"], wn = (n, e) => { + var t, i, r = !1, s; + n.type === "supsub" ? (t = n.sup, i = n.sub, s = Ie(n.base, "op"), r = !0) : s = Ie(n, "op"); + var a = e.style, o = !1; + a.size === Te.DISPLAY.size && s.symbol && !_e.contains(xm, s.name) && (o = !0); + var l; + if (s.symbol) { + var u = o ? "Size2-Regular" : "Size1-Regular", c = ""; + if ((s.name === "\\oiint" || s.name === "\\oiiint") && (c = s.name.slice(1), s.name = c === "oiint" ? "\\iint" : "\\iiint"), l = G.makeSymbol(s.name, u, "math", e, ["mop", "op-symbol", o ? "large-op" : "small-op"]), c.length > 0) { + var h = l.italic, d = G.staticSvg(c + "Size" + (o ? "2" : "1"), e); + l = G.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: l, + shift: 0 + }, { + type: "elem", + elem: d, + shift: o ? 0.08 : 0 + }] + }, e), s.name = "\\" + c, l.classes.unshift("mop"), l.italic = h; + } + } else if (s.body) { + var f = Ct(s.body, e, !0); + f.length === 1 && f[0] instanceof er ? (l = f[0], l.classes[0] = "mop") : l = G.makeSpan(["mop"], f, e); + } else { + for (var m = [], p = 1; p < s.name.length; p++) + m.push(G.mathsym(s.name[p], s.mode, e)); + l = G.makeSpan(["mop"], m, e); + } + var v = 0, b = 0; + return (l instanceof er || s.name === "\\oiint" || s.name === "\\oiiint") && !s.suppressBaseShift && (v = (l.height - l.depth) / 2 - e.fontMetrics().axisHeight, b = l.italic), r ? Tm(l, t, i, e, a, b, v) : (v && (l.style.position = "relative", l.style.top = re(v)), l); +}, cs = (n, e) => { + var t; + if (n.symbol) + t = new di("mo", [bi(n.name, n.mode)]), _e.contains(xm, n.name) && t.setAttribute("largeop", "false"); + else if (n.body) + t = new di("mo", ai(n.body, e)); + else { + t = new di("mi", [new Ki(n.name.slice(1))]); + var i = new di("mo", [bi("⁡", "text")]); + n.parentIsSupSub ? t = new di("mrow", [t, i]) : t = tm([t, i]); + } + return t; +}, Q_ = { + "∏": "\\prod", + "∐": "\\coprod", + "∑": "\\sum", + "⋀": "\\bigwedge", + "⋁": "\\bigvee", + "⋂": "\\bigcap", + "⋃": "\\bigcup", + "⨀": "\\bigodot", + "⨁": "\\bigoplus", + "⨂": "\\bigotimes", + "⨄": "\\biguplus", + "⨆": "\\bigsqcup" +}; +ae({ + type: "op", + names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "∏", "∐", "∑", "⋀", "⋁", "⋂", "⋃", "⨀", "⨁", "⨂", "⨄", "⨆"], + props: { + numArgs: 0 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = i; + return r.length === 1 && (r = Q_[r]), { + type: "op", + mode: t.mode, + limits: !0, + parentIsSupSub: !1, + symbol: !0, + name: r + }; + }, + htmlBuilder: wn, + mathmlBuilder: cs +}); +ae({ + type: "op", + names: ["\\mathop"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[0]; + return { + type: "op", + mode: t.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !1, + body: ft(i) + }; + }, + htmlBuilder: wn, + mathmlBuilder: cs +}); +var Z_ = { + "∫": "\\int", + "∬": "\\iint", + "∭": "\\iiint", + "∮": "\\oint", + "∯": "\\oiint", + "∰": "\\oiiint" +}; +ae({ + type: "op", + names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], + props: { + numArgs: 0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n; + return { + type: "op", + mode: e.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !1, + name: t + }; + }, + htmlBuilder: wn, + mathmlBuilder: cs +}); +ae({ + type: "op", + names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], + props: { + numArgs: 0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n; + return { + type: "op", + mode: e.mode, + limits: !0, + parentIsSupSub: !1, + symbol: !1, + name: t + }; + }, + htmlBuilder: wn, + mathmlBuilder: cs +}); +ae({ + type: "op", + names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "∫", "∬", "∭", "∮", "∯", "∰"], + props: { + numArgs: 0 + }, + handler(n) { + var { + parser: e, + funcName: t + } = n, i = t; + return i.length === 1 && (i = Z_[i]), { + type: "op", + mode: e.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !0, + name: i + }; + }, + htmlBuilder: wn, + mathmlBuilder: cs +}); +var Am = (n, e) => { + var t, i, r = !1, s; + n.type === "supsub" ? (t = n.sup, i = n.sub, s = Ie(n.base, "operatorname"), r = !0) : s = Ie(n, "operatorname"); + var a; + if (s.body.length > 0) { + for (var o = s.body.map((h) => { + var d = h.text; + return typeof d == "string" ? { + type: "textord", + mode: h.mode, + text: d + } : h; + }), l = Ct(o, e.withFont("mathrm"), !0), u = 0; u < l.length; u++) { + var c = l[u]; + c instanceof er && (c.text = c.text.replace(/\u2212/, "-").replace(/\u2217/, "*")); + } + a = G.makeSpan(["mop"], l, e); + } else + a = G.makeSpan(["mop"], [], e); + return r ? Tm(a, t, i, e, e.style, 0, 0) : a; +}, J_ = (n, e) => { + for (var t = ai(n.body, e.withFont("mathrm")), i = !0, r = 0; r < t.length; r++) { + var s = t[r]; + if (!(s instanceof J.SpaceNode)) if (s instanceof J.MathNode) + switch (s.type) { + case "mi": + case "mn": + case "ms": + case "mspace": + case "mtext": + break; + case "mo": { + var a = s.children[0]; + s.children.length === 1 && a instanceof J.TextNode ? a.text = a.text.replace(/\u2212/, "-").replace(/\u2217/, "*") : i = !1; + break; + } + default: + i = !1; + } + else + i = !1; + } + if (i) { + var o = t.map((c) => c.toText()).join(""); + t = [new J.TextNode(o)]; + } + var l = new J.MathNode("mi", t); + l.setAttribute("mathvariant", "normal"); + var u = new J.MathNode("mo", [bi("⁡", "text")]); + return n.parentIsSupSub ? new J.MathNode("mrow", [l, u]) : J.newDocumentFragment([l, u]); +}; +ae({ + type: "operatorname", + names: ["\\operatorname@", "\\operatornamewithlimits"], + props: { + numArgs: 1 + }, + handler: (n, e) => { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "operatorname", + mode: t.mode, + body: ft(r), + alwaysHandleSupSub: i === "\\operatornamewithlimits", + limits: !1, + parentIsSupSub: !1 + }; + }, + htmlBuilder: Am, + mathmlBuilder: J_ +}); +D("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"); +Wr({ + type: "ordgroup", + htmlBuilder(n, e) { + return n.semisimple ? G.makeFragment(Ct(n.body, e, !1)) : G.makeSpan(["mord"], Ct(n.body, e, !0), e); + }, + mathmlBuilder(n, e) { + return Mr(n.body, e, !0); + } +}); +ae({ + type: "overline", + names: ["\\overline"], + props: { + numArgs: 1 + }, + handler(n, e) { + var { + parser: t + } = n, i = e[0]; + return { + type: "overline", + mode: t.mode, + body: i + }; + }, + htmlBuilder(n, e) { + var t = Be(n.body, e.havingCrampedStyle()), i = G.makeLineSpan("overline-line", e), r = e.fontMetrics().defaultRuleThickness, s = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }, { + type: "kern", + size: 3 * r + }, { + type: "elem", + elem: i + }, { + type: "kern", + size: r + }] + }, e); + return G.makeSpan(["mord", "overline"], [s], e); + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mo", [new J.TextNode("‾")]); + t.setAttribute("stretchy", "true"); + var i = new J.MathNode("mover", [Ze(n.body, e), t]); + return i.setAttribute("accent", "true"), i; + } +}); +ae({ + type: "phantom", + names: ["\\phantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[0]; + return { + type: "phantom", + mode: t.mode, + body: ft(i) + }; + }, + htmlBuilder: (n, e) => { + var t = Ct(n.body, e.withPhantom(), !1); + return G.makeFragment(t); + }, + mathmlBuilder: (n, e) => { + var t = ai(n.body, e); + return new J.MathNode("mphantom", t); + } +}); +ae({ + type: "hphantom", + names: ["\\hphantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[0]; + return { + type: "hphantom", + mode: t.mode, + body: i + }; + }, + htmlBuilder: (n, e) => { + var t = G.makeSpan([], [Be(n.body, e.withPhantom())]); + if (t.height = 0, t.depth = 0, t.children) + for (var i = 0; i < t.children.length; i++) + t.children[i].height = 0, t.children[i].depth = 0; + return t = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }] + }, e), G.makeSpan(["mord"], [t], e); + }, + mathmlBuilder: (n, e) => { + var t = ai(ft(n.body), e), i = new J.MathNode("mphantom", t), r = new J.MathNode("mpadded", [i]); + return r.setAttribute("height", "0px"), r.setAttribute("depth", "0px"), r; + } +}); +ae({ + type: "vphantom", + names: ["\\vphantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (n, e) => { + var { + parser: t + } = n, i = e[0]; + return { + type: "vphantom", + mode: t.mode, + body: i + }; + }, + htmlBuilder: (n, e) => { + var t = G.makeSpan(["inner"], [Be(n.body, e.withPhantom())]), i = G.makeSpan(["fix"], []); + return G.makeSpan(["mord", "rlap"], [t, i], e); + }, + mathmlBuilder: (n, e) => { + var t = ai(ft(n.body), e), i = new J.MathNode("mphantom", t), r = new J.MathNode("mpadded", [i]); + return r.setAttribute("width", "0px"), r; + } +}); +ae({ + type: "raisebox", + names: ["\\raisebox"], + props: { + numArgs: 2, + argTypes: ["size", "hbox"], + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t + } = n, i = Ie(e[0], "size").value, r = e[1]; + return { + type: "raisebox", + mode: t.mode, + dy: i, + body: r + }; + }, + htmlBuilder(n, e) { + var t = Be(n.body, e), i = at(n.dy, e); + return G.makeVList({ + positionType: "shift", + positionData: -i, + children: [{ + type: "elem", + elem: t + }] + }, e); + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mpadded", [Ze(n.body, e)]), i = n.dy.number + n.dy.unit; + return t.setAttribute("voffset", i), t; + } +}); +ae({ + type: "internal", + names: ["\\relax"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInArgument: !0 + }, + handler(n) { + var { + parser: e + } = n; + return { + type: "internal", + mode: e.mode + }; + } +}); +ae({ + type: "rule", + names: ["\\rule"], + props: { + numArgs: 2, + numOptionalArgs: 1, + allowedInText: !0, + allowedInMath: !0, + argTypes: ["size", "size", "size"] + }, + handler(n, e, t) { + var { + parser: i + } = n, r = t[0], s = Ie(e[0], "size"), a = Ie(e[1], "size"); + return { + type: "rule", + mode: i.mode, + shift: r && Ie(r, "size").value, + width: s.value, + height: a.value + }; + }, + htmlBuilder(n, e) { + var t = G.makeSpan(["mord", "rule"], [], e), i = at(n.width, e), r = at(n.height, e), s = n.shift ? at(n.shift, e) : 0; + return t.style.borderRightWidth = re(i), t.style.borderTopWidth = re(r), t.style.bottom = re(s), t.width = i, t.height = r + s, t.depth = -s, t.maxFontSize = r * 1.125 * e.sizeMultiplier, t; + }, + mathmlBuilder(n, e) { + var t = at(n.width, e), i = at(n.height, e), r = n.shift ? at(n.shift, e) : 0, s = e.color && e.getColor() || "black", a = new J.MathNode("mspace"); + a.setAttribute("mathbackground", s), a.setAttribute("width", re(t)), a.setAttribute("height", re(i)); + var o = new J.MathNode("mpadded", [a]); + return r >= 0 ? o.setAttribute("height", re(r)) : (o.setAttribute("height", re(r)), o.setAttribute("depth", re(-r))), o.setAttribute("voffset", re(r)), o; + } +}); +function Dm(n, e, t) { + for (var i = Ct(n, e, !1), r = e.sizeMultiplier / t.sizeMultiplier, s = 0; s < i.length; s++) { + var a = i[s].classes.indexOf("sizing"); + a < 0 ? Array.prototype.push.apply(i[s].classes, e.sizingClasses(t)) : i[s].classes[a + 1] === "reset-size" + e.size && (i[s].classes[a + 1] = "reset-size" + t.size), i[s].height *= r, i[s].depth *= r; + } + return G.makeFragment(i); +} +var Wc = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], e3 = (n, e) => { + var t = e.havingSize(n.size); + return Dm(n.body, t, e); +}; +ae({ + type: "sizing", + names: Wc, + props: { + numArgs: 0, + allowedInText: !0 + }, + handler: (n, e) => { + var { + breakOnTokenText: t, + funcName: i, + parser: r + } = n, s = r.parseExpression(!1, t); + return { + type: "sizing", + mode: r.mode, + // Figure out what size to use based on the list of functions above + size: Wc.indexOf(i) + 1, + body: s + }; + }, + htmlBuilder: e3, + mathmlBuilder: (n, e) => { + var t = e.havingSize(n.size), i = ai(n.body, t), r = new J.MathNode("mstyle", i); + return r.setAttribute("mathsize", re(t.sizeMultiplier)), r; + } +}); +ae({ + type: "smash", + names: ["\\smash"], + props: { + numArgs: 1, + numOptionalArgs: 1, + allowedInText: !0 + }, + handler: (n, e, t) => { + var { + parser: i + } = n, r = !1, s = !1, a = t[0] && Ie(t[0], "ordgroup"); + if (a) + for (var o = "", l = 0; l < a.body.length; ++l) { + var u = a.body[l]; + if (o = u.text, o === "t") + r = !0; + else if (o === "b") + s = !0; + else { + r = !1, s = !1; + break; + } + } + else + r = !0, s = !0; + var c = e[0]; + return { + type: "smash", + mode: i.mode, + body: c, + smashHeight: r, + smashDepth: s + }; + }, + htmlBuilder: (n, e) => { + var t = G.makeSpan([], [Be(n.body, e)]); + if (!n.smashHeight && !n.smashDepth) + return t; + if (n.smashHeight && (t.height = 0, t.children)) + for (var i = 0; i < t.children.length; i++) + t.children[i].height = 0; + if (n.smashDepth && (t.depth = 0, t.children)) + for (var r = 0; r < t.children.length; r++) + t.children[r].depth = 0; + var s = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }] + }, e); + return G.makeSpan(["mord"], [s], e); + }, + mathmlBuilder: (n, e) => { + var t = new J.MathNode("mpadded", [Ze(n.body, e)]); + return n.smashHeight && t.setAttribute("height", "0px"), n.smashDepth && t.setAttribute("depth", "0px"), t; + } +}); +ae({ + type: "sqrt", + names: ["\\sqrt"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler(n, e, t) { + var { + parser: i + } = n, r = t[0], s = e[0]; + return { + type: "sqrt", + mode: i.mode, + body: s, + index: r + }; + }, + htmlBuilder(n, e) { + var t = Be(n.body, e.havingCrampedStyle()); + t.height === 0 && (t.height = e.fontMetrics().xHeight), t = G.wrapFragment(t, e); + var i = e.fontMetrics(), r = i.defaultRuleThickness, s = r; + e.style.id < Te.TEXT.id && (s = e.fontMetrics().xHeight); + var a = r + s / 4, o = t.height + t.depth + a + r, { + span: l, + ruleWidth: u, + advanceWidth: c + } = yr.sqrtImage(o, e), h = l.height - u; + h > t.height + t.depth + a && (a = (a + h - t.height - t.depth) / 2); + var d = l.height - t.height - a - u; + t.style.paddingLeft = re(c); + var f = G.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: -(t.height + d) + }, { + type: "elem", + elem: l + }, { + type: "kern", + size: u + }] + }, e); + if (n.index) { + var m = e.havingStyle(Te.SCRIPTSCRIPT), p = Be(n.index, m, e), v = 0.6 * (f.height - f.depth), b = G.makeVList({ + positionType: "shift", + positionData: -v, + children: [{ + type: "elem", + elem: p + }] + }, e), E = G.makeSpan(["root"], [b]); + return G.makeSpan(["mord", "sqrt"], [E, f], e); + } else + return G.makeSpan(["mord", "sqrt"], [f], e); + }, + mathmlBuilder(n, e) { + var { + body: t, + index: i + } = n; + return i ? new J.MathNode("mroot", [Ze(t, e), Ze(i, e)]) : new J.MathNode("msqrt", [Ze(t, e)]); + } +}); +var jc = { + display: Te.DISPLAY, + text: Te.TEXT, + script: Te.SCRIPT, + scriptscript: Te.SCRIPTSCRIPT +}; +ae({ + type: "styling", + names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(n, e) { + var { + breakOnTokenText: t, + funcName: i, + parser: r + } = n, s = r.parseExpression(!0, t), a = i.slice(1, i.length - 5); + return { + type: "styling", + mode: r.mode, + // Figure out what style to use by pulling out the style from + // the function name + style: a, + body: s + }; + }, + htmlBuilder(n, e) { + var t = jc[n.style], i = e.havingStyle(t).withFont(""); + return Dm(n.body, i, e); + }, + mathmlBuilder(n, e) { + var t = jc[n.style], i = e.havingStyle(t), r = ai(n.body, i), s = new J.MathNode("mstyle", r), a = { + display: ["0", "true"], + text: ["0", "false"], + script: ["1", "false"], + scriptscript: ["2", "false"] + }, o = a[n.style]; + return s.setAttribute("scriptlevel", o[0]), s.setAttribute("displaystyle", o[1]), s; + } +}); +var t3 = function(e, t) { + var i = e.base; + if (i) + if (i.type === "op") { + var r = i.limits && (t.style.size === Te.DISPLAY.size || i.alwaysHandleSupSub); + return r ? wn : null; + } else if (i.type === "operatorname") { + var s = i.alwaysHandleSupSub && (t.style.size === Te.DISPLAY.size || i.limits); + return s ? Am : null; + } else { + if (i.type === "accent") + return _e.isCharacterBox(i.base) ? v0 : null; + if (i.type === "horizBrace") { + var a = !e.sub; + return a === i.isOver ? Sm : null; + } else + return null; + } + else return null; +}; +Wr({ + type: "supsub", + htmlBuilder(n, e) { + var t = t3(n, e); + if (t) + return t(n, e); + var { + base: i, + sup: r, + sub: s + } = n, a = Be(i, e), o, l, u = e.fontMetrics(), c = 0, h = 0, d = i && _e.isCharacterBox(i); + if (r) { + var f = e.havingStyle(e.style.sup()); + o = Be(r, f, e), d || (c = a.height - f.fontMetrics().supDrop * f.sizeMultiplier / e.sizeMultiplier); + } + if (s) { + var m = e.havingStyle(e.style.sub()); + l = Be(s, m, e), d || (h = a.depth + m.fontMetrics().subDrop * m.sizeMultiplier / e.sizeMultiplier); + } + var p; + e.style === Te.DISPLAY ? p = u.sup1 : e.style.cramped ? p = u.sup3 : p = u.sup2; + var v = e.sizeMultiplier, b = re(0.5 / u.ptPerEm / v), E = null; + if (l) { + var y = n.base && n.base.type === "op" && n.base.name && (n.base.name === "\\oiint" || n.base.name === "\\oiiint"); + (a instanceof er || y) && (E = re(-a.italic)); + } + var T; + if (o && l) { + c = Math.max(c, p, o.depth + 0.25 * u.xHeight), h = Math.max(h, u.sub2); + var A = u.defaultRuleThickness, k = 4 * A; + if (c - o.depth - (l.height - h) < k) { + h = k - (c - o.depth) + l.height; + var w = 0.8 * u.xHeight - (c - o.depth); + w > 0 && (c += w, h -= w); + } + var L = [{ + type: "elem", + elem: l, + shift: h, + marginRight: b, + marginLeft: E + }, { + type: "elem", + elem: o, + shift: -c, + marginRight: b + }]; + T = G.makeVList({ + positionType: "individualShift", + children: L + }, e); + } else if (l) { + h = Math.max(h, u.sub1, l.height - 0.8 * u.xHeight); + var I = [{ + type: "elem", + elem: l, + marginLeft: E, + marginRight: b + }]; + T = G.makeVList({ + positionType: "shift", + positionData: h, + children: I + }, e); + } else if (o) + c = Math.max(c, p, o.depth + 0.25 * u.xHeight), T = G.makeVList({ + positionType: "shift", + positionData: -c, + children: [{ + type: "elem", + elem: o, + marginRight: b + }] + }, e); + else + throw new Error("supsub must have either sup or sub."); + var R = kl(a, "right") || "mord"; + return G.makeSpan([R], [a, G.makeSpan(["msupsub"], [T])], e); + }, + mathmlBuilder(n, e) { + var t = !1, i, r; + n.base && n.base.type === "horizBrace" && (r = !!n.sup, r === n.base.isOver && (t = !0, i = n.base.isOver)), n.base && (n.base.type === "op" || n.base.type === "operatorname") && (n.base.parentIsSupSub = !0); + var s = [Ze(n.base, e)]; + n.sub && s.push(Ze(n.sub, e)), n.sup && s.push(Ze(n.sup, e)); + var a; + if (t) + a = i ? "mover" : "munder"; + else if (n.sub) + if (n.sup) { + var u = n.base; + u && u.type === "op" && u.limits && e.style === Te.DISPLAY || u && u.type === "operatorname" && u.alwaysHandleSupSub && (e.style === Te.DISPLAY || u.limits) ? a = "munderover" : a = "msubsup"; + } else { + var l = n.base; + l && l.type === "op" && l.limits && (e.style === Te.DISPLAY || l.alwaysHandleSupSub) || l && l.type === "operatorname" && l.alwaysHandleSupSub && (l.limits || e.style === Te.DISPLAY) ? a = "munder" : a = "msub"; + } + else { + var o = n.base; + o && o.type === "op" && o.limits && (e.style === Te.DISPLAY || o.alwaysHandleSupSub) || o && o.type === "operatorname" && o.alwaysHandleSupSub && (o.limits || e.style === Te.DISPLAY) ? a = "mover" : a = "msup"; + } + return new J.MathNode(a, s); + } +}); +Wr({ + type: "atom", + htmlBuilder(n, e) { + return G.mathsym(n.text, n.mode, e, ["m" + n.family]); + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mo", [bi(n.text, n.mode)]); + if (n.family === "bin") { + var i = g0(n, e); + i === "bold-italic" && t.setAttribute("mathvariant", i); + } else n.family === "punct" ? t.setAttribute("separator", "true") : (n.family === "open" || n.family === "close") && t.setAttribute("stretchy", "false"); + return t; + } +}); +var wm = { + mi: "italic", + mn: "normal", + mtext: "normal" +}; +Wr({ + type: "mathord", + htmlBuilder(n, e) { + return G.makeOrd(n, e, "mathord"); + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mi", [bi(n.text, n.mode, e)]), i = g0(n, e) || "italic"; + return i !== wm[t.type] && t.setAttribute("mathvariant", i), t; + } +}); +Wr({ + type: "textord", + htmlBuilder(n, e) { + return G.makeOrd(n, e, "textord"); + }, + mathmlBuilder(n, e) { + var t = bi(n.text, n.mode, e), i = g0(n, e) || "normal", r; + return n.mode === "text" ? r = new J.MathNode("mtext", [t]) : /[0-9]/.test(n.text) ? r = new J.MathNode("mn", [t]) : n.text === "\\prime" ? r = new J.MathNode("mo", [t]) : r = new J.MathNode("mi", [t]), i !== wm[r.type] && r.setAttribute("mathvariant", i), r; + } +}); +var Ho = { + "\\nobreak": "nobreak", + "\\allowbreak": "allowbreak" +}, Vo = { + " ": {}, + "\\ ": {}, + "~": { + className: "nobreak" + }, + "\\space": {}, + "\\nobreakspace": { + className: "nobreak" + } +}; +Wr({ + type: "spacing", + htmlBuilder(n, e) { + if (Vo.hasOwnProperty(n.text)) { + var t = Vo[n.text].className || ""; + if (n.mode === "text") { + var i = G.makeOrd(n, e, "textord"); + return i.classes.push(t), i; + } else + return G.makeSpan(["mspace", t], [G.mathsym(n.text, n.mode, e)], e); + } else { + if (Ho.hasOwnProperty(n.text)) + return G.makeSpan(["mspace", Ho[n.text]], [], e); + throw new ge('Unknown type of space "' + n.text + '"'); + } + }, + mathmlBuilder(n, e) { + var t; + if (Vo.hasOwnProperty(n.text)) + t = new J.MathNode("mtext", [new J.TextNode(" ")]); + else { + if (Ho.hasOwnProperty(n.text)) + return new J.MathNode("mspace"); + throw new ge('Unknown type of space "' + n.text + '"'); + } + return t; + } +}); +var Xc = () => { + var n = new J.MathNode("mtd", []); + return n.setAttribute("width", "50%"), n; +}; +Wr({ + type: "tag", + mathmlBuilder(n, e) { + var t = new J.MathNode("mtable", [new J.MathNode("mtr", [Xc(), new J.MathNode("mtd", [Mr(n.body, e)]), Xc(), new J.MathNode("mtd", [Mr(n.tag, e)])])]); + return t.setAttribute("width", "100%"), t; + } +}); +var Qc = { + "\\text": void 0, + "\\textrm": "textrm", + "\\textsf": "textsf", + "\\texttt": "texttt", + "\\textnormal": "textrm" +}, Zc = { + "\\textbf": "textbf", + "\\textmd": "textmd" +}, i3 = { + "\\textit": "textit", + "\\textup": "textup" +}, Jc = (n, e) => { + var t = n.font; + if (t) { + if (Qc[t]) + return e.withTextFontFamily(Qc[t]); + if (Zc[t]) + return e.withTextFontWeight(Zc[t]); + if (t === "\\emph") + return e.fontShape === "textit" ? e.withTextFontShape("textup") : e.withTextFontShape("textit"); + } else return e; + return e.withTextFontShape(i3[t]); +}; +ae({ + type: "text", + names: [ + // Font families + "\\text", + "\\textrm", + "\\textsf", + "\\texttt", + "\\textnormal", + // Font weights + "\\textbf", + "\\textmd", + // Font Shapes + "\\textit", + "\\textup", + "\\emph" + ], + props: { + numArgs: 1, + argTypes: ["text"], + allowedInArgument: !0, + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t, + funcName: i + } = n, r = e[0]; + return { + type: "text", + mode: t.mode, + body: ft(r), + font: i + }; + }, + htmlBuilder(n, e) { + var t = Jc(n, e), i = Ct(n.body, t, !0); + return G.makeSpan(["mord", "text"], i, t); + }, + mathmlBuilder(n, e) { + var t = Jc(n, e); + return Mr(n.body, t); + } +}); +ae({ + type: "underline", + names: ["\\underline"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "underline", + mode: t.mode, + body: e[0] + }; + }, + htmlBuilder(n, e) { + var t = Be(n.body, e), i = G.makeLineSpan("underline-line", e), r = e.fontMetrics().defaultRuleThickness, s = G.makeVList({ + positionType: "top", + positionData: t.height, + children: [{ + type: "kern", + size: r + }, { + type: "elem", + elem: i + }, { + type: "kern", + size: 3 * r + }, { + type: "elem", + elem: t + }] + }, e); + return G.makeSpan(["mord", "underline"], [s], e); + }, + mathmlBuilder(n, e) { + var t = new J.MathNode("mo", [new J.TextNode("‾")]); + t.setAttribute("stretchy", "true"); + var i = new J.MathNode("munder", [Ze(n.body, e), t]); + return i.setAttribute("accentunder", "true"), i; + } +}); +ae({ + type: "vcenter", + names: ["\\vcenter"], + props: { + numArgs: 1, + argTypes: ["original"], + // In LaTeX, \vcenter can act only on a box. + allowedInText: !1 + }, + handler(n, e) { + var { + parser: t + } = n; + return { + type: "vcenter", + mode: t.mode, + body: e[0] + }; + }, + htmlBuilder(n, e) { + var t = Be(n.body, e), i = e.fontMetrics().axisHeight, r = 0.5 * (t.height - i - (t.depth + i)); + return G.makeVList({ + positionType: "shift", + positionData: r, + children: [{ + type: "elem", + elem: t + }] + }, e); + }, + mathmlBuilder(n, e) { + return new J.MathNode("mpadded", [Ze(n.body, e)], ["vcenter"]); + } +}); +ae({ + type: "verb", + names: ["\\verb"], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler(n, e, t) { + throw new ge("\\verb ended by end of line instead of matching delimiter"); + }, + htmlBuilder(n, e) { + for (var t = eh(n), i = [], r = e.havingStyle(e.style.text()), s = 0; s < t.length; s++) { + var a = t[s]; + a === "~" && (a = "\\textasciitilde"), i.push(G.makeSymbol(a, "Typewriter-Regular", n.mode, r, ["mord", "texttt"])); + } + return G.makeSpan(["mord", "text"].concat(r.sizingClasses(e)), G.tryCombineChars(i), r); + }, + mathmlBuilder(n, e) { + var t = new J.TextNode(eh(n)), i = new J.MathNode("mtext", [t]); + return i.setAttribute("mathvariant", "monospace"), i; + } +}); +var eh = (n) => n.body.replace(/ /g, n.star ? "␣" : " "), r3 = Jf; +D("\\noexpand", function(n) { + var e = n.popToken(); + return n.isExpandable(e.text) && (e.noexpand = !0, e.treatAsRelax = !0), { + tokens: [e], + numArgs: 0 + }; +}); +D("\\expandafter", function(n) { + var e = n.popToken(); + return n.expandOnce(!0), { + tokens: [e], + numArgs: 0 + }; +}); +D("\\@firstoftwo", function(n) { + var e = n.consumeArgs(2); + return { + tokens: e[0], + numArgs: 0 + }; +}); +D("\\@secondoftwo", function(n) { + var e = n.consumeArgs(2); + return { + tokens: e[1], + numArgs: 0 + }; +}); +D("\\@ifnextchar", function(n) { + var e = n.consumeArgs(3); + n.consumeSpaces(); + var t = n.future(); + return e[0].length === 1 && e[0][0].text === t.text ? { + tokens: e[1], + numArgs: 0 + } : { + tokens: e[2], + numArgs: 0 + }; +}); +D("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); +D("\\TextOrMath", function(n) { + var e = n.consumeArgs(2); + return n.mode === "text" ? { + tokens: e[0], + numArgs: 0 + } : { + tokens: e[1], + numArgs: 0 + }; +}); +var th = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + a: 10, + A: 10, + b: 11, + B: 11, + c: 12, + C: 12, + d: 13, + D: 13, + e: 14, + E: 14, + f: 15, + F: 15 +}; +D("\\char", function(n) { + var e = n.popToken(), t, i = ""; + if (e.text === "'") + t = 8, e = n.popToken(); + else if (e.text === '"') + t = 16, e = n.popToken(); + else if (e.text === "`") + if (e = n.popToken(), e.text[0] === "\\") + i = e.text.charCodeAt(1); + else { + if (e.text === "EOF") + throw new ge("\\char` missing argument"); + i = e.text.charCodeAt(0); + } + else + t = 10; + if (t) { + if (i = th[e.text], i == null || i >= t) + throw new ge("Invalid base-" + t + " digit " + e.text); + for (var r; (r = th[n.future().text]) != null && r < t; ) + i *= t, i += r, n.popToken(); + } + return "\\@char{" + i + "}"; +}); +var A0 = (n, e, t, i) => { + var r = n.consumeArg().tokens; + if (r.length !== 1) + throw new ge("\\newcommand's first argument must be a macro name"); + var s = r[0].text, a = n.isDefined(s); + if (a && !e) + throw new ge("\\newcommand{" + s + "} attempting to redefine " + (s + "; use \\renewcommand")); + if (!a && !t) + throw new ge("\\renewcommand{" + s + "} when command " + s + " does not yet exist; use \\newcommand"); + var o = 0; + if (r = n.consumeArg().tokens, r.length === 1 && r[0].text === "[") { + for (var l = "", u = n.expandNextToken(); u.text !== "]" && u.text !== "EOF"; ) + l += u.text, u = n.expandNextToken(); + if (!l.match(/^\s*[0-9]+\s*$/)) + throw new ge("Invalid number of arguments: " + l); + o = parseInt(l), r = n.consumeArg().tokens; + } + return a && i || n.macros.set(s, { + tokens: r, + numArgs: o + }), ""; +}; +D("\\newcommand", (n) => A0(n, !1, !0, !1)); +D("\\renewcommand", (n) => A0(n, !0, !1, !1)); +D("\\providecommand", (n) => A0(n, !0, !0, !0)); +D("\\message", (n) => { + var e = n.consumeArgs(1)[0]; + return console.log(e.reverse().map((t) => t.text).join("")), ""; +}); +D("\\errmessage", (n) => { + var e = n.consumeArgs(1)[0]; + return console.error(e.reverse().map((t) => t.text).join("")), ""; +}); +D("\\show", (n) => { + var e = n.popToken(), t = e.text; + return console.log(e, n.macros.get(t), r3[t], mt.math[t], mt.text[t]), ""; +}); +D("\\bgroup", "{"); +D("\\egroup", "}"); +D("~", "\\nobreakspace"); +D("\\lq", "`"); +D("\\rq", "'"); +D("\\aa", "\\r a"); +D("\\AA", "\\r A"); +D("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}"); +D("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"); +D("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); +D("ℬ", "\\mathscr{B}"); +D("ℰ", "\\mathscr{E}"); +D("ℱ", "\\mathscr{F}"); +D("ℋ", "\\mathscr{H}"); +D("ℐ", "\\mathscr{I}"); +D("ℒ", "\\mathscr{L}"); +D("ℳ", "\\mathscr{M}"); +D("ℛ", "\\mathscr{R}"); +D("ℭ", "\\mathfrak{C}"); +D("ℌ", "\\mathfrak{H}"); +D("ℨ", "\\mathfrak{Z}"); +D("\\Bbbk", "\\Bbb{k}"); +D("·", "\\cdotp"); +D("\\llap", "\\mathllap{\\textrm{#1}}"); +D("\\rlap", "\\mathrlap{\\textrm{#1}}"); +D("\\clap", "\\mathclap{\\textrm{#1}}"); +D("\\mathstrut", "\\vphantom{(}"); +D("\\underbar", "\\underline{\\text{#1}}"); +D("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); +D("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"); +D("\\ne", "\\neq"); +D("≠", "\\neq"); +D("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"); +D("∉", "\\notin"); +D("≘", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"); +D("≙", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"); +D("≚", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"); +D("≛", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"); +D("≝", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"); +D("≞", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"); +D("≟", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"); +D("⟂", "\\perp"); +D("‼", "\\mathclose{!\\mkern-0.8mu!}"); +D("∌", "\\notni"); +D("⌜", "\\ulcorner"); +D("⌝", "\\urcorner"); +D("⌞", "\\llcorner"); +D("⌟", "\\lrcorner"); +D("©", "\\copyright"); +D("®", "\\textregistered"); +D("️", "\\textregistered"); +D("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'); +D("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'); +D("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'); +D("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'); +D("\\vdots", "{\\varvdots\\rule{0pt}{15pt}}"); +D("⋮", "\\vdots"); +D("\\varGamma", "\\mathit{\\Gamma}"); +D("\\varDelta", "\\mathit{\\Delta}"); +D("\\varTheta", "\\mathit{\\Theta}"); +D("\\varLambda", "\\mathit{\\Lambda}"); +D("\\varXi", "\\mathit{\\Xi}"); +D("\\varPi", "\\mathit{\\Pi}"); +D("\\varSigma", "\\mathit{\\Sigma}"); +D("\\varUpsilon", "\\mathit{\\Upsilon}"); +D("\\varPhi", "\\mathit{\\Phi}"); +D("\\varPsi", "\\mathit{\\Psi}"); +D("\\varOmega", "\\mathit{\\Omega}"); +D("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"); +D("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"); +D("\\boxed", "\\fbox{$\\displaystyle{#1}$}"); +D("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); +D("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); +D("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); +D("\\dddot", "{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"); +D("\\ddddot", "{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}"); +var ih = { + ",": "\\dotsc", + "\\not": "\\dotsb", + // \keybin@ checks for the following: + "+": "\\dotsb", + "=": "\\dotsb", + "<": "\\dotsb", + ">": "\\dotsb", + "-": "\\dotsb", + "*": "\\dotsb", + ":": "\\dotsb", + // Symbols whose definition starts with \DOTSB: + "\\DOTSB": "\\dotsb", + "\\coprod": "\\dotsb", + "\\bigvee": "\\dotsb", + "\\bigwedge": "\\dotsb", + "\\biguplus": "\\dotsb", + "\\bigcap": "\\dotsb", + "\\bigcup": "\\dotsb", + "\\prod": "\\dotsb", + "\\sum": "\\dotsb", + "\\bigotimes": "\\dotsb", + "\\bigoplus": "\\dotsb", + "\\bigodot": "\\dotsb", + "\\bigsqcup": "\\dotsb", + "\\And": "\\dotsb", + "\\longrightarrow": "\\dotsb", + "\\Longrightarrow": "\\dotsb", + "\\longleftarrow": "\\dotsb", + "\\Longleftarrow": "\\dotsb", + "\\longleftrightarrow": "\\dotsb", + "\\Longleftrightarrow": "\\dotsb", + "\\mapsto": "\\dotsb", + "\\longmapsto": "\\dotsb", + "\\hookrightarrow": "\\dotsb", + "\\doteq": "\\dotsb", + // Symbols whose definition starts with \mathbin: + "\\mathbin": "\\dotsb", + // Symbols whose definition starts with \mathrel: + "\\mathrel": "\\dotsb", + "\\relbar": "\\dotsb", + "\\Relbar": "\\dotsb", + "\\xrightarrow": "\\dotsb", + "\\xleftarrow": "\\dotsb", + // Symbols whose definition starts with \DOTSI: + "\\DOTSI": "\\dotsi", + "\\int": "\\dotsi", + "\\oint": "\\dotsi", + "\\iint": "\\dotsi", + "\\iiint": "\\dotsi", + "\\iiiint": "\\dotsi", + "\\idotsint": "\\dotsi", + // Symbols whose definition starts with \DOTSX: + "\\DOTSX": "\\dotsx" +}; +D("\\dots", function(n) { + var e = "\\dotso", t = n.expandAfterFuture().text; + return t in ih ? e = ih[t] : (t.slice(0, 4) === "\\not" || t in mt.math && _e.contains(["bin", "rel"], mt.math[t].group)) && (e = "\\dotsb"), e; +}); +var D0 = { + // \rightdelim@ checks for the following: + ")": !0, + "]": !0, + "\\rbrack": !0, + "\\}": !0, + "\\rbrace": !0, + "\\rangle": !0, + "\\rceil": !0, + "\\rfloor": !0, + "\\rgroup": !0, + "\\rmoustache": !0, + "\\right": !0, + "\\bigr": !0, + "\\biggr": !0, + "\\Bigr": !0, + "\\Biggr": !0, + // \extra@ also tests for the following: + $: !0, + // \extrap@ checks for the following: + ";": !0, + ".": !0, + ",": !0 +}; +D("\\dotso", function(n) { + var e = n.future().text; + return e in D0 ? "\\ldots\\," : "\\ldots"; +}); +D("\\dotsc", function(n) { + var e = n.future().text; + return e in D0 && e !== "," ? "\\ldots\\," : "\\ldots"; +}); +D("\\cdots", function(n) { + var e = n.future().text; + return e in D0 ? "\\@cdots\\," : "\\@cdots"; +}); +D("\\dotsb", "\\cdots"); +D("\\dotsm", "\\cdots"); +D("\\dotsi", "\\!\\cdots"); +D("\\dotsx", "\\ldots\\,"); +D("\\DOTSI", "\\relax"); +D("\\DOTSB", "\\relax"); +D("\\DOTSX", "\\relax"); +D("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"); +D("\\,", "\\tmspace+{3mu}{.1667em}"); +D("\\thinspace", "\\,"); +D("\\>", "\\mskip{4mu}"); +D("\\:", "\\tmspace+{4mu}{.2222em}"); +D("\\medspace", "\\:"); +D("\\;", "\\tmspace+{5mu}{.2777em}"); +D("\\thickspace", "\\;"); +D("\\!", "\\tmspace-{3mu}{.1667em}"); +D("\\negthinspace", "\\!"); +D("\\negmedspace", "\\tmspace-{4mu}{.2222em}"); +D("\\negthickspace", "\\tmspace-{5mu}{.277em}"); +D("\\enspace", "\\kern.5em "); +D("\\enskip", "\\hskip.5em\\relax"); +D("\\quad", "\\hskip1em\\relax"); +D("\\qquad", "\\hskip2em\\relax"); +D("\\tag", "\\@ifstar\\tag@literal\\tag@paren"); +D("\\tag@paren", "\\tag@literal{({#1})}"); +D("\\tag@literal", (n) => { + if (n.macros.get("\\df@tag")) + throw new ge("Multiple \\tag"); + return "\\gdef\\df@tag{\\text{#1}}"; +}); +D("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"); +D("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"); +D("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"); +D("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"); +D("\\newline", "\\\\\\relax"); +D("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"); +var km = re(pr["Main-Regular"][84][1] - 0.7 * pr["Main-Regular"][65][1]); +D("\\LaTeX", "\\textrm{\\html@mathml{" + ("L\\kern-.36em\\raisebox{" + km + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{LaTeX}}"); +D("\\KaTeX", "\\textrm{\\html@mathml{" + ("K\\kern-.17em\\raisebox{" + km + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{KaTeX}}"); +D("\\hspace", "\\@ifstar\\@hspacer\\@hspace"); +D("\\@hspace", "\\hskip #1\\relax"); +D("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"); +D("\\ordinarycolon", ":"); +D("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); +D("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'); +D("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'); +D("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'); +D("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'); +D("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'); +D("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'); +D("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'); +D("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'); +D("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'); +D("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'); +D("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'); +D("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'); +D("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'); +D("∷", "\\dblcolon"); +D("∹", "\\eqcolon"); +D("≔", "\\coloneqq"); +D("≕", "\\eqqcolon"); +D("⩴", "\\Coloneqq"); +D("\\ratio", "\\vcentcolon"); +D("\\coloncolon", "\\dblcolon"); +D("\\colonequals", "\\coloneqq"); +D("\\coloncolonequals", "\\Coloneqq"); +D("\\equalscolon", "\\eqqcolon"); +D("\\equalscoloncolon", "\\Eqqcolon"); +D("\\colonminus", "\\coloneq"); +D("\\coloncolonminus", "\\Coloneq"); +D("\\minuscolon", "\\eqcolon"); +D("\\minuscoloncolon", "\\Eqcolon"); +D("\\coloncolonapprox", "\\Colonapprox"); +D("\\coloncolonsim", "\\Colonsim"); +D("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +D("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"); +D("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +D("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"); +D("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"); +D("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"); +D("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"); +D("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}"); +D("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}"); +D("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}"); +D("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}"); +D("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}"); +D("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}"); +D("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{≩}"); +D("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{≨}"); +D("\\ngeqq", "\\html@mathml{\\@ngeqq}{≱}"); +D("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{≱}"); +D("\\nleqq", "\\html@mathml{\\@nleqq}{≰}"); +D("\\nleqslant", "\\html@mathml{\\@nleqslant}{≰}"); +D("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}"); +D("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}"); +D("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{⊈}"); +D("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{⊉}"); +D("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}"); +D("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}"); +D("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}"); +D("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); +D("\\imath", "\\html@mathml{\\@imath}{ı}"); +D("\\jmath", "\\html@mathml{\\@jmath}{ȷ}"); +D("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"); +D("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"); +D("⟦", "\\llbracket"); +D("⟧", "\\rrbracket"); +D("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"); +D("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"); +D("⦃", "\\lBrace"); +D("⦄", "\\rBrace"); +D("\\minuso", "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"); +D("⦵", "\\minuso"); +D("\\darr", "\\downarrow"); +D("\\dArr", "\\Downarrow"); +D("\\Darr", "\\Downarrow"); +D("\\lang", "\\langle"); +D("\\rang", "\\rangle"); +D("\\uarr", "\\uparrow"); +D("\\uArr", "\\Uparrow"); +D("\\Uarr", "\\Uparrow"); +D("\\N", "\\mathbb{N}"); +D("\\R", "\\mathbb{R}"); +D("\\Z", "\\mathbb{Z}"); +D("\\alef", "\\aleph"); +D("\\alefsym", "\\aleph"); +D("\\Alpha", "\\mathrm{A}"); +D("\\Beta", "\\mathrm{B}"); +D("\\bull", "\\bullet"); +D("\\Chi", "\\mathrm{X}"); +D("\\clubs", "\\clubsuit"); +D("\\cnums", "\\mathbb{C}"); +D("\\Complex", "\\mathbb{C}"); +D("\\Dagger", "\\ddagger"); +D("\\diamonds", "\\diamondsuit"); +D("\\empty", "\\emptyset"); +D("\\Epsilon", "\\mathrm{E}"); +D("\\Eta", "\\mathrm{H}"); +D("\\exist", "\\exists"); +D("\\harr", "\\leftrightarrow"); +D("\\hArr", "\\Leftrightarrow"); +D("\\Harr", "\\Leftrightarrow"); +D("\\hearts", "\\heartsuit"); +D("\\image", "\\Im"); +D("\\infin", "\\infty"); +D("\\Iota", "\\mathrm{I}"); +D("\\isin", "\\in"); +D("\\Kappa", "\\mathrm{K}"); +D("\\larr", "\\leftarrow"); +D("\\lArr", "\\Leftarrow"); +D("\\Larr", "\\Leftarrow"); +D("\\lrarr", "\\leftrightarrow"); +D("\\lrArr", "\\Leftrightarrow"); +D("\\Lrarr", "\\Leftrightarrow"); +D("\\Mu", "\\mathrm{M}"); +D("\\natnums", "\\mathbb{N}"); +D("\\Nu", "\\mathrm{N}"); +D("\\Omicron", "\\mathrm{O}"); +D("\\plusmn", "\\pm"); +D("\\rarr", "\\rightarrow"); +D("\\rArr", "\\Rightarrow"); +D("\\Rarr", "\\Rightarrow"); +D("\\real", "\\Re"); +D("\\reals", "\\mathbb{R}"); +D("\\Reals", "\\mathbb{R}"); +D("\\Rho", "\\mathrm{P}"); +D("\\sdot", "\\cdot"); +D("\\sect", "\\S"); +D("\\spades", "\\spadesuit"); +D("\\sub", "\\subset"); +D("\\sube", "\\subseteq"); +D("\\supe", "\\supseteq"); +D("\\Tau", "\\mathrm{T}"); +D("\\thetasym", "\\vartheta"); +D("\\weierp", "\\wp"); +D("\\Zeta", "\\mathrm{Z}"); +D("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"); +D("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"); +D("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); +D("\\bra", "\\mathinner{\\langle{#1}|}"); +D("\\ket", "\\mathinner{|{#1}\\rangle}"); +D("\\braket", "\\mathinner{\\langle{#1}\\rangle}"); +D("\\Bra", "\\left\\langle#1\\right|"); +D("\\Ket", "\\left|#1\\right\\rangle"); +var Lm = (n) => (e) => { + var t = e.consumeArg().tokens, i = e.consumeArg().tokens, r = e.consumeArg().tokens, s = e.consumeArg().tokens, a = e.macros.get("|"), o = e.macros.get("\\|"); + e.macros.beginGroup(); + var l = (h) => (d) => { + n && (d.macros.set("|", a), r.length && d.macros.set("\\|", o)); + var f = h; + if (!h && r.length) { + var m = d.future(); + m.text === "|" && (d.popToken(), f = !0); + } + return { + tokens: f ? r : i, + numArgs: 0 + }; + }; + e.macros.set("|", l(!1)), r.length && e.macros.set("\\|", l(!0)); + var u = e.consumeArg().tokens, c = e.expandTokens([ + ...s, + ...u, + ...t + // reversed + ]); + return e.macros.endGroup(), { + tokens: c.reverse(), + numArgs: 0 + }; +}; +D("\\bra@ket", Lm(!1)); +D("\\bra@set", Lm(!0)); +D("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"); +D("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"); +D("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"); +D("\\angln", "{\\angl n}"); +D("\\blue", "\\textcolor{##6495ed}{#1}"); +D("\\orange", "\\textcolor{##ffa500}{#1}"); +D("\\pink", "\\textcolor{##ff00af}{#1}"); +D("\\red", "\\textcolor{##df0030}{#1}"); +D("\\green", "\\textcolor{##28ae7b}{#1}"); +D("\\gray", "\\textcolor{gray}{#1}"); +D("\\purple", "\\textcolor{##9d38bd}{#1}"); +D("\\blueA", "\\textcolor{##ccfaff}{#1}"); +D("\\blueB", "\\textcolor{##80f6ff}{#1}"); +D("\\blueC", "\\textcolor{##63d9ea}{#1}"); +D("\\blueD", "\\textcolor{##11accd}{#1}"); +D("\\blueE", "\\textcolor{##0c7f99}{#1}"); +D("\\tealA", "\\textcolor{##94fff5}{#1}"); +D("\\tealB", "\\textcolor{##26edd5}{#1}"); +D("\\tealC", "\\textcolor{##01d1c1}{#1}"); +D("\\tealD", "\\textcolor{##01a995}{#1}"); +D("\\tealE", "\\textcolor{##208170}{#1}"); +D("\\greenA", "\\textcolor{##b6ffb0}{#1}"); +D("\\greenB", "\\textcolor{##8af281}{#1}"); +D("\\greenC", "\\textcolor{##74cf70}{#1}"); +D("\\greenD", "\\textcolor{##1fab54}{#1}"); +D("\\greenE", "\\textcolor{##0d923f}{#1}"); +D("\\goldA", "\\textcolor{##ffd0a9}{#1}"); +D("\\goldB", "\\textcolor{##ffbb71}{#1}"); +D("\\goldC", "\\textcolor{##ff9c39}{#1}"); +D("\\goldD", "\\textcolor{##e07d10}{#1}"); +D("\\goldE", "\\textcolor{##a75a05}{#1}"); +D("\\redA", "\\textcolor{##fca9a9}{#1}"); +D("\\redB", "\\textcolor{##ff8482}{#1}"); +D("\\redC", "\\textcolor{##f9685d}{#1}"); +D("\\redD", "\\textcolor{##e84d39}{#1}"); +D("\\redE", "\\textcolor{##bc2612}{#1}"); +D("\\maroonA", "\\textcolor{##ffbde0}{#1}"); +D("\\maroonB", "\\textcolor{##ff92c6}{#1}"); +D("\\maroonC", "\\textcolor{##ed5fa6}{#1}"); +D("\\maroonD", "\\textcolor{##ca337c}{#1}"); +D("\\maroonE", "\\textcolor{##9e034e}{#1}"); +D("\\purpleA", "\\textcolor{##ddd7ff}{#1}"); +D("\\purpleB", "\\textcolor{##c6b9fc}{#1}"); +D("\\purpleC", "\\textcolor{##aa87ff}{#1}"); +D("\\purpleD", "\\textcolor{##7854ab}{#1}"); +D("\\purpleE", "\\textcolor{##543b78}{#1}"); +D("\\mintA", "\\textcolor{##f5f9e8}{#1}"); +D("\\mintB", "\\textcolor{##edf2df}{#1}"); +D("\\mintC", "\\textcolor{##e0e5cc}{#1}"); +D("\\grayA", "\\textcolor{##f6f7f7}{#1}"); +D("\\grayB", "\\textcolor{##f0f1f2}{#1}"); +D("\\grayC", "\\textcolor{##e3e5e6}{#1}"); +D("\\grayD", "\\textcolor{##d6d8da}{#1}"); +D("\\grayE", "\\textcolor{##babec2}{#1}"); +D("\\grayF", "\\textcolor{##888d93}{#1}"); +D("\\grayG", "\\textcolor{##626569}{#1}"); +D("\\grayH", "\\textcolor{##3b3e40}{#1}"); +D("\\grayI", "\\textcolor{##21242c}{#1}"); +D("\\kaBlue", "\\textcolor{##314453}{#1}"); +D("\\kaGreen", "\\textcolor{##71B307}{#1}"); +typeof document < "u" && document.compatMode !== "CSS1Compat" && typeof console < "u" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."); +function w0() { + return { + async: !1, + breaks: !1, + extensions: null, + gfm: !0, + hooks: null, + pedantic: !1, + renderer: null, + silent: !1, + tokenizer: null, + walkTokens: null + }; +} +let jr = w0(); +function Im(n) { + jr = n; +} +const Rm = /[&<>"']/, n3 = new RegExp(Rm.source, "g"), Cm = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, s3 = new RegExp(Cm.source, "g"), a3 = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" +}, rh = (n) => a3[n]; +function Jt(n, e) { + if (e) { + if (Rm.test(n)) + return n.replace(n3, rh); + } else if (Cm.test(n)) + return n.replace(s3, rh); + return n; +} +const o3 = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig; +function l3(n) { + return n.replace(o3, (e, t) => (t = t.toLowerCase(), t === "colon" ? ":" : t.charAt(0) === "#" ? t.charAt(1) === "x" ? String.fromCharCode(parseInt(t.substring(2), 16)) : String.fromCharCode(+t.substring(1)) : "")); +} +const u3 = /(^|[^\[])\^/g; +function Xe(n, e) { + let t = typeof n == "string" ? n : n.source; + e = e || ""; + const i = { + replace: (r, s) => { + let a = typeof s == "string" ? s : s.source; + return a = a.replace(u3, "$1"), t = t.replace(r, a), i; + }, + getRegex: () => new RegExp(t, e) + }; + return i; +} +function nh(n) { + try { + n = encodeURI(n).replace(/%25/g, "%"); + } catch { + return null; + } + return n; +} +const Wn = { exec: () => null }; +function sh(n, e) { + const t = n.replace(/\|/g, (s, a, o) => { + let l = !1, u = a; + for (; --u >= 0 && o[u] === "\\"; ) + l = !l; + return l ? "|" : " |"; + }), i = t.split(/ \|/); + let r = 0; + if (i[0].trim() || i.shift(), i.length > 0 && !i[i.length - 1].trim() && i.pop(), e) + if (i.length > e) + i.splice(e); + else + for (; i.length < e; ) + i.push(""); + for (; r < i.length; r++) + i[r] = i[r].trim().replace(/\\\|/g, "|"); + return i; +} +function Vs(n, e, t) { + const i = n.length; + if (i === 0) + return ""; + let r = 0; + for (; r < i && n.charAt(i - r - 1) === e; ) + r++; + return n.slice(0, i - r); +} +function c3(n, e) { + if (n.indexOf(e[1]) === -1) + return -1; + let t = 0; + for (let i = 0; i < n.length; i++) + if (n[i] === "\\") + i++; + else if (n[i] === e[0]) + t++; + else if (n[i] === e[1] && (t--, t < 0)) + return i; + return -1; +} +function ah(n, e, t, i) { + const r = e.href, s = e.title ? Jt(e.title) : null, a = n[1].replace(/\\([\[\]])/g, "$1"); + if (n[0].charAt(0) !== "!") { + i.state.inLink = !0; + const o = { + type: "link", + raw: t, + href: r, + title: s, + text: a, + tokens: i.inlineTokens(a) + }; + return i.state.inLink = !1, o; + } + return { + type: "image", + raw: t, + href: r, + title: s, + text: Jt(a) + }; +} +function h3(n, e) { + const t = n.match(/^(\s+)(?:```)/); + if (t === null) + return e; + const i = t[1]; + return e.split(` +`).map((r) => { + const s = r.match(/^\s+/); + if (s === null) + return r; + const [a] = s; + return a.length >= i.length ? r.slice(i.length) : r; + }).join(` +`); +} +class Ma { + // set by the lexer + constructor(e) { + et(this, "options"); + et(this, "rules"); + // set by the lexer + et(this, "lexer"); + this.options = e || jr; + } + space(e) { + const t = this.rules.block.newline.exec(e); + if (t && t[0].length > 0) + return { + type: "space", + raw: t[0] + }; + } + code(e) { + const t = this.rules.block.code.exec(e); + if (t) { + const i = t[0].replace(/^ {1,4}/gm, ""); + return { + type: "code", + raw: t[0], + codeBlockStyle: "indented", + text: this.options.pedantic ? i : Vs(i, ` +`) + }; + } + } + fences(e) { + const t = this.rules.block.fences.exec(e); + if (t) { + const i = t[0], r = h3(i, t[3] || ""); + return { + type: "code", + raw: i, + lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2], + text: r + }; + } + } + heading(e) { + const t = this.rules.block.heading.exec(e); + if (t) { + let i = t[2].trim(); + if (/#$/.test(i)) { + const r = Vs(i, "#"); + (this.options.pedantic || !r || / $/.test(r)) && (i = r.trim()); + } + return { + type: "heading", + raw: t[0], + depth: t[1].length, + text: i, + tokens: this.lexer.inline(i) + }; + } + } + hr(e) { + const t = this.rules.block.hr.exec(e); + if (t) + return { + type: "hr", + raw: t[0] + }; + } + blockquote(e) { + const t = this.rules.block.blockquote.exec(e); + if (t) { + let i = t[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, ` + $1`); + i = Vs(i.replace(/^ *>[ \t]?/gm, ""), ` +`); + const r = this.lexer.state.top; + this.lexer.state.top = !0; + const s = this.lexer.blockTokens(i); + return this.lexer.state.top = r, { + type: "blockquote", + raw: t[0], + tokens: s, + text: i + }; + } + } + list(e) { + let t = this.rules.block.list.exec(e); + if (t) { + let i = t[1].trim(); + const r = i.length > 1, s = { + type: "list", + raw: "", + ordered: r, + start: r ? +i.slice(0, -1) : "", + loose: !1, + items: [] + }; + i = r ? `\\d{1,9}\\${i.slice(-1)}` : `\\${i}`, this.options.pedantic && (i = r ? i : "[*+-]"); + const a = new RegExp(`^( {0,3}${i})((?:[ ][^\\n]*)?(?:\\n|$))`); + let o = "", l = "", u = !1; + for (; e; ) { + let c = !1; + if (!(t = a.exec(e)) || this.rules.block.hr.test(e)) + break; + o = t[0], e = e.substring(o.length); + let h = t[2].split(` +`, 1)[0].replace(/^\t+/, (b) => " ".repeat(3 * b.length)), d = e.split(` +`, 1)[0], f = 0; + this.options.pedantic ? (f = 2, l = h.trimStart()) : (f = t[2].search(/[^ ]/), f = f > 4 ? 1 : f, l = h.slice(f), f += t[1].length); + let m = !1; + if (!h && /^ *$/.test(d) && (o += d + ` +`, e = e.substring(d.length + 1), c = !0), !c) { + const b = new RegExp(`^ {0,${Math.min(3, f - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), E = new RegExp(`^ {0,${Math.min(3, f - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), y = new RegExp(`^ {0,${Math.min(3, f - 1)}}(?:\`\`\`|~~~)`), T = new RegExp(`^ {0,${Math.min(3, f - 1)}}#`); + for (; e; ) { + const A = e.split(` +`, 1)[0]; + if (d = A, this.options.pedantic && (d = d.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ")), y.test(d) || T.test(d) || b.test(d) || E.test(e)) + break; + if (d.search(/[^ ]/) >= f || !d.trim()) + l += ` +` + d.slice(f); + else { + if (m || h.search(/[^ ]/) >= 4 || y.test(h) || T.test(h) || E.test(h)) + break; + l += ` +` + d; + } + !m && !d.trim() && (m = !0), o += A + ` +`, e = e.substring(A.length + 1), h = d.slice(f); + } + } + s.loose || (u ? s.loose = !0 : /\n *\n *$/.test(o) && (u = !0)); + let p = null, v; + this.options.gfm && (p = /^\[[ xX]\] /.exec(l), p && (v = p[0] !== "[ ] ", l = l.replace(/^\[[ xX]\] +/, ""))), s.items.push({ + type: "list_item", + raw: o, + task: !!p, + checked: v, + loose: !1, + text: l, + tokens: [] + }), s.raw += o; + } + s.items[s.items.length - 1].raw = o.trimEnd(), s.items[s.items.length - 1].text = l.trimEnd(), s.raw = s.raw.trimEnd(); + for (let c = 0; c < s.items.length; c++) + if (this.lexer.state.top = !1, s.items[c].tokens = this.lexer.blockTokens(s.items[c].text, []), !s.loose) { + const h = s.items[c].tokens.filter((f) => f.type === "space"), d = h.length > 0 && h.some((f) => /\n.*\n/.test(f.raw)); + s.loose = d; + } + if (s.loose) + for (let c = 0; c < s.items.length; c++) + s.items[c].loose = !0; + return s; + } + } + html(e) { + const t = this.rules.block.html.exec(e); + if (t) + return { + type: "html", + block: !0, + raw: t[0], + pre: t[1] === "pre" || t[1] === "script" || t[1] === "style", + text: t[0] + }; + } + def(e) { + const t = this.rules.block.def.exec(e); + if (t) { + const i = t[1].toLowerCase().replace(/\s+/g, " "), r = t[2] ? t[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", s = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3]; + return { + type: "def", + tag: i, + raw: t[0], + href: r, + title: s + }; + } + } + table(e) { + const t = this.rules.block.table.exec(e); + if (!t || !/[:|]/.test(t[2])) + return; + const i = sh(t[1]), r = t[2].replace(/^\||\| *$/g, "").split("|"), s = t[3] && t[3].trim() ? t[3].replace(/\n[ \t]*$/, "").split(` +`) : [], a = { + type: "table", + raw: t[0], + header: [], + align: [], + rows: [] + }; + if (i.length === r.length) { + for (const o of r) + /^ *-+: *$/.test(o) ? a.align.push("right") : /^ *:-+: *$/.test(o) ? a.align.push("center") : /^ *:-+ *$/.test(o) ? a.align.push("left") : a.align.push(null); + for (const o of i) + a.header.push({ + text: o, + tokens: this.lexer.inline(o) + }); + for (const o of s) + a.rows.push(sh(o, a.header.length).map((l) => ({ + text: l, + tokens: this.lexer.inline(l) + }))); + return a; + } + } + lheading(e) { + const t = this.rules.block.lheading.exec(e); + if (t) + return { + type: "heading", + raw: t[0], + depth: t[2].charAt(0) === "=" ? 1 : 2, + text: t[1], + tokens: this.lexer.inline(t[1]) + }; + } + paragraph(e) { + const t = this.rules.block.paragraph.exec(e); + if (t) { + const i = t[1].charAt(t[1].length - 1) === ` +` ? t[1].slice(0, -1) : t[1]; + return { + type: "paragraph", + raw: t[0], + text: i, + tokens: this.lexer.inline(i) + }; + } + } + text(e) { + const t = this.rules.block.text.exec(e); + if (t) + return { + type: "text", + raw: t[0], + text: t[0], + tokens: this.lexer.inline(t[0]) + }; + } + escape(e) { + const t = this.rules.inline.escape.exec(e); + if (t) + return { + type: "escape", + raw: t[0], + text: Jt(t[1]) + }; + } + tag(e) { + const t = this.rules.inline.tag.exec(e); + if (t) + return !this.lexer.state.inLink && /^<a /i.test(t[0]) ? this.lexer.state.inLink = !0 : this.lexer.state.inLink && /^<\/a>/i.test(t[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(t[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0]) && (this.lexer.state.inRawBlock = !1), { + type: "html", + raw: t[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: !1, + text: t[0] + }; + } + link(e) { + const t = this.rules.inline.link.exec(e); + if (t) { + const i = t[2].trim(); + if (!this.options.pedantic && /^</.test(i)) { + if (!/>$/.test(i)) + return; + const a = Vs(i.slice(0, -1), "\\"); + if ((i.length - a.length) % 2 === 0) + return; + } else { + const a = c3(t[2], "()"); + if (a > -1) { + const l = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + a; + t[2] = t[2].substring(0, a), t[0] = t[0].substring(0, l).trim(), t[3] = ""; + } + } + let r = t[2], s = ""; + if (this.options.pedantic) { + const a = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r); + a && (r = a[1], s = a[3]); + } else + s = t[3] ? t[3].slice(1, -1) : ""; + return r = r.trim(), /^</.test(r) && (this.options.pedantic && !/>$/.test(i) ? r = r.slice(1) : r = r.slice(1, -1)), ah(t, { + href: r && r.replace(this.rules.inline.anyPunctuation, "$1"), + title: s && s.replace(this.rules.inline.anyPunctuation, "$1") + }, t[0], this.lexer); + } + } + reflink(e, t) { + let i; + if ((i = this.rules.inline.reflink.exec(e)) || (i = this.rules.inline.nolink.exec(e))) { + const r = (i[2] || i[1]).replace(/\s+/g, " "), s = t[r.toLowerCase()]; + if (!s) { + const a = i[0].charAt(0); + return { + type: "text", + raw: a, + text: a + }; + } + return ah(i, s, i[0], this.lexer); + } + } + emStrong(e, t, i = "") { + let r = this.rules.inline.emStrongLDelim.exec(e); + if (!r || r[3] && i.match(/[\p{L}\p{N}]/u)) + return; + if (!(r[1] || r[2] || "") || !i || this.rules.inline.punctuation.exec(i)) { + const a = [...r[0]].length - 1; + let o, l, u = a, c = 0; + const h = r[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + for (h.lastIndex = 0, t = t.slice(-1 * e.length + a); (r = h.exec(t)) != null; ) { + if (o = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !o) + continue; + if (l = [...o].length, r[3] || r[4]) { + u += l; + continue; + } else if ((r[5] || r[6]) && a % 3 && !((a + l) % 3)) { + c += l; + continue; + } + if (u -= l, u > 0) + continue; + l = Math.min(l, l + u + c); + const d = [...r[0]][0].length, f = e.slice(0, a + r.index + d + l); + if (Math.min(a, l) % 2) { + const p = f.slice(1, -1); + return { + type: "em", + raw: f, + text: p, + tokens: this.lexer.inlineTokens(p) + }; + } + const m = f.slice(2, -2); + return { + type: "strong", + raw: f, + text: m, + tokens: this.lexer.inlineTokens(m) + }; + } + } + } + codespan(e) { + const t = this.rules.inline.code.exec(e); + if (t) { + let i = t[2].replace(/\n/g, " "); + const r = /[^ ]/.test(i), s = /^ /.test(i) && / $/.test(i); + return r && s && (i = i.substring(1, i.length - 1)), i = Jt(i, !0), { + type: "codespan", + raw: t[0], + text: i + }; + } + } + br(e) { + const t = this.rules.inline.br.exec(e); + if (t) + return { + type: "br", + raw: t[0] + }; + } + del(e) { + const t = this.rules.inline.del.exec(e); + if (t) + return { + type: "del", + raw: t[0], + text: t[2], + tokens: this.lexer.inlineTokens(t[2]) + }; + } + autolink(e) { + const t = this.rules.inline.autolink.exec(e); + if (t) { + let i, r; + return t[2] === "@" ? (i = Jt(t[1]), r = "mailto:" + i) : (i = Jt(t[1]), r = i), { + type: "link", + raw: t[0], + text: i, + href: r, + tokens: [ + { + type: "text", + raw: i, + text: i + } + ] + }; + } + } + url(e) { + var i; + let t; + if (t = this.rules.inline.url.exec(e)) { + let r, s; + if (t[2] === "@") + r = Jt(t[0]), s = "mailto:" + r; + else { + let a; + do + a = t[0], t[0] = ((i = this.rules.inline._backpedal.exec(t[0])) == null ? void 0 : i[0]) ?? ""; + while (a !== t[0]); + r = Jt(t[0]), t[1] === "www." ? s = "http://" + t[0] : s = t[0]; + } + return { + type: "link", + raw: t[0], + text: r, + href: s, + tokens: [ + { + type: "text", + raw: r, + text: r + } + ] + }; + } + } + inlineText(e) { + const t = this.rules.inline.text.exec(e); + if (t) { + let i; + return this.lexer.state.inRawBlock ? i = t[0] : i = Jt(t[0]), { + type: "text", + raw: t[0], + text: i + }; + } + } +} +const d3 = /^(?: *(?:\n|$))+/, f3 = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/, m3 = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, hs = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, g3 = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, Fm = /(?:[*+-]|\d{1,9}[.)])/, Pm = Xe(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g, Fm).replace(/blockCode/g, / {4}/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).getRegex(), k0 = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, p3 = /^[^\n]+/, L0 = /(?!\s*\])(?:\\.|[^\[\]\\])+/, v3 = Xe(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label", L0).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(), y3 = Xe(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, Fm).getRegex(), Qa = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", I0 = /<!--(?:-?>|[\s\S]*?(?:-->|$))/, _3 = Xe("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))", "i").replace("comment", I0).replace("tag", Qa).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), Mm = Xe(k0).replace("hr", hs).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Qa).getRegex(), b3 = Xe(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Mm).getRegex(), R0 = { + blockquote: b3, + code: f3, + def: v3, + fences: m3, + heading: g3, + hr: hs, + html: _3, + lheading: Pm, + list: y3, + newline: d3, + paragraph: Mm, + table: Wn, + text: p3 +}, oh = Xe("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", hs).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Qa).getRegex(), E3 = { + ...R0, + table: oh, + paragraph: Xe(k0).replace("hr", hs).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", oh).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Qa).getRegex() +}, S3 = { + ...R0, + html: Xe(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", I0).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), + def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: Wn, + // fences not supported + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: Xe(k0).replace("hr", hs).replace("heading", ` *#{1,6} *[^ +]`).replace("lheading", Pm).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() +}, Om = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, T3 = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, $m = /^( {2,}|\\)\n(?!\s*$)/, x3 = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/, ds = "\\p{P}\\p{S}", A3 = Xe(/^((?![*_])[\spunctuation])/, "u").replace(/punctuation/g, ds).getRegex(), D3 = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g, w3 = Xe(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, "u").replace(/punct/g, ds).getRegex(), k3 = Xe("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])", "gu").replace(/punct/g, ds).getRegex(), L3 = Xe("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])", "gu").replace(/punct/g, ds).getRegex(), I3 = Xe(/\\([punct])/, "gu").replace(/punct/g, ds).getRegex(), R3 = Xe(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), C3 = Xe(I0).replace("(?:-->|$)", "-->").getRegex(), F3 = Xe("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", C3).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(), Oa = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/, P3 = Xe(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", Oa).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(), Bm = Xe(/^!?\[(label)\]\[(ref)\]/).replace("label", Oa).replace("ref", L0).getRegex(), Nm = Xe(/^!?\[(ref)\](?:\[\])?/).replace("ref", L0).getRegex(), M3 = Xe("reflink|nolink(?!\\()", "g").replace("reflink", Bm).replace("nolink", Nm).getRegex(), C0 = { + _backpedal: Wn, + // only used for GFM url + anyPunctuation: I3, + autolink: R3, + blockSkip: D3, + br: $m, + code: T3, + del: Wn, + emStrongLDelim: w3, + emStrongRDelimAst: k3, + emStrongRDelimUnd: L3, + escape: Om, + link: P3, + nolink: Nm, + punctuation: A3, + reflink: Bm, + reflinkSearch: M3, + tag: F3, + text: x3, + url: Wn +}, O3 = { + ...C0, + link: Xe(/^!?\[(label)\]\((.*?)\)/).replace("label", Oa).getRegex(), + reflink: Xe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", Oa).getRegex() +}, Rl = { + ...C0, + escape: Xe(Om).replace("])", "~|])").getRegex(), + url: Xe(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/ +}, $3 = { + ...Rl, + br: Xe($m).replace("{2,}", "*").getRegex(), + text: Xe(Rl.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() +}, Ks = { + normal: R0, + gfm: E3, + pedantic: S3 +}, Cn = { + normal: C0, + gfm: Rl, + breaks: $3, + pedantic: O3 +}; +class Yi { + constructor(e) { + et(this, "tokens"); + et(this, "options"); + et(this, "state"); + et(this, "tokenizer"); + et(this, "inlineQueue"); + this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e || jr, this.options.tokenizer = this.options.tokenizer || new Ma(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { + inLink: !1, + inRawBlock: !1, + top: !0 + }; + const t = { + block: Ks.normal, + inline: Cn.normal + }; + this.options.pedantic ? (t.block = Ks.pedantic, t.inline = Cn.pedantic) : this.options.gfm && (t.block = Ks.gfm, this.options.breaks ? t.inline = Cn.breaks : t.inline = Cn.gfm), this.tokenizer.rules = t; + } + /** + * Expose Rules + */ + static get rules() { + return { + block: Ks, + inline: Cn + }; + } + /** + * Static Lex Method + */ + static lex(e, t) { + return new Yi(t).lex(e); + } + /** + * Static Lex Inline Method + */ + static lexInline(e, t) { + return new Yi(t).inlineTokens(e); + } + /** + * Preprocessing + */ + lex(e) { + e = e.replace(/\r\n|\r/g, ` +`), this.blockTokens(e, this.tokens); + for (let t = 0; t < this.inlineQueue.length; t++) { + const i = this.inlineQueue[t]; + this.inlineTokens(i.src, i.tokens); + } + return this.inlineQueue = [], this.tokens; + } + blockTokens(e, t = []) { + this.options.pedantic ? e = e.replace(/\t/g, " ").replace(/^ +$/gm, "") : e = e.replace(/^( *)(\t+)/gm, (o, l, u) => l + " ".repeat(u.length)); + let i, r, s, a; + for (; e; ) + if (!(this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((o) => (i = o.call({ lexer: this }, e, t)) ? (e = e.substring(i.raw.length), t.push(i), !0) : !1))) { + if (i = this.tokenizer.space(e)) { + e = e.substring(i.raw.length), i.raw.length === 1 && t.length > 0 ? t[t.length - 1].raw += ` +` : t.push(i); + continue; + } + if (i = this.tokenizer.code(e)) { + e = e.substring(i.raw.length), r = t[t.length - 1], r && (r.type === "paragraph" || r.type === "text") ? (r.raw += ` +` + i.raw, r.text += ` +` + i.text, this.inlineQueue[this.inlineQueue.length - 1].src = r.text) : t.push(i); + continue; + } + if (i = this.tokenizer.fences(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.heading(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.hr(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.blockquote(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.list(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.html(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.def(e)) { + e = e.substring(i.raw.length), r = t[t.length - 1], r && (r.type === "paragraph" || r.type === "text") ? (r.raw += ` +` + i.raw, r.text += ` +` + i.raw, this.inlineQueue[this.inlineQueue.length - 1].src = r.text) : this.tokens.links[i.tag] || (this.tokens.links[i.tag] = { + href: i.href, + title: i.title + }); + continue; + } + if (i = this.tokenizer.table(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.lheading(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (s = e, this.options.extensions && this.options.extensions.startBlock) { + let o = 1 / 0; + const l = e.slice(1); + let u; + this.options.extensions.startBlock.forEach((c) => { + u = c.call({ lexer: this }, l), typeof u == "number" && u >= 0 && (o = Math.min(o, u)); + }), o < 1 / 0 && o >= 0 && (s = e.substring(0, o + 1)); + } + if (this.state.top && (i = this.tokenizer.paragraph(s))) { + r = t[t.length - 1], a && r.type === "paragraph" ? (r.raw += ` +` + i.raw, r.text += ` +` + i.text, this.inlineQueue.pop(), this.inlineQueue[this.inlineQueue.length - 1].src = r.text) : t.push(i), a = s.length !== e.length, e = e.substring(i.raw.length); + continue; + } + if (i = this.tokenizer.text(e)) { + e = e.substring(i.raw.length), r = t[t.length - 1], r && r.type === "text" ? (r.raw += ` +` + i.raw, r.text += ` +` + i.text, this.inlineQueue.pop(), this.inlineQueue[this.inlineQueue.length - 1].src = r.text) : t.push(i); + continue; + } + if (e) { + const o = "Infinite loop on byte: " + e.charCodeAt(0); + if (this.options.silent) { + console.error(o); + break; + } else + throw new Error(o); + } + } + return this.state.top = !0, t; + } + inline(e, t = []) { + return this.inlineQueue.push({ src: e, tokens: t }), t; + } + /** + * Lexing/Compiling + */ + inlineTokens(e, t = []) { + let i, r, s, a = e, o, l, u; + if (this.tokens.links) { + const c = Object.keys(this.tokens.links); + if (c.length > 0) + for (; (o = this.tokenizer.rules.inline.reflinkSearch.exec(a)) != null; ) + c.includes(o[0].slice(o[0].lastIndexOf("[") + 1, -1)) && (a = a.slice(0, o.index) + "[" + "a".repeat(o[0].length - 2) + "]" + a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)); + } + for (; (o = this.tokenizer.rules.inline.blockSkip.exec(a)) != null; ) + a = a.slice(0, o.index) + "[" + "a".repeat(o[0].length - 2) + "]" + a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + for (; (o = this.tokenizer.rules.inline.anyPunctuation.exec(a)) != null; ) + a = a.slice(0, o.index) + "++" + a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + for (; e; ) + if (l || (u = ""), l = !1, !(this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((c) => (i = c.call({ lexer: this }, e, t)) ? (e = e.substring(i.raw.length), t.push(i), !0) : !1))) { + if (i = this.tokenizer.escape(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.tag(e)) { + e = e.substring(i.raw.length), r = t[t.length - 1], r && i.type === "text" && r.type === "text" ? (r.raw += i.raw, r.text += i.text) : t.push(i); + continue; + } + if (i = this.tokenizer.link(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.reflink(e, this.tokens.links)) { + e = e.substring(i.raw.length), r = t[t.length - 1], r && i.type === "text" && r.type === "text" ? (r.raw += i.raw, r.text += i.text) : t.push(i); + continue; + } + if (i = this.tokenizer.emStrong(e, a, u)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.codespan(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.br(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.del(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (i = this.tokenizer.autolink(e)) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (!this.state.inLink && (i = this.tokenizer.url(e))) { + e = e.substring(i.raw.length), t.push(i); + continue; + } + if (s = e, this.options.extensions && this.options.extensions.startInline) { + let c = 1 / 0; + const h = e.slice(1); + let d; + this.options.extensions.startInline.forEach((f) => { + d = f.call({ lexer: this }, h), typeof d == "number" && d >= 0 && (c = Math.min(c, d)); + }), c < 1 / 0 && c >= 0 && (s = e.substring(0, c + 1)); + } + if (i = this.tokenizer.inlineText(s)) { + e = e.substring(i.raw.length), i.raw.slice(-1) !== "_" && (u = i.raw.slice(-1)), l = !0, r = t[t.length - 1], r && r.type === "text" ? (r.raw += i.raw, r.text += i.text) : t.push(i); + continue; + } + if (e) { + const c = "Infinite loop on byte: " + e.charCodeAt(0); + if (this.options.silent) { + console.error(c); + break; + } else + throw new Error(c); + } + } + return t; + } +} +class $a { + constructor(e) { + et(this, "options"); + this.options = e || jr; + } + code(e, t, i) { + var s; + const r = (s = (t || "").match(/^\S*/)) == null ? void 0 : s[0]; + return e = e.replace(/\n$/, "") + ` +`, r ? '<pre><code class="language-' + Jt(r) + '">' + (i ? e : Jt(e, !0)) + `</code></pre> +` : "<pre><code>" + (i ? e : Jt(e, !0)) + `</code></pre> +`; + } + blockquote(e) { + return `<blockquote> +${e}</blockquote> +`; + } + html(e, t) { + return e; + } + heading(e, t, i) { + return `<h${t}>${e}</h${t}> +`; + } + hr() { + return `<hr> +`; + } + list(e, t, i) { + const r = t ? "ol" : "ul", s = t && i !== 1 ? ' start="' + i + '"' : ""; + return "<" + r + s + `> +` + e + "</" + r + `> +`; + } + listitem(e, t, i) { + return `<li>${e}</li> +`; + } + checkbox(e) { + return "<input " + (e ? 'checked="" ' : "") + 'disabled="" type="checkbox">'; + } + paragraph(e) { + return `<p>${e}</p> +`; + } + table(e, t) { + return t && (t = `<tbody>${t}</tbody>`), `<table> +<thead> +` + e + `</thead> +` + t + `</table> +`; + } + tablerow(e) { + return `<tr> +${e}</tr> +`; + } + tablecell(e, t) { + const i = t.header ? "th" : "td"; + return (t.align ? `<${i} align="${t.align}">` : `<${i}>`) + e + `</${i}> +`; + } + /** + * span level renderer + */ + strong(e) { + return `<strong>${e}</strong>`; + } + em(e) { + return `<em>${e}</em>`; + } + codespan(e) { + return `<code>${e}</code>`; + } + br() { + return "<br>"; + } + del(e) { + return `<del>${e}</del>`; + } + link(e, t, i) { + const r = nh(e); + if (r === null) + return i; + e = r; + let s = '<a href="' + e + '"'; + return t && (s += ' title="' + t + '"'), s += ">" + i + "</a>", s; + } + image(e, t, i) { + const r = nh(e); + if (r === null) + return i; + e = r; + let s = `<img src="${e}" alt="${i}"`; + return t && (s += ` title="${t}"`), s += ">", s; + } + text(e) { + return e; + } +} +class F0 { + // no need for block level renderers + strong(e) { + return e; + } + em(e) { + return e; + } + codespan(e) { + return e; + } + del(e) { + return e; + } + html(e) { + return e; + } + text(e) { + return e; + } + link(e, t, i) { + return "" + i; + } + image(e, t, i) { + return "" + i; + } + br() { + return ""; + } +} +class Wi { + constructor(e) { + et(this, "options"); + et(this, "renderer"); + et(this, "textRenderer"); + this.options = e || jr, this.options.renderer = this.options.renderer || new $a(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.textRenderer = new F0(); + } + /** + * Static Parse Method + */ + static parse(e, t) { + return new Wi(t).parse(e); + } + /** + * Static Parse Inline Method + */ + static parseInline(e, t) { + return new Wi(t).parseInline(e); + } + /** + * Parse Loop + */ + parse(e, t = !0) { + let i = ""; + for (let r = 0; r < e.length; r++) { + const s = e[r]; + if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[s.type]) { + const a = s, o = this.options.extensions.renderers[a.type].call({ parser: this }, a); + if (o !== !1 || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(a.type)) { + i += o || ""; + continue; + } + } + switch (s.type) { + case "space": + continue; + case "hr": { + i += this.renderer.hr(); + continue; + } + case "heading": { + const a = s; + i += this.renderer.heading(this.parseInline(a.tokens), a.depth, l3(this.parseInline(a.tokens, this.textRenderer))); + continue; + } + case "code": { + const a = s; + i += this.renderer.code(a.text, a.lang, !!a.escaped); + continue; + } + case "table": { + const a = s; + let o = "", l = ""; + for (let c = 0; c < a.header.length; c++) + l += this.renderer.tablecell(this.parseInline(a.header[c].tokens), { header: !0, align: a.align[c] }); + o += this.renderer.tablerow(l); + let u = ""; + for (let c = 0; c < a.rows.length; c++) { + const h = a.rows[c]; + l = ""; + for (let d = 0; d < h.length; d++) + l += this.renderer.tablecell(this.parseInline(h[d].tokens), { header: !1, align: a.align[d] }); + u += this.renderer.tablerow(l); + } + i += this.renderer.table(o, u); + continue; + } + case "blockquote": { + const a = s, o = this.parse(a.tokens); + i += this.renderer.blockquote(o); + continue; + } + case "list": { + const a = s, o = a.ordered, l = a.start, u = a.loose; + let c = ""; + for (let h = 0; h < a.items.length; h++) { + const d = a.items[h], f = d.checked, m = d.task; + let p = ""; + if (d.task) { + const v = this.renderer.checkbox(!!f); + u ? d.tokens.length > 0 && d.tokens[0].type === "paragraph" ? (d.tokens[0].text = v + " " + d.tokens[0].text, d.tokens[0].tokens && d.tokens[0].tokens.length > 0 && d.tokens[0].tokens[0].type === "text" && (d.tokens[0].tokens[0].text = v + " " + d.tokens[0].tokens[0].text)) : d.tokens.unshift({ + type: "text", + text: v + " " + }) : p += v + " "; + } + p += this.parse(d.tokens, u), c += this.renderer.listitem(p, m, !!f); + } + i += this.renderer.list(c, o, l); + continue; + } + case "html": { + const a = s; + i += this.renderer.html(a.text, a.block); + continue; + } + case "paragraph": { + const a = s; + i += this.renderer.paragraph(this.parseInline(a.tokens)); + continue; + } + case "text": { + let a = s, o = a.tokens ? this.parseInline(a.tokens) : a.text; + for (; r + 1 < e.length && e[r + 1].type === "text"; ) + a = e[++r], o += ` +` + (a.tokens ? this.parseInline(a.tokens) : a.text); + i += t ? this.renderer.paragraph(o) : o; + continue; + } + default: { + const a = 'Token with "' + s.type + '" type was not found.'; + if (this.options.silent) + return console.error(a), ""; + throw new Error(a); + } + } + } + return i; + } + /** + * Parse Inline Tokens + */ + parseInline(e, t) { + t = t || this.renderer; + let i = ""; + for (let r = 0; r < e.length; r++) { + const s = e[r]; + if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[s.type]) { + const a = this.options.extensions.renderers[s.type].call({ parser: this }, s); + if (a !== !1 || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(s.type)) { + i += a || ""; + continue; + } + } + switch (s.type) { + case "escape": { + const a = s; + i += t.text(a.text); + break; + } + case "html": { + const a = s; + i += t.html(a.text); + break; + } + case "link": { + const a = s; + i += t.link(a.href, a.title, this.parseInline(a.tokens, t)); + break; + } + case "image": { + const a = s; + i += t.image(a.href, a.title, a.text); + break; + } + case "strong": { + const a = s; + i += t.strong(this.parseInline(a.tokens, t)); + break; + } + case "em": { + const a = s; + i += t.em(this.parseInline(a.tokens, t)); + break; + } + case "codespan": { + const a = s; + i += t.codespan(a.text); + break; + } + case "br": { + i += t.br(); + break; + } + case "del": { + const a = s; + i += t.del(this.parseInline(a.tokens, t)); + break; + } + case "text": { + const a = s; + i += t.text(a.text); + break; + } + default: { + const a = 'Token with "' + s.type + '" type was not found.'; + if (this.options.silent) + return console.error(a), ""; + throw new Error(a); + } + } + } + return i; + } +} +class jn { + constructor(e) { + et(this, "options"); + this.options = e || jr; + } + /** + * Process markdown before marked + */ + preprocess(e) { + return e; + } + /** + * Process HTML after marked is finished + */ + postprocess(e) { + return e; + } + /** + * Process all tokens before walk tokens + */ + processAllTokens(e) { + return e; + } +} +et(jn, "passThroughHooks", /* @__PURE__ */ new Set([ + "preprocess", + "postprocess", + "processAllTokens" +])); +var Yr, Cl, Um; +class B3 { + constructor(...e) { + no(this, Yr); + et(this, "defaults", w0()); + et(this, "options", this.setOptions); + et(this, "parse", Es(this, Yr, Cl).call(this, Yi.lex, Wi.parse)); + et(this, "parseInline", Es(this, Yr, Cl).call(this, Yi.lexInline, Wi.parseInline)); + et(this, "Parser", Wi); + et(this, "Renderer", $a); + et(this, "TextRenderer", F0); + et(this, "Lexer", Yi); + et(this, "Tokenizer", Ma); + et(this, "Hooks", jn); + this.use(...e); + } + /** + * Run callback for every token + */ + walkTokens(e, t) { + var r, s; + let i = []; + for (const a of e) + switch (i = i.concat(t.call(this, a)), a.type) { + case "table": { + const o = a; + for (const l of o.header) + i = i.concat(this.walkTokens(l.tokens, t)); + for (const l of o.rows) + for (const u of l) + i = i.concat(this.walkTokens(u.tokens, t)); + break; + } + case "list": { + const o = a; + i = i.concat(this.walkTokens(o.items, t)); + break; + } + default: { + const o = a; + (s = (r = this.defaults.extensions) == null ? void 0 : r.childTokens) != null && s[o.type] ? this.defaults.extensions.childTokens[o.type].forEach((l) => { + const u = o[l].flat(1 / 0); + i = i.concat(this.walkTokens(u, t)); + }) : o.tokens && (i = i.concat(this.walkTokens(o.tokens, t))); + } + } + return i; + } + use(...e) { + const t = this.defaults.extensions || { renderers: {}, childTokens: {} }; + return e.forEach((i) => { + const r = { ...i }; + if (r.async = this.defaults.async || r.async || !1, i.extensions && (i.extensions.forEach((s) => { + if (!s.name) + throw new Error("extension name required"); + if ("renderer" in s) { + const a = t.renderers[s.name]; + a ? t.renderers[s.name] = function(...o) { + let l = s.renderer.apply(this, o); + return l === !1 && (l = a.apply(this, o)), l; + } : t.renderers[s.name] = s.renderer; + } + if ("tokenizer" in s) { + if (!s.level || s.level !== "block" && s.level !== "inline") + throw new Error("extension level must be 'block' or 'inline'"); + const a = t[s.level]; + a ? a.unshift(s.tokenizer) : t[s.level] = [s.tokenizer], s.start && (s.level === "block" ? t.startBlock ? t.startBlock.push(s.start) : t.startBlock = [s.start] : s.level === "inline" && (t.startInline ? t.startInline.push(s.start) : t.startInline = [s.start])); + } + "childTokens" in s && s.childTokens && (t.childTokens[s.name] = s.childTokens); + }), r.extensions = t), i.renderer) { + const s = this.defaults.renderer || new $a(this.defaults); + for (const a in i.renderer) { + if (!(a in s)) + throw new Error(`renderer '${a}' does not exist`); + if (a === "options") + continue; + const o = a, l = i.renderer[o], u = s[o]; + s[o] = (...c) => { + let h = l.apply(s, c); + return h === !1 && (h = u.apply(s, c)), h || ""; + }; + } + r.renderer = s; + } + if (i.tokenizer) { + const s = this.defaults.tokenizer || new Ma(this.defaults); + for (const a in i.tokenizer) { + if (!(a in s)) + throw new Error(`tokenizer '${a}' does not exist`); + if (["options", "rules", "lexer"].includes(a)) + continue; + const o = a, l = i.tokenizer[o], u = s[o]; + s[o] = (...c) => { + let h = l.apply(s, c); + return h === !1 && (h = u.apply(s, c)), h; + }; + } + r.tokenizer = s; + } + if (i.hooks) { + const s = this.defaults.hooks || new jn(); + for (const a in i.hooks) { + if (!(a in s)) + throw new Error(`hook '${a}' does not exist`); + if (a === "options") + continue; + const o = a, l = i.hooks[o], u = s[o]; + jn.passThroughHooks.has(a) ? s[o] = (c) => { + if (this.defaults.async) + return Promise.resolve(l.call(s, c)).then((d) => u.call(s, d)); + const h = l.call(s, c); + return u.call(s, h); + } : s[o] = (...c) => { + let h = l.apply(s, c); + return h === !1 && (h = u.apply(s, c)), h; + }; + } + r.hooks = s; + } + if (i.walkTokens) { + const s = this.defaults.walkTokens, a = i.walkTokens; + r.walkTokens = function(o) { + let l = []; + return l.push(a.call(this, o)), s && (l = l.concat(s.call(this, o))), l; + }; + } + this.defaults = { ...this.defaults, ...r }; + }), this; + } + setOptions(e) { + return this.defaults = { ...this.defaults, ...e }, this; + } + lexer(e, t) { + return Yi.lex(e, t ?? this.defaults); + } + parser(e, t) { + return Wi.parse(e, t ?? this.defaults); + } +} +Yr = new WeakSet(), Cl = function(e, t) { + return (i, r) => { + const s = { ...r }, a = { ...this.defaults, ...s }; + this.defaults.async === !0 && s.async === !1 && (a.silent || console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."), a.async = !0); + const o = Es(this, Yr, Um).call(this, !!a.silent, !!a.async); + if (typeof i > "u" || i === null) + return o(new Error("marked(): input parameter is undefined or null")); + if (typeof i != "string") + return o(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(i) + ", string expected")); + if (a.hooks && (a.hooks.options = a), a.async) + return Promise.resolve(a.hooks ? a.hooks.preprocess(i) : i).then((l) => e(l, a)).then((l) => a.hooks ? a.hooks.processAllTokens(l) : l).then((l) => a.walkTokens ? Promise.all(this.walkTokens(l, a.walkTokens)).then(() => l) : l).then((l) => t(l, a)).then((l) => a.hooks ? a.hooks.postprocess(l) : l).catch(o); + try { + a.hooks && (i = a.hooks.preprocess(i)); + let l = e(i, a); + a.hooks && (l = a.hooks.processAllTokens(l)), a.walkTokens && this.walkTokens(l, a.walkTokens); + let u = t(l, a); + return a.hooks && (u = a.hooks.postprocess(u)), u; + } catch (l) { + return o(l); + } + }; +}, Um = function(e, t) { + return (i) => { + if (i.message += ` +Please report this to https://github.com/markedjs/marked.`, e) { + const r = "<p>An error occurred:</p><pre>" + Jt(i.message + "", !0) + "</pre>"; + return t ? Promise.resolve(r) : r; + } + if (t) + return Promise.reject(i); + throw i; + }; +}; +const Kr = new B3(); +function je(n, e) { + return Kr.parse(n, e); +} +je.options = je.setOptions = function(n) { + return Kr.setOptions(n), je.defaults = Kr.defaults, Im(je.defaults), je; +}; +je.getDefaults = w0; +je.defaults = jr; +je.use = function(...n) { + return Kr.use(...n), je.defaults = Kr.defaults, Im(je.defaults), je; +}; +je.walkTokens = function(n, e) { + return Kr.walkTokens(n, e); +}; +je.parseInline = Kr.parseInline; +je.Parser = Wi; +je.parser = Wi.parse; +je.Renderer = $a; +je.TextRenderer = F0; +je.Lexer = Yi; +je.lexer = Yi.lex; +je.Tokenizer = Ma; +je.Hooks = jn; +je.parse = je; +je.options; +je.setOptions; +je.use; +je.walkTokens; +je.parseInline; +Wi.parse; +Yi.lex; +const N3 = /[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g, U3 = Object.hasOwnProperty; +class Gm { + /** + * Create a new slug class. + */ + constructor() { + this.occurrences, this.reset(); + } + /** + * Generate a unique slug. + * + * Tracks previously generated slugs: repeated calls with the same value + * will result in different slugs. + * Use the `slug` function to get same slugs. + * + * @param {string} value + * String of text to slugify + * @param {boolean} [maintainCase=false] + * Keep the current case, otherwise make all lowercase + * @return {string} + * A unique slug string + */ + slug(e, t) { + const i = this; + let r = G3(e, t === !0); + const s = r; + for (; U3.call(i.occurrences, r); ) + i.occurrences[s]++, r = s + "-" + i.occurrences[s]; + return i.occurrences[r] = 0, r; + } + /** + * Reset - Forget all previous slugs + * + * @return void + */ + reset() { + this.occurrences = /* @__PURE__ */ Object.create(null); + } +} +function G3(n, e) { + return typeof n != "string" ? "" : (e || (n = n.toLowerCase()), n.replace(N3, "").replace(/ /g, "-")); +} +new Gm(); +var lh = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, z3 = { exports: {} }; +(function(n) { + var e = typeof window < "u" ? window : typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope ? self : {}; + /** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + */ + var t = function(i) { + var r = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i, s = 0, a = {}, o = { + /** + * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the + * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load + * additional languages or plugins yourself. + * + * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. + * + * You obviously have to change this value before the automatic highlighting started. To do this, you can add an + * empty Prism object into the global scope before loading the Prism script like this: + * + * ```js + * window.Prism = window.Prism || {}; + * Prism.manual = true; + * // add a new <script> to load Prism's script + * ``` + * + * @default false + * @type {boolean} + * @memberof Prism + * @public + */ + manual: i.Prism && i.Prism.manual, + /** + * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses + * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your + * own worker, you don't want it to do this. + * + * By setting this value to `true`, Prism will not add its own listeners to the worker. + * + * You obviously have to change this value before Prism executes. To do this, you can add an + * empty Prism object into the global scope before loading the Prism script like this: + * + * ```js + * window.Prism = window.Prism || {}; + * Prism.disableWorkerMessageHandler = true; + * // Load Prism's script + * ``` + * + * @default false + * @type {boolean} + * @memberof Prism + * @public + */ + disableWorkerMessageHandler: i.Prism && i.Prism.disableWorkerMessageHandler, + /** + * A namespace for utility methods. + * + * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may + * change or disappear at any time. + * + * @namespace + * @memberof Prism + */ + util: { + encode: function E(y) { + return y instanceof l ? new l(y.type, E(y.content), y.alias) : Array.isArray(y) ? y.map(E) : y.replace(/&/g, "&").replace(/</g, "<").replace(/\u00a0/g, " "); + }, + /** + * Returns the name of the type of the given value. + * + * @param {any} o + * @returns {string} + * @example + * type(null) === 'Null' + * type(undefined) === 'Undefined' + * type(123) === 'Number' + * type('foo') === 'String' + * type(true) === 'Boolean' + * type([1, 2]) === 'Array' + * type({}) === 'Object' + * type(String) === 'Function' + * type(/abc+/) === 'RegExp' + */ + type: function(E) { + return Object.prototype.toString.call(E).slice(8, -1); + }, + /** + * Returns a unique number for the given object. Later calls will still return the same number. + * + * @param {Object} obj + * @returns {number} + */ + objId: function(E) { + return E.__id || Object.defineProperty(E, "__id", { value: ++s }), E.__id; + }, + /** + * Creates a deep clone of the given object. + * + * The main intended use of this function is to clone language definitions. + * + * @param {T} o + * @param {Record<number, any>} [visited] + * @returns {T} + * @template T + */ + clone: function E(y, T) { + T = T || {}; + var A, k; + switch (o.util.type(y)) { + case "Object": + if (k = o.util.objId(y), T[k]) + return T[k]; + A = /** @type {Record<string, any>} */ + {}, T[k] = A; + for (var w in y) + y.hasOwnProperty(w) && (A[w] = E(y[w], T)); + return ( + /** @type {any} */ + A + ); + case "Array": + return k = o.util.objId(y), T[k] ? T[k] : (A = [], T[k] = A, /** @type {Array} */ + /** @type {any} */ + y.forEach(function(L, I) { + A[I] = E(L, T); + }), /** @type {any} */ + A); + default: + return y; + } + }, + /** + * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class. + * + * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned. + * + * @param {Element} element + * @returns {string} + */ + getLanguage: function(E) { + for (; E; ) { + var y = r.exec(E.className); + if (y) + return y[1].toLowerCase(); + E = E.parentElement; + } + return "none"; + }, + /** + * Sets the Prism `language-xxxx` class of the given element. + * + * @param {Element} element + * @param {string} language + * @returns {void} + */ + setLanguage: function(E, y) { + E.className = E.className.replace(RegExp(r, "gi"), ""), E.classList.add("language-" + y); + }, + /** + * Returns the script element that is currently executing. + * + * This does __not__ work for line script element. + * + * @returns {HTMLScriptElement | null} + */ + currentScript: function() { + if (typeof document > "u") + return null; + if ("currentScript" in document) + return ( + /** @type {any} */ + document.currentScript + ); + try { + throw new Error(); + } catch (A) { + var E = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(A.stack) || [])[1]; + if (E) { + var y = document.getElementsByTagName("script"); + for (var T in y) + if (y[T].src == E) + return y[T]; + } + return null; + } + }, + /** + * Returns whether a given class is active for `element`. + * + * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated + * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the + * given class is just the given class with a `no-` prefix. + * + * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is + * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its + * ancestors have the given class or the negated version of it, then the default activation will be returned. + * + * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated + * version of it, the class is considered active. + * + * @param {Element} element + * @param {string} className + * @param {boolean} [defaultActivation=false] + * @returns {boolean} + */ + isActive: function(E, y, T) { + for (var A = "no-" + y; E; ) { + var k = E.classList; + if (k.contains(y)) + return !0; + if (k.contains(A)) + return !1; + E = E.parentElement; + } + return !!T; + } + }, + /** + * This namespace contains all currently loaded languages and the some helper functions to create and modify languages. + * + * @namespace + * @memberof Prism + * @public + */ + languages: { + /** + * The grammar for plain, unformatted text. + */ + plain: a, + plaintext: a, + text: a, + txt: a, + /** + * Creates a deep copy of the language with the given id and appends the given tokens. + * + * If a token in `redef` also appears in the copied language, then the existing token in the copied language + * will be overwritten at its original position. + * + * ## Best practices + * + * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language) + * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to + * understand the language definition because, normally, the order of tokens matters in Prism grammars. + * + * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens. + * Furthermore, all non-overwriting tokens should be placed after the overwriting ones. + * + * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`. + * @param {Grammar} redef The new tokens to append. + * @returns {Grammar} The new language created. + * @public + * @example + * Prism.languages['css-with-colors'] = Prism.languages.extend('css', { + * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token + * // at its original position + * 'comment': { ... }, + * // CSS doesn't have a 'color' token, so this token will be appended + * 'color': /\b(?:red|green|blue)\b/ + * }); + */ + extend: function(E, y) { + var T = o.util.clone(o.languages[E]); + for (var A in y) + T[A] = y[A]; + return T; + }, + /** + * Inserts tokens _before_ another token in a language definition or any other grammar. + * + * ## Usage + * + * This helper method makes it easy to modify existing languages. For example, the CSS language definition + * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded + * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the + * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do + * this: + * + * ```js + * Prism.languages.markup.style = { + * // token + * }; + * ``` + * + * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens + * before existing tokens. For the CSS example above, you would use it like this: + * + * ```js + * Prism.languages.insertBefore('markup', 'cdata', { + * 'style': { + * // token + * } + * }); + * ``` + * + * ## Special cases + * + * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar + * will be ignored. + * + * This behavior can be used to insert tokens after `before`: + * + * ```js + * Prism.languages.insertBefore('markup', 'comment', { + * 'comment': Prism.languages.markup.comment, + * // tokens after 'comment' + * }); + * ``` + * + * ## Limitations + * + * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object + * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave + * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily + * deleting properties which is necessary to insert at arbitrary positions. + * + * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object. + * Instead, it will create a new object and replace all references to the target object with the new one. This + * can be done without temporarily deleting properties, so the iteration order is well-defined. + * + * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if + * you hold the target object in a variable, then the value of the variable will not change. + * + * ```js + * var oldMarkup = Prism.languages.markup; + * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... }); + * + * assert(oldMarkup !== Prism.languages.markup); + * assert(newMarkup === Prism.languages.markup); + * ``` + * + * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the + * object to be modified. + * @param {string} before The key to insert before. + * @param {Grammar} insert An object containing the key-value pairs to be inserted. + * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the + * object to be modified. + * + * Defaults to `Prism.languages`. + * @returns {Grammar} The new grammar object. + * @public + */ + insertBefore: function(E, y, T, A) { + A = A || /** @type {any} */ + o.languages; + var k = A[E], w = {}; + for (var L in k) + if (k.hasOwnProperty(L)) { + if (L == y) + for (var I in T) + T.hasOwnProperty(I) && (w[I] = T[I]); + T.hasOwnProperty(L) || (w[L] = k[L]); + } + var R = A[E]; + return A[E] = w, o.languages.DFS(o.languages, function(O, z) { + z === R && O != E && (this[O] = w); + }), w; + }, + // Traverse a language definition with Depth First Search + DFS: function E(y, T, A, k) { + k = k || {}; + var w = o.util.objId; + for (var L in y) + if (y.hasOwnProperty(L)) { + T.call(y, L, y[L], A || L); + var I = y[L], R = o.util.type(I); + R === "Object" && !k[w(I)] ? (k[w(I)] = !0, E(I, T, null, k)) : R === "Array" && !k[w(I)] && (k[w(I)] = !0, E(I, T, L, k)); + } + } + }, + plugins: {}, + /** + * This is the most high-level function in Prism’s API. + * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on + * each one of them. + * + * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`. + * + * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}. + * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}. + * @memberof Prism + * @public + */ + highlightAll: function(E, y) { + o.highlightAllUnder(document, E, y); + }, + /** + * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls + * {@link Prism.highlightElement} on each one of them. + * + * The following hooks will be run: + * 1. `before-highlightall` + * 2. `before-all-elements-highlight` + * 3. All hooks of {@link Prism.highlightElement} for each element. + * + * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted. + * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers. + * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done. + * @memberof Prism + * @public + */ + highlightAllUnder: function(E, y, T) { + var A = { + callback: T, + container: E, + selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' + }; + o.hooks.run("before-highlightall", A), A.elements = Array.prototype.slice.apply(A.container.querySelectorAll(A.selector)), o.hooks.run("before-all-elements-highlight", A); + for (var k = 0, w; w = A.elements[k++]; ) + o.highlightElement(w, y === !0, A.callback); + }, + /** + * Highlights the code inside a single element. + * + * The following hooks will be run: + * 1. `before-sanity-check` + * 2. `before-highlight` + * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`. + * 4. `before-insert` + * 5. `after-highlight` + * 6. `complete` + * + * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for + * the element's language. + * + * @param {Element} element The element containing the code. + * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier. + * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers + * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is + * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default). + * + * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for + * asynchronous highlighting to work. You can build your own bundle on the + * [Download page](https://prismjs.com/download.html). + * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done. + * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously. + * @memberof Prism + * @public + */ + highlightElement: function(E, y, T) { + var A = o.util.getLanguage(E), k = o.languages[A]; + o.util.setLanguage(E, A); + var w = E.parentElement; + w && w.nodeName.toLowerCase() === "pre" && o.util.setLanguage(w, A); + var L = E.textContent, I = { + element: E, + language: A, + grammar: k, + code: L + }; + function R(z) { + I.highlightedCode = z, o.hooks.run("before-insert", I), I.element.innerHTML = I.highlightedCode, o.hooks.run("after-highlight", I), o.hooks.run("complete", I), T && T.call(I.element); + } + if (o.hooks.run("before-sanity-check", I), w = I.element.parentElement, w && w.nodeName.toLowerCase() === "pre" && !w.hasAttribute("tabindex") && w.setAttribute("tabindex", "0"), !I.code) { + o.hooks.run("complete", I), T && T.call(I.element); + return; + } + if (o.hooks.run("before-highlight", I), !I.grammar) { + R(o.util.encode(I.code)); + return; + } + if (y && i.Worker) { + var O = new Worker(o.filename); + O.onmessage = function(z) { + R(z.data); + }, O.postMessage(JSON.stringify({ + language: I.language, + code: I.code, + immediateClose: !0 + })); + } else + R(o.highlight(I.code, I.grammar, I.language)); + }, + /** + * Low-level function, only use if you know what you’re doing. It accepts a string of text as input + * and the language definitions to use, and returns a string with the HTML produced. + * + * The following hooks will be run: + * 1. `before-tokenize` + * 2. `after-tokenize` + * 3. `wrap`: On each {@link Token}. + * + * @param {string} text A string with the code to be highlighted. + * @param {Grammar} grammar An object containing the tokens to use. + * + * Usually a language definition like `Prism.languages.markup`. + * @param {string} language The name of the language definition passed to `grammar`. + * @returns {string} The highlighted HTML. + * @memberof Prism + * @public + * @example + * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript'); + */ + highlight: function(E, y, T) { + var A = { + code: E, + grammar: y, + language: T + }; + if (o.hooks.run("before-tokenize", A), !A.grammar) + throw new Error('The language "' + A.language + '" has no grammar.'); + return A.tokens = o.tokenize(A.code, A.grammar), o.hooks.run("after-tokenize", A), l.stringify(o.util.encode(A.tokens), A.language); + }, + /** + * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input + * and the language definitions to use, and returns an array with the tokenized code. + * + * When the language definition includes nested tokens, the function is called recursively on each of these tokens. + * + * This method could be useful in other contexts as well, as a very crude parser. + * + * @param {string} text A string with the code to be highlighted. + * @param {Grammar} grammar An object containing the tokens to use. + * + * Usually a language definition like `Prism.languages.markup`. + * @returns {TokenStream} An array of strings and tokens, a token stream. + * @memberof Prism + * @public + * @example + * let code = `var foo = 0;`; + * let tokens = Prism.tokenize(code, Prism.languages.javascript); + * tokens.forEach(token => { + * if (token instanceof Prism.Token && token.type === 'number') { + * console.log(`Found numeric literal: ${token.content}`); + * } + * }); + */ + tokenize: function(E, y) { + var T = y.rest; + if (T) { + for (var A in T) + y[A] = T[A]; + delete y.rest; + } + var k = new h(); + return d(k, k.head, E), c(E, k, y, k.head, 0), m(k); + }, + /** + * @namespace + * @memberof Prism + * @public + */ + hooks: { + all: {}, + /** + * Adds the given callback to the list of callbacks for the given hook. + * + * The callback will be invoked when the hook it is registered for is run. + * Hooks are usually directly run by a highlight function but you can also run hooks yourself. + * + * One callback function can be registered to multiple hooks and the same hook multiple times. + * + * @param {string} name The name of the hook. + * @param {HookCallback} callback The callback function which is given environment variables. + * @public + */ + add: function(E, y) { + var T = o.hooks.all; + T[E] = T[E] || [], T[E].push(y); + }, + /** + * Runs a hook invoking all registered callbacks with the given environment variables. + * + * Callbacks will be invoked synchronously and in the order in which they were registered. + * + * @param {string} name The name of the hook. + * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered. + * @public + */ + run: function(E, y) { + var T = o.hooks.all[E]; + if (!(!T || !T.length)) + for (var A = 0, k; k = T[A++]; ) + k(y); + } + }, + Token: l + }; + i.Prism = o; + function l(E, y, T, A) { + this.type = E, this.content = y, this.alias = T, this.length = (A || "").length | 0; + } + l.stringify = function E(y, T) { + if (typeof y == "string") + return y; + if (Array.isArray(y)) { + var A = ""; + return y.forEach(function(R) { + A += E(R, T); + }), A; + } + var k = { + type: y.type, + content: E(y.content, T), + tag: "span", + classes: ["token", y.type], + attributes: {}, + language: T + }, w = y.alias; + w && (Array.isArray(w) ? Array.prototype.push.apply(k.classes, w) : k.classes.push(w)), o.hooks.run("wrap", k); + var L = ""; + for (var I in k.attributes) + L += " " + I + '="' + (k.attributes[I] || "").replace(/"/g, """) + '"'; + return "<" + k.tag + ' class="' + k.classes.join(" ") + '"' + L + ">" + k.content + "</" + k.tag + ">"; + }; + function u(E, y, T, A) { + E.lastIndex = y; + var k = E.exec(T); + if (k && A && k[1]) { + var w = k[1].length; + k.index += w, k[0] = k[0].slice(w); + } + return k; + } + function c(E, y, T, A, k, w) { + for (var L in T) + if (!(!T.hasOwnProperty(L) || !T[L])) { + var I = T[L]; + I = Array.isArray(I) ? I : [I]; + for (var R = 0; R < I.length; ++R) { + if (w && w.cause == L + "," + R) + return; + var O = I[R], z = O.inside, ie = !!O.lookbehind, N = !!O.greedy, X = O.alias; + if (N && !O.pattern.global) { + var K = O.pattern.toString().match(/[imsuy]*$/)[0]; + O.pattern = RegExp(O.pattern.source, K + "g"); + } + for (var Z = O.pattern || O, Q = A.next, H = k; Q !== y.tail && !(w && H >= w.reach); H += Q.value.length, Q = Q.next) { + var Y = Q.value; + if (y.length > E.length) + return; + if (!(Y instanceof l)) { + var U = 1, te; + if (N) { + if (te = u(Z, H, E, ie), !te || te.index >= E.length) + break; + var le = te.index, ne = te.index + te[0].length, ce = H; + for (ce += Q.value.length; le >= ce; ) + Q = Q.next, ce += Q.value.length; + if (ce -= Q.value.length, H = ce, Q.value instanceof l) + continue; + for (var V = Q; V !== y.tail && (ce < ne || typeof V.value == "string"); V = V.next) + U++, ce += V.value.length; + U--, Y = E.slice(H, ce), te.index -= H; + } else if (te = u(Z, 0, Y, ie), !te) + continue; + var le = te.index, be = te[0], Oe = Y.slice(0, le), Ue = Y.slice(le + be.length), pt = H + Y.length; + w && pt > w.reach && (w.reach = pt); + var Ge = Q.prev; + Oe && (Ge = d(y, Ge, Oe), H += Oe.length), f(y, Ge, U); + var wt = new l(L, z ? o.tokenize(be, z) : be, X, be); + if (Q = d(y, Ge, wt), Ue && d(y, Q, Ue), U > 1) { + var q = { + cause: L + "," + R, + reach: pt + }; + c(E, y, T, Q.prev, H, q), w && q.reach > w.reach && (w.reach = q.reach); + } + } + } + } + } + } + function h() { + var E = { value: null, prev: null, next: null }, y = { value: null, prev: E, next: null }; + E.next = y, this.head = E, this.tail = y, this.length = 0; + } + function d(E, y, T) { + var A = y.next, k = { value: T, prev: y, next: A }; + return y.next = k, A.prev = k, E.length++, k; + } + function f(E, y, T) { + for (var A = y.next, k = 0; k < T && A !== E.tail; k++) + A = A.next; + y.next = A, A.prev = y, E.length -= k; + } + function m(E) { + for (var y = [], T = E.head.next; T !== E.tail; ) + y.push(T.value), T = T.next; + return y; + } + if (!i.document) + return i.addEventListener && (o.disableWorkerMessageHandler || i.addEventListener("message", function(E) { + var y = JSON.parse(E.data), T = y.language, A = y.code, k = y.immediateClose; + i.postMessage(o.highlight(A, o.languages[T], T)), k && i.close(); + }, !1)), o; + var p = o.util.currentScript(); + p && (o.filename = p.src, p.hasAttribute("data-manual") && (o.manual = !0)); + function v() { + o.manual || o.highlightAll(); + } + if (!o.manual) { + var b = document.readyState; + b === "loading" || b === "interactive" && p && p.defer ? document.addEventListener("DOMContentLoaded", v) : window.requestAnimationFrame ? window.requestAnimationFrame(v) : window.setTimeout(v, 16); + } + return o; + }(e); + n.exports && (n.exports = t), typeof lh < "u" && (lh.Prism = t), t.languages.markup = { + comment: { + pattern: /<!--(?:(?!<!--)[\s\S])*?-->/, + greedy: !0 + }, + prolog: { + pattern: /<\?[\s\S]+?\?>/, + greedy: !0 + }, + doctype: { + // https://www.w3.org/TR/xml/#NT-doctypedecl + pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i, + greedy: !0, + inside: { + "internal-subset": { + pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/, + lookbehind: !0, + greedy: !0, + inside: null + // see below + }, + string: { + pattern: /"[^"]*"|'[^']*'/, + greedy: !0 + }, + punctuation: /^<!|>$|[[\]]/, + "doctype-tag": /^DOCTYPE/i, + name: /[^\s<>'"]+/ + } + }, + cdata: { + pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, + greedy: !0 + }, + tag: { + pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, + greedy: !0, + inside: { + tag: { + pattern: /^<\/?[^\s>\/]+/, + inside: { + punctuation: /^<\/?/, + namespace: /^[^\s>\/:]+:/ + } + }, + "special-attr": [], + "attr-value": { + pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, + inside: { + punctuation: [ + { + pattern: /^=/, + alias: "attr-equals" + }, + { + pattern: /^(\s*)["']|["']$/, + lookbehind: !0 + } + ] + } + }, + punctuation: /\/?>/, + "attr-name": { + pattern: /[^\s>\/]+/, + inside: { + namespace: /^[^\s>\/:]+:/ + } + } + } + }, + entity: [ + { + pattern: /&[\da-z]{1,8};/i, + alias: "named-entity" + }, + /&#x?[\da-f]{1,8};/i + ] + }, t.languages.markup.tag.inside["attr-value"].inside.entity = t.languages.markup.entity, t.languages.markup.doctype.inside["internal-subset"].inside = t.languages.markup, t.hooks.add("wrap", function(i) { + i.type === "entity" && (i.attributes.title = i.content.replace(/&/, "&")); + }), Object.defineProperty(t.languages.markup.tag, "addInlined", { + /** + * Adds an inlined language to markup. + * + * An example of an inlined language is CSS with `<style>` tags. + * + * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as + * case insensitive. + * @param {string} lang The language key. + * @example + * addInlined('style', 'css'); + */ + value: function(r, s) { + var a = {}; + a["language-" + s] = { + pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i, + lookbehind: !0, + inside: t.languages[s] + }, a.cdata = /^<!\[CDATA\[|\]\]>$/i; + var o = { + "included-cdata": { + pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, + inside: a + } + }; + o["language-" + s] = { + pattern: /[\s\S]+/, + inside: t.languages[s] + }; + var l = {}; + l[r] = { + pattern: RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g, function() { + return r; + }), "i"), + lookbehind: !0, + greedy: !0, + inside: o + }, t.languages.insertBefore("markup", "cdata", l); + } + }), Object.defineProperty(t.languages.markup.tag, "addAttribute", { + /** + * Adds an pattern to highlight languages embedded in HTML attributes. + * + * An example of an inlined language is CSS with `style` attributes. + * + * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as + * case insensitive. + * @param {string} lang The language key. + * @example + * addAttribute('style', 'css'); + */ + value: function(i, r) { + t.languages.markup.tag.inside["special-attr"].push({ + pattern: RegExp( + /(^|["'\s])/.source + "(?:" + i + ")" + /\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source, + "i" + ), + lookbehind: !0, + inside: { + "attr-name": /^[^\s=]+/, + "attr-value": { + pattern: /=[\s\S]+/, + inside: { + value: { + pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/, + lookbehind: !0, + alias: [r, "language-" + r], + inside: t.languages[r] + }, + punctuation: [ + { + pattern: /^=/, + alias: "attr-equals" + }, + /"|'/ + ] + } + } + } + }); + } + }), t.languages.html = t.languages.markup, t.languages.mathml = t.languages.markup, t.languages.svg = t.languages.markup, t.languages.xml = t.languages.extend("markup", {}), t.languages.ssml = t.languages.xml, t.languages.atom = t.languages.xml, t.languages.rss = t.languages.xml, function(i) { + var r = /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/; + i.languages.css = { + comment: /\/\*[\s\S]*?\*\//, + atrule: { + pattern: RegExp("@[\\w-](?:" + /[^;{\s"']|\s+(?!\s)/.source + "|" + r.source + ")*?" + /(?:;|(?=\s*\{))/.source), + inside: { + rule: /^@[\w-]+/, + "selector-function-argument": { + pattern: /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/, + lookbehind: !0, + alias: "selector" + }, + keyword: { + pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/, + lookbehind: !0 + } + // See rest below + } + }, + url: { + // https://drafts.csswg.org/css-values-3/#urls + pattern: RegExp("\\burl\\((?:" + r.source + "|" + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ")\\)", "i"), + greedy: !0, + inside: { + function: /^url/i, + punctuation: /^\(|\)$/, + string: { + pattern: RegExp("^" + r.source + "$"), + alias: "url" + } + } + }, + selector: { + pattern: RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|` + r.source + ")*(?=\\s*\\{)"), + lookbehind: !0 + }, + string: { + pattern: r, + greedy: !0 + }, + property: { + pattern: /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i, + lookbehind: !0 + }, + important: /!important\b/i, + function: { + pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i, + lookbehind: !0 + }, + punctuation: /[(){};:,]/ + }, i.languages.css.atrule.inside.rest = i.languages.css; + var s = i.languages.markup; + s && (s.tag.addInlined("style", "css"), s.tag.addAttribute("style", "css")); + }(t), t.languages.clike = { + comment: [ + { + pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, + lookbehind: !0, + greedy: !0 + }, + { + pattern: /(^|[^\\:])\/\/.*/, + lookbehind: !0, + greedy: !0 + } + ], + string: { + pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: !0 + }, + "class-name": { + pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i, + lookbehind: !0, + inside: { + punctuation: /[.\\]/ + } + }, + keyword: /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/, + boolean: /\b(?:false|true)\b/, + function: /\b\w+(?=\()/, + number: /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, + operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, + punctuation: /[{}[\];(),.:]/ + }, t.languages.javascript = t.languages.extend("clike", { + "class-name": [ + t.languages.clike["class-name"], + { + pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/, + lookbehind: !0 + } + ], + keyword: [ + { + pattern: /((?:^|\})\s*)catch\b/, + lookbehind: !0 + }, + { + pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, + lookbehind: !0 + } + ], + // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) + function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, + number: { + pattern: RegExp( + /(^|[^\w$])/.source + "(?:" + // constant + (/NaN|Infinity/.source + "|" + // binary integer + /0[bB][01]+(?:_[01]+)*n?/.source + "|" + // octal integer + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + "|" + // hexadecimal integer + /0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source + "|" + // decimal bigint + /\d+(?:_\d+)*n/.source + "|" + // decimal number (integer or float) but no bigint + /(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source) + ")" + /(?![\w$])/.source + ), + lookbehind: !0 + }, + operator: /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/ + }), t.languages.javascript["class-name"][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/, t.languages.insertBefore("javascript", "keyword", { + regex: { + pattern: RegExp( + // lookbehind + // eslint-disable-next-line regexp/no-dupe-characters-character-class + /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source + // Regex pattern: + // There are 2 regex patterns here. The RegExp set notation proposal added support for nested character + // classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible + // with the only syntax, so we have to define 2 different regex patterns. + /\//.source + "(?:" + /(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source + "|" + // `v` flag syntax. This supports 3 levels of nested character classes. + /(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + ")" + // lookahead + /(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source + ), + lookbehind: !0, + greedy: !0, + inside: { + "regex-source": { + pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/, + lookbehind: !0, + alias: "language-regex", + inside: t.languages.regex + }, + "regex-delimiter": /^\/|\/$/, + "regex-flags": /^[a-z]+$/ + } + }, + // This must be declared before keyword because we use "function" inside the look-forward + "function-variable": { + pattern: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/, + alias: "function" + }, + parameter: [ + { + pattern: /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/, + lookbehind: !0, + inside: t.languages.javascript + }, + { + pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i, + lookbehind: !0, + inside: t.languages.javascript + }, + { + pattern: /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/, + lookbehind: !0, + inside: t.languages.javascript + }, + { + pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/, + lookbehind: !0, + inside: t.languages.javascript + } + ], + constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/ + }), t.languages.insertBefore("javascript", "string", { + hashbang: { + pattern: /^#!.*/, + greedy: !0, + alias: "comment" + }, + "template-string": { + pattern: /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/, + greedy: !0, + inside: { + "template-punctuation": { + pattern: /^`|`$/, + alias: "string" + }, + interpolation: { + pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, + lookbehind: !0, + inside: { + "interpolation-punctuation": { + pattern: /^\$\{|\}$/, + alias: "punctuation" + }, + rest: t.languages.javascript + } + }, + string: /[\s\S]+/ + } + }, + "string-property": { + pattern: /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m, + lookbehind: !0, + greedy: !0, + alias: "property" + } + }), t.languages.insertBefore("javascript", "operator", { + "literal-property": { + pattern: /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m, + lookbehind: !0, + alias: "property" + } + }), t.languages.markup && (t.languages.markup.tag.addInlined("script", "javascript"), t.languages.markup.tag.addAttribute( + /on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, + "javascript" + )), t.languages.js = t.languages.javascript, function() { + if (typeof t > "u" || typeof document > "u") + return; + Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector); + var i = "Loading…", r = function(p, v) { + return "✖ Error " + p + " while fetching file: " + v; + }, s = "✖ Error: File does not exist or is empty", a = { + js: "javascript", + py: "python", + rb: "ruby", + ps1: "powershell", + psm1: "powershell", + sh: "bash", + bat: "batch", + h: "c", + tex: "latex" + }, o = "data-src-status", l = "loading", u = "loaded", c = "failed", h = "pre[data-src]:not([" + o + '="' + u + '"]):not([' + o + '="' + l + '"])'; + function d(p, v, b) { + var E = new XMLHttpRequest(); + E.open("GET", p, !0), E.onreadystatechange = function() { + E.readyState == 4 && (E.status < 400 && E.responseText ? v(E.responseText) : E.status >= 400 ? b(r(E.status, E.statusText)) : b(s)); + }, E.send(null); + } + function f(p) { + var v = /^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(p || ""); + if (v) { + var b = Number(v[1]), E = v[2], y = v[3]; + return E ? y ? [b, Number(y)] : [b, void 0] : [b, b]; + } + } + t.hooks.add("before-highlightall", function(p) { + p.selector += ", " + h; + }), t.hooks.add("before-sanity-check", function(p) { + var v = ( + /** @type {HTMLPreElement} */ + p.element + ); + if (v.matches(h)) { + p.code = "", v.setAttribute(o, l); + var b = v.appendChild(document.createElement("CODE")); + b.textContent = i; + var E = v.getAttribute("data-src"), y = p.language; + if (y === "none") { + var T = (/\.(\w+)$/.exec(E) || [, "none"])[1]; + y = a[T] || T; + } + t.util.setLanguage(b, y), t.util.setLanguage(v, y); + var A = t.plugins.autoloader; + A && A.loadLanguages(y), d( + E, + function(k) { + v.setAttribute(o, u); + var w = f(v.getAttribute("data-range")); + if (w) { + var L = k.split(/\r\n?|\n/g), I = w[0], R = w[1] == null ? L.length : w[1]; + I < 0 && (I += L.length), I = Math.max(0, Math.min(I - 1, L.length)), R < 0 && (R += L.length), R = Math.max(0, Math.min(R, L.length)), k = L.slice(I, R).join(` +`), v.hasAttribute("data-start") || v.setAttribute("data-start", String(I + 1)); + } + b.textContent = k, t.highlightElement(b); + }, + function(k) { + v.setAttribute(o, c), b.textContent = k; + } + ); + } + }), t.plugins.fileHighlight = { + /** + * Executes the File Highlight plugin for all matching `pre` elements under the given container. + * + * Note: Elements which are already loaded or currently loading will not be touched by this method. + * + * @param {ParentNode} [container=document] + */ + highlight: function(v) { + for (var b = (v || document).querySelectorAll(h), E = 0, y; y = b[E++]; ) + t.highlightElement(y); + } + }; + var m = !1; + t.fileHighlight = function() { + m || (console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."), m = !0), t.plugins.fileHighlight.highlight.apply(this, arguments); + }; + }(); +})(z3); +Prism.languages.python = { + comment: { + pattern: /(^|[^\\])#.*/, + lookbehind: !0, + greedy: !0 + }, + "string-interpolation": { + pattern: /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, + greedy: !0, + inside: { + interpolation: { + // "{" <expression> <optional "!s", "!r", or "!a"> <optional ":" format specifier> "}" + pattern: /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/, + lookbehind: !0, + inside: { + "format-spec": { + pattern: /(:)[^:(){}]+(?=\}$)/, + lookbehind: !0 + }, + "conversion-option": { + pattern: /![sra](?=[:}]$)/, + alias: "punctuation" + }, + rest: null + } + }, + string: /[\s\S]+/ + } + }, + "triple-quoted-string": { + pattern: /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i, + greedy: !0, + alias: "string" + }, + string: { + pattern: /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, + greedy: !0 + }, + function: { + pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, + lookbehind: !0 + }, + "class-name": { + pattern: /(\bclass\s+)\w+/i, + lookbehind: !0 + }, + decorator: { + pattern: /(^[\t ]*)@\w+(?:\.\w+)*/m, + lookbehind: !0, + alias: ["annotation", "punctuation"], + inside: { + punctuation: /\./ + } + }, + keyword: /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/, + builtin: /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/, + boolean: /\b(?:False|None|True)\b/, + number: /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i, + operator: /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, + punctuation: /[{}[\];(),.:]/ +}; +Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest = Prism.languages.python; +Prism.languages.py = Prism.languages.python; +(function(n) { + var e = /\\(?:[^a-z()[\]]|[a-z*]+)/i, t = { + "equation-command": { + pattern: e, + alias: "regex" + } + }; + n.languages.latex = { + comment: /%.*/, + // the verbatim environment prints whitespace to the document + cdata: { + pattern: /(\\begin\{((?:lstlisting|verbatim)\*?)\})[\s\S]*?(?=\\end\{\2\})/, + lookbehind: !0 + }, + /* + * equations can be between $$ $$ or $ $ or \( \) or \[ \] + * (all are multiline) + */ + equation: [ + { + pattern: /\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/, + inside: t, + alias: "string" + }, + { + pattern: /(\\begin\{((?:align|eqnarray|equation|gather|math|multline)\*?)\})[\s\S]*?(?=\\end\{\2\})/, + lookbehind: !0, + inside: t, + alias: "string" + } + ], + /* + * arguments which are keywords or references are highlighted + * as keywords + */ + keyword: { + pattern: /(\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\[[^\]]+\])?\{)[^}]+(?=\})/, + lookbehind: !0 + }, + url: { + pattern: /(\\url\{)[^}]+(?=\})/, + lookbehind: !0 + }, + /* + * section or chapter headlines are highlighted as bold so that + * they stand out more + */ + headline: { + pattern: /(\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/, + lookbehind: !0, + alias: "class-name" + }, + function: { + pattern: e, + alias: "selector" + }, + punctuation: /[[\]{}&]/ + }, n.languages.tex = n.languages.latex, n.languages.context = n.languages.latex; +})(Prism); +(function(n) { + var e = "\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b", t = { + pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, + lookbehind: !0, + alias: "punctuation", + // this looks reasonably well in all themes + inside: null + // see below + }, i = { + bash: t, + environment: { + pattern: RegExp("\\$" + e), + alias: "constant" + }, + variable: [ + // [0]: Arithmetic Environment + { + pattern: /\$?\(\([\s\S]+?\)\)/, + greedy: !0, + inside: { + // If there is a $ sign at the beginning highlight $(( and )) as variable + variable: [ + { + pattern: /(^\$\(\([\s\S]+)\)\)/, + lookbehind: !0 + }, + /^\$\(\(/ + ], + number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/, + // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic + operator: /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/, + // If there is no $ sign at the beginning highlight (( and )) as punctuation + punctuation: /\(\(?|\)\)?|,|;/ + } + }, + // [1]: Command Substitution + { + pattern: /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/, + greedy: !0, + inside: { + variable: /^\$\(|^`|\)$|`$/ + } + }, + // [2]: Brace expansion + { + pattern: /\$\{[^}]+\}/, + greedy: !0, + inside: { + operator: /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/, + punctuation: /[\[\]]/, + environment: { + pattern: RegExp("(\\{)" + e), + lookbehind: !0, + alias: "constant" + } + } + }, + /\$(?:\w+|[#?*!@$])/ + ], + // Escape sequences from echo and printf's manuals, and escaped quotes. + entity: /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/ + }; + n.languages.bash = { + shebang: { + pattern: /^#!\s*\/.*/, + alias: "important" + }, + comment: { + pattern: /(^|[^"{\\$])#.*/, + lookbehind: !0 + }, + "function-name": [ + // a) function foo { + // b) foo() { + // c) function foo() { + // but not “foo {” + { + // a) and c) + pattern: /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/, + lookbehind: !0, + alias: "function" + }, + { + // b) + pattern: /\b[\w-]+(?=\s*\(\s*\)\s*\{)/, + alias: "function" + } + ], + // Highlight variable names as variables in for and select beginnings. + "for-or-select": { + pattern: /(\b(?:for|select)\s+)\w+(?=\s+in\s)/, + alias: "variable", + lookbehind: !0 + }, + // Highlight variable names as variables in the left-hand part + // of assignments (“=” and “+=”). + "assign-left": { + pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/, + inside: { + environment: { + pattern: RegExp("(^|[\\s;|&]|[<>]\\()" + e), + lookbehind: !0, + alias: "constant" + } + }, + alias: "variable", + lookbehind: !0 + }, + // Highlight parameter names as variables + parameter: { + pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, + alias: "variable", + lookbehind: !0 + }, + string: [ + // Support for Here-documents https://en.wikipedia.org/wiki/Here_document + { + pattern: /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/, + lookbehind: !0, + greedy: !0, + inside: i + }, + // Here-document with quotes around the tag + // → No expansion (so no “inside”). + { + pattern: /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/, + lookbehind: !0, + greedy: !0, + inside: { + bash: t + } + }, + // “Normal” string + { + // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html + pattern: /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/, + lookbehind: !0, + greedy: !0, + inside: i + }, + { + // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html + pattern: /(^|[^$\\])'[^']*'/, + lookbehind: !0, + greedy: !0 + }, + { + // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html + pattern: /\$'(?:[^'\\]|\\[\s\S])*'/, + greedy: !0, + inside: { + entity: i.entity + } + } + ], + environment: { + pattern: RegExp("\\$?" + e), + alias: "constant" + }, + variable: i.variable, + function: { + pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, + lookbehind: !0 + }, + keyword: { + pattern: /(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/, + lookbehind: !0 + }, + // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html + builtin: { + pattern: /(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/, + lookbehind: !0, + // Alias added to make those easier to distinguish from strings. + alias: "class-name" + }, + boolean: { + pattern: /(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/, + lookbehind: !0 + }, + "file-descriptor": { + pattern: /\B&\d\b/, + alias: "important" + }, + operator: { + // Lots of redirections here, but not just that. + pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, + inside: { + "file-descriptor": { + pattern: /^\d/, + alias: "important" + } + } + }, + punctuation: /\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/, + number: { + pattern: /(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/, + lookbehind: !0 + } + }, t.inside = n.languages.bash; + for (var r = [ + "comment", + "function-name", + "for-or-select", + "assign-left", + "parameter", + "string", + "environment", + "function", + "keyword", + "builtin", + "boolean", + "file-descriptor", + "operator", + "punctuation", + "number" + ], s = i.variable[1].inside, a = 0; a < r.length; a++) + s[r[a]] = n.languages.bash[r[a]]; + n.languages.sh = n.languages.bash, n.languages.shell = n.languages.bash; +})(Prism); +new Gm(); +const q3 = (n) => { + const e = {}; + for (let t = 0, i = n.length; t < i; t++) { + const r = n[t]; + for (const s in r) + e[s] ? e[s] = e[s].concat(r[s]) : e[s] = r[s]; + } + return e; +}, H3 = [ + "abbr", + "accept", + "accept-charset", + "accesskey", + "action", + "align", + "alink", + "allow", + "allowfullscreen", + "alt", + "anchor", + "archive", + "as", + "async", + "autocapitalize", + "autocomplete", + "autocorrect", + "autofocus", + "autopictureinpicture", + "autoplay", + "axis", + "background", + "behavior", + "bgcolor", + "border", + "bordercolor", + "capture", + "cellpadding", + "cellspacing", + "challenge", + "char", + "charoff", + "charset", + "checked", + "cite", + "class", + "classid", + "clear", + "code", + "codebase", + "codetype", + "color", + "cols", + "colspan", + "compact", + "content", + "contenteditable", + "controls", + "controlslist", + "conversiondestination", + "coords", + "crossorigin", + "csp", + "data", + "datetime", + "declare", + "decoding", + "default", + "defer", + "dir", + "direction", + "dirname", + "disabled", + "disablepictureinpicture", + "disableremoteplayback", + "disallowdocumentaccess", + "download", + "draggable", + "elementtiming", + "enctype", + "end", + "enterkeyhint", + "event", + "exportparts", + "face", + "for", + "form", + "formaction", + "formenctype", + "formmethod", + "formnovalidate", + "formtarget", + "frame", + "frameborder", + "headers", + "height", + "hidden", + "high", + "href", + "hreflang", + "hreftranslate", + "hspace", + "http-equiv", + "id", + "imagesizes", + "imagesrcset", + "importance", + "impressiondata", + "impressionexpiry", + "incremental", + "inert", + "inputmode", + "integrity", + "invisible", + "ismap", + "keytype", + "kind", + "label", + "lang", + "language", + "latencyhint", + "leftmargin", + "link", + "list", + "loading", + "longdesc", + "loop", + "low", + "lowsrc", + "manifest", + "marginheight", + "marginwidth", + "max", + "maxlength", + "mayscript", + "media", + "method", + "min", + "minlength", + "multiple", + "muted", + "name", + "nohref", + "nomodule", + "nonce", + "noresize", + "noshade", + "novalidate", + "nowrap", + "object", + "open", + "optimum", + "part", + "pattern", + "ping", + "placeholder", + "playsinline", + "policy", + "poster", + "preload", + "pseudo", + "readonly", + "referrerpolicy", + "rel", + "reportingorigin", + "required", + "resources", + "rev", + "reversed", + "role", + "rows", + "rowspan", + "rules", + "sandbox", + "scheme", + "scope", + "scopes", + "scrollamount", + "scrolldelay", + "scrolling", + "select", + "selected", + "shadowroot", + "shadowrootdelegatesfocus", + "shape", + "size", + "sizes", + "slot", + "span", + "spellcheck", + "src", + "srclang", + "srcset", + "standby", + "start", + "step", + "style", + "summary", + "tabindex", + "target", + "text", + "title", + "topmargin", + "translate", + "truespeed", + "trusttoken", + "type", + "usemap", + "valign", + "value", + "valuetype", + "version", + "virtualkeyboardpolicy", + "vlink", + "vspace", + "webkitdirectory", + "width", + "wrap" +], V3 = [ + "accent-height", + "accumulate", + "additive", + "alignment-baseline", + "ascent", + "attributename", + "attributetype", + "azimuth", + "basefrequency", + "baseline-shift", + "begin", + "bias", + "by", + "class", + "clip", + "clippathunits", + "clip-path", + "clip-rule", + "color", + "color-interpolation", + "color-interpolation-filters", + "color-profile", + "color-rendering", + "cx", + "cy", + "d", + "dx", + "dy", + "diffuseconstant", + "direction", + "display", + "divisor", + "dominant-baseline", + "dur", + "edgemode", + "elevation", + "end", + "fill", + "fill-opacity", + "fill-rule", + "filter", + "filterunits", + "flood-color", + "flood-opacity", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "fx", + "fy", + "g1", + "g2", + "glyph-name", + "glyphref", + "gradientunits", + "gradienttransform", + "height", + "href", + "id", + "image-rendering", + "in", + "in2", + "k", + "k1", + "k2", + "k3", + "k4", + "kerning", + "keypoints", + "keysplines", + "keytimes", + "lang", + "lengthadjust", + "letter-spacing", + "kernelmatrix", + "kernelunitlength", + "lighting-color", + "local", + "marker-end", + "marker-mid", + "marker-start", + "markerheight", + "markerunits", + "markerwidth", + "maskcontentunits", + "maskunits", + "max", + "mask", + "media", + "method", + "mode", + "min", + "name", + "numoctaves", + "offset", + "operator", + "opacity", + "order", + "orient", + "orientation", + "origin", + "overflow", + "paint-order", + "path", + "pathlength", + "patterncontentunits", + "patterntransform", + "patternunits", + "points", + "preservealpha", + "preserveaspectratio", + "primitiveunits", + "r", + "rx", + "ry", + "radius", + "refx", + "refy", + "repeatcount", + "repeatdur", + "restart", + "result", + "rotate", + "scale", + "seed", + "shape-rendering", + "specularconstant", + "specularexponent", + "spreadmethod", + "startoffset", + "stddeviation", + "stitchtiles", + "stop-color", + "stop-opacity", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke", + "stroke-width", + "style", + "surfacescale", + "systemlanguage", + "tabindex", + "targetx", + "targety", + "transform", + "transform-origin", + "text-anchor", + "text-decoration", + "text-rendering", + "textlength", + "type", + "u1", + "u2", + "unicode", + "values", + "viewbox", + "visibility", + "version", + "vert-adv-y", + "vert-origin-x", + "vert-origin-y", + "width", + "word-spacing", + "wrap", + "writing-mode", + "xchannelselector", + "ychannelselector", + "x", + "x1", + "x2", + "xmlns", + "y", + "y1", + "y2", + "z", + "zoomandpan" +], K3 = [ + "accent", + "accentunder", + "align", + "bevelled", + "close", + "columnsalign", + "columnlines", + "columnspan", + "denomalign", + "depth", + "dir", + "display", + "displaystyle", + "encoding", + "fence", + "frame", + "height", + "href", + "id", + "largeop", + "length", + "linethickness", + "lspace", + "lquote", + "mathbackground", + "mathcolor", + "mathsize", + "mathvariant", + "maxsize", + "minsize", + "movablelimits", + "notation", + "numalign", + "open", + "rowalign", + "rowlines", + "rowspacing", + "rowspan", + "rspace", + "rquote", + "scriptlevel", + "scriptminsize", + "scriptsizemultiplier", + "selection", + "separator", + "separators", + "stretchy", + "subscriptshift", + "supscriptshift", + "symmetric", + "voffset", + "width", + "xmlns" +]; +q3([ + Object.fromEntries(H3.map((n) => [n, ["*"]])), + Object.fromEntries(V3.map((n) => [n, ["svg:*"]])), + Object.fromEntries(K3.map((n) => [n, ["math:*"]])) +]); +const { + HtmlTagHydration: H7, + SvelteComponent: V7, + attr: K7, + binding_callbacks: Y7, + children: W7, + claim_element: j7, + claim_html_tag: X7, + detach: Q7, + element: Z7, + init: J7, + insert_hydration: eb, + noop: tb, + safe_not_equal: ib, + toggle_class: rb +} = window.__gradio__svelte__internal, { afterUpdate: nb, tick: sb, onMount: ab } = window.__gradio__svelte__internal, { + SvelteComponent: ob, + attr: lb, + children: ub, + claim_component: cb, + claim_element: hb, + create_component: db, + destroy_component: fb, + detach: mb, + element: gb, + init: pb, + insert_hydration: vb, + mount_component: yb, + safe_not_equal: _b, + transition_in: bb, + transition_out: Eb +} = window.__gradio__svelte__internal, { + SvelteComponent: Sb, + attr: Tb, + check_outros: xb, + children: Ab, + claim_component: Db, + claim_element: wb, + claim_space: kb, + create_component: Lb, + create_slot: Ib, + destroy_component: Rb, + detach: Cb, + element: Fb, + empty: Pb, + get_all_dirty_from_scope: Mb, + get_slot_changes: Ob, + group_outros: $b, + init: Bb, + insert_hydration: Nb, + mount_component: Ub, + safe_not_equal: Gb, + space: zb, + toggle_class: qb, + transition_in: Hb, + transition_out: Vb, + update_slot_base: Kb +} = window.__gradio__svelte__internal, { + SvelteComponent: Yb, + append_hydration: Wb, + attr: jb, + children: Xb, + claim_component: Qb, + claim_element: Zb, + claim_space: Jb, + claim_text: e8, + create_component: t8, + destroy_component: i8, + detach: r8, + element: n8, + init: s8, + insert_hydration: a8, + mount_component: o8, + safe_not_equal: l8, + set_data: u8, + space: c8, + text: h8, + toggle_class: d8, + transition_in: f8, + transition_out: m8 +} = window.__gradio__svelte__internal, { + SvelteComponent: Y3, + append_hydration: ma, + attr: hr, + bubble: W3, + check_outros: j3, + children: Fl, + claim_component: X3, + claim_element: Pl, + claim_space: uh, + claim_text: Q3, + construct_svelte_component: ch, + create_component: hh, + create_slot: Z3, + destroy_component: dh, + detach: Xn, + element: Ml, + get_all_dirty_from_scope: J3, + get_slot_changes: e5, + group_outros: t5, + init: i5, + insert_hydration: zm, + listen: r5, + mount_component: fh, + safe_not_equal: n5, + set_data: s5, + set_style: Ys, + space: mh, + text: a5, + toggle_class: $t, + transition_in: Ko, + transition_out: Yo, + update_slot_base: o5 +} = window.__gradio__svelte__internal; +function gh(n) { + let e, t; + return { + c() { + e = Ml("span"), t = a5( + /*label*/ + n[1] + ), this.h(); + }, + l(i) { + e = Pl(i, "SPAN", { class: !0 }); + var r = Fl(e); + t = Q3( + r, + /*label*/ + n[1] + ), r.forEach(Xn), this.h(); + }, + h() { + hr(e, "class", "svelte-qgco6m"); + }, + m(i, r) { + zm(i, e, r), ma(e, t); + }, + p(i, r) { + r & /*label*/ + 2 && s5( + t, + /*label*/ + i[1] + ); + }, + d(i) { + i && Xn(e); + } + }; +} +function l5(n) { + let e, t, i, r, s, a, o, l, u = ( + /*show_label*/ + n[2] && gh(n) + ); + var c = ( + /*Icon*/ + n[0] + ); + function h(m, p) { + return {}; + } + c && (r = ch(c, h())); + const d = ( + /*#slots*/ + n[14].default + ), f = Z3( + d, + n, + /*$$scope*/ + n[13], + null + ); + return { + c() { + e = Ml("button"), u && u.c(), t = mh(), i = Ml("div"), r && hh(r.$$.fragment), s = mh(), f && f.c(), this.h(); + }, + l(m) { + e = Pl(m, "BUTTON", { + "aria-label": !0, + "aria-haspopup": !0, + title: !0, + class: !0 + }); + var p = Fl(e); + u && u.l(p), t = uh(p), i = Pl(p, "DIV", { class: !0 }); + var v = Fl(i); + r && X3(r.$$.fragment, v), s = uh(v), f && f.l(v), v.forEach(Xn), p.forEach(Xn), this.h(); + }, + h() { + hr(i, "class", "svelte-qgco6m"), $t( + i, + "x-small", + /*size*/ + n[4] === "x-small" + ), $t( + i, + "small", + /*size*/ + n[4] === "small" + ), $t( + i, + "large", + /*size*/ + n[4] === "large" + ), $t( + i, + "medium", + /*size*/ + n[4] === "medium" + ), e.disabled = /*disabled*/ + n[7], hr( + e, + "aria-label", + /*label*/ + n[1] + ), hr( + e, + "aria-haspopup", + /*hasPopup*/ + n[8] + ), hr( + e, + "title", + /*label*/ + n[1] + ), hr(e, "class", "svelte-qgco6m"), $t( + e, + "pending", + /*pending*/ + n[3] + ), $t( + e, + "padded", + /*padded*/ + n[5] + ), $t( + e, + "highlight", + /*highlight*/ + n[6] + ), $t( + e, + "transparent", + /*transparent*/ + n[9] + ), Ys(e, "color", !/*disabled*/ + n[7] && /*_color*/ + n[11] ? ( + /*_color*/ + n[11] + ) : "var(--block-label-text-color)"), Ys(e, "--bg-color", /*disabled*/ + n[7] ? "auto" : ( + /*background*/ + n[10] + )); + }, + m(m, p) { + zm(m, e, p), u && u.m(e, null), ma(e, t), ma(e, i), r && fh(r, i, null), ma(i, s), f && f.m(i, null), a = !0, o || (l = r5( + e, + "click", + /*click_handler*/ + n[15] + ), o = !0); + }, + p(m, [p]) { + if (/*show_label*/ + m[2] ? u ? u.p(m, p) : (u = gh(m), u.c(), u.m(e, t)) : u && (u.d(1), u = null), p & /*Icon*/ + 1 && c !== (c = /*Icon*/ + m[0])) { + if (r) { + t5(); + const v = r; + Yo(v.$$.fragment, 1, 0, () => { + dh(v, 1); + }), j3(); + } + c ? (r = ch(c, h()), hh(r.$$.fragment), Ko(r.$$.fragment, 1), fh(r, i, s)) : r = null; + } + f && f.p && (!a || p & /*$$scope*/ + 8192) && o5( + f, + d, + m, + /*$$scope*/ + m[13], + a ? e5( + d, + /*$$scope*/ + m[13], + p, + null + ) : J3( + /*$$scope*/ + m[13] + ), + null + ), (!a || p & /*size*/ + 16) && $t( + i, + "x-small", + /*size*/ + m[4] === "x-small" + ), (!a || p & /*size*/ + 16) && $t( + i, + "small", + /*size*/ + m[4] === "small" + ), (!a || p & /*size*/ + 16) && $t( + i, + "large", + /*size*/ + m[4] === "large" + ), (!a || p & /*size*/ + 16) && $t( + i, + "medium", + /*size*/ + m[4] === "medium" + ), (!a || p & /*disabled*/ + 128) && (e.disabled = /*disabled*/ + m[7]), (!a || p & /*label*/ + 2) && hr( + e, + "aria-label", + /*label*/ + m[1] + ), (!a || p & /*hasPopup*/ + 256) && hr( + e, + "aria-haspopup", + /*hasPopup*/ + m[8] + ), (!a || p & /*label*/ + 2) && hr( + e, + "title", + /*label*/ + m[1] + ), (!a || p & /*pending*/ + 8) && $t( + e, + "pending", + /*pending*/ + m[3] + ), (!a || p & /*padded*/ + 32) && $t( + e, + "padded", + /*padded*/ + m[5] + ), (!a || p & /*highlight*/ + 64) && $t( + e, + "highlight", + /*highlight*/ + m[6] + ), (!a || p & /*transparent*/ + 512) && $t( + e, + "transparent", + /*transparent*/ + m[9] + ), p & /*disabled, _color*/ + 2176 && Ys(e, "color", !/*disabled*/ + m[7] && /*_color*/ + m[11] ? ( + /*_color*/ + m[11] + ) : "var(--block-label-text-color)"), p & /*disabled, background*/ + 1152 && Ys(e, "--bg-color", /*disabled*/ + m[7] ? "auto" : ( + /*background*/ + m[10] + )); + }, + i(m) { + a || (r && Ko(r.$$.fragment, m), Ko(f, m), a = !0); + }, + o(m) { + r && Yo(r.$$.fragment, m), Yo(f, m), a = !1; + }, + d(m) { + m && Xn(e), u && u.d(), r && dh(r), f && f.d(m), o = !1, l(); + } + }; +} +function u5(n, e, t) { + let i, { $$slots: r = {}, $$scope: s } = e, { Icon: a } = e, { label: o = "" } = e, { show_label: l = !1 } = e, { pending: u = !1 } = e, { size: c = "small" } = e, { padded: h = !0 } = e, { highlight: d = !1 } = e, { disabled: f = !1 } = e, { hasPopup: m = !1 } = e, { color: p = "var(--block-label-text-color)" } = e, { transparent: v = !1 } = e, { background: b = "var(--block-background-fill)" } = e; + function E(y) { + W3.call(this, n, y); + } + return n.$$set = (y) => { + "Icon" in y && t(0, a = y.Icon), "label" in y && t(1, o = y.label), "show_label" in y && t(2, l = y.show_label), "pending" in y && t(3, u = y.pending), "size" in y && t(4, c = y.size), "padded" in y && t(5, h = y.padded), "highlight" in y && t(6, d = y.highlight), "disabled" in y && t(7, f = y.disabled), "hasPopup" in y && t(8, m = y.hasPopup), "color" in y && t(12, p = y.color), "transparent" in y && t(9, v = y.transparent), "background" in y && t(10, b = y.background), "$$scope" in y && t(13, s = y.$$scope); + }, n.$$.update = () => { + n.$$.dirty & /*highlight, color*/ + 4160 && t(11, i = d ? "var(--color-accent)" : p); + }, [ + a, + o, + l, + u, + c, + h, + d, + f, + m, + v, + b, + i, + p, + s, + r, + E + ]; +} +class c5 extends Y3 { + constructor(e) { + super(), i5(this, e, u5, l5, n5, { + Icon: 0, + label: 1, + show_label: 2, + pending: 3, + size: 4, + padded: 5, + highlight: 6, + disabled: 7, + hasPopup: 8, + color: 12, + transparent: 9, + background: 10 + }); + } +} +const { + SvelteComponent: g8, + append_hydration: p8, + attr: v8, + binding_callbacks: y8, + children: _8, + claim_element: b8, + create_slot: E8, + detach: S8, + element: T8, + get_all_dirty_from_scope: x8, + get_slot_changes: A8, + init: D8, + insert_hydration: w8, + safe_not_equal: k8, + toggle_class: L8, + transition_in: I8, + transition_out: R8, + update_slot_base: C8 +} = window.__gradio__svelte__internal, { + SvelteComponent: F8, + append_hydration: P8, + attr: M8, + children: O8, + claim_svg_element: $8, + detach: B8, + init: N8, + insert_hydration: U8, + noop: G8, + safe_not_equal: z8, + svg_element: q8 +} = window.__gradio__svelte__internal, { + SvelteComponent: H8, + append_hydration: V8, + attr: K8, + children: Y8, + claim_svg_element: W8, + detach: j8, + init: X8, + insert_hydration: Q8, + noop: Z8, + safe_not_equal: J8, + svg_element: eE +} = window.__gradio__svelte__internal, { + SvelteComponent: tE, + append_hydration: iE, + attr: rE, + children: nE, + claim_svg_element: sE, + detach: aE, + init: oE, + insert_hydration: lE, + noop: uE, + safe_not_equal: cE, + svg_element: hE +} = window.__gradio__svelte__internal, { + SvelteComponent: dE, + append_hydration: fE, + attr: mE, + children: gE, + claim_svg_element: pE, + detach: vE, + init: yE, + insert_hydration: _E, + noop: bE, + safe_not_equal: EE, + svg_element: SE +} = window.__gradio__svelte__internal, { + SvelteComponent: TE, + append_hydration: xE, + attr: AE, + children: DE, + claim_svg_element: wE, + detach: kE, + init: LE, + insert_hydration: IE, + noop: RE, + safe_not_equal: CE, + svg_element: FE +} = window.__gradio__svelte__internal, { + SvelteComponent: PE, + append_hydration: ME, + attr: OE, + children: $E, + claim_svg_element: BE, + detach: NE, + init: UE, + insert_hydration: GE, + noop: zE, + safe_not_equal: qE, + svg_element: HE +} = window.__gradio__svelte__internal, { + SvelteComponent: VE, + append_hydration: KE, + attr: YE, + children: WE, + claim_svg_element: jE, + detach: XE, + init: QE, + insert_hydration: ZE, + noop: JE, + safe_not_equal: eS, + svg_element: tS +} = window.__gradio__svelte__internal, { + SvelteComponent: iS, + append_hydration: rS, + attr: nS, + children: sS, + claim_svg_element: aS, + detach: oS, + init: lS, + insert_hydration: uS, + noop: cS, + safe_not_equal: hS, + svg_element: dS +} = window.__gradio__svelte__internal, { + SvelteComponent: fS, + append_hydration: mS, + attr: gS, + children: pS, + claim_svg_element: vS, + detach: yS, + init: _S, + insert_hydration: bS, + noop: ES, + safe_not_equal: SS, + svg_element: TS +} = window.__gradio__svelte__internal, { + SvelteComponent: xS, + append_hydration: AS, + attr: DS, + children: wS, + claim_svg_element: kS, + detach: LS, + init: IS, + insert_hydration: RS, + noop: CS, + safe_not_equal: FS, + svg_element: PS +} = window.__gradio__svelte__internal, { + SvelteComponent: MS, + append_hydration: OS, + attr: $S, + children: BS, + claim_svg_element: NS, + detach: US, + init: GS, + insert_hydration: zS, + noop: qS, + safe_not_equal: HS, + svg_element: VS +} = window.__gradio__svelte__internal, { + SvelteComponent: KS, + append_hydration: YS, + attr: WS, + children: jS, + claim_svg_element: XS, + detach: QS, + init: ZS, + insert_hydration: JS, + noop: eT, + safe_not_equal: tT, + svg_element: iT +} = window.__gradio__svelte__internal, { + SvelteComponent: h5, + append_hydration: Wo, + attr: xi, + children: Ws, + claim_svg_element: js, + detach: Fn, + init: d5, + insert_hydration: f5, + noop: jo, + safe_not_equal: m5, + set_style: Oi, + svg_element: Xs +} = window.__gradio__svelte__internal; +function g5(n) { + let e, t, i, r; + return { + c() { + e = Xs("svg"), t = Xs("g"), i = Xs("path"), r = Xs("path"), this.h(); + }, + l(s) { + e = js(s, "svg", { + width: !0, + height: !0, + viewBox: !0, + version: !0, + xmlns: !0, + "xmlns:xlink": !0, + "xml:space": !0, + stroke: !0, + style: !0 + }); + var a = Ws(e); + t = js(a, "g", { transform: !0 }); + var o = Ws(t); + i = js(o, "path", { d: !0, style: !0 }), Ws(i).forEach(Fn), o.forEach(Fn), r = js(a, "path", { d: !0, style: !0 }), Ws(r).forEach(Fn), a.forEach(Fn), this.h(); + }, + h() { + xi(i, "d", "M18,6L6.087,17.913"), Oi(i, "fill", "none"), Oi(i, "fill-rule", "nonzero"), Oi(i, "stroke-width", "2px"), xi(t, "transform", "matrix(1.14096,-0.140958,-0.140958,1.14096,-0.0559523,0.0559523)"), xi(r, "d", "M4.364,4.364L19.636,19.636"), Oi(r, "fill", "none"), Oi(r, "fill-rule", "nonzero"), Oi(r, "stroke-width", "2px"), xi(e, "width", "100%"), xi(e, "height", "100%"), xi(e, "viewBox", "0 0 24 24"), xi(e, "version", "1.1"), xi(e, "xmlns", "http://www.w3.org/2000/svg"), xi(e, "xmlns:xlink", "http://www.w3.org/1999/xlink"), xi(e, "xml:space", "preserve"), xi(e, "stroke", "currentColor"), Oi(e, "fill-rule", "evenodd"), Oi(e, "clip-rule", "evenodd"), Oi(e, "stroke-linecap", "round"), Oi(e, "stroke-linejoin", "round"); + }, + m(s, a) { + f5(s, e, a), Wo(e, t), Wo(t, i), Wo(e, r); + }, + p: jo, + i: jo, + o: jo, + d(s) { + s && Fn(e); + } + }; +} +class p5 extends h5 { + constructor(e) { + super(), d5(this, e, null, g5, m5, {}); + } +} +const { + SvelteComponent: rT, + append_hydration: nT, + attr: sT, + children: aT, + claim_svg_element: oT, + detach: lT, + init: uT, + insert_hydration: cT, + noop: hT, + safe_not_equal: dT, + svg_element: fT +} = window.__gradio__svelte__internal, { + SvelteComponent: mT, + append_hydration: gT, + attr: pT, + children: vT, + claim_svg_element: yT, + detach: _T, + init: bT, + insert_hydration: ET, + noop: ST, + safe_not_equal: TT, + svg_element: xT +} = window.__gradio__svelte__internal, { + SvelteComponent: AT, + append_hydration: DT, + attr: wT, + children: kT, + claim_svg_element: LT, + detach: IT, + init: RT, + insert_hydration: CT, + noop: FT, + safe_not_equal: PT, + svg_element: MT +} = window.__gradio__svelte__internal, { + SvelteComponent: OT, + append_hydration: $T, + attr: BT, + children: NT, + claim_svg_element: UT, + detach: GT, + init: zT, + insert_hydration: qT, + noop: HT, + safe_not_equal: VT, + svg_element: KT +} = window.__gradio__svelte__internal, { + SvelteComponent: YT, + append_hydration: WT, + attr: jT, + children: XT, + claim_svg_element: QT, + detach: ZT, + init: JT, + insert_hydration: ex, + noop: tx, + safe_not_equal: ix, + svg_element: rx +} = window.__gradio__svelte__internal, { + SvelteComponent: nx, + append_hydration: sx, + attr: ax, + children: ox, + claim_svg_element: lx, + detach: ux, + init: cx, + insert_hydration: hx, + noop: dx, + safe_not_equal: fx, + svg_element: mx +} = window.__gradio__svelte__internal, { + SvelteComponent: gx, + append_hydration: px, + attr: vx, + children: yx, + claim_svg_element: _x, + detach: bx, + init: Ex, + insert_hydration: Sx, + noop: Tx, + safe_not_equal: xx, + svg_element: Ax +} = window.__gradio__svelte__internal, { + SvelteComponent: Dx, + append_hydration: wx, + attr: kx, + children: Lx, + claim_svg_element: Ix, + detach: Rx, + init: Cx, + insert_hydration: Fx, + noop: Px, + safe_not_equal: Mx, + svg_element: Ox +} = window.__gradio__svelte__internal, { + SvelteComponent: $x, + append_hydration: Bx, + attr: Nx, + children: Ux, + claim_svg_element: Gx, + detach: zx, + init: qx, + insert_hydration: Hx, + noop: Vx, + safe_not_equal: Kx, + svg_element: Yx +} = window.__gradio__svelte__internal, { + SvelteComponent: Wx, + append_hydration: jx, + attr: Xx, + children: Qx, + claim_svg_element: Zx, + detach: Jx, + init: eA, + insert_hydration: tA, + noop: iA, + safe_not_equal: rA, + svg_element: nA +} = window.__gradio__svelte__internal, { + SvelteComponent: sA, + append_hydration: aA, + attr: oA, + children: lA, + claim_svg_element: uA, + detach: cA, + init: hA, + insert_hydration: dA, + noop: fA, + safe_not_equal: mA, + svg_element: gA +} = window.__gradio__svelte__internal, { + SvelteComponent: pA, + append_hydration: vA, + attr: yA, + children: _A, + claim_svg_element: bA, + detach: EA, + init: SA, + insert_hydration: TA, + noop: xA, + safe_not_equal: AA, + svg_element: DA +} = window.__gradio__svelte__internal, { + SvelteComponent: wA, + append_hydration: kA, + attr: LA, + children: IA, + claim_svg_element: RA, + detach: CA, + init: FA, + insert_hydration: PA, + noop: MA, + safe_not_equal: OA, + svg_element: $A +} = window.__gradio__svelte__internal, { + SvelteComponent: BA, + append_hydration: NA, + attr: UA, + children: GA, + claim_svg_element: zA, + detach: qA, + init: HA, + insert_hydration: VA, + noop: KA, + safe_not_equal: YA, + svg_element: WA +} = window.__gradio__svelte__internal, { + SvelteComponent: jA, + append_hydration: XA, + attr: QA, + children: ZA, + claim_svg_element: JA, + detach: e9, + init: t9, + insert_hydration: i9, + noop: r9, + safe_not_equal: n9, + svg_element: s9 +} = window.__gradio__svelte__internal, { + SvelteComponent: a9, + append_hydration: o9, + attr: l9, + children: u9, + claim_svg_element: c9, + detach: h9, + init: d9, + insert_hydration: f9, + noop: m9, + safe_not_equal: g9, + svg_element: p9 +} = window.__gradio__svelte__internal, { + SvelteComponent: v9, + append_hydration: y9, + attr: _9, + children: b9, + claim_svg_element: E9, + detach: S9, + init: T9, + insert_hydration: x9, + noop: A9, + safe_not_equal: D9, + svg_element: w9 +} = window.__gradio__svelte__internal, { + SvelteComponent: k9, + append_hydration: L9, + attr: I9, + children: R9, + claim_svg_element: C9, + detach: F9, + init: P9, + insert_hydration: M9, + noop: O9, + safe_not_equal: $9, + svg_element: B9 +} = window.__gradio__svelte__internal, { + SvelteComponent: N9, + append_hydration: U9, + attr: G9, + children: z9, + claim_svg_element: q9, + detach: H9, + init: V9, + insert_hydration: K9, + noop: Y9, + safe_not_equal: W9, + svg_element: j9 +} = window.__gradio__svelte__internal, { + SvelteComponent: X9, + append_hydration: Q9, + attr: Z9, + children: J9, + claim_svg_element: eD, + detach: tD, + init: iD, + insert_hydration: rD, + noop: nD, + safe_not_equal: sD, + svg_element: aD +} = window.__gradio__svelte__internal, { + SvelteComponent: oD, + append_hydration: lD, + attr: uD, + children: cD, + claim_svg_element: hD, + detach: dD, + init: fD, + insert_hydration: mD, + noop: gD, + safe_not_equal: pD, + svg_element: vD +} = window.__gradio__svelte__internal, { + SvelteComponent: yD, + append_hydration: _D, + attr: bD, + children: ED, + claim_svg_element: SD, + detach: TD, + init: xD, + insert_hydration: AD, + noop: DD, + safe_not_equal: wD, + svg_element: kD +} = window.__gradio__svelte__internal, { + SvelteComponent: LD, + append_hydration: ID, + attr: RD, + children: CD, + claim_svg_element: FD, + detach: PD, + init: MD, + insert_hydration: OD, + noop: $D, + safe_not_equal: BD, + svg_element: ND +} = window.__gradio__svelte__internal, { + SvelteComponent: UD, + append_hydration: GD, + attr: zD, + children: qD, + claim_svg_element: HD, + detach: VD, + init: KD, + insert_hydration: YD, + noop: WD, + safe_not_equal: jD, + svg_element: XD +} = window.__gradio__svelte__internal, { + SvelteComponent: QD, + append_hydration: ZD, + attr: JD, + children: ew, + claim_svg_element: tw, + detach: iw, + init: rw, + insert_hydration: nw, + noop: sw, + safe_not_equal: aw, + svg_element: ow +} = window.__gradio__svelte__internal, { + SvelteComponent: lw, + append_hydration: uw, + attr: cw, + children: hw, + claim_svg_element: dw, + detach: fw, + init: mw, + insert_hydration: gw, + noop: pw, + safe_not_equal: vw, + svg_element: yw +} = window.__gradio__svelte__internal, { + SvelteComponent: _w, + append_hydration: bw, + attr: Ew, + children: Sw, + claim_svg_element: Tw, + detach: xw, + init: Aw, + insert_hydration: Dw, + noop: ww, + safe_not_equal: kw, + svg_element: Lw +} = window.__gradio__svelte__internal, { + SvelteComponent: Iw, + append_hydration: Rw, + attr: Cw, + children: Fw, + claim_svg_element: Pw, + detach: Mw, + init: Ow, + insert_hydration: $w, + noop: Bw, + safe_not_equal: Nw, + svg_element: Uw +} = window.__gradio__svelte__internal, { + SvelteComponent: Gw, + append_hydration: zw, + attr: qw, + children: Hw, + claim_svg_element: Vw, + detach: Kw, + init: Yw, + insert_hydration: Ww, + noop: jw, + safe_not_equal: Xw, + svg_element: Qw +} = window.__gradio__svelte__internal, { + SvelteComponent: Zw, + append_hydration: Jw, + attr: ek, + children: tk, + claim_svg_element: ik, + detach: rk, + init: nk, + insert_hydration: sk, + noop: ak, + safe_not_equal: ok, + svg_element: lk +} = window.__gradio__svelte__internal, { + SvelteComponent: v5, + append_hydration: ph, + attr: It, + children: Xo, + claim_svg_element: Qo, + detach: Qs, + init: y5, + insert_hydration: _5, + noop: Zo, + safe_not_equal: b5, + svg_element: Jo +} = window.__gradio__svelte__internal; +function E5(n) { + let e, t, i; + return { + c() { + e = Jo("svg"), t = Jo("rect"), i = Jo("rect"), this.h(); + }, + l(r) { + e = Qo(r, "svg", { + xmlns: !0, + width: !0, + height: !0, + viewBox: !0, + fill: !0, + stroke: !0, + "stroke-width": !0, + "stroke-linecap": !0, + "stroke-linejoin": !0 + }); + var s = Xo(e); + t = Qo(s, "rect", { + x: !0, + y: !0, + width: !0, + height: !0 + }), Xo(t).forEach(Qs), i = Qo(s, "rect", { + x: !0, + y: !0, + width: !0, + height: !0 + }), Xo(i).forEach(Qs), s.forEach(Qs), this.h(); + }, + h() { + It(t, "x", "6"), It(t, "y", "4"), It(t, "width", "4"), It(t, "height", "16"), It(i, "x", "14"), It(i, "y", "4"), It(i, "width", "4"), It(i, "height", "16"), It(e, "xmlns", "http://www.w3.org/2000/svg"), It(e, "width", "100%"), It(e, "height", "100%"), It(e, "viewBox", "0 0 24 24"), It(e, "fill", "currentColor"), It(e, "stroke", "currentColor"), It(e, "stroke-width", "1.5"), It(e, "stroke-linecap", "round"), It(e, "stroke-linejoin", "round"); + }, + m(r, s) { + _5(r, e, s), ph(e, t), ph(e, i); + }, + p: Zo, + i: Zo, + o: Zo, + d(r) { + r && Qs(e); + } + }; +} +class qm extends v5 { + constructor(e) { + super(), y5(this, e, null, E5, b5, {}); + } +} +const { + SvelteComponent: S5, + append_hydration: T5, + attr: $i, + children: vh, + claim_svg_element: yh, + detach: el, + init: x5, + insert_hydration: A5, + noop: tl, + safe_not_equal: D5, + svg_element: _h +} = window.__gradio__svelte__internal; +function w5(n) { + let e, t; + return { + c() { + e = _h("svg"), t = _h("polygon"), this.h(); + }, + l(i) { + e = yh(i, "svg", { + xmlns: !0, + width: !0, + height: !0, + viewBox: !0, + fill: !0, + stroke: !0, + "stroke-width": !0, + "stroke-linecap": !0, + "stroke-linejoin": !0 + }); + var r = vh(e); + t = yh(r, "polygon", { points: !0 }), vh(t).forEach(el), r.forEach(el), this.h(); + }, + h() { + $i(t, "points", "5 3 19 12 5 21 5 3"), $i(e, "xmlns", "http://www.w3.org/2000/svg"), $i(e, "width", "100%"), $i(e, "height", "100%"), $i(e, "viewBox", "0 0 24 24"), $i(e, "fill", "currentColor"), $i(e, "stroke", "currentColor"), $i(e, "stroke-width", "1.5"), $i(e, "stroke-linecap", "round"), $i(e, "stroke-linejoin", "round"); + }, + m(i, r) { + A5(i, e, r), T5(e, t); + }, + p: tl, + i: tl, + o: tl, + d(i) { + i && el(e); + } + }; +} +class Hm extends S5 { + constructor(e) { + super(), x5(this, e, null, w5, D5, {}); + } +} +const { + SvelteComponent: uk, + append_hydration: ck, + attr: hk, + children: dk, + claim_svg_element: fk, + detach: mk, + init: gk, + insert_hydration: pk, + noop: vk, + safe_not_equal: yk, + svg_element: _k +} = window.__gradio__svelte__internal, { + SvelteComponent: bk, + append_hydration: Ek, + attr: Sk, + children: Tk, + claim_svg_element: xk, + detach: Ak, + init: Dk, + insert_hydration: wk, + noop: kk, + safe_not_equal: Lk, + svg_element: Ik +} = window.__gradio__svelte__internal, { + SvelteComponent: Rk, + append_hydration: Ck, + attr: Fk, + children: Pk, + claim_svg_element: Mk, + detach: Ok, + init: $k, + insert_hydration: Bk, + noop: Nk, + safe_not_equal: Uk, + set_style: Gk, + svg_element: zk +} = window.__gradio__svelte__internal, { + SvelteComponent: qk, + append_hydration: Hk, + attr: Vk, + children: Kk, + claim_svg_element: Yk, + detach: Wk, + init: jk, + insert_hydration: Xk, + noop: Qk, + safe_not_equal: Zk, + svg_element: Jk +} = window.__gradio__svelte__internal, { + SvelteComponent: eL, + append_hydration: tL, + attr: iL, + children: rL, + claim_svg_element: nL, + detach: sL, + init: aL, + insert_hydration: oL, + noop: lL, + safe_not_equal: uL, + svg_element: cL +} = window.__gradio__svelte__internal, { + SvelteComponent: hL, + append_hydration: dL, + attr: fL, + children: mL, + claim_svg_element: gL, + detach: pL, + init: vL, + insert_hydration: yL, + noop: _L, + safe_not_equal: bL, + svg_element: EL +} = window.__gradio__svelte__internal, { + SvelteComponent: SL, + append_hydration: TL, + attr: xL, + children: AL, + claim_svg_element: DL, + detach: wL, + init: kL, + insert_hydration: LL, + noop: IL, + safe_not_equal: RL, + svg_element: CL +} = window.__gradio__svelte__internal, { + SvelteComponent: FL, + append_hydration: PL, + attr: ML, + children: OL, + claim_svg_element: $L, + detach: BL, + init: NL, + insert_hydration: UL, + noop: GL, + safe_not_equal: zL, + svg_element: qL +} = window.__gradio__svelte__internal, { + SvelteComponent: HL, + append_hydration: VL, + attr: KL, + children: YL, + claim_svg_element: WL, + detach: jL, + init: XL, + insert_hydration: QL, + noop: ZL, + safe_not_equal: JL, + svg_element: eI +} = window.__gradio__svelte__internal, { + SvelteComponent: tI, + append_hydration: iI, + attr: rI, + children: nI, + claim_svg_element: sI, + detach: aI, + init: oI, + insert_hydration: lI, + noop: uI, + safe_not_equal: cI, + svg_element: hI +} = window.__gradio__svelte__internal, { + SvelteComponent: dI, + append_hydration: fI, + attr: mI, + children: gI, + claim_svg_element: pI, + detach: vI, + init: yI, + insert_hydration: _I, + noop: bI, + safe_not_equal: EI, + svg_element: SI +} = window.__gradio__svelte__internal, { + SvelteComponent: TI, + append_hydration: xI, + attr: AI, + children: DI, + claim_svg_element: wI, + claim_text: kI, + detach: LI, + init: II, + insert_hydration: RI, + noop: CI, + safe_not_equal: FI, + svg_element: PI, + text: MI +} = window.__gradio__svelte__internal, { + SvelteComponent: OI, + append_hydration: $I, + attr: BI, + children: NI, + claim_svg_element: UI, + detach: GI, + init: zI, + insert_hydration: qI, + noop: HI, + safe_not_equal: VI, + svg_element: KI +} = window.__gradio__svelte__internal, { + SvelteComponent: YI, + append_hydration: WI, + attr: jI, + children: XI, + claim_svg_element: QI, + detach: ZI, + init: JI, + insert_hydration: eR, + noop: tR, + safe_not_equal: iR, + svg_element: rR +} = window.__gradio__svelte__internal, { + SvelteComponent: nR, + append_hydration: sR, + attr: aR, + children: oR, + claim_svg_element: lR, + detach: uR, + init: cR, + insert_hydration: hR, + noop: dR, + safe_not_equal: fR, + svg_element: mR +} = window.__gradio__svelte__internal, { + SvelteComponent: gR, + append_hydration: pR, + attr: vR, + children: yR, + claim_svg_element: _R, + detach: bR, + init: ER, + insert_hydration: SR, + noop: TR, + safe_not_equal: xR, + svg_element: AR +} = window.__gradio__svelte__internal, { + SvelteComponent: DR, + append_hydration: wR, + attr: kR, + children: LR, + claim_svg_element: IR, + detach: RR, + init: CR, + insert_hydration: FR, + noop: PR, + safe_not_equal: MR, + svg_element: OR +} = window.__gradio__svelte__internal, { + SvelteComponent: $R, + append_hydration: BR, + attr: NR, + children: UR, + claim_svg_element: GR, + detach: zR, + init: qR, + insert_hydration: HR, + noop: VR, + safe_not_equal: KR, + svg_element: YR +} = window.__gradio__svelte__internal, { + SvelteComponent: WR, + append_hydration: jR, + attr: XR, + children: QR, + claim_svg_element: ZR, + detach: JR, + init: eC, + insert_hydration: tC, + noop: iC, + safe_not_equal: rC, + svg_element: nC +} = window.__gradio__svelte__internal, { + SvelteComponent: sC, + append_hydration: aC, + attr: oC, + children: lC, + claim_svg_element: uC, + claim_text: cC, + detach: hC, + init: dC, + insert_hydration: fC, + noop: mC, + safe_not_equal: gC, + svg_element: pC, + text: vC +} = window.__gradio__svelte__internal, { + SvelteComponent: yC, + append_hydration: _C, + attr: bC, + children: EC, + claim_svg_element: SC, + claim_text: TC, + detach: xC, + init: AC, + insert_hydration: DC, + noop: wC, + safe_not_equal: kC, + svg_element: LC, + text: IC +} = window.__gradio__svelte__internal, { + SvelteComponent: RC, + append_hydration: CC, + attr: FC, + children: PC, + claim_svg_element: MC, + claim_text: OC, + detach: $C, + init: BC, + insert_hydration: NC, + noop: UC, + safe_not_equal: GC, + svg_element: zC, + text: qC +} = window.__gradio__svelte__internal, { + SvelteComponent: HC, + append_hydration: VC, + attr: KC, + children: YC, + claim_svg_element: WC, + detach: jC, + init: XC, + insert_hydration: QC, + noop: ZC, + safe_not_equal: JC, + svg_element: eF +} = window.__gradio__svelte__internal, { + SvelteComponent: tF, + append_hydration: iF, + attr: rF, + children: nF, + claim_svg_element: sF, + detach: aF, + init: oF, + insert_hydration: lF, + noop: uF, + safe_not_equal: cF, + svg_element: hF +} = window.__gradio__svelte__internal, { + SvelteComponent: dF, + append_hydration: fF, + attr: mF, + children: gF, + claim_svg_element: pF, + detach: vF, + init: yF, + insert_hydration: _F, + noop: bF, + safe_not_equal: EF, + svg_element: SF +} = window.__gradio__svelte__internal, { + SvelteComponent: TF, + append_hydration: xF, + attr: AF, + children: DF, + claim_svg_element: wF, + detach: kF, + init: LF, + insert_hydration: IF, + noop: RF, + safe_not_equal: CF, + svg_element: FF +} = window.__gradio__svelte__internal, { + SvelteComponent: PF, + append_hydration: MF, + attr: OF, + children: $F, + claim_svg_element: BF, + detach: NF, + init: UF, + insert_hydration: GF, + noop: zF, + safe_not_equal: qF, + svg_element: HF +} = window.__gradio__svelte__internal, { + SvelteComponent: VF, + append_hydration: KF, + attr: YF, + children: WF, + claim_svg_element: jF, + detach: XF, + init: QF, + insert_hydration: ZF, + noop: JF, + safe_not_equal: eP, + svg_element: tP +} = window.__gradio__svelte__internal, { + SvelteComponent: iP, + append_hydration: rP, + attr: nP, + children: sP, + claim_svg_element: aP, + detach: oP, + init: lP, + insert_hydration: uP, + noop: cP, + safe_not_equal: hP, + svg_element: dP +} = window.__gradio__svelte__internal, { + SvelteComponent: fP, + append_hydration: mP, + attr: gP, + children: pP, + claim_svg_element: vP, + detach: yP, + init: _P, + insert_hydration: bP, + noop: EP, + safe_not_equal: SP, + svg_element: TP +} = window.__gradio__svelte__internal, k5 = [ + { color: "red", primary: 600, secondary: 100 }, + { color: "green", primary: 600, secondary: 100 }, + { color: "blue", primary: 600, secondary: 100 }, + { color: "yellow", primary: 500, secondary: 100 }, + { color: "purple", primary: 600, secondary: 100 }, + { color: "teal", primary: 600, secondary: 100 }, + { color: "orange", primary: 600, secondary: 100 }, + { color: "cyan", primary: 600, secondary: 100 }, + { color: "lime", primary: 500, secondary: 100 }, + { color: "pink", primary: 600, secondary: 100 } +], bh = { + inherit: "inherit", + current: "currentColor", + transparent: "transparent", + black: "#000", + white: "#fff", + slate: { + 50: "#f8fafc", + 100: "#f1f5f9", + 200: "#e2e8f0", + 300: "#cbd5e1", + 400: "#94a3b8", + 500: "#64748b", + 600: "#475569", + 700: "#334155", + 800: "#1e293b", + 900: "#0f172a", + 950: "#020617" + }, + gray: { + 50: "#f9fafb", + 100: "#f3f4f6", + 200: "#e5e7eb", + 300: "#d1d5db", + 400: "#9ca3af", + 500: "#6b7280", + 600: "#4b5563", + 700: "#374151", + 800: "#1f2937", + 900: "#111827", + 950: "#030712" + }, + zinc: { + 50: "#fafafa", + 100: "#f4f4f5", + 200: "#e4e4e7", + 300: "#d4d4d8", + 400: "#a1a1aa", + 500: "#71717a", + 600: "#52525b", + 700: "#3f3f46", + 800: "#27272a", + 900: "#18181b", + 950: "#09090b" + }, + neutral: { + 50: "#fafafa", + 100: "#f5f5f5", + 200: "#e5e5e5", + 300: "#d4d4d4", + 400: "#a3a3a3", + 500: "#737373", + 600: "#525252", + 700: "#404040", + 800: "#262626", + 900: "#171717", + 950: "#0a0a0a" + }, + stone: { + 50: "#fafaf9", + 100: "#f5f5f4", + 200: "#e7e5e4", + 300: "#d6d3d1", + 400: "#a8a29e", + 500: "#78716c", + 600: "#57534e", + 700: "#44403c", + 800: "#292524", + 900: "#1c1917", + 950: "#0c0a09" + }, + red: { + 50: "#fef2f2", + 100: "#fee2e2", + 200: "#fecaca", + 300: "#fca5a5", + 400: "#f87171", + 500: "#ef4444", + 600: "#dc2626", + 700: "#b91c1c", + 800: "#991b1b", + 900: "#7f1d1d", + 950: "#450a0a" + }, + orange: { + 50: "#fff7ed", + 100: "#ffedd5", + 200: "#fed7aa", + 300: "#fdba74", + 400: "#fb923c", + 500: "#f97316", + 600: "#ea580c", + 700: "#c2410c", + 800: "#9a3412", + 900: "#7c2d12", + 950: "#431407" + }, + amber: { + 50: "#fffbeb", + 100: "#fef3c7", + 200: "#fde68a", + 300: "#fcd34d", + 400: "#fbbf24", + 500: "#f59e0b", + 600: "#d97706", + 700: "#b45309", + 800: "#92400e", + 900: "#78350f", + 950: "#451a03" + }, + yellow: { + 50: "#fefce8", + 100: "#fef9c3", + 200: "#fef08a", + 300: "#fde047", + 400: "#facc15", + 500: "#eab308", + 600: "#ca8a04", + 700: "#a16207", + 800: "#854d0e", + 900: "#713f12", + 950: "#422006" + }, + lime: { + 50: "#f7fee7", + 100: "#ecfccb", + 200: "#d9f99d", + 300: "#bef264", + 400: "#a3e635", + 500: "#84cc16", + 600: "#65a30d", + 700: "#4d7c0f", + 800: "#3f6212", + 900: "#365314", + 950: "#1a2e05" + }, + green: { + 50: "#f0fdf4", + 100: "#dcfce7", + 200: "#bbf7d0", + 300: "#86efac", + 400: "#4ade80", + 500: "#22c55e", + 600: "#16a34a", + 700: "#15803d", + 800: "#166534", + 900: "#14532d", + 950: "#052e16" + }, + emerald: { + 50: "#ecfdf5", + 100: "#d1fae5", + 200: "#a7f3d0", + 300: "#6ee7b7", + 400: "#34d399", + 500: "#10b981", + 600: "#059669", + 700: "#047857", + 800: "#065f46", + 900: "#064e3b", + 950: "#022c22" + }, + teal: { + 50: "#f0fdfa", + 100: "#ccfbf1", + 200: "#99f6e4", + 300: "#5eead4", + 400: "#2dd4bf", + 500: "#14b8a6", + 600: "#0d9488", + 700: "#0f766e", + 800: "#115e59", + 900: "#134e4a", + 950: "#042f2e" + }, + cyan: { + 50: "#ecfeff", + 100: "#cffafe", + 200: "#a5f3fc", + 300: "#67e8f9", + 400: "#22d3ee", + 500: "#06b6d4", + 600: "#0891b2", + 700: "#0e7490", + 800: "#155e75", + 900: "#164e63", + 950: "#083344" + }, + sky: { + 50: "#f0f9ff", + 100: "#e0f2fe", + 200: "#bae6fd", + 300: "#7dd3fc", + 400: "#38bdf8", + 500: "#0ea5e9", + 600: "#0284c7", + 700: "#0369a1", + 800: "#075985", + 900: "#0c4a6e", + 950: "#082f49" + }, + blue: { + 50: "#eff6ff", + 100: "#dbeafe", + 200: "#bfdbfe", + 300: "#93c5fd", + 400: "#60a5fa", + 500: "#3b82f6", + 600: "#2563eb", + 700: "#1d4ed8", + 800: "#1e40af", + 900: "#1e3a8a", + 950: "#172554" + }, + indigo: { + 50: "#eef2ff", + 100: "#e0e7ff", + 200: "#c7d2fe", + 300: "#a5b4fc", + 400: "#818cf8", + 500: "#6366f1", + 600: "#4f46e5", + 700: "#4338ca", + 800: "#3730a3", + 900: "#312e81", + 950: "#1e1b4b" + }, + violet: { + 50: "#f5f3ff", + 100: "#ede9fe", + 200: "#ddd6fe", + 300: "#c4b5fd", + 400: "#a78bfa", + 500: "#8b5cf6", + 600: "#7c3aed", + 700: "#6d28d9", + 800: "#5b21b6", + 900: "#4c1d95", + 950: "#2e1065" + }, + purple: { + 50: "#faf5ff", + 100: "#f3e8ff", + 200: "#e9d5ff", + 300: "#d8b4fe", + 400: "#c084fc", + 500: "#a855f7", + 600: "#9333ea", + 700: "#7e22ce", + 800: "#6b21a8", + 900: "#581c87", + 950: "#3b0764" + }, + fuchsia: { + 50: "#fdf4ff", + 100: "#fae8ff", + 200: "#f5d0fe", + 300: "#f0abfc", + 400: "#e879f9", + 500: "#d946ef", + 600: "#c026d3", + 700: "#a21caf", + 800: "#86198f", + 900: "#701a75", + 950: "#4a044e" + }, + pink: { + 50: "#fdf2f8", + 100: "#fce7f3", + 200: "#fbcfe8", + 300: "#f9a8d4", + 400: "#f472b6", + 500: "#ec4899", + 600: "#db2777", + 700: "#be185d", + 800: "#9d174d", + 900: "#831843", + 950: "#500724" + }, + rose: { + 50: "#fff1f2", + 100: "#ffe4e6", + 200: "#fecdd3", + 300: "#fda4af", + 400: "#fb7185", + 500: "#f43f5e", + 600: "#e11d48", + 700: "#be123c", + 800: "#9f1239", + 900: "#881337", + 950: "#4c0519" + } +}; +k5.reduce( + (n, { color: e, primary: t, secondary: i }) => ({ + ...n, + [e]: { + primary: bh[e][t], + secondary: bh[e][i] + } + }), + {} +); +const Zs = (n) => { + const e = Math.floor(n / 3600), t = Math.floor(n % 3600 / 60), i = Math.round(n) % 60, r = `${t < 10 ? "0" : ""}${t}`, s = `${i < 10 ? "0" : ""}${i}`; + return e > 0 ? `${e}:${r}:${s}` : `${t}:${s}`; +}, { + SvelteComponent: xP, + claim_component: AP, + create_component: DP, + destroy_component: wP, + init: kP, + mount_component: LP, + safe_not_equal: IP, + transition_in: RP, + transition_out: CP +} = window.__gradio__svelte__internal, { createEventDispatcher: FP } = window.__gradio__svelte__internal, { + SvelteComponent: PP, + append_hydration: MP, + attr: OP, + check_outros: $P, + children: BP, + claim_component: NP, + claim_element: UP, + claim_space: GP, + claim_text: zP, + create_component: qP, + destroy_component: HP, + detach: VP, + element: KP, + empty: YP, + group_outros: WP, + init: jP, + insert_hydration: XP, + mount_component: QP, + safe_not_equal: ZP, + set_data: JP, + space: eM, + text: tM, + toggle_class: iM, + transition_in: rM, + transition_out: nM +} = window.__gradio__svelte__internal, { + SvelteComponent: sM, + attr: aM, + children: oM, + claim_element: lM, + create_slot: uM, + detach: cM, + element: hM, + get_all_dirty_from_scope: dM, + get_slot_changes: fM, + init: mM, + insert_hydration: gM, + safe_not_equal: pM, + toggle_class: vM, + transition_in: yM, + transition_out: _M, + update_slot_base: bM +} = window.__gradio__svelte__internal, { + SvelteComponent: EM, + append_hydration: SM, + attr: TM, + check_outros: xM, + children: AM, + claim_component: DM, + claim_element: wM, + claim_space: kM, + create_component: LM, + destroy_component: IM, + detach: RM, + element: CM, + empty: FM, + group_outros: PM, + init: MM, + insert_hydration: OM, + listen: $M, + mount_component: BM, + safe_not_equal: NM, + space: UM, + toggle_class: GM, + transition_in: zM, + transition_out: qM +} = window.__gradio__svelte__internal, { + SvelteComponent: HM, + attr: VM, + children: KM, + claim_element: YM, + create_slot: WM, + detach: jM, + element: XM, + get_all_dirty_from_scope: QM, + get_slot_changes: ZM, + init: JM, + insert_hydration: eO, + null_to_empty: tO, + safe_not_equal: iO, + transition_in: rO, + transition_out: nO, + update_slot_base: sO +} = window.__gradio__svelte__internal, { + SvelteComponent: aO, + check_outros: oO, + claim_component: lO, + create_component: uO, + destroy_component: cO, + detach: hO, + empty: dO, + group_outros: fO, + init: mO, + insert_hydration: gO, + mount_component: pO, + noop: vO, + safe_not_equal: yO, + transition_in: _O, + transition_out: bO +} = window.__gradio__svelte__internal, { createEventDispatcher: EO } = window.__gradio__svelte__internal; +function dn(n) { + let e = ["", "k", "M", "G", "T", "P", "E", "Z"], t = 0; + for (; n > 1e3 && t < e.length - 1; ) + n /= 1e3, t++; + let i = e[t]; + return (Number.isInteger(n) ? n : n.toFixed(1)) + i; +} +function ga() { +} +function L5(n, e) { + return n != n ? e == e : n !== e || n && typeof n == "object" || typeof n == "function"; +} +const Vm = typeof window < "u"; +let Eh = Vm ? () => window.performance.now() : () => Date.now(), Km = Vm ? (n) => requestAnimationFrame(n) : ga; +const _n = /* @__PURE__ */ new Set(); +function Ym(n) { + _n.forEach((e) => { + e.c(n) || (_n.delete(e), e.f()); + }), _n.size !== 0 && Km(Ym); +} +function I5(n) { + let e; + return _n.size === 0 && Km(Ym), { + promise: new Promise((t) => { + _n.add(e = { c: n, f: t }); + }), + abort() { + _n.delete(e); + } + }; +} +const ln = []; +function R5(n, e = ga) { + let t; + const i = /* @__PURE__ */ new Set(); + function r(o) { + if (L5(n, o) && (n = o, t)) { + const l = !ln.length; + for (const u of i) + u[1](), ln.push(u, n); + if (l) { + for (let u = 0; u < ln.length; u += 2) + ln[u][0](ln[u + 1]); + ln.length = 0; + } + } + } + function s(o) { + r(o(n)); + } + function a(o, l = ga) { + const u = [o, l]; + return i.add(u), i.size === 1 && (t = e(r, s) || ga), o(n), () => { + i.delete(u), i.size === 0 && t && (t(), t = null); + }; + } + return { set: r, update: s, subscribe: a }; +} +function Sh(n) { + return Object.prototype.toString.call(n) === "[object Date]"; +} +function Ol(n, e, t, i) { + if (typeof t == "number" || Sh(t)) { + const r = i - t, s = (t - e) / (n.dt || 1 / 60), a = n.opts.stiffness * r, o = n.opts.damping * s, l = (a - o) * n.inv_mass, u = (s + l) * n.dt; + return Math.abs(u) < n.opts.precision && Math.abs(r) < n.opts.precision ? i : (n.settled = !1, Sh(t) ? new Date(t.getTime() + u) : t + u); + } else { + if (Array.isArray(t)) + return t.map( + (r, s) => Ol(n, e[s], t[s], i[s]) + ); + if (typeof t == "object") { + const r = {}; + for (const s in t) + r[s] = Ol(n, e[s], t[s], i[s]); + return r; + } else + throw new Error(`Cannot spring ${typeof t} values`); + } +} +function Th(n, e = {}) { + const t = R5(n), { stiffness: i = 0.15, damping: r = 0.8, precision: s = 0.01 } = e; + let a, o, l, u = n, c = n, h = 1, d = 0, f = !1; + function m(v, b = {}) { + c = v; + const E = l = {}; + return n == null || b.hard || p.stiffness >= 1 && p.damping >= 1 ? (f = !0, a = Eh(), u = v, t.set(n = c), Promise.resolve()) : (b.soft && (d = 1 / ((b.soft === !0 ? 0.5 : +b.soft) * 60), h = 0), o || (a = Eh(), f = !1, o = I5((y) => { + if (f) + return f = !1, o = null, !1; + h = Math.min(h + d, 1); + const T = { + inv_mass: h, + opts: p, + settled: !0, + dt: (y - a) * 60 / 1e3 + }, A = Ol(T, u, n, c); + return a = y, u = n, t.set(n = A), T.settled && (o = null), !T.settled; + })), new Promise((y) => { + o.promise.then(() => { + E === l && y(); + }); + })); + } + const p = { + set: m, + update: (v, b) => m(v(c, n), b), + subscribe: t.subscribe, + stiffness: i, + damping: r, + precision: s + }; + return p; +} +const { + SvelteComponent: C5, + append_hydration: Ai, + attr: $e, + children: ui, + claim_element: F5, + claim_svg_element: Di, + component_subscribe: xh, + detach: Qt, + element: P5, + init: M5, + insert_hydration: O5, + noop: Ah, + safe_not_equal: $5, + set_style: Js, + svg_element: wi, + toggle_class: Dh +} = window.__gradio__svelte__internal, { onMount: B5 } = window.__gradio__svelte__internal; +function N5(n) { + let e, t, i, r, s, a, o, l, u, c, h, d; + return { + c() { + e = P5("div"), t = wi("svg"), i = wi("g"), r = wi("path"), s = wi("path"), a = wi("path"), o = wi("path"), l = wi("g"), u = wi("path"), c = wi("path"), h = wi("path"), d = wi("path"), this.h(); + }, + l(f) { + e = F5(f, "DIV", { class: !0 }); + var m = ui(e); + t = Di(m, "svg", { + viewBox: !0, + fill: !0, + xmlns: !0, + class: !0 + }); + var p = ui(t); + i = Di(p, "g", { style: !0 }); + var v = ui(i); + r = Di(v, "path", { + d: !0, + fill: !0, + "fill-opacity": !0, + class: !0 + }), ui(r).forEach(Qt), s = Di(v, "path", { d: !0, fill: !0, class: !0 }), ui(s).forEach(Qt), a = Di(v, "path", { + d: !0, + fill: !0, + "fill-opacity": !0, + class: !0 + }), ui(a).forEach(Qt), o = Di(v, "path", { d: !0, fill: !0, class: !0 }), ui(o).forEach(Qt), v.forEach(Qt), l = Di(p, "g", { style: !0 }); + var b = ui(l); + u = Di(b, "path", { + d: !0, + fill: !0, + "fill-opacity": !0, + class: !0 + }), ui(u).forEach(Qt), c = Di(b, "path", { d: !0, fill: !0, class: !0 }), ui(c).forEach(Qt), h = Di(b, "path", { + d: !0, + fill: !0, + "fill-opacity": !0, + class: !0 + }), ui(h).forEach(Qt), d = Di(b, "path", { d: !0, fill: !0, class: !0 }), ui(d).forEach(Qt), b.forEach(Qt), p.forEach(Qt), m.forEach(Qt), this.h(); + }, + h() { + $e(r, "d", "M255.926 0.754768L509.702 139.936V221.027L255.926 81.8465V0.754768Z"), $e(r, "fill", "#FF7C00"), $e(r, "fill-opacity", "0.4"), $e(r, "class", "svelte-43sxxs"), $e(s, "d", "M509.69 139.936L254.981 279.641V361.255L509.69 221.55V139.936Z"), $e(s, "fill", "#FF7C00"), $e(s, "class", "svelte-43sxxs"), $e(a, "d", "M0.250138 139.937L254.981 279.641V361.255L0.250138 221.55V139.937Z"), $e(a, "fill", "#FF7C00"), $e(a, "fill-opacity", "0.4"), $e(a, "class", "svelte-43sxxs"), $e(o, "d", "M255.923 0.232622L0.236328 139.936V221.55L255.923 81.8469V0.232622Z"), $e(o, "fill", "#FF7C00"), $e(o, "class", "svelte-43sxxs"), Js(i, "transform", "translate(" + /*$top*/ + n[1][0] + "px, " + /*$top*/ + n[1][1] + "px)"), $e(u, "d", "M255.926 141.5L509.702 280.681V361.773L255.926 222.592V141.5Z"), $e(u, "fill", "#FF7C00"), $e(u, "fill-opacity", "0.4"), $e(u, "class", "svelte-43sxxs"), $e(c, "d", "M509.69 280.679L254.981 420.384V501.998L509.69 362.293V280.679Z"), $e(c, "fill", "#FF7C00"), $e(c, "class", "svelte-43sxxs"), $e(h, "d", "M0.250138 280.681L254.981 420.386V502L0.250138 362.295V280.681Z"), $e(h, "fill", "#FF7C00"), $e(h, "fill-opacity", "0.4"), $e(h, "class", "svelte-43sxxs"), $e(d, "d", "M255.923 140.977L0.236328 280.68V362.294L255.923 222.591V140.977Z"), $e(d, "fill", "#FF7C00"), $e(d, "class", "svelte-43sxxs"), Js(l, "transform", "translate(" + /*$bottom*/ + n[2][0] + "px, " + /*$bottom*/ + n[2][1] + "px)"), $e(t, "viewBox", "-1200 -1200 3000 3000"), $e(t, "fill", "none"), $e(t, "xmlns", "http://www.w3.org/2000/svg"), $e(t, "class", "svelte-43sxxs"), $e(e, "class", "svelte-43sxxs"), Dh( + e, + "margin", + /*margin*/ + n[0] + ); + }, + m(f, m) { + O5(f, e, m), Ai(e, t), Ai(t, i), Ai(i, r), Ai(i, s), Ai(i, a), Ai(i, o), Ai(t, l), Ai(l, u), Ai(l, c), Ai(l, h), Ai(l, d); + }, + p(f, [m]) { + m & /*$top*/ + 2 && Js(i, "transform", "translate(" + /*$top*/ + f[1][0] + "px, " + /*$top*/ + f[1][1] + "px)"), m & /*$bottom*/ + 4 && Js(l, "transform", "translate(" + /*$bottom*/ + f[2][0] + "px, " + /*$bottom*/ + f[2][1] + "px)"), m & /*margin*/ + 1 && Dh( + e, + "margin", + /*margin*/ + f[0] + ); + }, + i: Ah, + o: Ah, + d(f) { + f && Qt(e); + } + }; +} +function U5(n, e, t) { + let i, r; + var s = this && this.__awaiter || function(f, m, p, v) { + function b(E) { + return E instanceof p ? E : new p(function(y) { + y(E); + }); + } + return new (p || (p = Promise))(function(E, y) { + function T(w) { + try { + k(v.next(w)); + } catch (L) { + y(L); + } + } + function A(w) { + try { + k(v.throw(w)); + } catch (L) { + y(L); + } + } + function k(w) { + w.done ? E(w.value) : b(w.value).then(T, A); + } + k((v = v.apply(f, m || [])).next()); + }); + }; + let { margin: a = !0 } = e; + const o = Th([0, 0]); + xh(n, o, (f) => t(1, i = f)); + const l = Th([0, 0]); + xh(n, l, (f) => t(2, r = f)); + let u; + function c() { + return s(this, void 0, void 0, function* () { + yield Promise.all([o.set([125, 140]), l.set([-125, -140])]), yield Promise.all([o.set([-125, 140]), l.set([125, -140])]), yield Promise.all([o.set([-125, 0]), l.set([125, -0])]), yield Promise.all([o.set([125, 0]), l.set([-125, 0])]); + }); + } + function h() { + return s(this, void 0, void 0, function* () { + yield c(), u || h(); + }); + } + function d() { + return s(this, void 0, void 0, function* () { + yield Promise.all([o.set([125, 0]), l.set([-125, 0])]), h(); + }); + } + return B5(() => (d(), () => u = !0)), n.$$set = (f) => { + "margin" in f && t(0, a = f.margin); + }, [a, i, r, o, l]; +} +class G5 extends C5 { + constructor(e) { + super(), M5(this, e, U5, N5, $5, { margin: 0 }); + } +} +const { + SvelteComponent: z5, + append_hydration: zr, + attr: Fi, + binding_callbacks: wh, + check_outros: $l, + children: ji, + claim_component: Wm, + claim_element: Xi, + claim_space: gi, + claim_text: ot, + create_component: jm, + create_slot: Xm, + destroy_component: Qm, + destroy_each: Zm, + detach: ve, + element: Qi, + empty: Ei, + ensure_array_like: Ba, + get_all_dirty_from_scope: Jm, + get_slot_changes: e1, + group_outros: Bl, + init: q5, + insert_hydration: we, + mount_component: t1, + noop: Nl, + safe_not_equal: H5, + set_data: Si, + set_style: Ir, + space: pi, + text: lt, + toggle_class: hi, + transition_in: Ci, + transition_out: Zi, + update_slot_base: i1 +} = window.__gradio__svelte__internal, { tick: V5 } = window.__gradio__svelte__internal, { onDestroy: K5 } = window.__gradio__svelte__internal, { createEventDispatcher: Y5 } = window.__gradio__svelte__internal, W5 = (n) => ({}), kh = (n) => ({}), j5 = (n) => ({}), Lh = (n) => ({}); +function Ih(n, e, t) { + const i = n.slice(); + return i[40] = e[t], i[42] = t, i; +} +function Rh(n, e, t) { + const i = n.slice(); + return i[40] = e[t], i; +} +function X5(n) { + let e, t, i, r, s = ( + /*i18n*/ + n[1]("common.error") + "" + ), a, o, l; + t = new c5({ + props: { + Icon: p5, + label: ( + /*i18n*/ + n[1]("common.clear") + ), + disabled: !1 + } + }), t.$on( + "click", + /*click_handler*/ + n[32] + ); + const u = ( + /*#slots*/ + n[30].error + ), c = Xm( + u, + n, + /*$$scope*/ + n[29], + kh + ); + return { + c() { + e = Qi("div"), jm(t.$$.fragment), i = pi(), r = Qi("span"), a = lt(s), o = pi(), c && c.c(), this.h(); + }, + l(h) { + e = Xi(h, "DIV", { class: !0 }); + var d = ji(e); + Wm(t.$$.fragment, d), d.forEach(ve), i = gi(h), r = Xi(h, "SPAN", { class: !0 }); + var f = ji(r); + a = ot(f, s), f.forEach(ve), o = gi(h), c && c.l(h), this.h(); + }, + h() { + Fi(e, "class", "clear-status svelte-17v219f"), Fi(r, "class", "error svelte-17v219f"); + }, + m(h, d) { + we(h, e, d), t1(t, e, null), we(h, i, d), we(h, r, d), zr(r, a), we(h, o, d), c && c.m(h, d), l = !0; + }, + p(h, d) { + const f = {}; + d[0] & /*i18n*/ + 2 && (f.label = /*i18n*/ + h[1]("common.clear")), t.$set(f), (!l || d[0] & /*i18n*/ + 2) && s !== (s = /*i18n*/ + h[1]("common.error") + "") && Si(a, s), c && c.p && (!l || d[0] & /*$$scope*/ + 536870912) && i1( + c, + u, + h, + /*$$scope*/ + h[29], + l ? e1( + u, + /*$$scope*/ + h[29], + d, + W5 + ) : Jm( + /*$$scope*/ + h[29] + ), + kh + ); + }, + i(h) { + l || (Ci(t.$$.fragment, h), Ci(c, h), l = !0); + }, + o(h) { + Zi(t.$$.fragment, h), Zi(c, h), l = !1; + }, + d(h) { + h && (ve(e), ve(i), ve(r), ve(o)), Qm(t), c && c.d(h); + } + }; +} +function Q5(n) { + let e, t, i, r, s, a, o, l, u, c = ( + /*variant*/ + n[8] === "default" && /*show_eta_bar*/ + n[18] && /*show_progress*/ + n[6] === "full" && Ch(n) + ); + function h(y, T) { + if ( + /*progress*/ + y[7] + ) return e6; + if ( + /*queue_position*/ + y[2] !== null && /*queue_size*/ + y[3] !== void 0 && /*queue_position*/ + y[2] >= 0 + ) return J5; + if ( + /*queue_position*/ + y[2] === 0 + ) return Z5; + } + let d = h(n), f = d && d(n), m = ( + /*timer*/ + n[5] && Mh(n) + ); + const p = [n6, r6], v = []; + function b(y, T) { + return ( + /*last_progress_level*/ + y[15] != null ? 0 : ( + /*show_progress*/ + y[6] === "full" ? 1 : -1 + ) + ); + } + ~(s = b(n)) && (a = v[s] = p[s](n)); + let E = !/*timer*/ + n[5] && zh(n); + return { + c() { + c && c.c(), e = pi(), t = Qi("div"), f && f.c(), i = pi(), m && m.c(), r = pi(), a && a.c(), o = pi(), E && E.c(), l = Ei(), this.h(); + }, + l(y) { + c && c.l(y), e = gi(y), t = Xi(y, "DIV", { class: !0 }); + var T = ji(t); + f && f.l(T), i = gi(T), m && m.l(T), T.forEach(ve), r = gi(y), a && a.l(y), o = gi(y), E && E.l(y), l = Ei(), this.h(); + }, + h() { + Fi(t, "class", "progress-text svelte-17v219f"), hi( + t, + "meta-text-center", + /*variant*/ + n[8] === "center" + ), hi( + t, + "meta-text", + /*variant*/ + n[8] === "default" + ); + }, + m(y, T) { + c && c.m(y, T), we(y, e, T), we(y, t, T), f && f.m(t, null), zr(t, i), m && m.m(t, null), we(y, r, T), ~s && v[s].m(y, T), we(y, o, T), E && E.m(y, T), we(y, l, T), u = !0; + }, + p(y, T) { + /*variant*/ + y[8] === "default" && /*show_eta_bar*/ + y[18] && /*show_progress*/ + y[6] === "full" ? c ? c.p(y, T) : (c = Ch(y), c.c(), c.m(e.parentNode, e)) : c && (c.d(1), c = null), d === (d = h(y)) && f ? f.p(y, T) : (f && f.d(1), f = d && d(y), f && (f.c(), f.m(t, i))), /*timer*/ + y[5] ? m ? m.p(y, T) : (m = Mh(y), m.c(), m.m(t, null)) : m && (m.d(1), m = null), (!u || T[0] & /*variant*/ + 256) && hi( + t, + "meta-text-center", + /*variant*/ + y[8] === "center" + ), (!u || T[0] & /*variant*/ + 256) && hi( + t, + "meta-text", + /*variant*/ + y[8] === "default" + ); + let A = s; + s = b(y), s === A ? ~s && v[s].p(y, T) : (a && (Bl(), Zi(v[A], 1, 1, () => { + v[A] = null; + }), $l()), ~s ? (a = v[s], a ? a.p(y, T) : (a = v[s] = p[s](y), a.c()), Ci(a, 1), a.m(o.parentNode, o)) : a = null), /*timer*/ + y[5] ? E && (Bl(), Zi(E, 1, 1, () => { + E = null; + }), $l()) : E ? (E.p(y, T), T[0] & /*timer*/ + 32 && Ci(E, 1)) : (E = zh(y), E.c(), Ci(E, 1), E.m(l.parentNode, l)); + }, + i(y) { + u || (Ci(a), Ci(E), u = !0); + }, + o(y) { + Zi(a), Zi(E), u = !1; + }, + d(y) { + y && (ve(e), ve(t), ve(r), ve(o), ve(l)), c && c.d(y), f && f.d(), m && m.d(), ~s && v[s].d(y), E && E.d(y); + } + }; +} +function Ch(n) { + let e, t = `translateX(${/*eta_level*/ + (n[17] || 0) * 100 - 100}%)`; + return { + c() { + e = Qi("div"), this.h(); + }, + l(i) { + e = Xi(i, "DIV", { class: !0 }), ji(e).forEach(ve), this.h(); + }, + h() { + Fi(e, "class", "eta-bar svelte-17v219f"), Ir(e, "transform", t); + }, + m(i, r) { + we(i, e, r); + }, + p(i, r) { + r[0] & /*eta_level*/ + 131072 && t !== (t = `translateX(${/*eta_level*/ + (i[17] || 0) * 100 - 100}%)`) && Ir(e, "transform", t); + }, + d(i) { + i && ve(e); + } + }; +} +function Z5(n) { + let e; + return { + c() { + e = lt("processing |"); + }, + l(t) { + e = ot(t, "processing |"); + }, + m(t, i) { + we(t, e, i); + }, + p: Nl, + d(t) { + t && ve(e); + } + }; +} +function J5(n) { + let e, t = ( + /*queue_position*/ + n[2] + 1 + "" + ), i, r, s, a; + return { + c() { + e = lt("queue: "), i = lt(t), r = lt("/"), s = lt( + /*queue_size*/ + n[3] + ), a = lt(" |"); + }, + l(o) { + e = ot(o, "queue: "), i = ot(o, t), r = ot(o, "/"), s = ot( + o, + /*queue_size*/ + n[3] + ), a = ot(o, " |"); + }, + m(o, l) { + we(o, e, l), we(o, i, l), we(o, r, l), we(o, s, l), we(o, a, l); + }, + p(o, l) { + l[0] & /*queue_position*/ + 4 && t !== (t = /*queue_position*/ + o[2] + 1 + "") && Si(i, t), l[0] & /*queue_size*/ + 8 && Si( + s, + /*queue_size*/ + o[3] + ); + }, + d(o) { + o && (ve(e), ve(i), ve(r), ve(s), ve(a)); + } + }; +} +function e6(n) { + let e, t = Ba( + /*progress*/ + n[7] + ), i = []; + for (let r = 0; r < t.length; r += 1) + i[r] = Ph(Rh(n, t, r)); + return { + c() { + for (let r = 0; r < i.length; r += 1) + i[r].c(); + e = Ei(); + }, + l(r) { + for (let s = 0; s < i.length; s += 1) + i[s].l(r); + e = Ei(); + }, + m(r, s) { + for (let a = 0; a < i.length; a += 1) + i[a] && i[a].m(r, s); + we(r, e, s); + }, + p(r, s) { + if (s[0] & /*progress*/ + 128) { + t = Ba( + /*progress*/ + r[7] + ); + let a; + for (a = 0; a < t.length; a += 1) { + const o = Rh(r, t, a); + i[a] ? i[a].p(o, s) : (i[a] = Ph(o), i[a].c(), i[a].m(e.parentNode, e)); + } + for (; a < i.length; a += 1) + i[a].d(1); + i.length = t.length; + } + }, + d(r) { + r && ve(e), Zm(i, r); + } + }; +} +function Fh(n) { + let e, t = ( + /*p*/ + n[40].unit + "" + ), i, r, s = " ", a; + function o(c, h) { + return ( + /*p*/ + c[40].length != null ? i6 : t6 + ); + } + let l = o(n), u = l(n); + return { + c() { + u.c(), e = pi(), i = lt(t), r = lt(" | "), a = lt(s); + }, + l(c) { + u.l(c), e = gi(c), i = ot(c, t), r = ot(c, " | "), a = ot(c, s); + }, + m(c, h) { + u.m(c, h), we(c, e, h), we(c, i, h), we(c, r, h), we(c, a, h); + }, + p(c, h) { + l === (l = o(c)) && u ? u.p(c, h) : (u.d(1), u = l(c), u && (u.c(), u.m(e.parentNode, e))), h[0] & /*progress*/ + 128 && t !== (t = /*p*/ + c[40].unit + "") && Si(i, t); + }, + d(c) { + c && (ve(e), ve(i), ve(r), ve(a)), u.d(c); + } + }; +} +function t6(n) { + let e = dn( + /*p*/ + n[40].index || 0 + ) + "", t; + return { + c() { + t = lt(e); + }, + l(i) { + t = ot(i, e); + }, + m(i, r) { + we(i, t, r); + }, + p(i, r) { + r[0] & /*progress*/ + 128 && e !== (e = dn( + /*p*/ + i[40].index || 0 + ) + "") && Si(t, e); + }, + d(i) { + i && ve(t); + } + }; +} +function i6(n) { + let e = dn( + /*p*/ + n[40].index || 0 + ) + "", t, i, r = dn( + /*p*/ + n[40].length + ) + "", s; + return { + c() { + t = lt(e), i = lt("/"), s = lt(r); + }, + l(a) { + t = ot(a, e), i = ot(a, "/"), s = ot(a, r); + }, + m(a, o) { + we(a, t, o), we(a, i, o), we(a, s, o); + }, + p(a, o) { + o[0] & /*progress*/ + 128 && e !== (e = dn( + /*p*/ + a[40].index || 0 + ) + "") && Si(t, e), o[0] & /*progress*/ + 128 && r !== (r = dn( + /*p*/ + a[40].length + ) + "") && Si(s, r); + }, + d(a) { + a && (ve(t), ve(i), ve(s)); + } + }; +} +function Ph(n) { + let e, t = ( + /*p*/ + n[40].index != null && Fh(n) + ); + return { + c() { + t && t.c(), e = Ei(); + }, + l(i) { + t && t.l(i), e = Ei(); + }, + m(i, r) { + t && t.m(i, r), we(i, e, r); + }, + p(i, r) { + /*p*/ + i[40].index != null ? t ? t.p(i, r) : (t = Fh(i), t.c(), t.m(e.parentNode, e)) : t && (t.d(1), t = null); + }, + d(i) { + i && ve(e), t && t.d(i); + } + }; +} +function Mh(n) { + let e, t = ( + /*eta*/ + n[0] ? `/${/*formatted_eta*/ + n[19]}` : "" + ), i, r; + return { + c() { + e = lt( + /*formatted_timer*/ + n[20] + ), i = lt(t), r = lt("s"); + }, + l(s) { + e = ot( + s, + /*formatted_timer*/ + n[20] + ), i = ot(s, t), r = ot(s, "s"); + }, + m(s, a) { + we(s, e, a), we(s, i, a), we(s, r, a); + }, + p(s, a) { + a[0] & /*formatted_timer*/ + 1048576 && Si( + e, + /*formatted_timer*/ + s[20] + ), a[0] & /*eta, formatted_eta*/ + 524289 && t !== (t = /*eta*/ + s[0] ? `/${/*formatted_eta*/ + s[19]}` : "") && Si(i, t); + }, + d(s) { + s && (ve(e), ve(i), ve(r)); + } + }; +} +function r6(n) { + let e, t; + return e = new G5({ + props: { margin: ( + /*variant*/ + n[8] === "default" + ) } + }), { + c() { + jm(e.$$.fragment); + }, + l(i) { + Wm(e.$$.fragment, i); + }, + m(i, r) { + t1(e, i, r), t = !0; + }, + p(i, r) { + const s = {}; + r[0] & /*variant*/ + 256 && (s.margin = /*variant*/ + i[8] === "default"), e.$set(s); + }, + i(i) { + t || (Ci(e.$$.fragment, i), t = !0); + }, + o(i) { + Zi(e.$$.fragment, i), t = !1; + }, + d(i) { + Qm(e, i); + } + }; +} +function n6(n) { + let e, t, i, r, s, a = `${/*last_progress_level*/ + n[15] * 100}%`, o = ( + /*progress*/ + n[7] != null && Oh(n) + ); + return { + c() { + e = Qi("div"), t = Qi("div"), o && o.c(), i = pi(), r = Qi("div"), s = Qi("div"), this.h(); + }, + l(l) { + e = Xi(l, "DIV", { class: !0 }); + var u = ji(e); + t = Xi(u, "DIV", { class: !0 }); + var c = ji(t); + o && o.l(c), c.forEach(ve), i = gi(u), r = Xi(u, "DIV", { class: !0 }); + var h = ji(r); + s = Xi(h, "DIV", { class: !0 }), ji(s).forEach(ve), h.forEach(ve), u.forEach(ve), this.h(); + }, + h() { + Fi(t, "class", "progress-level-inner svelte-17v219f"), Fi(s, "class", "progress-bar svelte-17v219f"), Ir(s, "width", a), Fi(r, "class", "progress-bar-wrap svelte-17v219f"), Fi(e, "class", "progress-level svelte-17v219f"); + }, + m(l, u) { + we(l, e, u), zr(e, t), o && o.m(t, null), zr(e, i), zr(e, r), zr(r, s), n[31](s); + }, + p(l, u) { + /*progress*/ + l[7] != null ? o ? o.p(l, u) : (o = Oh(l), o.c(), o.m(t, null)) : o && (o.d(1), o = null), u[0] & /*last_progress_level*/ + 32768 && a !== (a = `${/*last_progress_level*/ + l[15] * 100}%`) && Ir(s, "width", a); + }, + i: Nl, + o: Nl, + d(l) { + l && ve(e), o && o.d(), n[31](null); + } + }; +} +function Oh(n) { + let e, t = Ba( + /*progress*/ + n[7] + ), i = []; + for (let r = 0; r < t.length; r += 1) + i[r] = Gh(Ih(n, t, r)); + return { + c() { + for (let r = 0; r < i.length; r += 1) + i[r].c(); + e = Ei(); + }, + l(r) { + for (let s = 0; s < i.length; s += 1) + i[s].l(r); + e = Ei(); + }, + m(r, s) { + for (let a = 0; a < i.length; a += 1) + i[a] && i[a].m(r, s); + we(r, e, s); + }, + p(r, s) { + if (s[0] & /*progress_level, progress*/ + 16512) { + t = Ba( + /*progress*/ + r[7] + ); + let a; + for (a = 0; a < t.length; a += 1) { + const o = Ih(r, t, a); + i[a] ? i[a].p(o, s) : (i[a] = Gh(o), i[a].c(), i[a].m(e.parentNode, e)); + } + for (; a < i.length; a += 1) + i[a].d(1); + i.length = t.length; + } + }, + d(r) { + r && ve(e), Zm(i, r); + } + }; +} +function $h(n) { + let e, t, i, r, s = ( + /*i*/ + n[42] !== 0 && s6() + ), a = ( + /*p*/ + n[40].desc != null && Bh(n) + ), o = ( + /*p*/ + n[40].desc != null && /*progress_level*/ + n[14] && /*progress_level*/ + n[14][ + /*i*/ + n[42] + ] != null && Nh() + ), l = ( + /*progress_level*/ + n[14] != null && Uh(n) + ); + return { + c() { + s && s.c(), e = pi(), a && a.c(), t = pi(), o && o.c(), i = pi(), l && l.c(), r = Ei(); + }, + l(u) { + s && s.l(u), e = gi(u), a && a.l(u), t = gi(u), o && o.l(u), i = gi(u), l && l.l(u), r = Ei(); + }, + m(u, c) { + s && s.m(u, c), we(u, e, c), a && a.m(u, c), we(u, t, c), o && o.m(u, c), we(u, i, c), l && l.m(u, c), we(u, r, c); + }, + p(u, c) { + /*p*/ + u[40].desc != null ? a ? a.p(u, c) : (a = Bh(u), a.c(), a.m(t.parentNode, t)) : a && (a.d(1), a = null), /*p*/ + u[40].desc != null && /*progress_level*/ + u[14] && /*progress_level*/ + u[14][ + /*i*/ + u[42] + ] != null ? o || (o = Nh(), o.c(), o.m(i.parentNode, i)) : o && (o.d(1), o = null), /*progress_level*/ + u[14] != null ? l ? l.p(u, c) : (l = Uh(u), l.c(), l.m(r.parentNode, r)) : l && (l.d(1), l = null); + }, + d(u) { + u && (ve(e), ve(t), ve(i), ve(r)), s && s.d(u), a && a.d(u), o && o.d(u), l && l.d(u); + } + }; +} +function s6(n) { + let e; + return { + c() { + e = lt(" /"); + }, + l(t) { + e = ot(t, " /"); + }, + m(t, i) { + we(t, e, i); + }, + d(t) { + t && ve(e); + } + }; +} +function Bh(n) { + let e = ( + /*p*/ + n[40].desc + "" + ), t; + return { + c() { + t = lt(e); + }, + l(i) { + t = ot(i, e); + }, + m(i, r) { + we(i, t, r); + }, + p(i, r) { + r[0] & /*progress*/ + 128 && e !== (e = /*p*/ + i[40].desc + "") && Si(t, e); + }, + d(i) { + i && ve(t); + } + }; +} +function Nh(n) { + let e; + return { + c() { + e = lt("-"); + }, + l(t) { + e = ot(t, "-"); + }, + m(t, i) { + we(t, e, i); + }, + d(t) { + t && ve(e); + } + }; +} +function Uh(n) { + let e = (100 * /*progress_level*/ + (n[14][ + /*i*/ + n[42] + ] || 0)).toFixed(1) + "", t, i; + return { + c() { + t = lt(e), i = lt("%"); + }, + l(r) { + t = ot(r, e), i = ot(r, "%"); + }, + m(r, s) { + we(r, t, s), we(r, i, s); + }, + p(r, s) { + s[0] & /*progress_level*/ + 16384 && e !== (e = (100 * /*progress_level*/ + (r[14][ + /*i*/ + r[42] + ] || 0)).toFixed(1) + "") && Si(t, e); + }, + d(r) { + r && (ve(t), ve(i)); + } + }; +} +function Gh(n) { + let e, t = ( + /*p*/ + (n[40].desc != null || /*progress_level*/ + n[14] && /*progress_level*/ + n[14][ + /*i*/ + n[42] + ] != null) && $h(n) + ); + return { + c() { + t && t.c(), e = Ei(); + }, + l(i) { + t && t.l(i), e = Ei(); + }, + m(i, r) { + t && t.m(i, r), we(i, e, r); + }, + p(i, r) { + /*p*/ + i[40].desc != null || /*progress_level*/ + i[14] && /*progress_level*/ + i[14][ + /*i*/ + i[42] + ] != null ? t ? t.p(i, r) : (t = $h(i), t.c(), t.m(e.parentNode, e)) : t && (t.d(1), t = null); + }, + d(i) { + i && ve(e), t && t.d(i); + } + }; +} +function zh(n) { + let e, t, i, r; + const s = ( + /*#slots*/ + n[30]["additional-loading-text"] + ), a = Xm( + s, + n, + /*$$scope*/ + n[29], + Lh + ); + return { + c() { + e = Qi("p"), t = lt( + /*loading_text*/ + n[9] + ), i = pi(), a && a.c(), this.h(); + }, + l(o) { + e = Xi(o, "P", { class: !0 }); + var l = ji(e); + t = ot( + l, + /*loading_text*/ + n[9] + ), l.forEach(ve), i = gi(o), a && a.l(o), this.h(); + }, + h() { + Fi(e, "class", "loading svelte-17v219f"); + }, + m(o, l) { + we(o, e, l), zr(e, t), we(o, i, l), a && a.m(o, l), r = !0; + }, + p(o, l) { + (!r || l[0] & /*loading_text*/ + 512) && Si( + t, + /*loading_text*/ + o[9] + ), a && a.p && (!r || l[0] & /*$$scope*/ + 536870912) && i1( + a, + s, + o, + /*$$scope*/ + o[29], + r ? e1( + s, + /*$$scope*/ + o[29], + l, + j5 + ) : Jm( + /*$$scope*/ + o[29] + ), + Lh + ); + }, + i(o) { + r || (Ci(a, o), r = !0); + }, + o(o) { + Zi(a, o), r = !1; + }, + d(o) { + o && (ve(e), ve(i)), a && a.d(o); + } + }; +} +function a6(n) { + let e, t, i, r, s; + const a = [Q5, X5], o = []; + function l(u, c) { + return ( + /*status*/ + u[4] === "pending" ? 0 : ( + /*status*/ + u[4] === "error" ? 1 : -1 + ) + ); + } + return ~(t = l(n)) && (i = o[t] = a[t](n)), { + c() { + e = Qi("div"), i && i.c(), this.h(); + }, + l(u) { + e = Xi(u, "DIV", { class: !0 }); + var c = ji(e); + i && i.l(c), c.forEach(ve), this.h(); + }, + h() { + Fi(e, "class", r = "wrap " + /*variant*/ + n[8] + " " + /*show_progress*/ + n[6] + " svelte-17v219f"), hi(e, "hide", !/*status*/ + n[4] || /*status*/ + n[4] === "complete" || /*show_progress*/ + n[6] === "hidden" || /*status*/ + n[4] == "streaming"), hi( + e, + "translucent", + /*variant*/ + n[8] === "center" && /*status*/ + (n[4] === "pending" || /*status*/ + n[4] === "error") || /*translucent*/ + n[11] || /*show_progress*/ + n[6] === "minimal" + ), hi( + e, + "generating", + /*status*/ + n[4] === "generating" && /*show_progress*/ + n[6] === "full" + ), hi( + e, + "border", + /*border*/ + n[12] + ), Ir( + e, + "position", + /*absolute*/ + n[10] ? "absolute" : "static" + ), Ir( + e, + "padding", + /*absolute*/ + n[10] ? "0" : "var(--size-8) 0" + ); + }, + m(u, c) { + we(u, e, c), ~t && o[t].m(e, null), n[33](e), s = !0; + }, + p(u, c) { + let h = t; + t = l(u), t === h ? ~t && o[t].p(u, c) : (i && (Bl(), Zi(o[h], 1, 1, () => { + o[h] = null; + }), $l()), ~t ? (i = o[t], i ? i.p(u, c) : (i = o[t] = a[t](u), i.c()), Ci(i, 1), i.m(e, null)) : i = null), (!s || c[0] & /*variant, show_progress*/ + 320 && r !== (r = "wrap " + /*variant*/ + u[8] + " " + /*show_progress*/ + u[6] + " svelte-17v219f")) && Fi(e, "class", r), (!s || c[0] & /*variant, show_progress, status, show_progress*/ + 336) && hi(e, "hide", !/*status*/ + u[4] || /*status*/ + u[4] === "complete" || /*show_progress*/ + u[6] === "hidden" || /*status*/ + u[4] == "streaming"), (!s || c[0] & /*variant, show_progress, variant, status, translucent, show_progress*/ + 2384) && hi( + e, + "translucent", + /*variant*/ + u[8] === "center" && /*status*/ + (u[4] === "pending" || /*status*/ + u[4] === "error") || /*translucent*/ + u[11] || /*show_progress*/ + u[6] === "minimal" + ), (!s || c[0] & /*variant, show_progress, status, show_progress*/ + 336) && hi( + e, + "generating", + /*status*/ + u[4] === "generating" && /*show_progress*/ + u[6] === "full" + ), (!s || c[0] & /*variant, show_progress, border*/ + 4416) && hi( + e, + "border", + /*border*/ + u[12] + ), c[0] & /*absolute*/ + 1024 && Ir( + e, + "position", + /*absolute*/ + u[10] ? "absolute" : "static" + ), c[0] & /*absolute*/ + 1024 && Ir( + e, + "padding", + /*absolute*/ + u[10] ? "0" : "var(--size-8) 0" + ); + }, + i(u) { + s || (Ci(i), s = !0); + }, + o(u) { + Zi(i), s = !1; + }, + d(u) { + u && ve(e), ~t && o[t].d(), n[33](null); + } + }; +} +var o6 = function(n, e, t, i) { + function r(s) { + return s instanceof t ? s : new t(function(a) { + a(s); + }); + } + return new (t || (t = Promise))(function(s, a) { + function o(c) { + try { + u(i.next(c)); + } catch (h) { + a(h); + } + } + function l(c) { + try { + u(i.throw(c)); + } catch (h) { + a(h); + } + } + function u(c) { + c.done ? s(c.value) : r(c.value).then(o, l); + } + u((i = i.apply(n, e || [])).next()); + }); +}; +let ea = [], il = !1; +const l6 = typeof window < "u", r1 = l6 ? window.requestAnimationFrame : (n) => { +}; +function u6(n) { + return o6(this, arguments, void 0, function* (e, t = !0) { + if (!(window.__gradio_mode__ === "website" || window.__gradio_mode__ !== "app" && t !== !0)) { + if (ea.push(e), !il) il = !0; + else return; + yield V5(), r1(() => { + let i = [0, 0]; + for (let r = 0; r < ea.length; r++) { + const a = ea[r].getBoundingClientRect(); + (r === 0 || a.top + window.scrollY <= i[0]) && (i[0] = a.top + window.scrollY, i[1] = r); + } + window.scrollTo({ top: i[0] - 20, behavior: "smooth" }), il = !1, ea = []; + }); + } + }); +} +function c6(n, e, t) { + let i, { $$slots: r = {}, $$scope: s } = e; + const a = Y5(); + let { i18n: o } = e, { eta: l = null } = e, { queue_position: u } = e, { queue_size: c } = e, { status: h } = e, { scroll_to_output: d = !1 } = e, { timer: f = !0 } = e, { show_progress: m = "full" } = e, { message: p = null } = e, { progress: v = null } = e, { variant: b = "default" } = e, { loading_text: E = "Loading..." } = e, { absolute: y = !0 } = e, { translucent: T = !1 } = e, { border: A = !1 } = e, { autoscroll: k } = e, w, L = !1, I = 0, R = 0, O = null, z = null, ie = 0, N = null, X, K = null, Z = !0; + const Q = () => { + t(0, l = t(27, O = t(19, U = null))), t(25, I = performance.now()), t(26, R = 0), L = !0, H(); + }; + function H() { + r1(() => { + t(26, R = (performance.now() - I) / 1e3), L && H(); + }); + } + function Y() { + t(26, R = 0), t(0, l = t(27, O = t(19, U = null))), L && (L = !1); + } + K5(() => { + L && Y(); + }); + let U = null; + function te(V) { + wh[V ? "unshift" : "push"](() => { + K = V, t(16, K), t(7, v), t(14, N), t(15, X); + }); + } + const ne = () => { + a("clear_status"); + }; + function ce(V) { + wh[V ? "unshift" : "push"](() => { + w = V, t(13, w); + }); + } + return n.$$set = (V) => { + "i18n" in V && t(1, o = V.i18n), "eta" in V && t(0, l = V.eta), "queue_position" in V && t(2, u = V.queue_position), "queue_size" in V && t(3, c = V.queue_size), "status" in V && t(4, h = V.status), "scroll_to_output" in V && t(22, d = V.scroll_to_output), "timer" in V && t(5, f = V.timer), "show_progress" in V && t(6, m = V.show_progress), "message" in V && t(23, p = V.message), "progress" in V && t(7, v = V.progress), "variant" in V && t(8, b = V.variant), "loading_text" in V && t(9, E = V.loading_text), "absolute" in V && t(10, y = V.absolute), "translucent" in V && t(11, T = V.translucent), "border" in V && t(12, A = V.border), "autoscroll" in V && t(24, k = V.autoscroll), "$$scope" in V && t(29, s = V.$$scope); + }, n.$$.update = () => { + n.$$.dirty[0] & /*eta, old_eta, timer_start, eta_from_start*/ + 436207617 && (l === null && t(0, l = O), l != null && O !== l && (t(28, z = (performance.now() - I) / 1e3 + l), t(19, U = z.toFixed(1)), t(27, O = l))), n.$$.dirty[0] & /*eta_from_start, timer_diff*/ + 335544320 && t(17, ie = z === null || z <= 0 || !R ? null : Math.min(R / z, 1)), n.$$.dirty[0] & /*progress*/ + 128 && v != null && t(18, Z = !1), n.$$.dirty[0] & /*progress, progress_level, progress_bar, last_progress_level*/ + 114816 && (v != null ? t(14, N = v.map((V) => { + if (V.index != null && V.length != null) + return V.index / V.length; + if (V.progress != null) + return V.progress; + })) : t(14, N = null), N ? (t(15, X = N[N.length - 1]), K && (X === 0 ? t(16, K.style.transition = "0", K) : t(16, K.style.transition = "150ms", K))) : t(15, X = void 0)), n.$$.dirty[0] & /*status*/ + 16 && (h === "pending" ? Q() : Y()), n.$$.dirty[0] & /*el, scroll_to_output, status, autoscroll*/ + 20979728 && w && d && (h === "pending" || h === "complete") && u6(w, k), n.$$.dirty[0] & /*status, message*/ + 8388624, n.$$.dirty[0] & /*timer_diff*/ + 67108864 && t(20, i = R.toFixed(1)); + }, [ + l, + o, + u, + c, + h, + f, + m, + v, + b, + E, + y, + T, + A, + w, + N, + X, + K, + ie, + Z, + U, + i, + a, + d, + p, + k, + I, + R, + O, + z, + s, + r, + te, + ne, + ce + ]; +} +class h6 extends z5 { + constructor(e) { + super(), q5( + this, + e, + c6, + a6, + H5, + { + i18n: 1, + eta: 0, + queue_position: 2, + queue_size: 3, + status: 4, + scroll_to_output: 22, + timer: 5, + show_progress: 6, + message: 23, + progress: 7, + variant: 8, + loading_text: 9, + absolute: 10, + translucent: 11, + border: 12, + autoscroll: 24 + }, + null, + [-1, -1] + ); + } +} +/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */ +const { + entries: n1, + setPrototypeOf: qh, + isFrozen: d6, + getPrototypeOf: f6, + getOwnPropertyDescriptor: m6 +} = Object; +let { + freeze: qt, + seal: Ti, + create: s1 +} = Object, { + apply: Ul, + construct: Gl +} = typeof Reflect < "u" && Reflect; +qt || (qt = function(e) { + return e; +}); +Ti || (Ti = function(e) { + return e; +}); +Ul || (Ul = function(e, t, i) { + return e.apply(t, i); +}); +Gl || (Gl = function(e, t) { + return new e(...t); +}); +const ta = Ht(Array.prototype.forEach), g6 = Ht(Array.prototype.lastIndexOf), Hh = Ht(Array.prototype.pop), Pn = Ht(Array.prototype.push), p6 = Ht(Array.prototype.splice), pa = Ht(String.prototype.toLowerCase), rl = Ht(String.prototype.toString), Vh = Ht(String.prototype.match), Mn = Ht(String.prototype.replace), v6 = Ht(String.prototype.indexOf), y6 = Ht(String.prototype.trim), Li = Ht(Object.prototype.hasOwnProperty), Gt = Ht(RegExp.prototype.test), On = _6(TypeError); +function Ht(n) { + return function(e) { + e instanceof RegExp && (e.lastIndex = 0); + for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) + i[r - 1] = arguments[r]; + return Ul(n, e, i); + }; +} +function _6(n) { + return function() { + for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) + t[i] = arguments[i]; + return Gl(n, t); + }; +} +function Me(n, e) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : pa; + qh && qh(n, null); + let i = e.length; + for (; i--; ) { + let r = e[i]; + if (typeof r == "string") { + const s = t(r); + s !== r && (d6(e) || (e[i] = s), r = s); + } + n[r] = !0; + } + return n; +} +function b6(n) { + for (let e = 0; e < n.length; e++) + Li(n, e) || (n[e] = null); + return n; +} +function dr(n) { + const e = s1(null); + for (const [t, i] of n1(n)) + Li(n, t) && (Array.isArray(i) ? e[t] = b6(i) : i && typeof i == "object" && i.constructor === Object ? e[t] = dr(i) : e[t] = i); + return e; +} +function $n(n, e) { + for (; n !== null; ) { + const i = m6(n, e); + if (i) { + if (i.get) + return Ht(i.get); + if (typeof i.value == "function") + return Ht(i.value); + } + n = f6(n); + } + function t() { + return null; + } + return t; +} +const Kh = qt(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]), nl = qt(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]), sl = qt(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]), E6 = qt(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]), al = qt(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]), S6 = qt(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]), Yh = qt(["#text"]), Wh = qt(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns", "slot"]), ol = qt(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "exponent", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "intercept", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "slope", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "tablevalues", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]), jh = qt(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]), ia = qt(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]), T6 = Ti(/\{\{[\w\W]*|[\w\W]*\}\}/gm), x6 = Ti(/<%[\w\W]*|[\w\W]*%>/gm), A6 = Ti(/\$\{[\w\W]*/gm), D6 = Ti(/^data-[\-\w.\u00B7-\uFFFF]+$/), w6 = Ti(/^aria-[\-\w]+$/), a1 = Ti( + /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i + // eslint-disable-line no-useless-escape +), k6 = Ti(/^(?:\w+script|data):/i), L6 = Ti( + /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g + // eslint-disable-line no-control-regex +), o1 = Ti(/^html$/i), I6 = Ti(/^[a-z][.\w]*(-[.\w]+)+$/i); +var Xh = /* @__PURE__ */ Object.freeze({ + __proto__: null, + ARIA_ATTR: w6, + ATTR_WHITESPACE: L6, + CUSTOM_ELEMENT: I6, + DATA_ATTR: D6, + DOCTYPE_NAME: o1, + ERB_EXPR: x6, + IS_ALLOWED_URI: a1, + IS_SCRIPT_OR_DATA: k6, + MUSTACHE_EXPR: T6, + TMPLIT_EXPR: A6 +}); +const Bn = { + element: 1, + text: 3, + // Deprecated + progressingInstruction: 7, + comment: 8, + document: 9 +}, R6 = function() { + return typeof window > "u" ? null : window; +}, C6 = function(e, t) { + if (typeof e != "object" || typeof e.createPolicy != "function") + return null; + let i = null; + const r = "data-tt-policy-suffix"; + t && t.hasAttribute(r) && (i = t.getAttribute(r)); + const s = "dompurify" + (i ? "#" + i : ""); + try { + return e.createPolicy(s, { + createHTML(a) { + return a; + }, + createScriptURL(a) { + return a; + } + }); + } catch { + return console.warn("TrustedTypes policy " + s + " could not be created."), null; + } +}, Qh = function() { + return { + afterSanitizeAttributes: [], + afterSanitizeElements: [], + afterSanitizeShadowDOM: [], + beforeSanitizeAttributes: [], + beforeSanitizeElements: [], + beforeSanitizeShadowDOM: [], + uponSanitizeAttribute: [], + uponSanitizeElement: [], + uponSanitizeShadowNode: [] + }; +}; +function l1() { + let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : R6(); + const e = (me) => l1(me); + if (e.version = "3.2.6", e.removed = [], !n || !n.document || n.document.nodeType !== Bn.document || !n.Element) + return e.isSupported = !1, e; + let { + document: t + } = n; + const i = t, r = i.currentScript, { + DocumentFragment: s, + HTMLTemplateElement: a, + Node: o, + Element: l, + NodeFilter: u, + NamedNodeMap: c = n.NamedNodeMap || n.MozNamedAttrMap, + HTMLFormElement: h, + DOMParser: d, + trustedTypes: f + } = n, m = l.prototype, p = $n(m, "cloneNode"), v = $n(m, "remove"), b = $n(m, "nextSibling"), E = $n(m, "childNodes"), y = $n(m, "parentNode"); + if (typeof a == "function") { + const me = t.createElement("template"); + me.content && me.content.ownerDocument && (t = me.content.ownerDocument); + } + let T, A = ""; + const { + implementation: k, + createNodeIterator: w, + createDocumentFragment: L, + getElementsByTagName: I + } = t, { + importNode: R + } = i; + let O = Qh(); + e.isSupported = typeof n1 == "function" && typeof y == "function" && k && k.createHTMLDocument !== void 0; + const { + MUSTACHE_EXPR: z, + ERB_EXPR: ie, + TMPLIT_EXPR: N, + DATA_ATTR: X, + ARIA_ATTR: K, + IS_SCRIPT_OR_DATA: Z, + ATTR_WHITESPACE: Q, + CUSTOM_ELEMENT: H + } = Xh; + let { + IS_ALLOWED_URI: Y + } = Xh, U = null; + const te = Me({}, [...Kh, ...nl, ...sl, ...al, ...Yh]); + let ne = null; + const ce = Me({}, [...Wh, ...ol, ...jh, ...ia]); + let V = Object.seal(s1(null, { + tagNameCheck: { + writable: !0, + configurable: !1, + enumerable: !0, + value: null + }, + attributeNameCheck: { + writable: !0, + configurable: !1, + enumerable: !0, + value: null + }, + allowCustomizedBuiltInElements: { + writable: !0, + configurable: !1, + enumerable: !0, + value: !1 + } + })), le = null, be = null, Oe = !0, Ue = !0, pt = !1, Ge = !0, wt = !1, q = !0, Pe = !1, We = !1, fe = !1, Re = !1, Ae = !1, Ee = !1, Je = !0, Et = !1; + const Ft = "user-content-"; + let vt = !0, St = !1, Pt = {}, kt = null; + const oi = Me({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]); + let nr = null; + const kn = Me({}, ["audio", "video", "img", "source", "image", "track"]); + let Xr = null; + const Sr = Me({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]), vs = "http://www.w3.org/1998/Math/MathML", ys = "http://www.w3.org/2000/svg", sr = "http://www.w3.org/1999/xhtml"; + let Qr = sr, Za = !1, Ja = null; + const c1 = Me({}, [vs, ys, sr], rl); + let _s = Me({}, ["mi", "mo", "mn", "ms", "mtext"]), bs = Me({}, ["annotation-xml"]); + const h1 = Me({}, ["title", "style", "font", "a", "script"]); + let Ln = null; + const d1 = ["application/xhtml+xml", "text/html"], f1 = "text/html"; + let Tt = null, Zr = null; + const m1 = t.createElement("form"), B0 = function(M) { + return M instanceof RegExp || M instanceof Function; + }, eo = function() { + let M = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!(Zr && Zr === M)) { + if ((!M || typeof M != "object") && (M = {}), M = dr(M), Ln = // eslint-disable-next-line unicorn/prefer-includes + d1.indexOf(M.PARSER_MEDIA_TYPE) === -1 ? f1 : M.PARSER_MEDIA_TYPE, Tt = Ln === "application/xhtml+xml" ? rl : pa, U = Li(M, "ALLOWED_TAGS") ? Me({}, M.ALLOWED_TAGS, Tt) : te, ne = Li(M, "ALLOWED_ATTR") ? Me({}, M.ALLOWED_ATTR, Tt) : ce, Ja = Li(M, "ALLOWED_NAMESPACES") ? Me({}, M.ALLOWED_NAMESPACES, rl) : c1, Xr = Li(M, "ADD_URI_SAFE_ATTR") ? Me(dr(Sr), M.ADD_URI_SAFE_ATTR, Tt) : Sr, nr = Li(M, "ADD_DATA_URI_TAGS") ? Me(dr(kn), M.ADD_DATA_URI_TAGS, Tt) : kn, kt = Li(M, "FORBID_CONTENTS") ? Me({}, M.FORBID_CONTENTS, Tt) : oi, le = Li(M, "FORBID_TAGS") ? Me({}, M.FORBID_TAGS, Tt) : dr({}), be = Li(M, "FORBID_ATTR") ? Me({}, M.FORBID_ATTR, Tt) : dr({}), Pt = Li(M, "USE_PROFILES") ? M.USE_PROFILES : !1, Oe = M.ALLOW_ARIA_ATTR !== !1, Ue = M.ALLOW_DATA_ATTR !== !1, pt = M.ALLOW_UNKNOWN_PROTOCOLS || !1, Ge = M.ALLOW_SELF_CLOSE_IN_ATTR !== !1, wt = M.SAFE_FOR_TEMPLATES || !1, q = M.SAFE_FOR_XML !== !1, Pe = M.WHOLE_DOCUMENT || !1, Re = M.RETURN_DOM || !1, Ae = M.RETURN_DOM_FRAGMENT || !1, Ee = M.RETURN_TRUSTED_TYPE || !1, fe = M.FORCE_BODY || !1, Je = M.SANITIZE_DOM !== !1, Et = M.SANITIZE_NAMED_PROPS || !1, vt = M.KEEP_CONTENT !== !1, St = M.IN_PLACE || !1, Y = M.ALLOWED_URI_REGEXP || a1, Qr = M.NAMESPACE || sr, _s = M.MATHML_TEXT_INTEGRATION_POINTS || _s, bs = M.HTML_INTEGRATION_POINTS || bs, V = M.CUSTOM_ELEMENT_HANDLING || {}, M.CUSTOM_ELEMENT_HANDLING && B0(M.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (V.tagNameCheck = M.CUSTOM_ELEMENT_HANDLING.tagNameCheck), M.CUSTOM_ELEMENT_HANDLING && B0(M.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (V.attributeNameCheck = M.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), M.CUSTOM_ELEMENT_HANDLING && typeof M.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements == "boolean" && (V.allowCustomizedBuiltInElements = M.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), wt && (Ue = !1), Ae && (Re = !0), Pt && (U = Me({}, Yh), ne = [], Pt.html === !0 && (Me(U, Kh), Me(ne, Wh)), Pt.svg === !0 && (Me(U, nl), Me(ne, ol), Me(ne, ia)), Pt.svgFilters === !0 && (Me(U, sl), Me(ne, ol), Me(ne, ia)), Pt.mathMl === !0 && (Me(U, al), Me(ne, jh), Me(ne, ia))), M.ADD_TAGS && (U === te && (U = dr(U)), Me(U, M.ADD_TAGS, Tt)), M.ADD_ATTR && (ne === ce && (ne = dr(ne)), Me(ne, M.ADD_ATTR, Tt)), M.ADD_URI_SAFE_ATTR && Me(Xr, M.ADD_URI_SAFE_ATTR, Tt), M.FORBID_CONTENTS && (kt === oi && (kt = dr(kt)), Me(kt, M.FORBID_CONTENTS, Tt)), vt && (U["#text"] = !0), Pe && Me(U, ["html", "head", "body"]), U.table && (Me(U, ["tbody"]), delete le.tbody), M.TRUSTED_TYPES_POLICY) { + if (typeof M.TRUSTED_TYPES_POLICY.createHTML != "function") + throw On('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + if (typeof M.TRUSTED_TYPES_POLICY.createScriptURL != "function") + throw On('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + T = M.TRUSTED_TYPES_POLICY, A = T.createHTML(""); + } else + T === void 0 && (T = C6(f, r)), T !== null && typeof A == "string" && (A = T.createHTML("")); + qt && qt(M), Zr = M; + } + }, N0 = Me({}, [...nl, ...sl, ...E6]), U0 = Me({}, [...al, ...S6]), g1 = function(M) { + let ee = y(M); + (!ee || !ee.tagName) && (ee = { + namespaceURI: Qr, + tagName: "template" + }); + const he = pa(M.tagName), tt = pa(ee.tagName); + return Ja[M.namespaceURI] ? M.namespaceURI === ys ? ee.namespaceURI === sr ? he === "svg" : ee.namespaceURI === vs ? he === "svg" && (tt === "annotation-xml" || _s[tt]) : !!N0[he] : M.namespaceURI === vs ? ee.namespaceURI === sr ? he === "math" : ee.namespaceURI === ys ? he === "math" && bs[tt] : !!U0[he] : M.namespaceURI === sr ? ee.namespaceURI === ys && !bs[tt] || ee.namespaceURI === vs && !_s[tt] ? !1 : !U0[he] && (h1[he] || !N0[he]) : !!(Ln === "application/xhtml+xml" && Ja[M.namespaceURI]) : !1; + }, Pi = function(M) { + Pn(e.removed, { + element: M + }); + try { + y(M).removeChild(M); + } catch { + v(M); + } + }, Jr = function(M, ee) { + try { + Pn(e.removed, { + attribute: ee.getAttributeNode(M), + from: ee + }); + } catch { + Pn(e.removed, { + attribute: null, + from: ee + }); + } + if (ee.removeAttribute(M), M === "is") + if (Re || Ae) + try { + Pi(ee); + } catch { + } + else + try { + ee.setAttribute(M, ""); + } catch { + } + }, G0 = function(M) { + let ee = null, he = null; + if (fe) + M = "<remove></remove>" + M; + else { + const yt = Vh(M, /^[\r\n\t ]+/); + he = yt && yt[0]; + } + Ln === "application/xhtml+xml" && Qr === sr && (M = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + M + "</body></html>"); + const tt = T ? T.createHTML(M) : M; + if (Qr === sr) + try { + ee = new d().parseFromString(tt, Ln); + } catch { + } + if (!ee || !ee.documentElement) { + ee = k.createDocument(Qr, "template", null); + try { + ee.documentElement.innerHTML = Za ? A : tt; + } catch { + } + } + const Mt = ee.body || ee.documentElement; + return M && he && Mt.insertBefore(t.createTextNode(he), Mt.childNodes[0] || null), Qr === sr ? I.call(ee, Pe ? "html" : "body")[0] : Pe ? ee.documentElement : Mt; + }, z0 = function(M) { + return w.call( + M.ownerDocument || M, + M, + // eslint-disable-next-line no-bitwise + u.SHOW_ELEMENT | u.SHOW_COMMENT | u.SHOW_TEXT | u.SHOW_PROCESSING_INSTRUCTION | u.SHOW_CDATA_SECTION, + null + ); + }, to = function(M) { + return M instanceof h && (typeof M.nodeName != "string" || typeof M.textContent != "string" || typeof M.removeChild != "function" || !(M.attributes instanceof c) || typeof M.removeAttribute != "function" || typeof M.setAttribute != "function" || typeof M.namespaceURI != "string" || typeof M.insertBefore != "function" || typeof M.hasChildNodes != "function"); + }, q0 = function(M) { + return typeof o == "function" && M instanceof o; + }; + function ar(me, M, ee) { + ta(me, (he) => { + he.call(e, M, ee, Zr); + }); + } + const H0 = function(M) { + let ee = null; + if (ar(O.beforeSanitizeElements, M, null), to(M)) + return Pi(M), !0; + const he = Tt(M.nodeName); + if (ar(O.uponSanitizeElement, M, { + tagName: he, + allowedTags: U + }), q && M.hasChildNodes() && !q0(M.firstElementChild) && Gt(/<[/\w!]/g, M.innerHTML) && Gt(/<[/\w!]/g, M.textContent) || M.nodeType === Bn.progressingInstruction || q && M.nodeType === Bn.comment && Gt(/<[/\w]/g, M.data)) + return Pi(M), !0; + if (!U[he] || le[he]) { + if (!le[he] && K0(he) && (V.tagNameCheck instanceof RegExp && Gt(V.tagNameCheck, he) || V.tagNameCheck instanceof Function && V.tagNameCheck(he))) + return !1; + if (vt && !kt[he]) { + const tt = y(M) || M.parentNode, Mt = E(M) || M.childNodes; + if (Mt && tt) { + const yt = Mt.length; + for (let Kt = yt - 1; Kt >= 0; --Kt) { + const or = p(Mt[Kt], !0); + or.__removalCount = (M.__removalCount || 0) + 1, tt.insertBefore(or, b(M)); + } + } + } + return Pi(M), !0; + } + return M instanceof l && !g1(M) || (he === "noscript" || he === "noembed" || he === "noframes") && Gt(/<\/no(script|embed|frames)/i, M.innerHTML) ? (Pi(M), !0) : (wt && M.nodeType === Bn.text && (ee = M.textContent, ta([z, ie, N], (tt) => { + ee = Mn(ee, tt, " "); + }), M.textContent !== ee && (Pn(e.removed, { + element: M.cloneNode() + }), M.textContent = ee)), ar(O.afterSanitizeElements, M, null), !1); + }, V0 = function(M, ee, he) { + if (Je && (ee === "id" || ee === "name") && (he in t || he in m1)) + return !1; + if (!(Ue && !be[ee] && Gt(X, ee))) { + if (!(Oe && Gt(K, ee))) { + if (!ne[ee] || be[ee]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + !(K0(M) && (V.tagNameCheck instanceof RegExp && Gt(V.tagNameCheck, M) || V.tagNameCheck instanceof Function && V.tagNameCheck(M)) && (V.attributeNameCheck instanceof RegExp && Gt(V.attributeNameCheck, ee) || V.attributeNameCheck instanceof Function && V.attributeNameCheck(ee)) || // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + ee === "is" && V.allowCustomizedBuiltInElements && (V.tagNameCheck instanceof RegExp && Gt(V.tagNameCheck, he) || V.tagNameCheck instanceof Function && V.tagNameCheck(he))) + ) return !1; + } else if (!Xr[ee]) { + if (!Gt(Y, Mn(he, Q, ""))) { + if (!((ee === "src" || ee === "xlink:href" || ee === "href") && M !== "script" && v6(he, "data:") === 0 && nr[M])) { + if (!(pt && !Gt(Z, Mn(he, Q, "")))) { + if (he) + return !1; + } + } + } + } + } + } + return !0; + }, K0 = function(M) { + return M !== "annotation-xml" && Vh(M, H); + }, Y0 = function(M) { + ar(O.beforeSanitizeAttributes, M, null); + const { + attributes: ee + } = M; + if (!ee || to(M)) + return; + const he = { + attrName: "", + attrValue: "", + keepAttr: !0, + allowedAttributes: ne, + forceKeepAttr: void 0 + }; + let tt = ee.length; + for (; tt--; ) { + const Mt = ee[tt], { + name: yt, + namespaceURI: Kt, + value: or + } = Mt, In = Tt(yt), io = or; + let Ot = yt === "value" ? io : y6(io); + if (he.attrName = In, he.attrValue = Ot, he.keepAttr = !0, he.forceKeepAttr = void 0, ar(O.uponSanitizeAttribute, M, he), Ot = he.attrValue, Et && (In === "id" || In === "name") && (Jr(yt, M), Ot = Ft + Ot), q && Gt(/((--!?|])>)|<\/(style|title)/i, Ot)) { + Jr(yt, M); + continue; + } + if (he.forceKeepAttr) + continue; + if (!he.keepAttr) { + Jr(yt, M); + continue; + } + if (!Ge && Gt(/\/>/i, Ot)) { + Jr(yt, M); + continue; + } + wt && ta([z, ie, N], (j0) => { + Ot = Mn(Ot, j0, " "); + }); + const W0 = Tt(M.nodeName); + if (!V0(W0, In, Ot)) { + Jr(yt, M); + continue; + } + if (T && typeof f == "object" && typeof f.getAttributeType == "function" && !Kt) + switch (f.getAttributeType(W0, In)) { + case "TrustedHTML": { + Ot = T.createHTML(Ot); + break; + } + case "TrustedScriptURL": { + Ot = T.createScriptURL(Ot); + break; + } + } + if (Ot !== io) + try { + Kt ? M.setAttributeNS(Kt, yt, Ot) : M.setAttribute(yt, Ot), to(M) ? Pi(M) : Hh(e.removed); + } catch { + Jr(yt, M); + } + } + ar(O.afterSanitizeAttributes, M, null); + }, p1 = function me(M) { + let ee = null; + const he = z0(M); + for (ar(O.beforeSanitizeShadowDOM, M, null); ee = he.nextNode(); ) + ar(O.uponSanitizeShadowNode, ee, null), H0(ee), Y0(ee), ee.content instanceof s && me(ee.content); + ar(O.afterSanitizeShadowDOM, M, null); + }; + return e.sanitize = function(me) { + let M = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, ee = null, he = null, tt = null, Mt = null; + if (Za = !me, Za && (me = "<!-->"), typeof me != "string" && !q0(me)) + if (typeof me.toString == "function") { + if (me = me.toString(), typeof me != "string") + throw On("dirty is not a string, aborting"); + } else + throw On("toString is not a function"); + if (!e.isSupported) + return me; + if (We || eo(M), e.removed = [], typeof me == "string" && (St = !1), St) { + if (me.nodeName) { + const or = Tt(me.nodeName); + if (!U[or] || le[or]) + throw On("root node is forbidden and cannot be sanitized in-place"); + } + } else if (me instanceof o) + ee = G0("<!---->"), he = ee.ownerDocument.importNode(me, !0), he.nodeType === Bn.element && he.nodeName === "BODY" || he.nodeName === "HTML" ? ee = he : ee.appendChild(he); + else { + if (!Re && !wt && !Pe && // eslint-disable-next-line unicorn/prefer-includes + me.indexOf("<") === -1) + return T && Ee ? T.createHTML(me) : me; + if (ee = G0(me), !ee) + return Re ? null : Ee ? A : ""; + } + ee && fe && Pi(ee.firstChild); + const yt = z0(St ? me : ee); + for (; tt = yt.nextNode(); ) + H0(tt), Y0(tt), tt.content instanceof s && p1(tt.content); + if (St) + return me; + if (Re) { + if (Ae) + for (Mt = L.call(ee.ownerDocument); ee.firstChild; ) + Mt.appendChild(ee.firstChild); + else + Mt = ee; + return (ne.shadowroot || ne.shadowrootmode) && (Mt = R.call(i, Mt, !0)), Mt; + } + let Kt = Pe ? ee.outerHTML : ee.innerHTML; + return Pe && U["!doctype"] && ee.ownerDocument && ee.ownerDocument.doctype && ee.ownerDocument.doctype.name && Gt(o1, ee.ownerDocument.doctype.name) && (Kt = "<!DOCTYPE " + ee.ownerDocument.doctype.name + `> +` + Kt), wt && ta([z, ie, N], (or) => { + Kt = Mn(Kt, or, " "); + }), T && Ee ? T.createHTML(Kt) : Kt; + }, e.setConfig = function() { + let me = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + eo(me), We = !0; + }, e.clearConfig = function() { + Zr = null, We = !1; + }, e.isValidAttribute = function(me, M, ee) { + Zr || eo({}); + const he = Tt(me), tt = Tt(M); + return V0(he, tt, ee); + }, e.addHook = function(me, M) { + typeof M == "function" && Pn(O[me], M); + }, e.removeHook = function(me, M) { + if (M !== void 0) { + const ee = g6(O[me], M); + return ee === -1 ? void 0 : p6(O[me], ee, 1)[0]; + } + return Hh(O[me]); + }, e.removeHooks = function(me) { + O[me] = []; + }, e.removeAllHooks = function() { + O = Qh(); + }, e; +} +l1(); +const { + HtmlTagHydration: SO, + SvelteComponent: TO, + add_render_callback: xO, + append_hydration: AO, + attr: DO, + bubble: wO, + check_outros: kO, + children: LO, + claim_component: IO, + claim_element: RO, + claim_html_tag: CO, + claim_space: FO, + claim_text: PO, + create_component: MO, + create_in_transition: OO, + create_out_transition: $O, + destroy_component: BO, + detach: NO, + element: UO, + get_svelte_dataset: GO, + group_outros: zO, + init: qO, + insert_hydration: HO, + listen: VO, + mount_component: KO, + run_all: YO, + safe_not_equal: WO, + set_data: jO, + space: XO, + stop_propagation: QO, + text: ZO, + toggle_class: JO, + transition_in: e$, + transition_out: t$ +} = window.__gradio__svelte__internal, { createEventDispatcher: i$, onMount: r$ } = window.__gradio__svelte__internal, { + SvelteComponent: n$, + append_hydration: s$, + attr: a$, + bubble: o$, + check_outros: l$, + children: u$, + claim_component: c$, + claim_element: h$, + claim_space: d$, + create_animation: f$, + create_component: m$, + destroy_component: g$, + detach: p$, + element: v$, + ensure_array_like: y$, + fix_and_outro_and_destroy_block: _$, + fix_position: b$, + group_outros: E$, + init: S$, + insert_hydration: T$, + mount_component: x$, + noop: A$, + safe_not_equal: D$, + set_style: w$, + space: k$, + transition_in: L$, + transition_out: I$, + update_keyed_each: R$ +} = window.__gradio__svelte__internal, { + SvelteComponent: C$, + attr: F$, + children: P$, + claim_element: M$, + detach: O$, + element: $$, + empty: B$, + init: N$, + insert_hydration: U$, + noop: G$, + safe_not_equal: z$, + set_style: q$ +} = window.__gradio__svelte__internal, { + SvelteComponent: F6, + add_flush_callback: ra, + append_hydration: ke, + attr: pe, + bind: na, + binding_callbacks: fn, + bubble: Zh, + check_outros: Na, + children: Rt, + claim_component: fs, + claim_element: ze, + claim_space: ct, + claim_text: vi, + create_component: ms, + destroy_component: gs, + destroy_each: P6, + detach: Fe, + element: qe, + ensure_array_like: Jh, + get_svelte_dataset: cn, + group_outros: Ua, + init: M6, + insert_hydration: dt, + listen: zi, + mount_component: ps, + run_all: u1, + safe_not_equal: O6, + set_data: Or, + set_input_value: ed, + space: ht, + text: yi, + to_number: $6, + transition_in: Xt, + transition_out: ri +} = window.__gradio__svelte__internal, { createEventDispatcher: H$, onMount: B6 } = window.__gradio__svelte__internal; +function td(n, e, t) { + const i = n.slice(); + return i[46] = e[t][0], i[47] = e[t][1], i; +} +function id(n) { + let e, t, i, r, s, a; + function o(d) { + n[24](d); + } + function l(d) { + n[25](d); + } + function u(d) { + n[26](d); + } + function c(d) { + n[27](d); + } + let h = { + src: ( + /*video_src*/ + n[0] + ), + is_stream: !1, + preload: "auto", + autoplay: ( + /*autoplay*/ + n[1] + ), + loop: ( + /*loop*/ + n[2] + ) + }; + return ( + /*time*/ + n[3] !== void 0 && (h.currentTime = /*time*/ + n[3]), /*duration*/ + n[13] !== void 0 && (h.duration = /*duration*/ + n[13]), /*paused*/ + n[14] !== void 0 && (h.paused = /*paused*/ + n[14]), /*video*/ + n[4] !== void 0 && (h.node = /*video*/ + n[4]), e = new Ff({ props: h }), fn.push(() => na(e, "currentTime", o)), fn.push(() => na(e, "duration", l)), fn.push(() => na(e, "paused", u)), fn.push(() => na(e, "node", c)), e.$on( + "click", + /*click_handler*/ + n[28] + ), e.$on( + "play", + /*play_handler*/ + n[29] + ), e.$on( + "pause", + /*pause_handler*/ + n[30] + ), { + c() { + ms(e.$$.fragment); + }, + l(d) { + fs(e.$$.fragment, d); + }, + m(d, f) { + ps(e, d, f), a = !0; + }, + p(d, f) { + const m = {}; + f[0] & /*video_src*/ + 1 && (m.src = /*video_src*/ + d[0]), f[0] & /*autoplay*/ + 2 && (m.autoplay = /*autoplay*/ + d[1]), f[0] & /*loop*/ + 4 && (m.loop = /*loop*/ + d[2]), !t && f[0] & /*time*/ + 8 && (t = !0, m.currentTime = /*time*/ + d[3], ra(() => t = !1)), !i && f[0] & /*duration*/ + 8192 && (i = !0, m.duration = /*duration*/ + d[13], ra(() => i = !1)), !r && f[0] & /*paused*/ + 16384 && (r = !0, m.paused = /*paused*/ + d[14], ra(() => r = !1)), !s && f[0] & /*video*/ + 16 && (s = !0, m.node = /*video*/ + d[4], ra(() => s = !1)), e.$set(m); + }, + i(d) { + a || (Xt(e.$$.fragment, d), a = !0); + }, + o(d) { + ri(e.$$.fragment, d), a = !1; + }, + d(d) { + gs(e, d); + } + } + ); +} +function rd(n) { + let e, t = Jh(Object.entries( + /*frame_data*/ + n[6][ + /*current_frame_index*/ + n[8] + ].laban_metrics + )), i = []; + for (let r = 0; r < t.length; r += 1) + i[r] = nd(td(n, t, r)); + return { + c() { + e = qe("div"); + for (let r = 0; r < i.length; r += 1) + i[r].c(); + this.h(); + }, + l(r) { + e = ze(r, "DIV", { class: !0 }); + var s = Rt(e); + for (let a = 0; a < i.length; a += 1) + i[a].l(s); + s.forEach(Fe), this.h(); + }, + h() { + pe(e, "class", "laban-overlay svelte-zix4qo"); + }, + m(r, s) { + dt(r, e, s); + for (let a = 0; a < i.length; a += 1) + i[a] && i[a].m(e, null); + }, + p(r, s) { + if (s[0] & /*frame_data, current_frame_index*/ + 320) { + t = Jh(Object.entries( + /*frame_data*/ + r[6][ + /*current_frame_index*/ + r[8] + ].laban_metrics + )); + let a; + for (a = 0; a < t.length; a += 1) { + const o = td(r, t, a); + i[a] ? i[a].p(o, s) : (i[a] = nd(o), i[a].c(), i[a].m(e, null)); + } + for (; a < i.length; a += 1) + i[a].d(1); + i.length = t.length; + } + }, + d(r) { + r && Fe(e), P6(i, r); + } + }; +} +function N6(n) { + let e = ( + /*value*/ + n[47] + "" + ), t; + return { + c() { + t = yi(e); + }, + l(i) { + t = vi(i, e); + }, + m(i, r) { + dt(i, t, r); + }, + p(i, r) { + r[0] & /*frame_data, current_frame_index*/ + 320 && e !== (e = /*value*/ + i[47] + "") && Or(t, e); + }, + d(i) { + i && Fe(t); + } + }; +} +function U6(n) { + let e = ( + /*value*/ + n[47].toFixed(2) + "" + ), t; + return { + c() { + t = yi(e); + }, + l(i) { + t = vi(i, e); + }, + m(i, r) { + dt(i, t, r); + }, + p(i, r) { + r[0] & /*frame_data, current_frame_index*/ + 320 && e !== (e = /*value*/ + i[47].toFixed(2) + "") && Or(t, e); + }, + d(i) { + i && Fe(t); + } + }; +} +function G6(n) { + let e = JSON.stringify( + /*value*/ + n[47] + ) + "", t; + return { + c() { + t = yi(e); + }, + l(i) { + t = vi(i, e); + }, + m(i, r) { + dt(i, t, r); + }, + p(i, r) { + r[0] & /*frame_data, current_frame_index*/ + 320 && e !== (e = JSON.stringify( + /*value*/ + i[47] + ) + "") && Or(t, e); + }, + d(i) { + i && Fe(t); + } + }; +} +function nd(n) { + let e, t, i = ( + /*key*/ + n[46].replace(/_/g, " ") + "" + ), r, s, a, o, l; + function u(d, f) { + return typeof /*value*/ + d[47] == "object" ? G6 : typeof /*value*/ + d[47] == "number" ? U6 : N6; + } + let c = u(n), h = c(n); + return { + c() { + e = qe("div"), t = qe("span"), r = yi(i), s = yi(":"), a = ht(), o = qe("span"), h.c(), l = ht(), this.h(); + }, + l(d) { + e = ze(d, "DIV", { class: !0 }); + var f = Rt(e); + t = ze(f, "SPAN", { class: !0 }); + var m = Rt(t); + r = vi(m, i), s = vi(m, ":"), m.forEach(Fe), a = ct(f), o = ze(f, "SPAN", { class: !0 }); + var p = Rt(o); + h.l(p), p.forEach(Fe), l = ct(f), f.forEach(Fe), this.h(); + }, + h() { + pe(t, "class", "metric-label svelte-zix4qo"), pe(o, "class", "metric-value svelte-zix4qo"), pe(e, "class", "svelte-zix4qo"); + }, + m(d, f) { + dt(d, e, f), ke(e, t), ke(t, r), ke(t, s), ke(e, a), ke(e, o), h.m(o, null), ke(e, l); + }, + p(d, f) { + f[0] & /*frame_data, current_frame_index*/ + 320 && i !== (i = /*key*/ + d[46].replace(/_/g, " ") + "") && Or(r, i), c === (c = u(d)) && h ? h.p(d, f) : (h.d(1), h = c(d), h && (h.c(), h.m(o, null))); + }, + d(d) { + d && Fe(e), h.d(); + } + }; +} +function z6(n) { + var w; + let e, t, i, r, s, a = ( + /*frame_data*/ + (((w = n[6][ + /*frame_slider_value*/ + n[7] + ]) == null ? void 0 : w.timestamp) || 0).toFixed(2) + "" + ), o, l, u, c, h, d, f, m = ( + /*duration*/ + (n[13] || 0).toFixed(2) + "" + ), p, v, b, E, y; + const T = [V6, H6], A = []; + function k(L, I) { + return ( + /*json_playing*/ + L[11] ? 1 : 0 + ); + } + return t = k(n), i = A[t] = T[t](n), { + c() { + e = qe("button"), i.c(), r = ht(), s = qe("span"), o = yi(a), l = yi("s"), u = ht(), c = qe("input"), d = ht(), f = qe("span"), p = yi(m), v = yi("s"), this.h(); + }, + l(L) { + e = ze(L, "BUTTON", { class: !0, "aria-label": !0 }); + var I = Rt(e); + i.l(I), I.forEach(Fe), r = ct(L), s = ze(L, "SPAN", { class: !0 }); + var R = Rt(s); + o = vi(R, a), l = vi(R, "s"), R.forEach(Fe), u = ct(L), c = ze(L, "INPUT", { + type: !0, + min: !0, + max: !0, + class: !0 + }), d = ct(L), f = ze(L, "SPAN", { class: !0 }); + var O = Rt(f); + p = vi(O, m), v = vi(O, "s"), O.forEach(Fe), this.h(); + }, + h() { + pe(e, "class", "icon svelte-zix4qo"), pe(e, "aria-label", "Play/Pause"), pe(s, "class", "time svelte-zix4qo"), pe(c, "type", "range"), pe(c, "min", "0"), pe(c, "max", h = /*frame_data*/ + n[6].length > 1 ? ( + /*frame_data*/ + n[6].length - 1 + ) : 1), pe(c, "class", "frame-slider svelte-zix4qo"), pe(f, "class", "time svelte-zix4qo"); + }, + m(L, I) { + dt(L, e, I), A[t].m(e, null), dt(L, r, I), dt(L, s, I), ke(s, o), ke(s, l), dt(L, u, I), dt(L, c, I), ed( + c, + /*frame_slider_value*/ + n[7] + ), dt(L, d, I), dt(L, f, I), ke(f, p), ke(f, v), b = !0, E || (y = [ + zi( + e, + "click", + /*click_handler_2*/ + n[34] + ), + zi( + c, + "change", + /*input_change_input_handler*/ + n[35] + ), + zi( + c, + "input", + /*input_change_input_handler*/ + n[35] + ) + ], E = !0); + }, + p(L, I) { + var O; + let R = t; + t = k(L), t !== R && (Ua(), ri(A[R], 1, 1, () => { + A[R] = null; + }), Na(), i = A[t], i || (i = A[t] = T[t](L), i.c()), Xt(i, 1), i.m(e, null)), (!b || I[0] & /*frame_data, frame_slider_value*/ + 192) && a !== (a = /*frame_data*/ + (((O = L[6][ + /*frame_slider_value*/ + L[7] + ]) == null ? void 0 : O.timestamp) || 0).toFixed(2) + "") && Or(o, a), (!b || I[0] & /*frame_data*/ + 64 && h !== (h = /*frame_data*/ + L[6].length > 1 ? ( + /*frame_data*/ + L[6].length - 1 + ) : 1)) && pe(c, "max", h), I[0] & /*frame_slider_value*/ + 128 && ed( + c, + /*frame_slider_value*/ + L[7] + ), (!b || I[0] & /*duration*/ + 8192) && m !== (m = /*duration*/ + (L[13] || 0).toFixed(2) + "") && Or(p, m); + }, + i(L) { + b || (Xt(i), b = !0); + }, + o(L) { + ri(i), b = !1; + }, + d(L) { + L && (Fe(e), Fe(r), Fe(s), Fe(u), Fe(c), Fe(d), Fe(f)), A[t].d(), E = !1, u1(y); + } + }; +} +function q6(n) { + let e, t, i, r, s, a = Zs( + /*time*/ + n[3] + ) + "", o, l, u = Zs( + /*duration*/ + n[13] || 0 + ) + "", c, h, d, f, m, p, v; + const b = [Y6, K6], E = []; + function y(T, A) { + return ( + /*paused*/ + T[14] ? 0 : 1 + ); + } + return t = y(n), i = E[t] = b[t](n), { + c() { + e = qe("button"), i.c(), r = ht(), s = qe("span"), o = yi(a), l = yi(" / "), c = yi(u), h = ht(), d = qe("progress"), this.h(); + }, + l(T) { + e = ze(T, "BUTTON", { class: !0, "aria-label": !0 }); + var A = Rt(e); + i.l(A), A.forEach(Fe), r = ct(T), s = ze(T, "SPAN", { class: !0 }); + var k = Rt(s); + o = vi(k, a), l = vi(k, " / "), c = vi(k, u), k.forEach(Fe), h = ct(T), d = ze(T, "PROGRESS", { class: !0 }), Rt(d).forEach(Fe), this.h(); + }, + h() { + pe(e, "class", "icon svelte-zix4qo"), pe(e, "aria-label", "Play/Pause"), pe(s, "class", "time svelte-zix4qo"), d.value = f = /*time*/ + n[3] / /*duration*/ + n[13] || 0, pe(d, "class", "svelte-zix4qo"); + }, + m(T, A) { + dt(T, e, A), E[t].m(e, null), dt(T, r, A), dt(T, s, A), ke(s, o), ke(s, l), ke(s, c), dt(T, h, A), dt(T, d, A), m = !0, p || (v = zi( + e, + "click", + /*click_handler_1*/ + n[33] + ), p = !0); + }, + p(T, A) { + let k = t; + t = y(T), t !== k && (Ua(), ri(E[k], 1, 1, () => { + E[k] = null; + }), Na(), i = E[t], i || (i = E[t] = b[t](T), i.c()), Xt(i, 1), i.m(e, null)), (!m || A[0] & /*time*/ + 8) && a !== (a = Zs( + /*time*/ + T[3] + ) + "") && Or(o, a), (!m || A[0] & /*duration*/ + 8192) && u !== (u = Zs( + /*duration*/ + T[13] || 0 + ) + "") && Or(c, u), (!m || A[0] & /*time, duration*/ + 8200 && f !== (f = /*time*/ + T[3] / /*duration*/ + T[13] || 0)) && (d.value = f); + }, + i(T) { + m || (Xt(i), m = !0); + }, + o(T) { + ri(i), m = !1; + }, + d(T) { + T && (Fe(e), Fe(r), Fe(s), Fe(h), Fe(d)), E[t].d(), p = !1, v(); + } + }; +} +function H6(n) { + let e, t; + return e = new qm({}), { + c() { + ms(e.$$.fragment); + }, + l(i) { + fs(e.$$.fragment, i); + }, + m(i, r) { + ps(e, i, r), t = !0; + }, + i(i) { + t || (Xt(e.$$.fragment, i), t = !0); + }, + o(i) { + ri(e.$$.fragment, i), t = !1; + }, + d(i) { + gs(e, i); + } + }; +} +function V6(n) { + let e, t; + return e = new Hm({}), { + c() { + ms(e.$$.fragment); + }, + l(i) { + fs(e.$$.fragment, i); + }, + m(i, r) { + ps(e, i, r), t = !0; + }, + i(i) { + t || (Xt(e.$$.fragment, i), t = !0); + }, + o(i) { + ri(e.$$.fragment, i), t = !1; + }, + d(i) { + gs(e, i); + } + }; +} +function K6(n) { + let e, t; + return e = new qm({}), { + c() { + ms(e.$$.fragment); + }, + l(i) { + fs(e.$$.fragment, i); + }, + m(i, r) { + ps(e, i, r), t = !0; + }, + i(i) { + t || (Xt(e.$$.fragment, i), t = !0); + }, + o(i) { + ri(e.$$.fragment, i), t = !1; + }, + d(i) { + gs(e, i); + } + }; +} +function Y6(n) { + let e, t; + return e = new Hm({}), { + c() { + ms(e.$$.fragment); + }, + l(i) { + fs(e.$$.fragment, i); + }, + m(i, r) { + ps(e, i, r), t = !0; + }, + i(i) { + t || (Xt(e.$$.fragment, i), t = !0); + }, + o(i) { + ri(e.$$.fragment, i), t = !1; + }, + d(i) { + gs(e, i); + } + }; +} +function sd(n) { + let e, t, i, r = "Video", s, a; + return { + c() { + e = qe("input"), t = ht(), i = qe("label"), i.textContent = r, this.h(); + }, + l(o) { + e = ze(o, "INPUT", { type: !0, id: !0, class: !0 }), t = ct(o), i = ze(o, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(i) !== "svelte-mxj9z4" && (i.textContent = r), this.h(); + }, + h() { + pe(e, "type", "checkbox"), pe(e, "id", "show-video"), pe(e, "class", "svelte-zix4qo"), pe(i, "for", "show-video"), pe(i, "class", "svelte-zix4qo"); + }, + m(o, l) { + dt(o, e, l), e.checked = /*show_video*/ + n[9], dt(o, t, l), dt(o, i, l), s || (a = zi( + e, + "change", + /*input_change_handler*/ + n[36] + ), s = !0); + }, + p(o, l) { + l[0] & /*show_video*/ + 512 && (e.checked = /*show_video*/ + o[9]); + }, + d(o) { + o && (Fe(e), Fe(t), Fe(i)), s = !1, a(); + } + }; +} +function W6(n) { + var wt; + let e, t, i, r, s, a, o, l, u, c, h, d, f, m, p, v, b, E = "Joints", y, T, A, k, w = "Bones", L, I, R, O, z = "Arrows", ie, N, X, K, Z = "Trails", Q, H, Y, U, te = "Laban", ne, ce, V, le = ( + /*video_src*/ + n[0] && /*show_video*/ + n[9] && id(n) + ), be = ( + /*show_laban*/ + n[16] && /*frame_data*/ + ((wt = n[6][ + /*current_frame_index*/ + n[8] + ]) == null ? void 0 : wt.laban_metrics) && rd(n) + ); + const Oe = [q6, z6], Ue = []; + function pt(q, Pe) { + return ( + /*show_video*/ + q[9] ? 0 : 1 + ); + } + u = pt(n), c = Ue[u] = Oe[u](n); + let Ge = ( + /*video_src*/ + n[0] && sd(n) + ); + return { + c() { + e = qe("div"), t = qe("div"), le && le.c(), i = ht(), r = qe("canvas"), s = ht(), be && be.c(), a = ht(), o = qe("div"), l = qe("div"), c.c(), h = ht(), d = qe("div"), f = qe("div"), Ge && Ge.c(), m = ht(), p = qe("input"), v = ht(), b = qe("label"), b.textContent = E, y = ht(), T = qe("input"), A = ht(), k = qe("label"), k.textContent = w, L = ht(), I = qe("input"), R = ht(), O = qe("label"), O.textContent = z, ie = ht(), N = qe("input"), X = ht(), K = qe("label"), K.textContent = Z, Q = ht(), H = qe("input"), Y = ht(), U = qe("label"), U.textContent = te, this.h(); + }, + l(q) { + e = ze(q, "DIV", { class: !0 }); + var Pe = Rt(e); + t = ze(Pe, "DIV", { class: !0 }); + var We = Rt(t); + le && le.l(We), i = ct(We), r = ze(We, "CANVAS", { class: !0 }), Rt(r).forEach(Fe), s = ct(We), be && be.l(We), We.forEach(Fe), a = ct(Pe), o = ze(Pe, "DIV", { class: !0 }); + var fe = Rt(o); + l = ze(fe, "DIV", { class: !0 }); + var Re = Rt(l); + c.l(Re), Re.forEach(Fe), h = ct(fe), d = ze(fe, "DIV", { class: !0 }); + var Ae = Rt(d); + f = ze(Ae, "DIV", { class: !0 }); + var Ee = Rt(f); + Ge && Ge.l(Ee), m = ct(Ee), p = ze(Ee, "INPUT", { type: !0, id: !0, class: !0 }), v = ct(Ee), b = ze(Ee, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(b) !== "svelte-u97f3m" && (b.textContent = E), y = ct(Ee), T = ze(Ee, "INPUT", { type: !0, id: !0, class: !0 }), A = ct(Ee), k = ze(Ee, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(k) !== "svelte-17zfkf8" && (k.textContent = w), L = ct(Ee), I = ze(Ee, "INPUT", { type: !0, id: !0, class: !0 }), R = ct(Ee), O = ze(Ee, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(O) !== "svelte-1yhdcrq" && (O.textContent = z), ie = ct(Ee), N = ze(Ee, "INPUT", { type: !0, id: !0, class: !0 }), X = ct(Ee), K = ze(Ee, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(K) !== "svelte-1viyw0v" && (K.textContent = Z), Q = ct(Ee), H = ze(Ee, "INPUT", { type: !0, id: !0, class: !0 }), Y = ct(Ee), U = ze(Ee, "LABEL", { + for: !0, + class: !0, + "data-svelte-h": !0 + }), cn(U) !== "svelte-10cmm5u" && (U.textContent = te), Ee.forEach(Fe), Ae.forEach(Fe), fe.forEach(Fe), Pe.forEach(Fe), this.h(); + }, + h() { + pe(r, "class", "overlay-canvas svelte-zix4qo"), pe(t, "class", "player-container svelte-zix4qo"), pe(l, "class", "inner svelte-zix4qo"), pe(p, "type", "checkbox"), pe(p, "id", "show-joints"), pe(p, "class", "svelte-zix4qo"), pe(b, "for", "show-joints"), pe(b, "class", "svelte-zix4qo"), pe(T, "type", "checkbox"), pe(T, "id", "show-bones"), pe(T, "class", "svelte-zix4qo"), pe(k, "for", "show-bones"), pe(k, "class", "svelte-zix4qo"), pe(I, "type", "checkbox"), pe(I, "id", "show-direction-arrows"), pe(I, "class", "svelte-zix4qo"), pe(O, "for", "show-direction-arrows"), pe(O, "class", "svelte-zix4qo"), pe(N, "type", "checkbox"), pe(N, "id", "show-motion-trails"), pe(N, "class", "svelte-zix4qo"), pe(K, "for", "show-motion-trails"), pe(K, "class", "svelte-zix4qo"), pe(H, "type", "checkbox"), pe(H, "id", "show-laban"), pe(H, "class", "svelte-zix4qo"), pe(U, "for", "show-laban"), pe(U, "class", "svelte-zix4qo"), pe(f, "class", "checkbox-container svelte-zix4qo"), pe(d, "class", "checkbox-row svelte-zix4qo"), pe(o, "class", "controls svelte-zix4qo"), pe(e, "class", "wrap svelte-zix4qo"); + }, + m(q, Pe) { + dt(q, e, Pe), ke(e, t), le && le.m(t, null), ke(t, i), ke(t, r), n[31](r), ke(t, s), be && be.m(t, null), n[32](t), ke(e, a), ke(e, o), ke(o, l), Ue[u].m(l, null), ke(o, h), ke(o, d), ke(d, f), Ge && Ge.m(f, null), ke(f, m), ke(f, p), p.checked = /*show_joints*/ + n[10], ke(f, v), ke(f, b), ke(f, y), ke(f, T), T.checked = /*show_bones*/ + n[15], ke(f, A), ke(f, k), ke(f, L), ke(f, I), I.checked = /*show_direction_arrows*/ + n[17], ke(f, R), ke(f, O), ke(f, ie), ke(f, N), N.checked = /*show_motion_trails*/ + n[18], ke(f, X), ke(f, K), ke(f, Q), ke(f, H), H.checked = /*show_laban*/ + n[16], ke(f, Y), ke(f, U), ne = !0, ce || (V = [ + zi( + p, + "change", + /*input0_change_handler*/ + n[37] + ), + zi( + T, + "change", + /*input1_change_handler*/ + n[38] + ), + zi( + I, + "change", + /*input2_change_handler*/ + n[39] + ), + zi( + N, + "change", + /*input3_change_handler*/ + n[40] + ), + zi( + H, + "change", + /*input4_change_handler*/ + n[41] + ) + ], ce = !0); + }, + p(q, Pe) { + var fe; + /*video_src*/ + q[0] && /*show_video*/ + q[9] ? le ? (le.p(q, Pe), Pe[0] & /*video_src, show_video*/ + 513 && Xt(le, 1)) : (le = id(q), le.c(), Xt(le, 1), le.m(t, i)) : le && (Ua(), ri(le, 1, 1, () => { + le = null; + }), Na()), /*show_laban*/ + q[16] && /*frame_data*/ + ((fe = q[6][ + /*current_frame_index*/ + q[8] + ]) != null && fe.laban_metrics) ? be ? be.p(q, Pe) : (be = rd(q), be.c(), be.m(t, null)) : be && (be.d(1), be = null); + let We = u; + u = pt(q), u === We ? Ue[u].p(q, Pe) : (Ua(), ri(Ue[We], 1, 1, () => { + Ue[We] = null; + }), Na(), c = Ue[u], c ? c.p(q, Pe) : (c = Ue[u] = Oe[u](q), c.c()), Xt(c, 1), c.m(l, null)), /*video_src*/ + q[0] ? Ge ? Ge.p(q, Pe) : (Ge = sd(q), Ge.c(), Ge.m(f, m)) : Ge && (Ge.d(1), Ge = null), Pe[0] & /*show_joints*/ + 1024 && (p.checked = /*show_joints*/ + q[10]), Pe[0] & /*show_bones*/ + 32768 && (T.checked = /*show_bones*/ + q[15]), Pe[0] & /*show_direction_arrows*/ + 131072 && (I.checked = /*show_direction_arrows*/ + q[17]), Pe[0] & /*show_motion_trails*/ + 262144 && (N.checked = /*show_motion_trails*/ + q[18]), Pe[0] & /*show_laban*/ + 65536 && (H.checked = /*show_laban*/ + q[16]); + }, + i(q) { + ne || (Xt(le), Xt(c), ne = !0); + }, + o(q) { + ri(le), ri(c), ne = !1; + }, + d(q) { + q && Fe(e), le && le.d(), n[31](null), be && be.d(), n[32](null), Ue[u].d(), Ge && Ge.d(), ce = !1, u1(V); + } + }; +} +function j6(n, e, t) { + let { video_src: i = void 0 } = e, { json_data_str: r = void 0 } = e, { autoplay: s } = e, { loop: a } = e, o = 0, l, u = !0, c, h, d = [], f = {}, m = {}, p = 0, v = 0, b = 30, E = !1, y, T, A, k, w, L = !1, I = null, R; + function O() { + if (!h || d.length === 0) return; + const q = h.getContext("2d"); + if (!q) return; + let Pe = f.height && f.width ? f.height / f.width : c && c.videoHeight > 0 ? c.videoHeight / c.videoWidth : 9 / 16; + h.parentElement && (t(5, h.width = h.parentElement.clientWidth, h), t(5, h.height = h.width * Pe, h)), q.clearRect(0, 0, h.width, h.height); + const We = d[v]; + if (!We) return; + const fe = h.width, Re = h.height; + if (w && We.motion_trail && We.motion_trail.forEach((Ae) => { + const Ee = Ae.alpha || 0.5; + q.strokeStyle = `rgba(138, 43, 226, ${Ee})`, q.lineWidth = Math.max(1, 3 * Ee), q.beginPath(), q.moveTo(Ae.start.x * fe, Ae.start.y * Re), q.lineTo(Ae.end.x * fe, Ae.end.y * Re), q.stroke(); + }), T && We.bones && We.bones.forEach((Ae) => { + const Ee = Ae.start.x * fe, Je = Ae.start.y * Re, Et = Ae.end.x * fe, Ft = Ae.end.y * Re, vt = q.createLinearGradient(Ee, Je, Et, Ft); + vt.addColorStop(0, "rgba(64, 130, 109, 0.9)"), vt.addColorStop(0.5, "rgba(60, 140, 100, 1.0)"), vt.addColorStop(1, "rgba(65, 132, 110, 0.88)"), q.shadowColor = "rgba(64, 130, 109, 0.5)", q.shadowBlur = 6, q.strokeStyle = vt, q.lineWidth = 2, q.lineCap = "round", q.beginPath(), q.moveTo(Ee, Je), q.lineTo(Et, Ft), q.stroke(), q.shadowBlur = 0; + }), y && We.joints && We.joints.forEach((Ae) => { + const Ee = Ae.confidence || 1, Je = Math.max(0.4, Ee), Et = Math.max(1, 3 * Ee); + q.shadowColor = "rgba(64, 130, 109, 0.5)", q.shadowBlur = 8, q.fillStyle = `rgba(138, 43, 226, ${Je})`, q.beginPath(), q.arc(Ae.x * fe, Ae.y * Re, Et, 0, 2 * Math.PI), q.fill(), q.shadowBlur = 0, q.strokeStyle = "rgba(64, 130, 109, 0.9)", q.lineWidth = 1.5, q.stroke(); + }), k && We.direction_arrow) { + const Ae = We.direction_arrow, Je = { + low: { + color: "rgba(0, 255, 127, 0.9)", + glow: "rgba(0, 255, 127, 0.4)" + }, + // Spring green + medium: { + color: "rgba(255, 140, 0, 0.9)", + glow: "rgba(255, 140, 0, 0.4)" + }, + // Dark orange + high: { + color: "rgba(255, 20, 147, 0.9)", + glow: "rgba(255, 20, 147, 0.4)" + } + // Deep pink + }[Ae.intensity] || { + color: "rgba(255, 255, 255, 0.9)", + glow: "rgba(255, 255, 255, 0.4)" + }, Et = Ae.start.x * fe, Ft = Ae.start.y * Re, vt = Ae.end.x * fe, St = Ae.end.y * Re, Pt = Math.atan2(St - Ft, vt - Et); + q.shadowColor = Je.glow, q.shadowBlur = 12; + const kt = q.createLinearGradient(Et, Ft, vt, St); + kt.addColorStop(0, Je.color.replace("0.9", "0.6")), kt.addColorStop(0.7, Je.color), kt.addColorStop(1, Je.color.replace("0.9", "1.0")), q.strokeStyle = kt, q.lineWidth = 4, q.lineCap = "round", q.beginPath(), q.moveTo(Et, Ft), q.lineTo(vt, St), q.stroke(); + const oi = 18, nr = Math.PI / 5; + q.fillStyle = Je.color, q.beginPath(), q.moveTo(vt, St), q.lineTo(vt - oi * Math.cos(Pt - nr), St - oi * Math.sin(Pt - nr)), q.lineTo(vt - oi * 0.6 * Math.cos(Pt), St - oi * 0.6 * Math.sin(Pt)), q.lineTo(vt - oi * Math.cos(Pt + nr), St - oi * Math.sin(Pt + nr)), q.closePath(), q.fill(), q.shadowBlur = 0; + } + } + function z() { + L || d.length <= 1 || (t(11, L = !0), I = setInterval( + () => { + p < d.length - 1 ? t(7, p += 1) : t(7, p = 0); + }, + 1e3 / b + )); + } + function ie() { + t(11, L = !1), I && clearInterval(I); + } + function N() { + c && t(3, o = c.currentTime); + } + B6(() => () => { + c && c.removeEventListener("timeupdate", N); + }); + function X(q) { + o = q, t(3, o); + } + function K(q) { + l = q, t(13, l), t(21, r), t(10, y), t(23, m), t(0, i), t(22, f); + } + function Z(q) { + u = q, t(14, u); + } + function Q(q) { + c = q, t(4, c); + } + const H = () => u ? c.play() : c.pause(); + function Y(q) { + Zh.call(this, n, q); + } + function U(q) { + Zh.call(this, n, q); + } + function te(q) { + fn[q ? "unshift" : "push"](() => { + h = q, t(5, h); + }); + } + function ne(q) { + fn[q ? "unshift" : "push"](() => { + R = q, t(12, R); + }); + } + const ce = () => u ? c.play() : c.pause(), V = () => L ? ie() : z(); + function le() { + p = $6(this.value), t(7, p); + } + function be() { + E = this.checked, t(9, E); + } + function Oe() { + y = this.checked, t(10, y), t(21, r), t(23, m), t(0, i), t(22, f); + } + function Ue() { + T = this.checked, t(15, T), t(21, r), t(10, y), t(23, m), t(0, i), t(22, f); + } + function pt() { + k = this.checked, t(17, k), t(21, r), t(10, y), t(23, m), t(0, i), t(22, f); + } + function Ge() { + w = this.checked, t(18, w), t(21, r), t(10, y), t(23, m), t(0, i), t(22, f); + } + function wt() { + A = this.checked, t(16, A), t(21, r), t(10, y), t(23, m), t(0, i), t(22, f); + } + return n.$$set = (q) => { + "video_src" in q && t(0, i = q.video_src), "json_data_str" in q && t(21, r = q.json_data_str), "autoplay" in q && t(1, s = q.autoplay), "loop" in q && t(2, a = q.loop); + }, n.$$.update = () => { + if (n.$$.dirty[0] & /*json_data_str, show_joints, capabilities, video_src, video_info*/ + 14681089 && r) + try { + const q = JSON.parse(r); + t(22, f = q.video_info || {}), t(6, d = q.frames || []), b = q.fps || 30, t(23, m = q.capabilities || {}), y === void 0 && (t(10, y = m.has_joints !== !1), t(15, T = m.has_bones !== !1), t(17, k = m.has_direction_arrows !== !1), t(18, w = m.has_motion_trails !== !1), t(16, A = !1)), i || t(13, l = f.duration_seconds || 0); + } catch (q) { + console.error("Failed to parse JSON data:", q); + } + if (n.$$.dirty[0] & /*player_container, video_info*/ + 4198400 && R && f.width && f.height) { + const q = f.width / f.height; + R.style.setProperty("--player-aspect-ratio", `${q}`); + } + n.$$.dirty[0] & /*show_video, frame_data, time, frame_slider_value*/ + 712 && (E && d.length > 0 && o !== void 0 ? t(8, v = d.findIndex((q) => o >= q.timestamp && (d[d.indexOf(q) + 1] ? o < d[d.indexOf(q) + 1].timestamp : !0))) : E || t(8, v = p)), n.$$.dirty[0] & /*canvas, current_frame_index, time*/ + 296 && h && (v >= 0 || o >= 0) && O(), n.$$.dirty[0] & /*show_video, json_playing*/ + 2560 && !E && L && z(), n.$$.dirty[0] & /*json_playing*/ + 2048 && (L || ie()), n.$$.dirty[0] & /*video*/ + 16 && c && c.addEventListener("timeupdate", N); + }, [ + i, + s, + a, + o, + c, + h, + d, + p, + v, + E, + y, + L, + R, + l, + u, + T, + A, + k, + w, + z, + ie, + r, + f, + m, + X, + K, + Z, + Q, + H, + Y, + U, + te, + ne, + ce, + V, + le, + be, + Oe, + Ue, + pt, + Ge, + wt + ]; +} +class X6 extends F6 { + constructor(e) { + super(), M6( + this, + e, + j6, + W6, + O6, + { + video_src: 0, + json_data_str: 21, + autoplay: 1, + loop: 2 + }, + null, + [-1, -1] + ); + } +} +const { + SvelteComponent: Q6, + assign: Z6, + check_outros: J6, + claim_component: P0, + claim_space: e7, + create_component: M0, + destroy_component: O0, + detach: ad, + empty: od, + flush: Zt, + get_spread_object: t7, + get_spread_update: i7, + group_outros: r7, + init: n7, + insert_hydration: ld, + mount_component: $0, + safe_not_equal: s7, + space: a7, + transition_in: mn, + transition_out: Qn +} = window.__gradio__svelte__internal; +function ud(n) { + let e, t; + return e = new X6({ + props: { + video_src: ( + /*video_url*/ + n[12] + ), + json_data_str: ( + /*json_content*/ + n[13] + ), + autoplay: ( + /*autoplay*/ + n[10] + ), + loop: ( + /*loop*/ + n[11] + ) + } + }), { + c() { + M0(e.$$.fragment); + }, + l(i) { + P0(e.$$.fragment, i); + }, + m(i, r) { + $0(e, i, r), t = !0; + }, + p(i, r) { + const s = {}; + r & /*video_url*/ + 4096 && (s.video_src = /*video_url*/ + i[12]), r & /*json_content*/ + 8192 && (s.json_data_str = /*json_content*/ + i[13]), r & /*autoplay*/ + 1024 && (s.autoplay = /*autoplay*/ + i[10]), r & /*loop*/ + 2048 && (s.loop = /*loop*/ + i[11]), e.$set(s); + }, + i(i) { + t || (mn(e.$$.fragment, i), t = !0); + }, + o(i) { + Qn(e.$$.fragment, i), t = !1; + }, + d(i) { + O0(e, i); + } + }; +} +function o7(n) { + let e, t, i, r; + const s = [ + /*loading_status*/ + n[4], + { autoscroll: ( + /*gradio*/ + n[0].autoscroll + ) }, + { i18n: ( + /*gradio*/ + n[0].i18n + ) } + ]; + let a = {}; + for (let l = 0; l < s.length; l += 1) + a = Z6(a, s[l]); + e = new h6({ props: a }); + let o = ( + /*json_content*/ + n[13] && ud(n) + ); + return { + c() { + M0(e.$$.fragment), t = a7(), o && o.c(), i = od(); + }, + l(l) { + P0(e.$$.fragment, l), t = e7(l), o && o.l(l), i = od(); + }, + m(l, u) { + $0(e, l, u), ld(l, t, u), o && o.m(l, u), ld(l, i, u), r = !0; + }, + p(l, u) { + const c = u & /*loading_status, gradio*/ + 17 ? i7(s, [ + u & /*loading_status*/ + 16 && t7( + /*loading_status*/ + l[4] + ), + u & /*gradio*/ + 1 && { autoscroll: ( + /*gradio*/ + l[0].autoscroll + ) }, + u & /*gradio*/ + 1 && { i18n: ( + /*gradio*/ + l[0].i18n + ) } + ]) : {}; + e.$set(c), /*json_content*/ + l[13] ? o ? (o.p(l, u), u & /*json_content*/ + 8192 && mn(o, 1)) : (o = ud(l), o.c(), mn(o, 1), o.m(i.parentNode, i)) : o && (r7(), Qn(o, 1, 1, () => { + o = null; + }), J6()); + }, + i(l) { + r || (mn(e.$$.fragment, l), mn(o), r = !0); + }, + o(l) { + Qn(e.$$.fragment, l), Qn(o), r = !1; + }, + d(l) { + l && (ad(t), ad(i)), O0(e, l), o && o.d(l); + } + }; +} +function l7(n) { + let e, t; + return e = new by({ + props: { + visible: ( + /*visible*/ + n[3] + ), + elem_id: ( + /*elem_id*/ + n[1] + ), + elem_classes: ( + /*elem_classes*/ + n[2] + ), + height: ( + /*height*/ + n[5] + ), + width: ( + /*width*/ + n[6] + ), + container: ( + /*container*/ + n[7] + ), + scale: ( + /*scale*/ + n[8] + ), + min_width: ( + /*min_width*/ + n[9] + ), + allow_overflow: !1, + $$slots: { default: [o7] }, + $$scope: { ctx: n } + } + }), { + c() { + M0(e.$$.fragment); + }, + l(i) { + P0(e.$$.fragment, i); + }, + m(i, r) { + $0(e, i, r), t = !0; + }, + p(i, [r]) { + const s = {}; + r & /*visible*/ + 8 && (s.visible = /*visible*/ + i[3]), r & /*elem_id*/ + 2 && (s.elem_id = /*elem_id*/ + i[1]), r & /*elem_classes*/ + 4 && (s.elem_classes = /*elem_classes*/ + i[2]), r & /*height*/ + 32 && (s.height = /*height*/ + i[5]), r & /*width*/ + 64 && (s.width = /*width*/ + i[6]), r & /*container*/ + 128 && (s.container = /*container*/ + i[7]), r & /*scale*/ + 256 && (s.scale = /*scale*/ + i[8]), r & /*min_width*/ + 512 && (s.min_width = /*min_width*/ + i[9]), r & /*$$scope, video_url, json_content, autoplay, loop, loading_status, gradio*/ + 80913 && (s.$$scope = { dirty: r, ctx: i }), e.$set(s); + }, + i(i) { + t || (mn(e.$$.fragment, i), t = !0); + }, + o(i) { + Qn(e.$$.fragment, i), t = !1; + }, + d(i) { + O0(e, i); + } + }; +} +function u7(n, e, t) { + var i; + let { value: r = null } = e, { gradio: s } = e, { elem_id: a = "", elem_classes: o = [], visible: l = !0, loading_status: u, height: c, width: h, container: d, scale: f, min_width: m } = e, { autoplay: p = !1, loop: v = !1 } = e, b, E; + return n.$$set = (y) => { + "value" in y && t(14, r = y.value), "gradio" in y && t(0, s = y.gradio), "elem_id" in y && t(1, a = y.elem_id), "elem_classes" in y && t(2, o = y.elem_classes), "visible" in y && t(3, l = y.visible), "loading_status" in y && t(4, u = y.loading_status), "height" in y && t(5, c = y.height), "width" in y && t(6, h = y.width), "container" in y && t(7, d = y.container), "scale" in y && t(8, f = y.scale), "min_width" in y && t(9, m = y.min_width), "autoplay" in y && t(10, p = y.autoplay), "loop" in y && t(11, v = y.loop); + }, n.$$.update = () => { + n.$$.dirty & /*value, _a*/ + 49152 && (r ? (t(12, b = t(15, i = r.video) === null || i === void 0 ? void 0 : i.url), t(13, E = r.json_data)) : (t(12, b = null), t(13, E = null))); + }, [ + s, + a, + o, + l, + u, + c, + h, + d, + f, + m, + p, + v, + b, + E, + r, + i + ]; +} +class V$ extends Q6 { + constructor(e) { + super(), n7(this, e, u7, l7, s7, { + value: 14, + gradio: 0, + elem_id: 1, + elem_classes: 2, + visible: 3, + loading_status: 4, + height: 5, + width: 6, + container: 7, + scale: 8, + min_width: 9, + autoplay: 10, + loop: 11 + }); + } + get value() { + return this.$$.ctx[14]; + } + set value(e) { + this.$$set({ value: e }), Zt(); + } + get gradio() { + return this.$$.ctx[0]; + } + set gradio(e) { + this.$$set({ gradio: e }), Zt(); + } + get elem_id() { + return this.$$.ctx[1]; + } + set elem_id(e) { + this.$$set({ elem_id: e }), Zt(); + } + get elem_classes() { + return this.$$.ctx[2]; + } + set elem_classes(e) { + this.$$set({ elem_classes: e }), Zt(); + } + get visible() { + return this.$$.ctx[3]; + } + set visible(e) { + this.$$set({ visible: e }), Zt(); + } + get loading_status() { + return this.$$.ctx[4]; + } + set loading_status(e) { + this.$$set({ loading_status: e }), Zt(); + } + get height() { + return this.$$.ctx[5]; + } + set height(e) { + this.$$set({ height: e }), Zt(); + } + get width() { + return this.$$.ctx[6]; + } + set width(e) { + this.$$set({ width: e }), Zt(); + } + get container() { + return this.$$.ctx[7]; + } + set container(e) { + this.$$set({ container: e }), Zt(); + } + get scale() { + return this.$$.ctx[8]; + } + set scale(e) { + this.$$set({ scale: e }), Zt(); + } + get min_width() { + return this.$$.ctx[9]; + } + set min_width(e) { + this.$$set({ min_width: e }), Zt(); + } + get autoplay() { + return this.$$.ctx[10]; + } + set autoplay(e) { + this.$$set({ autoplay: e }), Zt(); + } + get loop() { + return this.$$.ctx[11]; + } + set loop(e) { + this.$$set({ loop: e }), Zt(); + } +} +export { + q7 as BaseExample, + V$ as default +}; diff --git a/src/backend/gradio_overlay_video/templates/component/style.css b/src/backend/gradio_overlay_video/templates/component/style.css new file mode 100644 index 0000000000000000000000000000000000000000..5d1f023d82dc0b6a48f7548935f9956957b1a557 --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/component/style.css @@ -0,0 +1 @@ +.unstyled-link.svelte-151nsdd{all:unset;cursor:pointer}.overlay.svelte-1pwzuub{position:absolute;background-color:#0006;width:100%;height:100%}.hidden.svelte-1pwzuub{display:none}.load-wrap.svelte-1pwzuub{display:flex;justify-content:center;align-items:center;height:100%}.loader.svelte-1pwzuub{display:flex;position:relative;background-color:var(--border-color-accent-subdued);animation:svelte-1pwzuub-shadowPulse 2s linear infinite;box-shadow:-24px 0 var(--border-color-accent-subdued),24px 0 var(--border-color-accent-subdued);margin:var(--spacing-md);border-radius:50%;width:10px;height:10px;scale:.5}@keyframes svelte-1pwzuub-shadowPulse{33%{box-shadow:-24px 0 var(--border-color-accent-subdued),24px 0 #fff;background:#fff}66%{box-shadow:-24px 0 #fff,24px 0 #fff;background:var(--border-color-accent-subdued)}to{box-shadow:-24px 0 #fff,24px 0 var(--border-color-accent-subdued);background:#fff}}.container.svelte-13u05e4{flex:none;max-width:none}.container.svelte-13u05e4 video{width:var(--size-full);height:var(--size-full);object-fit:cover}.container.svelte-13u05e4:hover,.container.selected.svelte-13u05e4{border-color:var(--border-color-accent)}.container.table.svelte-13u05e4{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);overflow:hidden;width:var(--size-20);height:var(--size-20);object-fit:cover}.container.gallery.svelte-13u05e4{height:var(--size-20);max-height:var(--size-20);object-fit:cover}.block.svelte-239wnu{position:relative;margin:0;box-shadow:var(--block-shadow);border-width:var(--block-border-width);border-color:var(--block-border-color);border-radius:var(--block-radius);background:var(--block-background-fill);width:100%;line-height:var(--line-sm)}.block.fullscreen.svelte-239wnu{border-radius:0}.auto-margin.svelte-239wnu{margin-left:auto;margin-right:auto}.block.border_focus.svelte-239wnu{border-color:var(--color-accent)}.block.border_contrast.svelte-239wnu{border-color:var(--body-text-color)}.padded.svelte-239wnu{padding:var(--block-padding)}.hidden.svelte-239wnu{display:none}.flex.svelte-239wnu{display:flex;flex-direction:column}.hide-container.svelte-239wnu:not(.fullscreen){margin:0;box-shadow:none;--block-border-width:0;background:transparent;padding:0;overflow:visible}.resize-handle.svelte-239wnu{position:absolute;bottom:0;right:0;width:10px;height:10px;fill:var(--block-border-color);cursor:nwse-resize}.fullscreen.svelte-239wnu{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1000;overflow:auto}.animating.svelte-239wnu{animation:svelte-239wnu-pop-out .1s ease-out forwards}@keyframes svelte-239wnu-pop-out{0%{position:fixed;top:var(--start-top);left:var(--start-left);width:var(--start-width);height:var(--start-height);z-index:100}to{position:fixed;top:0vh;left:0vw;width:100vw;height:100vh;z-index:1000}}.placeholder.svelte-239wnu{border-radius:var(--block-radius);border-width:var(--block-border-width);border-color:var(--block-border-color);border-style:dashed}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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ADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBBAE0AUwBSAGUAZwB1AGwAYQByAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASwBhAFQAZQBYAF8AQQBNAFMALQBSAGUAZwB1AGwAYQByAEsAYQBUAGUAWABfAEEATQBTAC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AQQBNAFMALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAIAAAAAAAD/gwAyAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAEAAgADACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBOAQIAlgCKAOoBAwDYANkBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkA7wE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoApwFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswC5AbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4HdW5pMDBBMARoYmFyB3VuaTAzMDIJdGlsZGVjb21iB3VuaTAzREQHdW5pMDNGMAd1bmkyMDM1B3VuaTIxMEYHdW5pMjEyNwd1bmkyMTMyB3VuaTIxMzYHdW5pMjEzNwd1bmkyMTM4B3VuaTIxNDEJYXJyb3dsZWZ0CmFycm93cmlnaHQHdW5pMjE5QQd1bmkyMTlCB3VuaTIxOUUHdW5pMjFBMAd1bmkyMUEyB3VuaTIxQTMHdW5pMjFBQgd1bmkyMUFDB3VuaTIxQUQHdW5pMjFBRQd1bmkyMUIwB3VuaTIxQjEHdW5pMjFCNgd1bmkyMUI3B3VuaTIxQkEHdW5pMjFCQgd1bmkyMUJFB3VuaTIxQkYHdW5pMjFDMgd1bmkyMUMzB3VuaTIxQzQHdW5pMjFDNgd1bmkyMUM3B3VuaTIxQzgHdW5pMjFDOQd1bmkyMUNBB3VuaTIxQ0IHdW5pMjFDQwd1bmkyMUNEB3VuaTIxQ0UHdW5pMjFDRgd1bmkyMURBB3VuaTIxREIHdW5pMjFERAd1bmkyMUUwB3VuaTIxRTIHdW5pMjIwMQd1bmkyMjA0CGVtcHR5c2V0B3VuaTIyMEQHdW5pMjIxNAd1bmkyMjE2DHByb3BvcnRpb25hbAVhbmdsZQd1bmkyMjIxB3VuaTIyMjIHdW5pMjIyMwd1bmkyMjI0B3VuaTIyMjUHdW5pMjIyNgl0aGVyZWZvcmUHdW5pMjIzNQdzaW1pbGFyB3VuaTIyM0QHdW5pMjI0MQd1bmkyMjQyB3VuaTIyNDYHdW5pMjI0QQd1bmkyMjRFB3VuaTIyNEYHdW5pMjI1MQd1bmkyMjUyB3VuaTIyNTMHdW5pMjI1Ngd1bmkyMjU3B3VuaTIyNUMHdW5pMjI2Ngd1bmkyMjY3B3VuaTIyNjgHdW5pMjI2OQd1bmkyMjZDB3VuaTIyNkUHdW5pMjI2Rgd1bmkyMjcwB3VuaTIyNzEHdW5pMjI3Mgd1bmkyMjczB3VuaTIyNzYHdW5pMjI3Nwd1bmkyMjdDB3VuaTIyN0QHdW5pMjI3RQd1bmkyMjdGB3VuaTIyODAHdW5pMjI4MQd1bmkyMjg4B3VuaTIyODkHdW5pMjI4QQd1bmkyMjhCB3VuaTIyOEYHdW5pMjI5MAd1bmkyMjlBB3VuaTIyOUIHdW5pMjI5RAd1bmkyMjlFB3VuaTIyOUYHdW5pMjJBMAd1bmkyMkExB3VuaTIyQTgHdW5pMjJBOQd1bmkyMkFBB3VuaTIyQUMHdW5pMjJBRAd1bmkyMkFFB3VuaTIyQUYHdW5pMjJCMgd1bmkyMkIzB3VuaTIyQjQHdW5pMjJCNQd1bmkyMkI4B3VuaTIyQkEHdW5pMjJCQgd1bmkyMkJDB2RvdG1hdGgHdW5pMjJDNwd1bmkyMkM5B3VuaTIyQ0EHdW5pMjJDQgd1bmkyMkNDB3VuaTIyQ0QHdW5pMjJDRQd1bmkyMkNGB3VuaTIyRDAHdW5pMjJEMQd1bmkyMkQyB3VuaTIyRDMHdW5pMjJENAd1bmkyMkQ2B3VuaTIyRDcHdW5pMjJEOAd1bmkyMkQ5B3VuaTIyREEHdW5pMjJEQgd1bmkyMkRFB3VuaTIyREYHdW5pMjJFMAd1bmkyMkUxB3VuaTIyRTYHdW5pMjJFNwd1bmkyMkU4B3VuaTIyRTkHdW5pMjJFQQd1bmkyMkVCB3VuaTIyRUMHdW5pMjJFRAd1bmkyMzIyB3VuaTIzMjMHdW5pMjRDOAhTRjAxMDAwMAhTRjAzMDAwMAhTRjAyMDAwMAhTRjA0MDAwMAd1bmkyNTcxB3VuaTI1NzIJZmlsbGVkYm94BkgyMjA3Mwd0cmlhZ3VwB3VuaTI1QjMHdW5pMjVCNgd0cmlhZ2RuB3VuaTI1QkQHdW5pMjVDMAd1bmkyNjA1B3VuaTI3MTMHdW5pMjcyMAd1bmkyOUVCB3VuaTJBNUUHdW5pMkE3RAd1bmkyQTdFB3VuaTJBODUHdW5pMkE4Ngd1bmkyQTg3B3VuaTJBODgHdW5pMkE4OQd1bmkyQThBB3VuaTJBOEIHdW5pMkE4Qwd1bmkyQTk1B3VuaTJBOTYHdW5pMkFCNQd1bmkyQUI2B3VuaTJBQjcHdW5pMkFCOAd1bmkyQUI5B3VuaTJBQkEHdW5pMkFDNQd1bmkyQUM2B3VuaTJBQ0IHdW5pMkFDQwd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMEMHdW5pRTAwRAd1bmlFMDBFB3VuaUUwMEYHdW5pRTAxMAd1bmlFMDExB3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAxQQd1bmlFMDFCAAAAAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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I0KxDABCsAtDKyCwYFBYILBAUVizBCAFIBuzBCYFGllCQiMgR7AGQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsARDYGQjsAVDYWRQWLAEQ2EbsAVDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsTABFCstsEcssQA6Ky6xMAEUKy2wSCyxADsrISMgIDywBiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrIAAQAqsQAHQrMMBAEKKrEAB0KzEgIBCiqxAAhCugNAAAEACyqxAAlCugBAAAEACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVmzDgQBDiq4Af+FsASNsQIARLMFZAYAREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAGUAZQK//+8CFQAAAr//7wIVAAAAAAAJAHIAAwABBAkAAACiAAAAAwABBAkAAQAiAKIAAwABBAkAAgAIAMQAAwABBAkAAwBMAMwAAwABBAkABAAsARgAAwABBAkABQBCAUQAAwABBAkABgAsARgAAwABBAkADQJyAYYAAwABBAkADgA0A/gAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8AQwBhAGwAaQBnAHIAYQBwAGgAaQBjAEIAbwBsAGQARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABLAGEAVABlAFgAXwBDAGEAbABpAGcAcgBhAHAAaABpAGMALQBCAG8AbABkAEsAYQBUAGUAWABfAEMAYQBsAGkAZwByAGEAcABoAGkAYwAtAEIAbwBsAGQAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAEMAYQBsAGkAZwByAGEAcABoAGkAYwAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAABAAIAAwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0BAgd1bmkwMEEwAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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sAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwBENgZCOwBUNhZFBYsARDYRuwBUNgWbADJbACYiCwAFBYsEBgWWawAWNhsAIlRmE4IyA8IzgbISAgRiNHsAErI2E4IVmxMAEUKy2wRyyxADorLrEwARQrLbBILLEAOyshIyAgPLAGI0IjOLEwARQrsAZDLrAwKy2wSSywABUgR7AAI0KyAAEBFRQTLrA2Ki2wSiywABUgR7AAI0KyAAEBFRQTLrA2Ki2wSyyxAAEUE7A3Ki2wTCywOSotsE0ssAAWRSMgLiBGiiNhOLEwARQrLbBOLLAKI0KwTSstsE8ssgAARistsFAssgABRistsFEssgEARistsFIssgEBRistsFMssgAARystsFQssgABRystsFUssgEARystsFYssgEBRystsFcsswAAAEMrLbBYLLMAAQBDKy2wWSyzAQAAQystsFosswEBAEMrLbBbLLMAAAFDKy2wXCyzAAEBQystsF0sswEAAUMrLbBeLLMBAQFDKy2wXyyyAABFKy2wYCyyAAFFKy2wYSyyAQBFKy2wYiyyAQFFKy2wYyyyAABIKy2wZCyyAAFIKy2wZSyyAQBIKy2wZiyyAQFIKy2wZyyzAAAARCstsGgsswABAEQrLbBpLLMBAABEKy2waiyzAQEARCstsGssswAAAUQrLbBsLLMAAQFEKy2wbSyzAQABRCstsG4sswEBAUQrLbBvLLEAPCsusTABFCstsHAssQA8K7BAKy2wcSyxADwrsEErLbByLLAAFrEAPCuwQistsHMssQE8K7BAKy2wdCyxATwrsEErLbB1LLAAFrEBPCuwQistsHYssQA9Ky6xMAEUKy2wdyyxAD0rsEArLbB4LLEAPSuwQSstsHkssQA9K7BCKy2weiyxAT0rsEArLbB7LLEBPSuwQSstsHwssQE9K7BCKy2wfSyxAD4rLrEwARQrLbB+LLEAPiuwQCstsH8ssQA+K7BBKy2wgCyxAD4rsEIrLbCBLLEBPiuwQCstsIIssQE+K7BBKy2wgyyxAT4rsEIrLbCELLEAPysusTABFCstsIUssQA/K7BAKy2whiyxAD8rsEErLbCHLLEAPyuwQistsIgssQE/K7BAKy2wiSyxAT8rsEErLbCKLLEBPyuwQistsIsssgsAA0VQWLAGG7IEAgNFWCMhGyFZWUIrsAhlsAMkUHixBQEVRVgwWS0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAdCsgABACqxAAdCswwEAQoqsQAHQrMSAgEKKrEACEK6A0AAAQALKrEACUK6AEAAAQALKrkAAwAARLEkAYhRWLBAiFi5AAMAZESxKAGIUVi4CACIWLkAAwAARFkbsScBiFFYugiAAAEEQIhjVFi5AAMAAERZWVlZWbMOBAEOKrgB/4WwBI2xAgBEswVkBgBERAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQARQBFAsH/6gIVAAACwf/qAhUAAAAAAAkAcgADAAEECQAAAKIAAAADAAEECQABACIAogADAAEECQACAA4AxAADAAEECQADAFIA0gADAAEECQAEADIBJAADAAEECQAFAEIBVgADAAEECQAGADIBJAADAAEECQANAnIBmAADAAEECQAOADQECgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBDAGEAbABpAGcAcgBhAHAAaABpAGMAUgBlAGcAdQBsAGEAcgBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAEMAYQBsAGkAZwByAGEAcABoAGkAYwAtAFIAZQBnAHUAbABhAHIASwBhAFQAZQBYAF8AQwBhAGwAaQBnAHIAYQBwAGgAaQBjAC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AQwBhAGwAaQBnAHIAYQBwAGgAaQBjAC4ACgAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AAoAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAABAAIAAwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0BAgd1bmkwMEEwAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8ARgByAGEAawB0AHUAcgAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAF8AAAABAAIAAwAEAAUACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAgACIAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AQABBAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQECALYAtwEDAQQBBQEGAQcBCAEJB3VuaTAwQTAHdW5pRTMwMQd1bmlFMzAyB3VuaUUzMDMHdW5pRTMwNAd1bmlFMzA1B3VuaUUzMDgHdW5pRTMwOQABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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IEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrIZAQAqsQAHQrMMCAEKKrEAB0KzFgYBCiqxAAhCugNAAAEACyqxAAlCugBAAAEACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RY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) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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WWO4BABiILAAUFiwQGBZZrABY2AjLiMgIDyKOCMhWS2wPyywABawFyNCILAKQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbBALCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrLbBBLCMgLkawAiVGsBdDWFIbUFlYIDxZLrEwARQrLbBCLCMgLkawAiVGsBdDWFAbUllYIDxZIyAuRrACJUawF0NYUhtQWVggPFkusTABFCstsEMssDorIyAuRrACJUawF0NYUBtSWVggPFkusTABFCstsEQssDsriiAgPLAGI0KKOCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrsAZDLrAwKy2wRSywABawBCWwBCYgICBGI0dhsAwjQi5HI0cjYbALQysjIDwgLiM4sTABFCstsEYssQoEJUKwABawBCWwBCUgLkcjRyNhILAGI0KxDABCsAtDKyCwYFBYILBAUVizBCAFIBuzBCYFGllCQiMgR7AGQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsARDYGQjsAVDYWRQWLAEQ2EbsAVDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsTABFCstsEcssQA6Ky6xMAEUKy2wSCyxADsrISMgIDywBiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrMoAAIAKrEAB0K1GwgPBAIKKrEAB0K1JQYVAgIKKrEACUK7BwAEAAACAAsqsQALQrsAQABAAAIACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVm1HQgRBAIOKrgB/4WwBI2xAgBEswVkBgBERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGAKoAAACFQAAArj/9gIVAAAAjwCPADQANAKuAAACtgG8AAD/PgIVAAACt//1ArcBxf/6/zgCFQAAAAAAAAAJAHIAAwABBAkAAACiAAAAAwABBAkAAQAUAKIAAwABBAkAAgAIALYAAwABBAkAAwA+AL4AAwABBAkABAAeAPwAAwABBAkABQBCARoAAwABBAkABgAeAPwAAwABBAkADQJkAVwAAwABBAkADgA0A8AAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8ATQBhAGkAbgBCAG8AbABkAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASwBhAFQAZQBYAF8ATQBhAGkAbgAtAEIAbwBsAGQASwBhAFQAZQBYAF8ATQBhAGkAbgAtAEIAbwBsAGQAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAE0AYQBpAG4ALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAEYAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBAgCFAI4ApACDAJMA3gCQAPAAkQCJAKAAuAChANcAsACxAQMA2ADhAQQBBQEGANsA3ADdANkA3wEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGACyALMAtgC3ALQAtQCCAMIAqwEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQCYAToBOwE8AT0BPgDvAT8BQAFBAUIBQwFEAKUBRQCSAUYBRwFIAUkBSgFLAUwAnAFNAU4BTwFQAKcBUQFSAVMAlACVAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZAHdW5pMDBBMAd1bmkwMjM3B3VuaTAyQzkHdW5pMDJDQQd1bmkwMkNCBUdhbW1hB3VuaTAzOTQFVGhldGEGTGFtYmRhAlhpAlBpBVNpZ21hB1Vwc2lsb24DUGhpA1BzaQd1bmkwM0E5B3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA5B3VuaTIwMEEGbWludXRlB3VuaTIwRDcHdW5pMjEwRghJZnJha3R1cgd1bmkyMTEzC3dlaWVyc3RyYXNzCFJmcmFrdHVyBWFsZXBoCWFycm93bGVmdAdhcnJvd3VwCmFycm93cmlnaHQJYXJyb3dkb3duCWFycm93Ym90aAlhcnJvd3VwZG4HdW5pMjE5Ngd1bmkyMTk3B3VuaTIxOTgHdW5pMjE5OQd1bmkyMUE2B3VuaTIxQTkHdW5pMjFBQQd1bmkyMUJDB3VuaTIxQkQHdW5pMjFDMAd1bmkyMUMxB3VuaTIxQ0MMYXJyb3dkYmxsZWZ0CmFycm93ZGJsdXANYXJyb3dkYmxyaWdodAxhcnJvd2RibGRvd24MYXJyb3dkYmxib3RoB3VuaTIxRDUJdW5pdmVyc2FsC2V4aXN0ZW50aWFsCGVtcHR5c2V0CGdyYWRpZW50B2VsZW1lbnQIc3VjaHRoYXQHdW5pMjIxMwd1bmkyMjE1B3VuaTIyMTYMYXN0ZXJpc2ttYXRoB3VuaTIyMTgHdW5pMjIxOQxwcm9wb3J0aW9uYWwFYW5nbGUHdW5pMjIyMwd1bmkyMjI1CmxvZ2ljYWxhbmQJbG9naWNhbG9yDGludGVyc2VjdGlvbgV1bmlvbgdzaW1pbGFyB3VuaTIyNDAHdW5pMjI0Mwljb25ncnVlbnQHdW5pMjI0RAd1bmkyMjUwC2VxdWl2YWxlbmNlB3VuaTIyNkEHdW5pMjI2Qgd1bmkyMjdBB3VuaTIyN0IMcHJvcGVyc3Vic2V0DnByb3BlcnN1cGVyc2V0DHJlZmxleHN1YnNldA5yZWZsZXhzdXBlcnNldAd1bmkyMjhFB3VuaTIyOTEHdW5pMjI5Mgd1bmkyMjkzB3VuaTIyOTQKY2lyY2xlcGx1cwd1bmkyMjk2DmNpcmNsZW11bHRpcGx5B3VuaTIyOTgHdW5pMjI5OQd1bmkyMkEyB3VuaTIyQTMHdW5pMjJBNA1wZXJwZW5kaWN1bGFyB3VuaTIyQTgHdW5pMjJDNAdkb3RtYXRoB3VuaTIyQzYHdW5pMjJDOAd1bmkyMkVFB3VuaTIyRUYHdW5pMjJGMQd1bmkyMzA4B3VuaTIzMDkHdW5pMjMwQQd1bmkyMzBCB3VuaTIzMjIHdW5pMjMyMwd1bmkyNUIzB3VuaTI1QjkHdW5pMjVCRAd1bmkyNUMzB3VuaTI1RUYFc3BhZGUHdW5pMjY2MQd1bmkyNjYyBGNsdWIHdW5pMjY2RAd1bmkyNjZFB3VuaTI2NkYHdW5pMjdFOAd1bmkyN0U5B3VuaTI3RjUHdW5pMjdGNgd1bmkyN0Y3B3VuaTI3RjgHdW5pMjdGOQd1bmkyN0ZBB3VuaTI3RkMHdW5pMkEzRgd1bmkyQUFGB3VuaTJBQjAHdW5pRTAyMAAAAAABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AAEECQAOADQD5gBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBNAGEAaQBuAEIAbwBsAGQAIABJAHQAYQBsAGkAYwBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAE0AYQBpAG4ALQBCAG8AbABkAEkAdABhAGwAaQBjAEsAYQBUAGUAWABfAE0AYQBpAG4ALQBCAG8AbABkAEkAdABhAGwAaQBjAFYAZQByAHMAaQBvAG4AIAAxAC4AMQA7ACAAdAB0AGYAYQB1AHQAbwBoAGkAbgB0ACAAKAB2ADEALgA4AC4AMwApAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA5AC0AMgAwADEAMAAsACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuACAAKAA8AHcAdwB3AC4AbQBhAHQAaABqAGEAeAAuAG8AcgBnAD4AKQAKAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMQA0AC0AMgAwADEAOAAgAEsAaABhAG4AIABBAGMAYQBkAGUAbQB5ACAAKAA8AHcAdwB3AC4AawBoAGEAbgBhAGMAYQBkAGUAbQB5AC4AbwByAGcAPgApACwACgB3AGkAdABoACAAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAIABLAGEAVABlAFgAXwBNAGEAaQBuAC4ACgAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AAoAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAIIAAAABAAIAAwAEAAUABgAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AIAAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AQABBAEIARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAGEBAgCOAIMA3gCQAJEAiQCgAKEA1wCwALEBAwDYAOEBBAEFAQYA2wDcAN0A2QDfAQcBCAEJAQoBCwEMAQ0BDgEPARABEQCyALMAtgC3ALQAtQd1bmkwMEEwB3VuaTAyMzcHdW5pMDJDOQd1bmkwMkNBB3VuaTAyQ0IFR2FtbWEHdW5pMDM5NAVUaGV0YQZMYW1iZGECWGkCUGkFU2lnbWEHVXBzaWxvbgNQaGkDUHNpB3VuaTAzQTkAAAAAAQAB//8ADw==) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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WFAbUllYIDxZIyAuRrACJUawF0NYUhtQWVggPFkusTABFCstsEMssDorIyAuRrACJUawF0NYUBtSWVggPFkusTABFCstsEQssDsriiAgPLAGI0KKOCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrsAZDLrAwKy2wRSywABawBCWwBCYgICBGI0dhsAwjQi5HI0cjYbALQysjIDwgLiM4sTABFCstsEYssQoEJUKwABawBCWwBCUgLkcjRyNhILAGI0KxDABCsAtDKyCwYFBYILBAUVizBCAFIBuzBCYFGllCQiMgR7AGQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsARDYGQjsAVDYWRQWLAEQ2EbsAVDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsTABFCstsEcssQA6Ky6xMAEUKy2wSCyxADsrISMgIDywBiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrMoAAIAKrEAB0K1GwgPBAIKKrEAB0K1JQYVAgIKKrEACUK7BwAEAAACAAsqsQALQrsAQABAAAIACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVm1HQgRBAIOKrgB/4WwBI2xAgBEswVkBgBERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGALAAAACFQAAAsH/6gIVAAAAVABUACUAJQKr//YCtgG6//b/PgIVAAACtv/qArYBuv/1/zMCFQAAAAAAAAAJAHIAAwABBAkAAACiAAAAAwABBAkAAQAUAKIAAwABBAkAAgAMALYAAwABBAkAAwBCAMIAAwABBAkABAAiAQQAAwABBAkABQBCASYAAwABBAkABgAiAQQAAwABBAkADQJkAWgAAwABBAkADgA0A8wAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8ATQBhAGkAbgBJAHQAYQBsAGkAYwBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAE0AYQBpAG4ALQBJAHQAYQBsAGkAYwBLAGEAVABlAFgAXwBNAGEAaQBuAC0ASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAE0AYQBpAG4ALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAQACAAMABAAFAAYACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeACAAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AEAAQQBCAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBhAQIAjgCDAN4AkACRAIkAoAChANcAsACxAQMA2ADhAQQBBQEGANsA3ADdANkA3wEHAQgBCQEKAQsBDAENAQ4BDwEQAREAsgCzALYAtwC0ALUBEgd1bmkwMEEwB3VuaTAyMzcHdW5pMDJDOQd1bmkwMkNBB3VuaTAyQ0IFR2FtbWEHdW5pMDM5NAVUaGV0YQZMYW1iZGECWGkCUGkFU2lnbWEHVXBzaWxvbgNQaGkDUHNpB3VuaTAzQTkHdW5pMjEwRgAAAQAB//8ADw==) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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BiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrMoAAIAKrEAB0K1GwgPBAIKKrEAB0K1JQYVAgIKKrEACUK7BwAEAAACAAsqsQALQrsAQABAAAIACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVm1HQgRBAIOKrgB/4WwBI2xAgBEswVkBgBERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGAKoAAACFQAAAsH/6gIVAAAAYgBiACYAJgKrAAACtgGvAAD/PgIVAAACtv/qArYBwP/1/zMCFQAAAAAAAAAJAHIAAwABBAkAAACiAAAAAwABBAkAAQAUAKIAAwABBAkAAgAOALYAAwABBAkAAwBEAMQAAwABBAkABAAkAQgAAwABBAkABQBCASwAAwABBAkABgAkAQgAAwABBAkADQJkAW4AAwABBAkADgA0A9IAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8ATQBhAGkAbgBSAGUAZwB1AGwAYQByAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASwBhAFQAZQBYAF8ATQBhAGkAbgAtAFIAZQBnAHUAbABhAHIASwBhAFQAZQBYAF8ATQBhAGkAbgAtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAE0AYQBpAG4ALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAIAAAAAAAD/gwAyAAAAAAAAAAAAAAAAAAAAAAAAAAABHgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQIAhQCGAI4ApACDAJMAiADeAJAA8ACRAIkAoAC4AKEA1wCwALEBAwDYAOEBBAEFAQYA2wDcAN0A2QDfAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYALIAswC2ALcAtAC1AIIAwgCrARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AJgBOgE7ATwBPQE+AO8BPwFAAUEBQgFDAUQApQFFAJIBRgFHAUgBSQFKAUsBTACcAU0BTgFPAVAApwFRAVIBUwCUAJUBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUB3VuaTAwQTAHdW5pMDIzNwd1bmkwMkM5B3VuaTAyQ0EHdW5pMDJDQgVHYW1tYQd1bmkwMzk0BVRoZXRhBkxhbWJkYQJYaQJQaQVTaWdtYQdVcHNpbG9uA1BoaQNQc2kHdW5pMDNBOQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwOQd1bmkyMDBBBm1pbnV0ZQd1bmkyMEQ3B3VuaTIxMEYISWZyYWt0dXIHdW5pMjExMwt3ZWllcnN0cmFzcwhSZnJha3R1cgVhbGVwaAlhcnJvd2xlZnQHYXJyb3d1cAphcnJvd3JpZ2h0CWFycm93ZG93bglhcnJvd2JvdGgJYXJyb3d1cGRuB3VuaTIxOTYHdW5pMjE5Nwd1bmkyMTk4B3VuaTIxOTkHdW5pMjFBNgd1bmkyMUE5B3VuaTIxQUEHdW5pMjFCQwd1bmkyMUJEB3VuaTIxQzAHdW5pMjFDMQd1bmkyMUNDDGFycm93ZGJsbGVmdAphcnJvd2RibHVwDWFycm93ZGJscmlnaHQMYXJyb3dkYmxkb3duDGFycm93ZGJsYm90aAd1bmkyMUQ1CXVuaXZlcnNhbAtleGlzdGVudGlhbAhlbXB0eXNldAhncmFkaWVudAdlbGVtZW50CHN1Y2h0aGF0B3VuaTIyMTMHdW5pMjIxNQd1bmkyMjE2DGFzdGVyaXNrbWF0aAd1bmkyMjE4B3VuaTIyMTkMcHJvcG9ydGlvbmFsBWFuZ2xlB3VuaTIyMjMHdW5pMjIyNQpsb2dpY2FsYW5kCWxvZ2ljYWxvcgxpbnRlcnNlY3Rpb24FdW5pb24Hc2ltaWxhcgd1bmkyMjQwB3VuaTIyNDMJY29uZ3J1ZW50B3VuaTIyNEQHdW5pMjI1MAtlcXVpdmFsZW5jZQd1bmkyMjZBB3VuaTIyNkIHdW5pMjI3QQd1bmkyMjdCDHByb3BlcnN1YnNldA5wcm9wZXJzdXBlcnNldAxyZWZsZXhzdWJzZXQOcmVmbGV4c3VwZXJzZXQHdW5pMjI4RQd1bmkyMjkxB3VuaTIyOTIHdW5pMjI5Mwd1bmkyMjk0CmNpcmNsZXBsdXMHdW5pMjI5Ng5jaXJjbGVtdWx0aXBseQd1bmkyMjk4B3VuaTIyOTkHdW5pMjJBMgd1bmkyMkEzB3VuaTIyQTQNcGVycGVuZGljdWxhcgd1bmkyMkE4B3VuaTIyQzQHZG90bWF0aAd1bmkyMkM2B3VuaTIyQzgHdW5pMjJFRQd1bmkyMkVGB3VuaTIyRjEHdW5pMjMwOAd1bmkyMzA5B3VuaTIzMEEHdW5pMjMwQgd1bmkyMzIyB3VuaTIzMjMHdW5pMjNCMAd1bmkyM0IxB3VuaTI1QjMHdW5pMjVCOQd1bmkyNUJEB3VuaTI1QzMHdW5pMjVFRgVzcGFkZQd1bmkyNjYxB3VuaTI2NjIEY2x1Ygd1bmkyNjZEB3VuaTI2NkUHdW5pMjY2Rgd1bmkyN0U4B3VuaTI3RTkHdW5pMjdFRQd1bmkyN0VGB3VuaTI3RjUHdW5pMjdGNgd1bmkyN0Y3B3VuaTI3RjgHdW5pMjdGOQd1bmkyN0ZBB3VuaTI3RkMHdW5pMkEzRgd1bmkyQUFGB3VuaTJBQjAHdW5pRTAyMAAAAAABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBNAGEAdABoAEIAbwBsAGQAIABJAHQAYQBsAGkAYwBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAE0AYQB0AGgALQBCAG8AbABkAEkAdABhAGwAaQBjAEsAYQBUAGUAWABfAE0AYQB0AGgALQBCAG8AbABkAEkAdABhAGwAaQBjAFYAZQByAHMAaQBvAG4AIAAxAC4AMQA7ACAAdAB0AGYAYQB1AHQAbwBoAGkAbgB0ACAAKAB2ADEALgA4AC4AMwApAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA5AC0AMgAwADEAMAAsACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuACAAKAA8AHcAdwB3AC4AbQBhAHQAaABqAGEAeAAuAG8AcgBnAD4AKQAKAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMQA0AC0AMgAwADEAOAAgAEsAaABhAG4AIABBAGMAYQBkAGUAbQB5ACAAKAA8AHcAdwB3AC4AawBoAGEAbgBhAGMAYQBkAGUAbQB5AC4AbwByAGcAPgApACwACgB3AGkAdABoACAAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAIABLAGEAVABlAFgAXwBNAGEAdABoAC4ACgAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AAoAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAG4AAAABAAIAAwATABQAFQAWABcAGAAZABoAGwAcACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0BAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwAmwEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsB3VuaTAwQTAFR2FtbWEHdW5pMDM5NAVUaGV0YQZMYW1iZGECWGkCUGkFU2lnbWEHVXBzaWxvbgNQaGkDUHNpB3VuaTAzQTkFYWxwaGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEFa2FwcGEGbGFtYmRhB3VuaTAzQkMCbnUCeGkHb21pY3JvbgNyaG8Gc2lnbWExBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNjaGkDcHNpBW9tZWdhBnRoZXRhMQRwaGkxBm9tZWdhMQd1bmkwM0YxB3VuaTAzRjUHdW5pRTEzMQd1bmlFMjM3AAAAAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AMIAAwABBAkABAAiAQQAAwABBAkABQBCASYAAwABBAkABgAiAQQAAwABBAkADQJkAWgAAwABBAkADgA0A8wAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8ATQBhAHQAaABJAHQAYQBsAGkAYwBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAE0AYQB0AGgALQBJAHQAYQBsAGkAYwBLAGEAVABlAFgAXwBNAGEAdABoAC0ASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAE0AYQB0AGgALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAQACAAMAEwAUABUAFgAXABgAGQAaABsAHAAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0ARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAJsBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAd1bmkwMEEwBUdhbW1hB3VuaTAzOTQFVGhldGEGTGFtYmRhAlhpAlBpBVNpZ21hB1Vwc2lsb24DUGhpA1BzaQd1bmkwM0E5BWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1bmkwM0JDAm51AnhpB29taWNyb24DcmhvBnNpZ21hMQVzaWdtYQN0YXUHdXBzaWxvbgNwaGkDY2hpA3BzaQVvbWVnYQZ0aGV0YTEEcGhpMQZvbWVnYTEHdW5pMDNGMQd1bmkwM0Y1B3VuaUUxMzEHdW5pRTIzNwAAAAABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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ACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AUwBhAG4AcwBTAGUAcgBpAGYALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AIAAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AQABBAEIARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAGEBAgCOAIMAjQDeANcBAwDYAOEBBADbANwA3QDZAN8BBQEGAQcBCAEJAQoBCwEMAQ0BDgEPALIAswC2ALcAtAC1B3VuaTAwQTAHdW5pMDIzNwd1bmkwMkM5BUdhbW1hB3VuaTAzOTQFVGhldGEGTGFtYmRhAlhpAlBpBVNpZ21hB1Vwc2lsb24DUGhpA1BzaQd1bmkwM0E5AAABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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Ki2wTCywOSotsE0ssAAWRSMgLiBGiiNhOLEwARQrLbBOLLAKI0KwTSstsE8ssgAARistsFAssgABRistsFEssgEARistsFIssgEBRistsFMssgAARystsFQssgABRystsFUssgEARystsFYssgEBRystsFcsswAAAEMrLbBYLLMAAQBDKy2wWSyzAQAAQystsFosswEBAEMrLbBbLLMAAAFDKy2wXCyzAAEBQystsF0sswEAAUMrLbBeLLMBAQFDKy2wXyyyAABFKy2wYCyyAAFFKy2wYSyyAQBFKy2wYiyyAQFFKy2wYyyyAABIKy2wZCyyAAFIKy2wZSyyAQBIKy2wZiyyAQFIKy2wZyyzAAAARCstsGgsswABAEQrLbBpLLMBAABEKy2waiyzAQEARCstsGssswAAAUQrLbBsLLMAAQFEKy2wbSyzAQABRCstsG4sswEBAUQrLbBvLLEAPCsusTABFCstsHAssQA8K7BAKy2wcSyxADwrsEErLbByLLAAFrEAPCuwQistsHMssQE8K7BAKy2wdCyxATwrsEErLbB1LLAAFrEBPCuwQistsHYssQA9Ky6xMAEUKy2wdyyxAD0rsEArLbB4LLEAPSuwQSstsHkssQA9K7BCKy2weiyxAT0rsEArLbB7LLEBPSuwQSstsHwssQE9K7BCKy2wfSyxAD4rLrEwARQrLbB+LLEAPiuwQCstsH8ssQA+K7BBKy2wgCyxAD4rsEIrLbCBLLEBPiuwQCstsIIssQE+K7BBKy2wgyyxAT4rsEIrLbCELLEAPysusTABFCstsIUssQA/K7BAKy2whiyxAD8rsEErLbCHLLEAPyuwQistsIgssQE/K7BAKy2wiSyxAT8rsEErLbCKLLEBPyuwQistsIsssgsAA0VQWLAGG7IEAgNFWCMhGyFZWUIrsAhlsAMkUHixBQEVRVgwWS0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAdCsygAAgAqsQAHQrUbCA8EAgoqsQAHQrUlBhUCAgoqsQAJQrsHAAQAAAIACyqxAAtCuwBAAEAAAgALKrkAAwAARLEkAYhRWLBAiFi5AAMAZESxKAGIUVi4CACIWLkAAwAARFkbsScBiFFYugiAAAEEQIhjVFi5AAMAAERZWVlZWbUdCBEEAg4quAH/hbAEjbECAESzBWQGAEREAAAAAAAA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) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,AAEAAAAOAIAAAwBgT1MvMkWziYoAADVAAAAAYGNtYXA+LF4HAAA1oAAAAQRjdnQgAr8ZkgAARWQAAABaZnBnbWIu/XwAADakAAAODGdhc3AAAAAQAABL5AAAAAhnbHlmvQEVZwAAAOwAADDsaGVhZGLPQtkAADL0AAAANmhoZWEG9wNBAAA1HAAAACRobXR4+xkblwAAMywAAAHubG9jYSrGH3YAADH4AAAA+m1heHABLw6QAAAx2AAAACBuYW1lY9WCXAAARcAAAASgcG9zdF9wTMcAAEpgAAABgXByZXBlwgKGAABEsAAAALIAAgAyAAAAyAIVAAMABwAAMxEzESczESMylmQyMgIV/esyAbEAAgBuAAAA0AK2AAsADwAItQ0MCgQCMis3NAI1NDIVFAIVFCIHNTMVeApiCk4KYrsmAa4mAQEm/lImAbpiYgACACAB1wFFArYACwAXAAi1EQ0FAQIyKxM1MxUGByM3Njc0IzM1MxUGByM3Njc0IyFiESAyDw8BD7NiESAyDw8BDwJUYmEqVD09AQJiYSpUPT0BAgACADj/PgMJArYAXgBpAAi1Y184CAIyKxM0NzMyNRI3NjMyFhcUAgcUMzI1Ejc2MzIWFRQGBwcUMzMWFAcGIyMHBgcHFzIXFhUUByMiFQIHBiMiJjU0Njc3NCMiFQIHBiMiJjU0Njc3NCMjJjU0NzM3Njc3IycmBTc2NjcjBwYHBxc4Dnp6UwMEDAcMAVABXl9TAwYKBg0oFBRYWQ8KBl1fBgcPD3RzBgoPenpTAwYKBg0oFBReX1MDBgoGDSgUFFhZDhC7BggOD3R0DgGxCQgWBL0GBw8PXgFeDQcBATYECQoHBP7TAQEBATYECQkHCJpISQEIGAUDGRc4NwEDBgsMCAH+ygQJCQcImkhJAQH+ygQJCQcImUlJAQcNDwUZGzU3AQWmHh9QExkXODcBAAMALP/IAbwC7gAsADMAPgAKtzg1Li0bBAMyKxM0Njc1MxUzMhcWFxYVBxQnJicjFRYWFRQGBxUjNSYnJjU3FxYXFzUnJiYnJhc1BwYVFBYXJyIVFTc2NjU0JjdZRUkDFyogHwoOCjM9BURaWkRJWUULDwo8SwkLN00LBJ4KPCdyCQEHHSIgAf1EcAwxLw4NFQcCTQEHKAnbD3NMTnEPMS8KMgcCUAgwDAL3Ag9RNxE/xAUePyA1kARvbwQOOSUjOQAABQA4/8gDCALuAA4AIQAzAEQAVwAPQAxNRjs0KyMXEAYABTIrEzIWFRQHBiMiJyY1NDc2FyYjIgcGFRQWMzI3Njc2NTQnJiU2MzIWBwYABwYjIiY1NDc2ABMyFhUUBgcGIyImJyY1NDc2FyYjIgcGFRQWMzI3Njc2NTQnJsM4UTglLEgrGDQlPQgDFg4OHBYDCBoLBQULAYcEDAkMAQL+QwUFBggMAgEBuRM5UDouEBEoRRENNCU9CAMWDg4cFgMIGgsFBQsC7nVVZj0mVzJBYTwsTgIcH0JEOgIKORMmJRM5TwkMCQj8/gMEDQgCBgIC+v56dlNIaxEGPzQmMWA9LE4CHB9CRDoCCjkTJiUTOQADACr/6gK+AswAQwBUAGQACrdhV05GHgEDMisFBiMiJyYnJwYGBwYjIicmJicmNTQ3Njc3JyY1NDc2MzIWFRQHBgcHFhcWMjY3Njc2NzYxMhYzBxQGBwYHBxYzMjcyFAE0JiMiBwYVFhcXNzY3Njc2AyYnIgYGBwYVFBYXFjMyNwK8Mz8WED01DQcqCERGGhErRBENNQ4jKAYWNSc2P08CEHoRGTw4BCMMRiIBAgEBTAEBAgEwbwstMEgsAv6pHRwqEgkDEQQOKRIUCAEOUTABFxkCHiMcCRQ/QwcPAgokCAMWAxwECTgoHiNJMw4bHxFBSG09LGRDEghNYg4yTUQjD1V4BAYFFQICBgOnbgseElICLycxLxYkPTkKDCMZGBsF/k9VWhQUARwxIjcJAx8AAQBZAdcAvAK2AAsABrMFAQEyKxM1MxUGByM3Njc0I1piESAyDw8BDwJUYmEqVD09AQIAAAEASv8GAU0C7gALAAazCQMBMisWEDc3MwcGEBcXIydKphFMCpycCkwRQAJ0qRELpv16pgsRAAEAN/8GAToC7gALAAazCQMBMisWECcnMxcWEAcHIzfdnApMEaamEUwKSQKGpgsRpv2GphELAAEAPwEyAbQC7gBAAAazKwkBMisTNDYzMhcXJzY2MzIWFwc3NjMyFhUUBwYHBxYXFhcWFRQGIyInJxcWFhUUBiMiJic3BwYjIiY1NDc2NzcmJyYnJj8aEQYKXAYDFxAPGAIGXAcJERoLBDU0Fx01BAsaEQYKXAECAxgREBgCBlwHCREaCwQ1NBcdNQQLAmgTGQRBfg4TEw5+QQMYExALBRwcDQ8cBQsQExkEQRwcOwMTFhMOfkEDGBMQCwUcHA0PHAULAAABADj/rgLSAkcAFQAGsxEGATIrNjQ3ITU3NjMyFxEhFhQHIREGIicRITgOASsBCgkNBwEqDw/+1gcaB/7V7RoHlpYND/7WCBgI/tYODgEqAAEAWf+DALwAYgALAAazBQEBMiszNTMVBgcjNzY3NCNaYhEgMg8PAQ9iYSpUPT0BAgAAAQALALoBFQEDAAMABrMBAAEyKzc1IRULAQq6SUkAAQBaAAAAvABiAAMABrMBAAEyKzM1MxVaYmJiAAEAOP8GAb0C7gAPAAazCQEBMisBNjMWFgcUAAcGIyImNTQAAZcFDQgMAf6lBQYKCAwBXALkCgEMBwX8RQoKCwgKA70AAgAn/+oBzAKmABEAJgAItR0TCQECMisTNjMyFxYVFAcGIyInJjU0NzY3JiMiBwYVFBcWFxYzMjc2NjU0JyZ1OUk7LW1NOE5mODQDDdoGEUAcGhQTKhAVFBEzHRoXAm05H0f41VE4WVeiQCKPKgI+Oo2JPjoUCAgahXaNOjEAAQBTAAABrgKmABMABrMHAwEyKxM2NzczETMVITUzNTQjBgcGBwc1Xn06Bxd7/qp9AQENLDoNAmQGNgb9o0lJ9PMBBA4BAUkAAQAqAAABwQKlACYABrMeDAEyKwE0JiMiBgcHJyc3NjczMhcWFRQHBgcGBwYHBgc3MxUhNTc2NzY3NgFfRzovPREEGhkFLXcOTjReAg1JCSomSTMLnJz+cUUsNTsbMQHIPFM8QBAhIg18DiFAfg8OQkUJJCBFMAsBVk9ELTI1IjsAAAEAKv/qAckCpgA+AAazOSYBMis3FhYzMjY1NCYnJyM1NDM2NzY3NjY1NCYjIgcGBycmNSY2NzY3MjYzMzIWFxYVFAcGBxYXFhcWFRQGIyInJzc3IGI5MzwyKy8vAQ8RKBIhKzAqMiUeGxUWAiENNUUCDgQDP2MRBiURMCkESAsBf1hvUAkHjicxSDo1RAoBJiYBAgIIDj0pKCsaEy0gHwICJAoqCAFBNBMWOjMYIhQDMUwHDlZ4UAolAAIAHAAAAdcCkAANABkACLUPDgcBAjIrATczETMVIxUjNSE1NzYTEQYHBgcGBgcHFDMBDwFsW1te/v55eBcBAQmNBAgCA1QCjgL+W0yfn0zQ0f5fAXQFBlbzBw8FBAEAAAEAIf/rAcECkAAwAAazJBEBMis3MjY3NCcmIyIHBgcGFRQjIxEhFSMVFDM3NjMyFxYXFhUUBgcGIyInJjU2Njc3FxYW3zhAAkMHDhgSIhMFKSkBVf4BCiQxNS5BFAdSPCUsZUYWARQKCQQWTzZOQX8YAgkQKQgDAQGAT1taBhggLlcjF0lxGA5IFgQBIhAQBSQxAAACACr/6gHJAqUAKwBDAAi1OS4gAAIyKwEyFxUUIyMmIyIGBxQHBjcyNzc2NzYzMhcWFxYVFAcGBiMiJyYmNTQ2NzYzAyImIyIHBgYVFBcWFxYzMjc2NzY1NCcmAS02NQEBLzM+Vw0BAgEBBgE2SQYOEA4rIzI3IUUxPzIuMmdYIRcMAgsEDwopNR8UJggNCwwrGRIQGAKlEyUkFGNVAgQNAQUBMgkBAgg2S2hkRSolKiefZH+5Ig3+4wECCFQ4WjEkDAICCjIkSkcjMgABACr/9QHJApAAEwAGswkBATIrEzUhFQcGAwYVFSM1Njc2NzY2NwcqAZ8KoyEHYwQIKJ8FCwKmAjpWTw3I/vs6LQsXSS/vswYNAgEAAwAr/+oByAKmACMALgA7AAq3NzApJBUCAzIrEzQ2MzIWFxYVFAcGBwczFhYXFhUUBiMiJjU0NzY2NzYnJyYmFjI2NTQmIyIGFRQXJiMiBhUUFxYzMjU0N3BTP2gTCAQTVQcBMkEJAnxTUnwCCUEyAgUDMjqRZDo4NDM6uR8yMzdTCRNuAfRJaUc5GhcMFkokBBNJLgoVWnR0WhUKLkkTAQIBFU0+NjE0OTk0MaIfSTppFwKFQAACACr/6gHJAqUALABCAAi1OS4LAQIyKxM2MzIXFhcWFRQHBiMiJyY1Mjc3FjMyNzY2NzY2NzUHBiMiJyYmJyY1NDY3NhcmIyIGBwYUFxYWFxYzNjc2NjU0JyaOMDc9KxoSQGhBU0Y2CQESEzEsEgwrPQ0BBAIKP1QRDDBHCAIYHha+GR0xOQcBAQUkGRAYGA4hKAcLAoIjHhIaXbC5aEMoBQIhISUDC1I+BBgNBAk9Agt0QRQdOUYnHCoXQzMJYAkmOAoGAQcPTzQgI0QAAAIAWgAAALwBvAADAAcACLUFBAEAAjIrEzUzFQM1MxVaYmJiAVpiYv6mYmIAAgBZ/4MAvAG8AAMADwAItQkFAQACMisTNTMVAzUzFQYHIzc2NzQjWmJiYhEgMg8PAQ8BWmJi/qZiYSpUPT0BAgAAAgA4AIIC0gFyAAoAFwAItRUNCAICMisTNDchFhUUBwUhJhU0NyEeAxUUByEmOA4CfQ8O/sL+whAQAnwBBwMDD/2DDgFeDQcIDAsIAQW5DwUBBQMHBAwIBwAAAgA3AAABoALAACMAJwAItSUkEwYCMisTNCYnNDc2MzIXFhYVFAcGBwYVFSM1Njc2NzY2NzY1NCYjIgcTNTMVUxsBJzw8KAtGUThXCwFOAQoZSQIKAhExM0o6UmICQAFKAQQTHQEJT0VIMEtgBiEeJzgpYUACCQEWISwjLv25YmIAAAIAOP/1AmQCwAA6AE0ACLVFPAgAAjIrBSImNTQ3NjY3MzIXFhcWFxQHBgYHBiMiJyYmNDY3NjMyFxY1JiYjIgcGBgcGFRQWFxYzNjc3MwcGBwYDJiMiBwYVFBcWFjMyNzY1NCcmAYSLwRIhnGMQUDUYEDkDBAxXOwcUFQZFXl5FBhUmFwUPNx8THktnDQF+XQsYQTQPUA4VG0opCgQVFDkNDi4aFxI5DRkL05M/OGSBCSUQGFCrOBVGYwsBAQ5/rn8OAQwCAR4kBhR+WQofcZ0LAQMSBQ8VEjAB/gIOKGQwHyQnDihkMB9AAAIAHAAAAn4CtgAQACAACLUfFwIAAjIrMxM2MzMTEhcUIyMnIQcUBgclLgMnJxUGBwYGBwcUMhz8ATQ0fn0CNjZC/ugBPAUBQAsqFxwJAQlVBQoDAuQCtQH+p/6nAgK3AgOmDP8heUZaIwcFNfMMHAcHAgAAAwBaAAACYgK2ABoAKQA7AAq3MCwfHQEAAzIrMxEzFhcWFxYVFAcGBzIXFhcWFRQHBgYHBgYHEyYnIxUzNjc2NzY1NCcmEyYmKwIVMzY3NjY3NjU0JyZaiZIXcDIZCyRvBSdsHAURFVk5FiKCawdOSklTG0wfDEIdJyIyMCtHVlsXMEQIAiISArYBBBVKJyYYGEcjCydVFBAjIis+CwUBAQJtAQHgAQcRMxUUMiAP/sQRCfwBBQo0IgoHKSISAAEAO//1AksCwQApAAazJBkBMisBJiYjIgcGBwYVFBcWFxYzMjY3NxcWFhQHBiMiJyY1NDc2NzI2MzIXFhUCLytINBAHVjs8ISdGKTI4RS4NAQIDLD9UqmJFblBxAxQHT08bAjscGwEJTk5xVD9PIRQWHgkTEykIFh+LYXqebFALARkKAwAAAgBYAAACmgK2ABEAIgAItRYTAQACMiszETMWFxYWFxYVFAcGBwYHBgcTJiMjETMyNzY2NzY1NCYnJliVlQ1viw8CAg9VRl4NlnoLUU5OUgc2WRwmRz8mArYBAhOodhQXGRCCVkQPAgECbQL92AEFOzBDWlyHIBIAAQBWAAACKgKzAA0ABrMBAAEyKzMRIRUjJxUhFSEVMzcVVgHHr7ABQ/69trYCs1AB10zsAVYAAQBWAAACDgKzAAoABrMBAAEyKzMRIRUjJxUhFSERVgG4qKgBJ/7ZArNQAeRM/swAAQA7//UCVwLAACgABrMUCQEyKyUyNzUjNTMRBwYjIicmJjU0NzY3NjMyFxcUBgcmJyYjIgcGBhUUFhcWAYgwQnbTC19kLS9niz8xTkJFWkMxEAEEBUpiDwdYdl1JHkQQi0z++wUsDR+8fXRfSSkhGRcEXgEDBD4BCpxwY5IYCgABAFYAAAJtArYACwAGswEAATIrMxEzESERMxEjESERVmgBR2ho/rkCtv7ZASf9SgFD/r0AAQBXAAAAvwK2AAMABrMBAAEyKzMRMxFXaAK2/UoAAQAr/+oBhAK2ABUABrMHAQEyKyURMxEQBwYGIyInJzc2Nzc0FxYzMjcBH2UBBl5LSU4SAwQEBAcpS1USgQI1/un+5QdFTiEJFhcXFgEHM0QAAAEAWAAAAosCtgAVAAazAQABMiszETMVFwEzBwYGBwcWExcjLwIGBxVYZAEBUHGDIEIRERjuDm5qdApQKQK2r7ABX4khRRISKP6bFqCwD1Qq4QABAFcAAAHzArYABwAGswEAATIrMxEzETczNxVXaGqaMAK2/ZkBAVEAAQBcAAADDgK2ACUABrMBAAEyKzMRMxceAhcSFxc2Ez4CNzczESMRAxQOAwcHIycCJyciERFciAUBCxEImQwBEpUIEQsBBYldAQ4lIkwbFVccpQsCAQK2DgMdLhT+ZjkJTQGPFC4dAw79SgExAS0NMmpZxkg3SQG6PAv+0P7PAAABAFgAAAJrArYAEgAGswEAATIrMxEzFxYXEhcRMxEjJzQnAicnEViTEQg2lT9dkxE+uBgEArYjE23+zYwCYv1KIwGAAXg9Cv2dAAIAN//qAqgCywAcADAACLUrIQ8BAjIrEzYzMhcWFhcWFRQHBgYHBiMiJyYnJicmNTQ3NjYBNCYnJiMiBwYGFRQWFxYzMjc2NuNCRBkUQXAnOgQQk24QExQQYEcjGTIOE1IBll5RHgkKBFZnX1QIFhUIUWICpCcCCk9AX3khGXarEQICD0cjLFlvNjhHdP7mZpoSAwEKoGpxqBICAhGoAAACAFgAAAJHArYAEAAfAAi1FRMBAAIyKzMRMxYXFhYVFAcGBgcGIyMREyYnIxEzNjc2NzY1NCcmWI6PDVZvBQ5uSwpaV6UHUk9PUgdsFAEYIgK2AQINdksSF0JdCQL+7gJtAQH+7AEBEloGFi8gLQAAAgA3/4MCqALLACUARwAItUE3FgQCMislHgIXIyYnBwYjIicmJyY1NDc2Njc2MzIXFhYXFhUUBwYHBgcGJzQmNTMXFjM3NjY3NjU0JicmIyIGBwYVFBYXFjMyNzI2MwIYATE5CXkjLAwhJnBcIxkyDhNSOUJEGRRBcCc6BA9BEx8KhFlqICABBgYPBD5pVgYNMVUaNWRRChUWBQIEASMBRk8KMUQEClgjLFlvNjhHdCInAgpPQF95IRlvURgaCBkCggEsLQUGEQVQf2+oDAE3KFB1b54QAgEBAAACAFgAAAJpArYAGgAoAAi1Hx0BAAIyKzMRMxYXFhcWFhUUBgcHFxYWFxcHIic0JycjERMmJyMVMzY3Njc2NCcmWIuPCTcoNj1TQQwLDDMUXjQ0AVhXlLINU1JSXBlUEgICEwK2AQEJFBpVMDtfGAYUFFUjnwEBAZqZ/ssCbAIB7gEGFEMGJgZKAAABACz/6gH0AswAPQAGszcZATIrNzcWFxYzMzI3NjY1NCcmJicmJyYmNTQ3NjYzMhcXFAYHJicmJiMiBgcGFRQXFhcWFxYXFhYVFAYjIicmJyYsEjtfHR0MERAmMTYOHDM/FzNDChZ1T1dNFBEBAwQlRjU0QwsCAQwxED1AGTdDgGQcGVhQBzJgOxMFBgw9KD8jCgkNDwwYWzwgG0FOJwoBYQEDAyAcLicGEg4FMBcIDxAMG2Y9WX8EDDEFAAEAJAAAAoQCsAAJAAazBgEBMisTNSEVIycRIxEHJAJgfn5ofgJgUFAB/Z8CYQEAAAEAV//qAlgCtgAjAAazHAEBMisTNTMVFhcWFxYzMjY3NjY3NTMVFBUGBwYVBgYHBiMiJicmJyZXaAEBCiQqQjtTDAQBAV0BBAEOVDktMU98Hg8IAQHC9PX2CUAkLUk4ES7Q9fQkOp4RAwE+YhUSUj8eKwkAAQAOAAACjAK2ABgABrMUAQEyKxM0MzMXEhcWMzQ3NhM3MzIVBgIHByMnJgIONjYYsw4BAQ0kjBwvLwL/BQNsAwX/ArQCPf4sSwMFLXMBb0sCAv1gCAoKCAKgAAABAA4AAAOhArYAMAAGsyMBATIrEzQzMx4CFxIVFzY1NDc2EzczFxIXFzc2EzY2Nzc0MhUUAwMjJycCJycHBgMHIwMCDjIzAhYdBmABAQgZZBZhHXcJAQIJeQYOBANYZGMzMxaACAECCXgcYWNkArUBCUtkFv6nNQUBBgkueAFdTmj+YE8LC1IBpxUwCwwCAQL+p/6mAUoBwUwLC1L+X2UBWgFZAAEADgAAAowCtgAgAAazCQABMiszNzY3NycuAiczFxYXFzczBwYHBgYzFBcXIycnNAYHBw5BQUJBeh4+IAF6TlcBCqtxAQNyND8BiYl5Zmc2LmJcW1xcoSdTKgJueQIN9gIDoUpYAbe2kpIBT0SSAAABAAQAAAKXArYAHQAGsxcBATIrEzczFxYXFDc0NzY3Njc3Mw4EBwcRIxEnJiYnBDw9MaEFBAELJ20tCWkBDxshLBaKZYsfShECtQFJ8w4FBwECFTylQQ4BFycxQiHO/usBFs8ubxoAAAEANwAAAjACtgAXAAazDQEBMisTNSEVAwIVMzI2NjMzFSE1ExI1JiMiBiNFAea2tywKOFkejf4HtrcHGgddKgJpTTP+5/7nAgEBUTUBGQEZAgEBAAEAXv8GAQoC7gAHAAazAQABMisXETMVIxEzFV6sVVX6A+hM/LBMAAABABb/BgDCAu4ABwAGswMBATIrEzUzESM1MxEWrKxVAqJM/BhMA1AAAQBPAg8BpQK2ABMABrMHAQEyKxM3MxcWFxYHIiMjJicGBwcjJjU2kkJLQkADAQMEHyZAHwYtLSYlAwJkUlJQAwEBSiYGNTUBAQMAAAEAAP+OAfP/2gADAAazAQABMisVNSEVAfNyTEwAAAIAJv/2AZcBzAArADoACLU1Lg4BAjIrEzYzMhcWFhcWFRUjNQcGIyInJiY1NDc2NzY3MzU0JyYmIyIHBgYHBycmJjUTFBYzMjY3NjU1IwYHBgZbQUciBjZMCQFaCz5VFggpMgENNUh2EwEFKx1LQAMHAgIBAgMvMiIkNgsFCz80JBwBqiIBC004CZqYJwcqAgtIMxAEKRoiBRkcBSEsKQIFAQESEigE/t0bISAaDR0UAgwJEwAAAgBL//UB4gK2ABkAKQAItSUcFw0CMisTNjMyFxYWFRQHBgYHBiMiJyYmJycVIxEzFRMWFjMyNzY2NCYnJiMiBwemT1sZFCw5DA9AKRYZRTkCBAECXVoDEiggEQY1ODMwDA4zJQkBlTIKFnhNOCMySg4IKwEDAQEmAraQ/lAaGgELT4BSCgIlCAAAAQAi//YBngHMAC8ABrMkAQEyKxM2MzIWFxYVBxQmJyYmIyIHBgYVFBYXFjMyNzcXFhcXBwYGBwYjIicmJicmNTQ3NmU+Ujk3KgsOAwMiNC4aCS4zKiYVHElCDgIBAQICAgkDRkwbBkpiDAEBDAGLQQwYBwJNAQICFhICDVI8NU4QCSYIFRUUFAIBBAIhAQ1sTwYaGwhSAAACACH/9gG5ArYAFAAoAAi1IhgHAQIyKwERMxEjNQcGIyInJicmNDY3NjMyFxcuAiMjIgYHBhUUFxYzMjc2NzcBX1pdCj5OFQlFJR08MRscTkMGDhIhFAkkOhASYwYTEggnGwYBmAEe/UosBy8CE086mHYYDSlNDg4NJR4kN4IXAQILJAkAAAIAHP/2AZ8BzQAjAC4ACLUmJA8BAjIrJQYjIicmJicmNTQ3NjY3NjMyFxYXFSEVFBcWFxYzMjc3FhUUAyYmIyIGIwYHBhUBmEpSGwdKZQ0CAgxkSQcNUzAtBP7SCyBMBAxUQQYGRQ4wLQMJAjgdCyAqAQ1tTRAUExBOcAkBPTpoEwQaHVENAS0DRgUGAQEtMwELOxQFAAEAGwAAAVsCwQAfAAazEwABMisBMhcVJyYjIyIHBgcGBhUVMxUjESMRIzUzNTQ3NjY3NgEGKSwLIR0IKxgJAgUCamdaQ0MBB1E6BQLBC1IEDBcLBQoUND9J/o0Bc0kwNAY7VgkBAAMAHP8yAeUBxwBAAEoAXQAKt1NLSEM3CQMyKzcmNDc3JyY1NDYzMhcmMTQ3NjMzFxciJyYjIgYjBycXFhUUBiMiJyYHBhUUFxcWFxYXFhUUBwYGIyImJyY1NDc2NjQmIyIGFBYzMgMyNjU0JyYnJiMiBwYGFRQXFhZSFhQGBhliRzkqBQ9BQwYHBwMDIysEDQMTBQEfZUMsJwUCBh5IVBhTHxYCEH1OUHwQAhUC/SspJioqJikLMlcQETASSDcIERcCC08mHU4jCQopLklgIgYBBBcnJwEHAQEEAi01SV8XAwIJESQJAQEEDi0hJBcHMz8+NAgQJCQD6lwyNVY1/rsjHhQQEwcCAgQhFgwFGBsAAQBJAAABuwK2ABcABrMWBwEyKxM2MzIXFhcVIzUmJyYjIgcGBwYVFSMRM6M8VG8UBAFdAQEOSyMUHwYBXVoBizxlF6eknZ4FOhQfOweEgQK2AAIAQwAAAKsCqAADAAcACLUFBAEAAjIrEzUzFQMRMxFDaGFaAkBoaP3AAbz+RAAC/8X/MwDAAqgAAwAaAAi1DAUBAAIyKxM1MxUDETMRBgYHBgYjIicmNDY3NBYXFjMyN1hoWloBAQYNPy0oMCIQAgMDHiQyEQJAaGj9agIS/vjhMhIoNBENCEIFAQIEGSIAAAEATAAAAdcCtgAYAAazAQABMiszETMRNjczBgcXFhYXFyMnLgInJwYGBxVMV2NObVJRBgOlAwhjPw8iFQIJDC0LArb+S2dUVFgJBPMEDFwWMh8DDQwwDIsAAAEASgAAAKQCtgADAAazAQABMiszETMRSloCtv1KAAEASQAAAtABxwAqAAazCwABMisBMhYXNzYzMhcWFxUjNSYnJiMiBwYHBhUVIzUmJyYjIgcGBwYVFSMRMxU2ATAxOhMHO1hvFAQBXQEBDksjFB8GAV0BAQ5LIxQfBgFdVz8BxyMlCEBlF6eknZ4FOhQfOweEgZ2eBToUHzsHhIEBwjo/AAEASQAAAbsBxwAbAAazCwQBMisTNjcyNjMzMhcWFxUjNSYnJiMiBwYHBhUVIxEzoDdEAg4EA28VBAFdAQEOSyMUHwYBXVcBiDcHAWUXp6SdngU6FB87B4SBAcIAAgAc//YB1wHMABEAIAAItRwUDQICMisAFAYjIicmJicmNTQ2NzMyFxYXNCYjIgcGFRQXFjMyNzYB135fGwhDYw4Hc1kMHwZSDkM+MSUoPBwoFxBYATm8hwINXUIbH1mLCgEO10dUIyhQZCoTBSAAAAIAS/8+AeMBxwAVACMACLUfFxEBAjIrEzYzMhcWFhUUBgcGIyInJiMVIxEzFRMWMzI3NjY1NCYjIgcHpkhjFQk0QFVDBhNIOQgBXVoDIDkRBS9ARjYzJgkBlDMDEIdPVoIPASoG6AJ+FP7ONAELVDw+XCQIAAACACH/PgG5AccAFQAkAAi1IBgMCgIyKzc0NjczMhcWFxc1MxEjNQcGByInJiYlJiYjIgcGBhUUFjMyNzchXUULHQY6KgpaXQo+ThsRNEUBPg8pJxkYJSxJNDklBtxdhAkBCyQIOf136wYrAwYQgp0lKAwTTS9BWjIIAAEASgAAAUcBxwAPAAazCwEBMisTNjMzFSMGBgcGBxUjETMVq0JTBwo4VAoCAVpVAYVCUgRENQl4dwHCSQAAAQAc//YBaAHMADMABrMXAAEyKxMyFxQHByYjIgcGFRQXFhcWFxYXFhUUBiMiJyY1NxcWMzI3NjU0JyYnJicmJyY1NDY3NjO+UkkHB0xDMg0GHQoxMBc3EwhXTkxJEg8KRUc/DwMaDTA0FDEUDUQ9BQgBzB8BKCclGgwMHQ8FCgkMHTQWF0RIIggDUAYpJgkIHQ8KCQsKFiwZHDlFBwEAAAEAEv/2AU0COwAeAAazEQQBMislFxQHBiMjIicmJyY1NSM1MzUzFTMVIxUWFxYXFjM2AToTIDo7DA4MJwgETVBUhoYBAggXBQ0rYkcCDhUHGkQWinhJf39JdncLLAkCAwAAAQBJ//YBuwG8ABkABrMTAQEyKxM1MxUXFhYzMjc2NjU1MxEjNQcGIyInJicmSV0BBh8iTxsFAV1aB0RuIBImBgEBDLCwsBUMOQwoe5n+RCcELQkTPwgAAAEADgAAAb4BvAARAAazAwABMiszAic0MzIVFhcSFzYSNzQyFQOyowEuLwISYAkBXB9apAG5AQICAjT+/j8hAQpMAgL+RgABAA4AAAKcAbwAKAAGsxoAATIrEzMXEhcVNzY3NzMXFhcWFTc0NzY3NzMGDwIjJwInJwcUBwYHByMnJw5bA1QIAQVMDlUSSAcCAQgPOhJYHiVDMzMDVgUBASUqDAMvL0MBvAr+7lYJCkX/LT/yOQoDAQwkSMQ6ZHrdAQoBHEkKByaKkCcLAd0AAQAAAAABzAG8AB0ABrMSAQEyKzcnMxcXNjc3MxcGBwcXHgIXFyMnJiYnJwYHByM2u7VlPDwbIDoxMQOMIFYVLh0BCmVBDiQICR0jP2S75ddLSyIpSwEGqSdmGTYiAgxYEzEKCygxWOIAAAEADv80Ab4BvAArAAazGAQBMis3JyYnNDMzFxIXFzU2EzczMhUHBgIHBgcGIyInJiYnJzQmNRcWMzI3Njc2NshcXQEvMA1sBgEIZwgtLTIzaQQbJBYmGQoGEQYGBwwfIw0GDw8GHwHd3AEBIf8AUAoJVwEHFAGCgv70CEMbEQEBAwEBAU4BBAwDCBwMUQABABwAAAGSAbwADwAGswoBATIrEzUhFQcGBwc3MxUhNTY3ByoBZm5mFAx7e/6KdIF0AXJKMY+GGhABTTOapgEAAQBTAMEBoAFHABsABrMQAgEyKzc2NjMyFxYXFjMyNzUzFQYGIyInJicmIyIHFSNTAzgsGiQiEwQHGQNMAzcrGyUiEwQHGQNMzDRHGxkEAS0MCzRHGxkEAS0MAAACAGcCRgGMAqgAAwAHAAi1BQQBAAIyKxM1MxUzNTMVZ2JhYgJGYmJiYgACAFECDwEtArYAEwAaAAi1GRUMAgIyKxM2NjMyFhcWFRQHBgYjIiYnJjU0FzQjIhUUMlMKOyUnPAsCAgo9JSg6CgKkPDBsAncbJCMcCAwNBx0jJBwHDQwNKSkoAAEAiv9AAR//6AAPAAazCgEBMisXNzMyFQcGBg8CIjU3NjavJCYmBQQRByAqKgUFE2pSAgsLKxNRAQILCywAAQBKAAAApAG8AAMABrMBAAEyKzMRMxFKWgG8/kQAAf/F/zMAwAG8ABUABrMPCAEyKwcWMzI2NzYRETMRBgYHBgYjIicmNTcjHyYYJQUCWgEBBg0/LSgwIgxfHxURBgEHAQf++OEyEig0EQ0EJgABAE8CDwGlArYAEwAGswcBATIrEzczFxYXFgciIyMmJwYHByMmNTaSQktCQAMBAwQfJkAfBi0tJiUDAmRSUlADAQFKJgY1NQEBAwAAAQBOAecBpAKOABMABrMQAgEyKxMmNzIzMxcWFzY3MxYVBgcHIycmTwEDBB8mLS0GH0AmJQNAQktCQAKMAQE1NQYmSgEBA1BSUlAAAAEARQIoAa4CdwADAAazAQABMisTNSEVRQFpAihPTwAAAQDHAg8BoAK2AA0ABrMIAQEyKwE3MwcUBgYHByMnNzY2AQU+XQISJg9FJiUICCECZFICARUtEVEBCwssAAABAFMCDwEsArYADQAGswgBATIrEyczFxYWFxcHIycuAlUCXT4NIQgIJSZFDyYSArQCUhIsCwsBUREtFQABAEkB/AGqArYAFAAGswoEATIrEjI2NzUzFRQGBwYjIiYnJjU1MxUW0FQ3A0w1JykrN1IVE0wDAk83JwkFNFQXFjotKCYFCScAAAEAVwJAAL8CqAADAAazAQABMisTNTMVV2gCQGhoAAIA3wIPAbsCtgATABoACLUZFQwCAjIrEzY2MzIWFxYVFAcGBiMiJicmNTQXNCMiFRQy4Qo7JSc8CwICCj0lKDoKAqQ8MGwCdxskIxwIDA0HHSMkHAcNDA0pKSgAAQBTAh8BoAKlABsABrMQAgEyKxM2NjMyFxYXFjMyNzUzFQYGIyInJicmIyIHFSNTAzgsGiQiEwQHGQNMAzcrGyUiEwQHGQNMAio0RxsZBAEtDAs0RxsZBAEtDAACAGUCDwGgArYACgAVAAi1DwsEAAIyKxM+AjczMhUGBgczPgI3MzIVBgYHZQMQFg8vLgNEAloDEBYPLy4DRAICDwouQywBB5gHCi5DLAEHmAcAAQBXAAAB8wKzAAYABrMBAAEyKzMRIRUjJxFXAZyamgKzUAH9nAACACoAAAMWArYACQAWAAi1Eg0GAQIyKxMTMxMSFxQgNTYBJiYnBwYDBxczNCcCy59sn6AB/RQBAXICBQECD8UL4eEenQFcAVr+pv6mAQEBAQJGBhAECjj+WhcBAz4BVgADADj/6wLSAswAGwAwADQACrcyMScdFAQDMisTNDY3NjMyFxYWFxYUBwYHBgcGBwYjIicmJicmASYjIgcGBhUUFhcWMzI3NjY1NCcmATUhFTizgAgRST9RZwwCAg9CHhZFWAwdHgx1ng8BAWwQGC8rP0pxWQgZKyZHVDE6/swBZwFYl9AMASEommMWMBRyVCMROA0CAhKxfAoBRwIZI41ecZwRAhAekGNqTlv+v2JiAAEAHAAAAkYCtgAWAAazBQEBMisTEzMTEhQjJycmJwInJxUUBwYDByMiNI1xZ3BxNzYEAReMCQIbKmoCLSwBXAFa/qb+pgIBCgVHAa9RCwQYYpr+vggCAAADACoAAAJwArAAAwAHAAsACrcJCAUEAQADMisTNSEVATUhFQE1IRUvAjz+BAG8/f8CRgJYWFj+4ldX/sZYWAAAAQBWAAACbQKzAAcABrMBAAEyKzMRIREjESERVgIXaP65ArP9TQJn/ZkAAQA3AAACmgK2ABcABrMHAAEyKzM2Ejc0Jyc1IRUjJxcXFhYXFwcGBzczFTcG4AN0dQJj7u4JERE0GWZaUgzb2woBPwMCjI1PUAELFBU/HnuBdREBVQABADcAAALSAswAKgAGsxkKATIrASYmIyIHBgcGFRUjNTQnJiciBwYHFSM1NjYzMhcWFxYXNjc2NzMyFhcVIwJ1AigeFxM8CgRoBhJXIBAbA10FXEMQDkQkFg4BAiJ+BUFfBV0CMx4tCByBI+zKyvssiQQQFiUICkBXAg1KKksBELYHV0AKAAMANwAAApoCtgAbACkANwAKty4tKR0YCgMyKyUmJjU0Njc3MjU1MxUzFhcWFxYUBwYHIxUjNTQ1NCMiBwYHBhQXFhcWFxMmIycRNjc2NzY1NCcmATdnmZBhDwFiAyMdeS8VFTmvA2ICEhxYEQICEVwQHHQJBQQsE0oPAigoaw+BYFyBEQI2NWsGCShhK1oqex5rNjXwow0iVggsCFYkBQYBQgMB/roLCCVNCBZAKygAAQA3AAAC0gK2ADkABrMdAQEyKyURMxE2NzY3Njc0NzYzMhYzMxUjIgYjBgYHAgcHFSM1JyYmJyYmJyYnIiYjIzUzMhcWFxYXFhcWFhcBVGIoEScQCwEfEBQDGws0AwEGAh0TAgjOCGIOVmoMAgcCDR8CBgEDNDUDHAsMAQEFCTkuuwH7/gURDyE/KU+MIQ4BTAEIPjr+8yYBbGwCEHxgDXULMQgBTAEHKCZkQh04Tw8AAAEALAAAAqUCzABCAAazFwIBMisTNjYzMhcWFRQHBgYHBgcGFRYzMjYzMxUjNTY3Njc2NzY1NCYjIgYHBhUUFxYXFhcWFxUjNTMyFjM3NCcmJyYnJjU0RR2daJNcRAEEIiwsCg4CCwItFVH8BCQQCy8LDHBZVG0IAQwLLwsQJAT8URUtAg0OCixDCwUCGU1mX0ZZDQctWU5PGSMFAQFWDkFZJBhnLCorUGNZRgYOKyosZxgkWUEOVgEBBSMZT3hBGxQmAAABAAAA7AHzATgAAwAGswEAATIrNTUhFQHz7ExMAAABAAAA7APnATgAAwAGswEAATIrNTUhFQPn7ExMAAABAFoB1wC9ArYADAAGswsDATIrEzY2NzMHBgcUMzMVI1oJIQgxDw8BDw9iAjgVVBU9PQECYgABAFkB1wC8ArYACwAGswUBATIrEzUzFQYHIzc2NzQjWmIRIDIPDwEPAlRiYSpUPT0BAgAAAgCuAdcB0wK2AAwAGQAItRgQCwMCMisTNjY3MwcGBxQzMxUjNzY2NzMHBgcUMzMVI64JIAkxDw8BDw9iwggiCDEPDwEPD2ICOBVUFT09AQJiYRVUFT09AQJiAAACACAB1wFFArYACwAXAAi1EQ0FAQIyKxM1MxUGByM3Njc0IzM1MxUGByM3Njc0IyFiESAyDw8BD7NiESAyDw8BDwJUYmEqVD09AQJiYSpUPT0BAgABAAAAfABqAAUAAAAAAAIAAAAYAI0AAAAgDgwAAAAAAAAAEgASABIAEgAxAFsA8gFTAdsCcwKNAqgCwwMlA00DZgN1A4MDpQPkBAgESQSmBNYFIAWGBawGBwZuBoQGpQbSBxMHiAfCCCEIZAigCLsI0wkTCS0JPAllCY4JogniCgcKVwqPCvwLQQufC7cL8QwfDHEMqQzdDQcNGw0vDVUNZA2/DgQOUA6TDt4PEQ+ZD8IP2RAKEDcQRhCIELYQ7hEpEWYRhRHVEgYSMhJVEpkSzhMVEzUTYxNjE3gTphPFE9QT/BQiFEgUWBR3FJUUuhTJFPcVJRVOFWEVkRXpFhUWNRZKFnUWuBcQF2kXyxfaF+kYBBgeGEwYdgAAAAEAAAABAABEf7sLXw889QAPA+gAAAAAAAAAAAAAAAAAAAAA/8X/BgPnAu4AAAAIAAIAAAAAAAAA+gAyAAAAAAFNAAAA+gAAAT8AbgH0ACADQQA4AfQALANBADgC9gAqARYAWQGFAEoBhQA3AfQAPwMKADgBFgBZAU0ACwEWAFoB9AA4AfQAJwH0AFMB9AAqAfQAKgH0ABwB9AAhAfQAKgH0ACoB9AArAfQAKgEWAFoBFgBZAwoAOAHYADcCmwA4ApsAHAKbAFoCfwA7AtIAWAJVAFYCOQBWApsAOwLEAFYBFgBXAdgAKwK2AFgCHgBXA2sAXALEAFgC4AA3An8AWALgADcChgBYAiwALAKpACQCsABXApsADgOwAA4CmwAOApsABAJjADcBIQBeASEAFgH0AE8B9AAAAeEAJgIFAEsBvAAiAgUAIQG8ABwBMgAbAfQAHAIFAEkA7wBDAQv/xQHpAEwA7wBKAxoASQIFAEkB9AAcAgUASwIFACEBVgBKAX8AHAFpABICBQBJAc0ADgKrAA4BzQAAAc0ADgGzABwB9ABTAPoAAAH0AGcBfwBRAbwAigDvAEoBC//FAfQATwH0AE4B9ABFAfQAxwH0AFMB9ABJARYAVwKbAN8B9ABTAfQAZQIeAFcDQQAqAwoAOAJjABwCmwAqAsQAVgLSADcDCgA3AtIANwMKADcC0gAsAfQAAAPoAAABFgBaARYAWQH0AK4AIAAAAAEAAALu/wYAWgPo/8X/1wPnAAEAAAAAAAAAAAAAAAAAAAB7AAIBlwGQAAUAAAKKArwAAACMAooCvAAAAeAAMQECAAAAAAAAAAAAAAAAgAAA7xAA7O0AAAAAAAAAAFBmRWQAQAAgIB0DIP84AFoC7gD6IAAAj14DAAABvAK2AAAAIAABAAAAAgAAAAMAAAAUAAMAAQAAABQABADwAAAAOAAgAAQAGAA7AD0AWwBfAHoAfgCgAKgAsAC4ATECNwLHAssC2gLdA5QDmAObA54DoAOjA6YDqSAUIBkgHf//AAAAIAA9AD8AXQBhAH4AoACoALAAuAExAjcCxgLJAtgC3AOTA5gDmwOeA6ADowOlA6ggEyAYIBz////j/+L/4f/g/9//3P+7/7T/rf+m/y7+Kf2b/Zr9jv2N/Nj81fzT/NH80PzO/M38zOBj4GDgXgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwACwgsABVWEVZICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWG5CAAIAGNjI2IbISGwAFmwAEMjRLIAAQBDYEItsAEssCBgZi2wAiwjISMhLbADLCBkswMUFQBCQ7ATQyBgYEKxAhRDQrElA0OwAkNUeCCwDCOwAkNDYWSwBFB4sgICAkNgQrAhZRwhsAJDQ7IOFQFCHCCwAkMjQrITARNDYEIjsABQWGVZshYBAkNgQi2wBCywAyuwFUNYIyEjIbAWQ0MjsABQWGVZGyBkILDAULAEJlqyKAENQ0VjRbAGRVghsAMlWVJbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILEBDUNFY0VhZLAoUFghsQENQ0VjRSCwMFBYIbAwWRsgsMBQWCBmIIqKYSCwClBYYBsgsCBQWCGwCmAbILA2UFghsDZgG2BZWVkbsAIlsAxDY7AAUliwAEuwClBYIbAMQxtLsB5QWCGwHkthuBAAY7AMQ2O4BQBiWVlkYVmwAStZWSOwAFBYZVlZIGSwFkMjQlktsAUsIEUgsAQlYWQgsAdDUFiwByNCsAgjQhshIVmwAWAtsAYsIyEjIbADKyBksQdiQiCwCCNCsAZFWBuxAQ1DRWOxAQ1DsAJgRWOwBSohILAIQyCKIIqwASuxMAUlsAQmUVhgUBthUllYI1khWSCwQFNYsAErGyGwQFkjsABQWGVZLbAHLLAJQyuyAAIAQ2BCLbAILLAJI0IjILAAI0JhsAJiZrABY7ABYLAHKi2wCSwgIEUgsA5DY7gEAGIgsABQWLBAYFlmsAFjYESwAWAtsAossgkOAENFQiohsgABAENgQi2wCyywAEMjRLIAAQBDYEItsAwsICBFILABKyOwAEOwBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsA0sICBFILABKyOwAEOwBCVgIEWKI2EgZLAkUFiwABuwQFkjsABQWGVZsAMlI2FERLABYC2wDiwgsAAjQrMNDAADRVBYIRsjIVkqIS2wDyyxAgJFsGRhRC2wECywAWAgILAPQ0qwAFBYILAPI0JZsBBDSrAAUlggsBAjQlktsBEsILAQYmawAWMguAQAY4ojYbARQ2AgimAgsBEjQiMtsBIsS1RYsQRkRFkksA1lI3gtsBMsS1FYS1NYsQRkRFkbIVkksBNlI3gtsBQssQASQ1VYsRISQ7ABYUKwEStZsABDsAIlQrEPAiVCsRACJUKwARYjILADJVBYsQEAQ2CwBCVCioogiiNhsBAqISOwAWEgiiNhsBAqIRuxAQBDYLACJUKwAiVhsBAqIVmwD0NHsBBDR2CwAmIgsABQWLBAYFlmsAFjILAOQ2O4BABiILAAUFiwQGBZZrABY2CxAAATI0SwAUOwAD6yAQEBQ2BCLbAVLACxAAJFVFiwEiNCIEWwDiNCsA0jsAJgQiBgtxgYAQARABMAQkJCimAgsBQjQrABYbEUCCuwiysbIlktsBYssQAVKy2wFyyxARUrLbAYLLECFSstsBkssQMVKy2wGiyxBBUrLbAbLLEFFSstsBwssQYVKy2wHSyxBxUrLbAeLLEIFSstsB8ssQkVKy2wKywjILAQYmawAWOwBmBLVFgjIC6wAV0bISFZLbAsLCMgsBBiZrABY7AWYEtUWCMgLrABcRshIVktsC0sIyCwEGJmsAFjsCZgS1RYIyAusAFyGyEhWS2wICwAsA8rsQACRVRYsBIjQiBFsA4jQrANI7ACYEIgYLABYbUYGAEAEQBCQopgsRQIK7CLKxsiWS2wISyxACArLbAiLLEBICstsCMssQIgKy2wJCyxAyArLbAlLLEEICstsCYssQUgKy2wJyyxBiArLbAoLLEHICstsCkssQggKy2wKiyxCSArLbAuLCA8sAFgLbAvLCBgsBhgIEMjsAFgQ7ACJWGwAWCwLiohLbAwLLAvK7AvKi2wMSwgIEcgILAOQ2O4BABiILAAUFiwQGBZZrABY2AjYTgjIIpVWCBHICCwDkNjuAQAYiCwAFBYsEBgWWawAWNgI2E4GyFZLbAyLACxAAJFVFixDgZFQrABFrAxKrEFARVFWDBZGyJZLbAzLACwDyuxAAJFVFixDgZFQrABFrAxKrEFARVFWDBZGyJZLbA0LCA1sAFgLbA1LACxDgZFQrABRWO4BABiILAAUFiwQGBZZrABY7ABK7AOQ2O4BABiILAAUFiwQGBZZrABY7ABK7AAFrQAAAAAAEQ+IzixNAEVKiEtsDYsIDwgRyCwDkNjuAQAYiCwAFBYsEBgWWawAWNgsABDYTgtsDcsLhc8LbA4LCA8IEcgsA5DY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2GwAUNjOC2wOSyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsjgBARUUKi2wOiywABawFyNCsAQlsAQlRyNHI2GxDABCsAtDK2WKLiMgIDyKOC2wOyywABawFyNCsAQlsAQlIC5HI0cjYSCwBiNCsQwAQrALQysgsGBQWCCwQFFYswQgBSAbswQmBRpZQkIjILAKQyCKI0cjRyNhI0ZgsAZDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwBENgZCOwBUNhZFBYsARDYRuwBUNgWbADJbACYiCwAFBYsEBgWWawAWNhIyAgsAQmI0ZhOBsjsApDRrACJbAKQ0cjRyNhYCCwBkOwAmIgsABQWLBAYFlmsAFjYCMgsAErI7AGQ2CwASuwBSVhsAUlsAJiILAAUFiwQGBZZrABY7AEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDwssAAWsBcjQiAgILAFJiAuRyNHI2EjPDgtsD0ssAAWsBcjQiCwCiNCICAgRiNHsAErI2E4LbA+LLAAFrAXI0KwAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsD8ssAAWsBcjQiCwCkMgLkcjRyNhIGCwIGBmsAJiILAAUFiwQGBZZrABYyMgIDyKOC2wQCwjIC5GsAIlRrAXQ1hQG1JZWCA8WS6xMAEUKy2wQSwjIC5GsAIlRrAXQ1hSG1BZWCA8WS6xMAEUKy2wQiwjIC5GsAIlRrAXQ1hQG1JZWCA8WSMgLkawAiVGsBdDWFIbUFlYIDxZLrEwARQrLbBDLLA6KyMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrLbBELLA7K4ogIDywBiNCijgjIC5GsAIlRrAXQ1hQG1JZWCA8WS6xMAEUK7AGQy6wMCstsEUssAAWsAQlsAQmICAgRiNHYbAMI0IuRyNHI2GwC0MrIyA8IC4jOLEwARQrLbBGLLEKBCVCsAAWsAQlsAQlIC5HI0cjYSCwBiNCsQwAQrALQysgsGBQWCCwQFFYswQgBSAbswQmBRpZQkIjIEewBkOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILAEQ2BkI7AFQ2FkUFiwBENhG7AFQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbEwARQrLbBHLLEAOisusTABFCstsEgssQA7KyEjICA8sAYjQiM4sTABFCuwBkMusDArLbBJLLAAFSBHsAAjQrIAAQEVFBMusDYqLbBKLLAAFSBHsAAjQrIAAQEVFBMusDYqLbBLLLEAARQTsDcqLbBMLLA5Ki2wTSywABZFIyAuIEaKI2E4sTABFCstsE4ssAojQrBNKy2wTyyyAABGKy2wUCyyAAFGKy2wUSyyAQBGKy2wUiyyAQFGKy2wUyyyAABHKy2wVCyyAAFHKy2wVSyyAQBHKy2wViyyAQFHKy2wVyyzAAAAQystsFgsswABAEMrLbBZLLMBAABDKy2wWiyzAQEAQystsFssswAAAUMrLbBcLLMAAQFDKy2wXSyzAQABQystsF4sswEBAUMrLbBfLLIAAEUrLbBgLLIAAUUrLbBhLLIBAEUrLbBiLLIBAUUrLbBjLLIAAEgrLbBkLLIAAUgrLbBlLLIBAEgrLbBmLLIBAUgrLbBnLLMAAABEKy2waCyzAAEARCstsGksswEAAEQrLbBqLLMBAQBEKy2wayyzAAABRCstsGwsswABAUQrLbBtLLMBAAFEKy2wbiyzAQEBRCstsG8ssQA8Ky6xMAEUKy2wcCyxADwrsEArLbBxLLEAPCuwQSstsHIssAAWsQA8K7BCKy2wcyyxATwrsEArLbB0LLEBPCuwQSstsHUssAAWsQE8K7BCKy2wdiyxAD0rLrEwARQrLbB3LLEAPSuwQCstsHgssQA9K7BBKy2weSyxAD0rsEIrLbB6LLEBPSuwQCstsHsssQE9K7BBKy2wfCyxAT0rsEIrLbB9LLEAPisusTABFCstsH4ssQA+K7BAKy2wfyyxAD4rsEErLbCALLEAPiuwQistsIEssQE+K7BAKy2wgiyxAT4rsEErLbCDLLEBPiuwQistsIQssQA/Ky6xMAEUKy2whSyxAD8rsEArLbCGLLEAPyuwQSstsIcssQA/K7BCKy2wiCyxAT8rsEArLbCJLLEBPyuwQSstsIossQE/K7BCKy2wiyyyCwADRVBYsAYbsgQCA0VYIyEbIVlZQiuwCGWwAyRQeLEFARVFWDBZLQBLuADIUlixAQGOWbABuQgACABjcLEAB0KzKAACACqxAAdCtRsIDwQCCiqxAAdCtSUGFQICCiqxAAlCuwcABAAAAgALKrEAC0K7AEAAQAACAAsquQADAABEsSQBiFFYsECIWLkAAwBkRLEoAYhRWLgIAIhYuQADAABEWRuxJwGIUVi6CIAAAQRAiGNUWLkAAwAARFlZWVlZtR0IEQQCDiq4Af+FsASNsQIARLMFZAYAREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAGAAYABgCswAAAhUAAALMAAACFQAAAF4AXgBNAE0CtgAAArYBvAAA/z4CFQAAAsH/6gLBAcz/9v8zAhUAAAAAAAAACQByAAMAAQQJAAAAogAAAAMAAQQJAAEAHgCiAAMAAQQJAAIADgDAAAMAAQQJAAMATgDOAAMAAQQJAAQALgEcAAMAAQQJAAUAQgFKAAMAAQQJAAYALgEcAAMAAQQJAA0CbgGMAAMAAQQJAA4ANAP6AEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA5AC0AMgAwADEAMAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAKAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMQA0AC0AMgAwADEAOAAgAEsAaABhAG4AIABBAGMAYQBkAGUAbQB5AEsAYQBUAGUAWABfAFMAYQBuAHMAUwBlAHIAaQBmAFIAZQBnAHUAbABhAHIARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABLAGEAVABlAFgAXwBTAGEAbgBzAFMAZQByAGkAZgAtAFIAZQBnAHUAbABhAHIASwBhAFQAZQBYAF8AUwBhAG4AcwBTAGUAcgBpAGYALQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMQA7ACAAdAB0AGYAYQB1AHQAbwBoAGkAbgB0ACAAKAB2ADEALgA4AC4AMwApAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA5AC0AMgAwADEAMAAsACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuACAAKAA8AHcAdwB3AC4AbQBhAHQAaABqAGEAeAAuAG8AcgBnAD4AKQAKAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMQA0AC0AMgAwADEAOAAgAEsAaABhAG4AIABBAGMAYQBkAGUAbQB5ACAAKAA8AHcAdwB3AC4AawBoAGEAbgBhAGMAYQBkAGUAbQB5AC4AbwByAGcAPgApACwACgB3AGkAdABoACAAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAIABLAGEAVABlAFgAXwBTAGEAbgBzAFMAZQByAGkAZgAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AIAAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AQABBAEIARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAGEBAgCOAIMA3gDXAQMA2ADhAQQBBQEGANsA3ADdANkA3wEHAQgBCQEKAQsBDAENAQ4BDwEQAREAsgCzALYAtwC0ALUHdW5pMDBBMAd1bmkwMjM3B3VuaTAyQzkHdW5pMDJDQQd1bmkwMkNCBUdhbW1hB3VuaTAzOTQFVGhldGEGTGFtYmRhAlhpAlBpBVNpZ21hB1Vwc2lsb24DUGhpA1BzaQd1bmkwM0E5AAAAAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAClcAA4AAAAAQQgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAfdAAAAFEAAABgRgZpwGNtYXAAAB/IAAAANAAAAEQAiwEsY3Z0IAAAJ0gAAAAhAAAAMAplAEtmcGdtAAAf/AAABrsAAA4MYi77e2dhc3AAAClUAAAACAAAAAgAAAAQZ2x5ZgAAAUQAABz7AAAqZAEIwCZoZWFkAAAeoAAAADYAAAA2Y/pCimhoZWEAAB9UAAAAHwAAACQIEwHtaG10eAAAHtgAAAB8AAAAfFivBUFsb2NhAAAeYAAAAEAAAABAllqgSW1heHAAAB5AAAAAIAAAACAAzw76bmFtZQAAJ2wAAAGfAAAEiGHLf4Rwb3N0AAApDAAAAEgAAABoOcqzP3ByZXAAACa4AAAAjwAAAKfmRK2eeNp1egV4G0m2tepWdVUzqdUtRostSxaa2Y4xzDDJcJKBzOww81sYXGZmZt79HzMzMzO/tzTJ32qrk3i+fV95oEtVan/n3HPvrVMOQKAZCAR+DkIBHGCBQMtoGcWWkWu+5YZmE0Iv/2MTfT5AArlL38HfgV8JHAncEHg48GJAmROffezum687thQlzWrPbjV73W6xUCx02r1uq+k4ve4sdPv/22raIQuAMfep19SAMqa6TzSXK7gzuay7qeg+Zb2t7oy3vv+MelnmLnbs/pdxhaL71B8hy52xe11v9Jy2u3mwzG45/clN1u6tSxSJ9uRY7cyNs4L8rt9XBBGBDiBzn/lxhY7XBKJQws+syUAxIKiPUBBECA4tjErqTXvqji4Y8aBmhophQcVTCM+94TagGYyee+7ik8WzIU03KwoOymGZIGpLK1t6NxNZLieDgjCxx8RcOES4qVSbpwgHG7sWDi22efHZV/OqihAwfPHvLv5cSAjWBLAkflq3ME8BEMdUlQpBIm46mmOYWZUPGcEogTwavv5GEJtH6M/8zH8XZUGwJzpyKBO3dAEjZgfPrGrvOVKLrk6ULBE7FFAuwVsul6lLf4XfBz8VeGvgE4FvBMSvfulTH3zHARk3qyjbB9rDr9Vrelz1GbM1cFzk+1h6/+lz4lLisdZ/HoDfJ7rTHlCW6895K33ibZe6orvMCwifpHaxkMt6C/2vcKf7690NIe9d7sg3HXdi+8v7y7qtruNuy7Kcu6vV/6CAAqeRsFF94aMqJ4rsrlVFyXKUw1STpCIfPqDUwTl+YitXy9tzu3WB59SjZbW7MLs3SrSxphMkzlp+/g0zTM/H5obCadOphuJ4riKok2u1uZO7Tp+UM62D5ezWS634CA+L46NOvcWBQ3iQCnbhEDph1OVQXdIN0lqdJxzJcBKVGAMeqQZNEkSPmaxxIXePCShDeUfTichLhabtLC/K6amQdHp1NZuOrphdoFiRAZHNuJHfe9NkQcd8gmRuzM/tpUiwOsNDYTsbc9fE46Cu1489dfDCkgiywambveS+JG/0aqGVrZwKwOuGrU6NZZKz9zPZmgulU0kbt04exAgVEAIVAZIRCrgaj176G9yC3wvcFXgqwH/5kXtOx8GNBMslO5vzeLE8YrrNAW/Nbsu2fWqYJz2fVI8jlxlfjIxe5r+7HUkep4MA2g6A7QV9vrn29k7W59QdaMzAlJJWJdWm6FNU5hFIswc++iqkcamcqCX3/mxrlKidZL6cT0Qb+Y6Ioq46hzJVTeYgigVZC0f3FAR71mZDmXundXNhBTFrTAo+PZE88XDXQL9eVLSpY9MbmkDUP9+XhQ/hMCAcD62lQMDHkHZw4y0agnTCjpaGrptUBWtjfK05VJTs1kqV8EEby8V2QpcZA1nWnGS2OC3humqw2nhrk4e1xXRs/bCOJpKVzrWdSIYzjkzcFEJ49MGWq8H5S3+Oj7oavD5wX+BJV4MPP3DnzTnR1WAwO8h224C1+kKw+oDRkI+6++AnxmJhO6deFtQA/SuKdGf90fLVmu92OoNVljOgDtmtVn+z+/P99mw90zp8rjb6iXERFSVdkBiOYSRPThy54VShK8n5RkLaJXGcdctIQkyFOruPLk/1cOU9lnndoYQ6qaJ5CWc3Yr0gQiATLHCMmo8vp9BvILl+YqmxvjtiObnq03vbL39BzMV0m2M8h5HeGZ1a71QWo/JdYYFiVRWwnI2KN91+2/qBMEckhE2BL6kkZk/f/uDSVAoexvp62FpfofokohPZxRXCMUAIM7B3v5RUPs8sVWo+dqZ7sAECM8c+ddvFLwDZjvqRS27Ngp8MvDrwRjfqX3r2Eb4f9ZdD1YfqqkznPe8EtnMlfTHqeHx5Bcqf9UTww9a6a66QbPd3eXOFQaVzsoVCrl+3mqNdFBZAf3xPVZXfjoS14ZARz1UjyZQqME5Q5JDBZ8K2mmFMj2+EaHE0PUkAF4SuxdfjzRwDKZfZNGQSumWinhgTAYJTFo3XeAwoSphhpYayzOzu4hG2P7N/1/U6YyOfeCeiEtFAiAKgF8yYxW89GJFvVrjhvSafjMYXTJuoooABSaGsKTqaNBw0NVuLIWG4erAU5HCQFyzH5sL2jfVkRFRnk8FdCabKXALkxYqCQOTtQiWdFaCYI5Iur97crFnRhPPGGR0hhACBq4/ipT/CfwJ/GpgNfCjwKVcfH/vwW27qDfdrlMeMH/19TH1KtrOPB/agXPkw+9mnP5BPiieX3EBPPvGd7kAxHil+Nhr0K6EB/5SpsP3N7vYrUdIPEo9+5HUvjOJfVyyTICFWTk1tlMWh6fZtc+nZ6X3xIEYQxoSPIrV+5N4TSBia+PZhZiRC1cWpdPoH7yWlfLdcaS8U64wWs8sODSpUiz7Z1U17vBjpjvAUY6NUKg6DFLVlWqmrcgqJoZ6KsIGhNISYbmCuaDR+8YZEdu54PhKrlsI6fMqQAYhgwLOMi0cJEvhomoJZOFPPDHfGSjGwMZgIUbOk0tnK6pZKq43NCzwifCLKCy//nMpSuhZNb9SXRCpaMZ5iqkVqDFAsfagTm0hyRBQIZzXGetdxQECYDNOUoqUsDqEaRrrKc04EUXTmE1FWrjXyIciHIohIQSKEXUXKl/4Q/gJ+2a1Cb3AV+fwzPRncbNjs+QR6FPplh3rA+0L0OkNvcjB8LW1/5EkyS6nVZ35A/XbxGZBfbOd2tJl95q9UMTSoS5R5v8WvpGTM26nzI7csyuIaARY5+uzCDOYBA19rzOEHM+4cQ8S2VUWO2OFo9rmlyYMqc5TtxkLSESAsrjYsPhpLDldt4MRyXhXqkxjbmWsaGXto9ciCwou8Hp2Yq7AwTKSSrbgTv0cg9rteFUIzAEIqP/pw4ZQMUyofS917sGwjjBDEhcIEPBYEiweixbMZIz+1mBudT8VU02ooXusAlBGJWmGgjjO1USAM8SkGtSJPGplGcXh5bIEnkqrETs82TKWFDluteDL/AQNJez6W6ufNxKU/Ir8Pv+xq8lsuS1/+zGGhnzc9HvyS5YLnNHutATEDFWVdTnIDpXZ7M9DrJ1l7UM4uV7xOlnmLdrSOVyjcVm7Xaw8GlFxJpN5PbyD5js9Zzl/gpnRP0fnBJ84gqIBPjI5Yxp7pOGYEN9+Poulx4eZP7eXD61gauea3ME8RF50Ptsaby9tHAsOgQio+PioYdzAhrbTNaGqch6nVyNjTE7HcDSHMyTWPaVnnWtEoFmHffZPravb8GGFg2OzAN01EihxwCIrFQ7Kla7ZjSpRnttgdMRU+UdAl+GBBNFYfbYMgxNgbZ1voO5IjWgenYqrAz/8+QvKrn1NhWpc7k/cYCA2dzBxq1LnTmBIAEKVytCcBd3MkVhyzVyMISfjgDbGZEzo/Lciqmam7gcDsksKQ+oED14rRJU4AisU7IhhIncMUQK6qwZSh2pGYxlEmbdhCLBqKBR/Jc/EPzANCGIX3zbnRMHnpX/EX3WjYHzjrRsOZgy3JjYZ8n7UZ8MPBF2VvUAQ9Qv2ap0GfaV+tPtGF7RztBxXyyfamfbLR3x4D6ehr73iiLGPKYYjduVko2Sq/2ogCwTiCOYw5NXzHhMLnH1g6umd0nUedoT4vCs9QNNGRdX3PwUQwjsZ1vO+hyXiXQknCAsnPjRcKf548ougTj66lhgxOl4l16IbWyXYEwvOZii2FMYi8mTQS8eZelUjd61OVVJoIpUkXWALAbFXj7MOxaAa9Q41WppLXppletwhS6cRNu4uFgFvfTl78GXKbi9yNgfsDz7n17akH77p5FfXrmwfaQDUquD/9cN8B3mXsVAhZ/aD3VeYOv0H0D3L92tVx0S1cLoRsB5o9lylk+aLq5vzPyEERMYLNt+wLp7HIA8aAKGuURwREAEGUEo4y4/4Fjed6tbENk1NMqjrd80FsPvLqA1NScA/wtfjMXa3zjvYoJvmaHJst3Xr6kRagvTeP5+ZlmjJxfnPm4A9+YhwzqK5c2EJATnxhVI0TBD9PNIFg5bYni8vUNgjlCYBeGK4RKegEAeRI2rTM0es0rPDLUwzMkkMZoUGzmOGw9cI14wosWyy7EqqlNYezPkUBKROVZHbfRL4ZyzUhkq0lrquEgkVLweP3Hzz4g6+NIDp+5iZk11p62yRenvtD8mWXn88EvtrPc1845fWH2X674deMnZnJbym85OaH9FWZKGflvD2+j3HluOvtuDzZ6DW3ddPb/qzpPdi02H93nxuP+St96A76/T6km6ODN7e6cDMLYZjdunDd7s4uuJKbSG/YMqvN2vLuNRYxsJjPxWK6rAdDvOJUFDAs5CTnbcyniiYfH+8yh2ap2q0Awox13wMYiFbQES+cOJu+YxREHNYJJSLIOHciwSVY48FJEbNMRRc7Eu0siIbDG/G9DVFqjUWVEQJyEUsRRxZQmRy9sD5fKge17cTkJBNMa46cue2IEA8RIku6IkvhuCjzxriJMOES+S6HEpFwTKFKloRZjmndCkJBHq/+JkYIJQmlEy8Or1LEkM0QauRoiZ86m6JStjFTT0TGwDmqUiI5sb0Snu222rE5ioc1JOVQX5nqpX8lksv8qwJPBF50lfm6px+6dzjgdZ6XW0L/nGpfTYA75XtWO10rJwn97nSG6/X8aY9U1i9fNNffOPCuWi0vb7rDaXu2Fmbbj4PI225c2/jz5dHS3DMTu0wk7DVGVhW0fiSV2Kgxw2Hpa0eL2Tg/djgizi5bhYR0BNtzTrdXYDEbQUVTHNURElwy+rqxKDG+eCDBEbFfNjic25dJDjmpOSGfw6kCW+vO1vOzhiOQ2k9i4XVbYxr6wX8Rm9YcGeh8IdKGX64UajPXjjs6Ue60JxtiSAxPCJTjq2uGjLikwMUlQCQr0GGVUkRIVpPDRkqqsspMKi9Ye19knCtzBOV0clcyFUmKCJdbwsnubNja7+gURy/+J4fzu6dmuJd/A1kiJ/K6HAigQPLSr5CfgF93z830i6c05JuMV0a/vHh8gFfp/YZvW7DM49AbA9HO4Gar5XJ7Vers9bwFcFVz0vN3qeDT6zuSe9WizaaWs/O7iisfvH0xTUOIiHAHhr90OrEIcNnuWxZO7LVF/pOYD+OpabXanJ6bwljILSTimCCO8jotWwtd21rstMfzSmJEW/3rESbkxz88QxAqGkfr4T2LpWRhOiXZ0zZrZgynbNcNUHfl9h0tLT94YCIuAqfgpwFf/Gxms1nH5cnPb55aCyrS20WG17aspevuveZoXeSmogXMAChwo8EZRziwvrTnxjk5NqofuvifDobh44f/5hAHKKGsNCPX7CnFU1kGKVFNtoOGFXPR9zrAr8PvBo656LcU1O/++rpgA+wdu28YeRLxR7Zftzr98tX2Qcz9sObOZzHg9YYuTfADnQOOe/v5lU0ZUwyIgB5xDpx4z20ihiwQoUixJMnvbT19IWpL1+/ovCYqlrh2vLyFahzoOpVGAcUfj5WTKuO/c9tKjgNwiEgw4WV97LE/+V0bA1BjY59TWE0cn9HMP5t6X164ql1yknEwT1VvQ5/GQImxr98Ln3Gd77zrIaQCd7s1opaxAv0acbk+M3bZHM31668vbN+h2emF9uG57JJ7uaBZ3OGOMuqn9x3GgRfZcFq9MBIDOlmRrej1vXMnBGvzCJIO3fep+d98W6IQNjZ2n9g/NqrJxerE9KGwIKrpmgCSilXTCfGAQJtWhMyRSm9MJoCyGCgLzR68NZcWtJFpERO7wiP4yZHYEJXzKyGOpnvLzzWOqwjv39TZ2cc+cyR9fjMoy81zD71nqt7DUrp65P7NiAAIiSYPBEsKFXmew/woljY7K7dvhhCoFMTkzaceWnMEqBYlDCC5GamP63G39jL4pcDzgXe4uL7xxfNr245kzh1M5bze8Gqza6cD6Y4d/vHVZbHnuQBO90pj6nM1OJ1c7VeHtg3r/olx+22D9qvXT8xOq+u9Cb5hALCgCRQTQJLMPdgec6TeW48eu3U1VmVcNinJ+VK9MmYyBBADAYRU/Q0zOl9rsfS9z73f7mkXpplUx4xgRBOASGk0c/8cHw4q+c6x3zp5NoS5xLSr9kgQQzs/8dJqr2aWGCFs15D0HQzXnkXi5L5MBKEfxTHADgiEcTxRJfEDk5NBqZcfPpBcj5tyNAEsmRnbNW45JgIpaoTFZn3ldhlq1ah969FbVSSViJhUJUaSAGR4an51ZJEHo9vYf91MXwZ7Q1ooClwwFl1fbM+Fnaiqx+fuYU+9HqGt6Xaxf4LvuqeBe9zKebvnJN9zYW/ePxv63auXH/zu1od6pwvGVGiGPDK9wuqlBz9jFK9wuU3kTs/ZHTjr2zszsK2oXAGtr56YL0lEZYBsjSiqzBffXK/tjwih8dfs28cbG2dDipT8tddxHEGNdUUt7okzA7DM1e2l6ZCprB0z2+bKXO/A8mizXKyOJcUn7jwTxFtzmeh9B8dE+KYSTMbTqbyUi6Um5sKcip4aO9CpaVrMYBzhGWKxSDJm39vUu2a8Urlrtcqj9miykCre/CdbGGMUAb49JIDcMjo2G2IWsfKZWtYRpbhGN9/62GHd6nRY4s71lnjxl0Nq35oHUUAgWhggQC5ddHG/z8X9LYGPufc5P9a/gfvWN7/4iQ+847W7+jdw/pHKtz4GsXyVdvx5XzkePzsbysHV3XZuYz6F7mB94uiVC7j+uzyleF/nvcZVlk/hFVMGeTdF7n6nOfi9sKfOgWB7DXc/6zVZlj1eioh9cY1XYrm99z9xpresQbh9fGnXMwcSVYoWbDs8LOQKUQCUAwHoSjK4tIsTa23Q9h9++PTBe1aUGuVAU/gsljL5FckKAWZI5xsFZvIcUoJ2nhIOOnMOQgBhWdPGHjtUHk4F5b1ZMySH3WILX9SxPrbRUIN8ECPxQDuzpRgG5oTEoawpYozDux8nCCF4MBRFCHg7qhc//NXrJjoKERyndia9laDKmKpPK+VKyRQAaQaRy9dVjQUR1aoWv3//4UY+z2K6iDiBF/LDtlyrDufd/yecGoom9aWemAxrPMdoUlc0buvEkMAQIuFrnqraEsuatlWTwyH0yZxOlObJLRthiO8evfiIAVQqLssUQN66DhAaeDj4O+7dw6nABVen585sdKEfJleFRzvn1yIvadrbTW82l71Mc6u1807BP5OwH2rcoHYh6/VNjG03Y4uTJS18/kI+XQwx7YGlrohytfuO7w9yiFECiMNzT9TaGpmbOStHUvm3PyDTKpXmSyfPq4Y5FuFSjefeyCdORcWrCj5+nllaqGKFimMqUm+ft6uT8RRxXlWqdaICorVcmVOGC61iEnNMEgjKxzI1Sa6n0+lS+7dMqBtO7VR2PU9seyPHFUp3WKiuhxRju/zDpMhzdDibX1mzaGNfbH+/Ezp56Q/xX7ke9f1uJ9Sx+p1Qe3A69/vIq41nX1YutMWrfcz/26vc0dV2PEZecbMwyH4FqMaxYnLt7P4bjiPrrx+hRtIc3TWRGEp6DrSWiGjI2EiGYpXC4lf2as74gVf4kUL6TDK2/6bs6mJidEajDIaWm2KynFx7PKM7SjwRWqrGAMFuCKalYGV3uLep0xNf0hDm02Fe2LaTgSOEhI62c5MnRo88JONX2o6mkJNzr67ddn15pikBxkhL8YiqZ+ayZkSmnLEyUgSFd3Htufnsx9189piL660ND9crVyc7cGn4Abgj7PzD9OAAsOMarNX0dlB/k2dHumPQcXpHsmLnFXcHMNQoyfTAJ3oREUApF1PZ8rhIMMQpz4cWF/bJobkggPGjt08Oz2+ANEq+TeuYB3XoWBase163EK/zDjFR7t33T+spbmLaVCmnGYTXinvWuAaWYtpKYzGNr9/fMFNwZmgI8XceyKeZrnHhkNuH9UyEFJ6175yY1KDF6wa///P54NykrC6tsov/za+WVaBTZYh/5HMHM4ghQDD80x85FGsriJ/SLR44Koays/KczltC9XCryT1xbjE34yI95iK930X6rIv0wZKHdL8qqCQ78E19hXuwb0O402+ira4P7tXG1WUrnuV8Trwj1PYTwo1kOQcEMOYIC5LomYpg7bMiIAbjScbZm2mi23yn46iGLSBJWZ/p7R9vdgXCUcLPTFaW69VKfu3apCpIaap2F8KqBgD1Yi8qQ0nRQnVMASOecIUlAYb1UELhEBGkKJVqtyYIw+LcX5zJVfK6KC9tHHhkYjRDLZlyZGiufuNKp5xfOJLWeZkC0cbfecfiMMfTJK44cbWv+RHXHQAXsde6iK0LLmJBN7xmoQ+KPVA18+Hwg9Cb9Oau/oT6jb2PlB9w2xhvm0Z02zRyB/u/nG3/PX+XqjYleW5V1i3EZ8vZ0dFT+8aP7WKga1QZHa1VRw4xQOrJm6vZbiXeXknyQDmEI6S1MpywU5WRe+9oai7s2bi0jzNbugGP/NyZOEK6hdjMTcW4NJI/ajnWFbN6ps0bmUpMQt+RHc44vSYTQoTS3uUH77rl9Nx1mxwgSqz1u27et/ywQJCwdrBTPr1aWCkZFEgWsAyxI5utTL0ycurwqEY5aXQi9GVx6IATfsPf3JBEhBB++dKZBpHLihM1Dd+LPmxCwokmZJeLm10ubnG5+LzLxX4Bef7cVUnXYmz7/5MQsgadTG6AtbWdB7z068258T24EnRbTv+qzz+4Mbqjsvmi6D/uuEzMZbc/bF3uSl9xEd/udryy6B860OlCWQ3fPD9dezzDGMGLH+jyESccbsQNm3ChZKK1taeUZxbWkAEwPCzKi/SopS3vFQjlCAKLKwzba3VO705LAALes2dihIbXsnoyaNkFMGoiL4XHDHPp4HAvEjdMA0M2S2xlvNdonSuPSqip8lbcGVMAQRwJAtbuXOLR6XI2kZk7l0pcay+lFbz5ooAQaIpVsjUqEstqrN3YQUjGIUBK8Po1cT/HEhdkgiRxpG5O8QhP9YZtBDzeXU9LKGuEo6OynBdJGvOaFGaJG9q7cwJ2APFZ+4bZkcZMd77BySPAIuk985gBBm3I0LSVCwq4LI+7OepH3dPgsy7LkyK66i8kto9zLpa+kHyk/R/vY0p31trBPe32WS/nd8VuZFx9B+jr7BVHy3brqsuL/nhnrQPBV80+N6PdUDZUXpT4C1ggatLsN8nCh43wSHWBYwQhwFyt0FybKY99cKs5snAwE4lVgQ0FeYbRWk3mrrlPxQRUft3CCukui8mTur7vfZ1qIWNGEqNNGRBCceA0DiNpPJTajcK1apA/dWNnkZWNVDyUDVnSe6jG4naCYSGj/JeTKsfLKkc4jGPDE8/d19l4OGoU92ZC4DKhWJhFw0h+wUCwLsuRCL91JthKT4Fy6565sttuhpZ3TbsrQI/qoq1yi2ux6FwABw5c+jfCe4r7icBvut7oL/zUN750TMa+8vz0dtngtp0dlWFAhf/neq0kVoENJMgc2zNJodVr+Wt3/gng4AjitafFQt+1m4T+0yuM9p2C67V9wvw4QO1i1lvks4pcnfp7vL9IQ+3yCBKGyp2zN4JGauOWFIvw05WxMcka0ZiojvXGWzrgYMJEGG5DgPr0gohgeurck6q20qwes4FgBGkqDd3akp2wMjIZ0g/sOqKgUPG62pgpzxzLx6KCDBxgQqJptRpWpiMlM5FLhE/vTlcJmlQEK2FXMUoAUQkVqaLp3WUe3jSUG0sGo8hI1oZaBvfyZnJiVkWLzRrCAkPodLHQv7XvFLYElM9GEoZkqJy0nqnLkFb1YDBeCJo8oOJYHBOMEEEYOA7LCD1/UuSCw3HgCO4XvpEVCYDPSHyhX5RDVYWI7TubCHFmv7Ra01lDMaKOHi7LOnX2pVcihA0TGk1NNRSETI1XLDMlh0J6RwWUi+JkLlFDTFBDBeXln5GSCGQbIYoA/X8vFBylAAABAAAAHwDUAAQAAAAAAAIAAAAYAI0AAAAeDgwAAAAAAAAAEgASABIAEgDrAfICrQNtBD0FNgYJBxAHrQh9CXoKSwsKC48MOw0XDdMO6w+PEDsQ8BGJEk8TQhQIFTIVMgABAAAAAQAA3/kg2V8PPPUADwPoAAAAAAAAAAAAAAAAAAAAAP/+/sYE2QLfAAAACAACAAAAAAAAAPoAMgAAAAABTQAAAPoAAAMjACMDjAAfApoAGgMGAEECMgAuA38AJwJiAAwDyQAdAykAOwQcAFwDkgAdA2oADgQ4AB4DhgAdAuIAYAP1AFoDcwA2A1L//gNkAB0C6wBcAyAANwJuADgDJQAuA7AAZwLGADkDNQBTAPoAAHjaY2BkYGC6/+8YQxSLxf9//86z3ASKoAJ5AMU8CAQAeNpjYGIWZZzAwMrAwNTFtIeBgaEHQjM+YDBkZGJAAg0MDO8FGN68hfED0lxTGBwYFBgWMCv8t2CIYrrPaKXAwNAfxwySZToJJBQYGAHSWg9pAAAAeNpjYGBgAmJmIBYBkoxgmoXBAEhzACFIToEhimHB//9gliOI9f/x/8P/64BqoQAA6/MLsXjarFbXettMDh2quVeVFKaAmcjrNYeK090Lx7Q23fX7yK2kJed+9yrPwH0ZUOl3+2gLkJJ7+ZtVMIMywDnA0EKhAMW+7wUAb36I0e03WNr9q4/PTJwOwo8Q7/uYq0c/+0W/aLXkgWlZKAIUWm50hCF06DpoKITwo4M5JS1pOZhX0P6cr1SFq7GsIQzdJFfRblLPa8zpvU+Aw5IWOmpjYetTJ5fL0TFoHd6xWNsZrRruHaCldDtlo0w2iWLLPww6NYM9HSwozNtY1T7nw5rWXQcT2oD/28LC1F8708aI9loeljzfwnw92PmbT85m7ANubZFqjbxxjldzQQBJ5k0VTZOquwOcZfssedKpPhAbcQQ4uOWHpAG2DfLqBa9ehGYYBIFJbOGwbqHY8VG8YWeL9uYbvMere2+iH+OixR4/iuIgCNpRgIYdBF0EAbQJj3QDB4sKqIJCPSJMfXrLxz7pYr90qQMUEjpYSukmJqCd9B24wEaGa2bl8zf5eS0szlhk1BBDTLmS2WKdGNr2wy0z2gl8GVgB4NquTzaTeOmV4mCfwgFtd0Qua3M/baUrAYV0I8wdfESjRQmwb8bBAQVc7SjBKogD4BNwLQzYJdxIqx1UnYFRoT13xjoanCF1epCGs1MMW5KeoIfgxTKCdpdsYXJDEExcOyKMWiujjSzFyCXh+JCiBEVdFDSqUkCfR4ZF3qMsprSCGRriMZXkch62ow0HxxW5AuCYfs0H0II6hOO826HdeNqvCUWrlBQgDlqUGSd0CHEIOEG0OTip3uz5SaG9ETzEkUP5ycGyerPtv9nNlKZF+nKqr6hETOp9P5mcpBZGLk7YAUPK1d1kjL/G6QuNmgRCsuUnTB/hdeMYOO34jCUprLc2MzuF0CfVBISkSfU3SXu6WZe0MBGiLIkvjWKlYxhG2q2qEonIeXs+TkoXPByVLo5IYsqF8PvNm4aYEGXhui4zUCGbESWVfhv/a5sPiK4aYazaDt5QicHyJvHN8pZK8ixvq6TA0lRJkeUdlZRY3lVJH8t7KulneV8lAyxtJXv8YykkpiU00PgH3xYH1Qlj7cj478zonDBOHRn/kxlBCRyzL8VJoL5mUBnnSXwW4QOq6wHhYykJH8uHhI9lnfCxnCJ8LP9E+FhOEz6WfyZ8LGcIH8uGgqV0YB8pSnszBM0laG4pSWzwzM4qfGTjI7qPjxVAEy7ppozmJD/Yr/QwGf2TXouT0ZLHE4ePZ5KiUfX82SBF+TSj50qfZwqep5U/V6Lr453PiYZNtVysF7Uvgv82VuRc8syoMtYXxAc0L6kfhY7mHHypGjeWHJy7zhUN3SL3eWqRqNWhAU0Ukm/LqzhuyqaMwD8gPtCQbmfOMKoVYnhBUVl4g9wKdXqnbsmwcHFI24dxQwIsxXTm4mk3aGTnYUm6PW/AkJ8pa9v+5wIUwfxcmCreDlxXAg5qiGUaITdDLOmz1zUEoif7r1TQYVtiUUdtMhd0ZNI65Cfd2ZhIAnlPyU3qsaQMm4STRJolhIuSSM4iyRKSxGI9os9ZJzqRi6hzEXn67j5Jj3MFDi71uADSFqe6XMglomm5ZyLMqX1TNjkpd3GlZ0vBZEyj2PMbsCQtkzQ9JR161Aos1Wn36uRvl6yJF017t1uSR371RCW6166Qf+Cchdxr8ZqS0GAWN/GG9rfMncCHpaCRzBoV28H1U9Ydc+uU1b0w9qoIrXDBvirhhsJFO6baeMYI1KWu1NAGzlKEx5DT+ZzKmI9wWLoZdB5QCUvQkHPd8zdVMliouxTyW0a6+UdNMWOKCN2SpEfViXmxgm6dTZWIBbvHyl9ot2hbssuLnDtNwSuioJpd+47gG15u4Au65a8v0b+h44xKGV/S+q3CeRLvmEWP6IbNWEY9tt4rHmj8f891kRY7FARQ+NYTdAlMmRFWgLu7Nm6Nuzbuvpi2DVKnKmT233wn7gPKoagQQqdiWCFgJCpIAKMKAWM0XYpxGjBBAyZpwFRUDCG0qaZVYkpFRfFpMyoxzdIJmqMzzdOZFuhMi6yzQ7GkELDMOsGKQsAqTbdijQakacA6DdhgfaFdtakS0xbrM22rxLRDJ2iXzrRHZ9qnMx3oMa5PTuChjXLNyiNni/KYg26jVh2dRHmJm1PozZk1EjfnOnNDstQLRj5HBvocl9DzK11OHFxDD26gB7faNibLu2Pk+T30/AF6/qhzxsET9OAZevCibVOyvFdGnr9Bz9+h5x86Zxx8Qg++oAffUaHSvmxzJVWFf3/+duhPkz4GU601ubJ07m/1cOb3ZV37A0STAUQAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnTYxMDJogRib+VgYuSAsESYwi8NpF/MBoDQ3kM3ptIvBAczeycDMwOCyUYWxIzBig0NHBIif4rJRA8TfwcEAFAAriJTeqA4S2sXRwMDI4tCRHAKTAIHNAiyMfFo7GP+3bmDp3cjE4LKZNYWNwcUFANM1K1gAeNpjwAb0gNCaQYpBhUGF6dr/D0yiDAxA+j2IBgBOqAa1AAAAeNpiYGDgZChiYGZgZOEEshcBMYTNyCAB5EHYTAx8DLsgbCDpwXACymZh0GAUgLJZGZwYLaBsNiRxXqYMxioom4/BhPkRoFWyyJIbCILoX+sUtTM3m5mZcedX1oiZPac35DQzPbEUpMjiMQkpp+R4OLiUKM5jcgFFj86/7SZX5K5LB8UTLArBxig+Y+JhEWNicRnFS7lvYWxU7jIYK99A8RoXLaoPMdGcYBFxyms0X7D4wc//fqKXUvIJC4eKEE3OMxJiSrnmOFji0pLMt1ArVa7M6myN+4ZFLk0kkrlLiy63UZT/NhtNRUmCi0c8/PdaUDdo0efCjs1f3r570blDI1uLCE2Ji4/mN61hP/e4cLwZzTkGQ5Sexsw4X8agwZNcSpotpM8aixPUeJqKd2girDUTbGFg8EWaLma4n0mwKWlkYhZqiAjxMKW5YuhXEUvOHCWZLGG/5A2K96SCnVZ+M1EYdr98PbTGyRZ9FZoajUeI5hehvJu0osXxIR/lvuQWhkyoJOUW7X9bMdVCQUvcw3HPbd7zjDf7cP4Cd060fQB42mzBBQGEQAAAsL23eHcDDrd0BIcCbJbAOAjmHLCwtHJ1c/fw9PL28fXzF4klglQmVyhVao1Wp18sd9NK8zINDBwNAF3YCPAAAQAB//8ADw==) format("woff"),url(data:font/ttf;base64,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WVlZsxAEAQ4quAH/hbAEjbECAESzBWQGAEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ALgA7ABoAJAAkAtb/8AIVAAAC1v/vAhUAAAAAAAkAcgADAAEECQAAAKIAAAADAAEECQABABgAogADAAEECQACAA4AugADAAEECQADAEgAyAADAAEECQAEACgBEAADAAEECQAFAEIBOAADAAEECQAGACgBEAADAAEECQANAmgBegADAAEECQAOADQD4gBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBTAGMAcgBpAHAAdABSAGUAZwB1AGwAYQByAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASwBhAFQAZQBYAF8AUwBjAHIAaQBwAHQALQBSAGUAZwB1AGwAYQByAEsAYQBUAGUAWABfAFMAYwByAGkAcAB0AC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AUwBjAHIAaQBwAHQALgAKAAoAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAKAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoACgBoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAIAAAAAAAD/gwAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAEAAgADACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQECB3VuaTAwQTAAAQAB//8ADw==) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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LbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrEAACqxAAdCsQAKKrEAB0KxAAoqsQAHQrkAAAALKrEAB0K5AAAACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVmxAA4quAH/hbAEjbECAESzBWQGAEREAAAAAAAAAAAAAAAAAAAAAAAAAAkAcgADAAEECQAAAKIAAAADAAEECQABABYAogADAAEECQACAA4AuAADAAEECQADAEYAxgADAAEECQAEACYBDAADAAEECQAFAEIBMgADAAEECQAGACYBDAADAAEECQANAmYBdAADAAEECQAOADQD2gBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBTAGkAegBlADEAUgBlAGcAdQBsAGEAcgBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAFMAaQB6AGUAMQAtAFIAZQBnAHUAbABhAHIASwBhAFQAZQBYAF8AUwBpAHoAZQAxAC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AUwBpAHoAZQAxAC4ACgAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AAoAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAABAAIAAwALAAwAEgA+AD8AQABeAGABAgDYANkBAwEEAQUBBgEHAQgBCQCaAQoAmQClAQsBDACcAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8HdW5pMDBBMAd1bmkwMzAyCXRpbGRlY29tYgd1bmkyMDE2B2Fycm93dXAJYXJyb3dkb3duCmFycm93ZGJsdXAMYXJyb3dkYmxkb3duB3VuaTIyMTAHdW5pMjIyMwd1bmkyMjI1B3VuaTIyMkMHdW5pMjIyRAd1bmkyMjJFB3VuaTIyQzAHdW5pMjJDMQd1bmkyMkMyB3VuaTIyQzMHdW5pMjMwOAd1bmkyMzA5B3VuaTIzMEEHdW5pMjMwQgd1bmkyM0QwB3VuaTI3RTgHdW5pMjdFOQd1bmkyQTAwB3VuaTJBMDEHdW5pMkEwMgd1bmkyQTA0B3VuaTJBMDYAAAABAAH//wAP) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AKIAAwABBAkAAgAOALgAAwABBAkAAwBGAMYAAwABBAkABAAmAQwAAwABBAkABQBCATIAAwABBAkABgAmAQwAAwABBAkADQJmAXQAAwABBAkADgA0A9oAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8AUwBpAHoAZQAzAFIAZQBnAHUAbABhAHIARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABLAGEAVABlAFgAXwBTAGkAegBlADMALQBSAGUAZwB1AGwAYQByAEsAYQBUAGUAWABfAFMAaQB6AGUAMwAtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAFMAaQB6AGUAMwAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAQACAAMACwAMABIAPgA/AEAAXgBgAQIA2ADZAQMBBAClAQUBBgEHAQgBCQEKB3VuaTAwQTAHdW5pMDMwMgl0aWxkZWNvbWIHdW5pMjMwOAd1bmkyMzA5B3VuaTIzMEEHdW5pMjMwQgd1bmkyN0U4B3VuaTI3RTkAAQAB//8ADw==) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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ILAKI0IgICBGI0ewASsjYTgtsD4ssAAWsBcjQrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWG5CAAIAGNjIyBYYhshWWO4BABiILAAUFiwQGBZZrABY2AjLiMgIDyKOCMhWS2wPyywABawFyNCILAKQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbBALCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrLbBBLCMgLkawAiVGsBdDWFIbUFlYIDxZLrEwARQrLbBCLCMgLkawAiVGsBdDWFAbUllYIDxZIyAuRrACJUawF0NYUhtQWVggPFkusTABFCstsEMssDorIyAuRrACJUawF0NYUBtSWVggPFkusTABFCstsEQssDsriiAgPLAGI0KKOCMgLkawAiVGsBdDWFAbUllYIDxZLrEwARQrsAZDLrAwKy2wRSywABawBCWwBCYgICBGI0dhsAwjQi5HI0cjYbALQysjIDwgLiM4sTABFCstsEYssQoEJUKwABawBCWwBCUgLkcjRyNhILAGI0KxDABCsAtDKyCwYFBYILBAUVizBCAFIBuzBCYFGllCQiMgR7AGQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsARDYGQjsAVDYWRQWLAEQ2EbsAVDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsTABFCstsEcssQA6Ky6xMAEUKy2wSCyxADsrISMgIDywBiNCIzixMAEUK7AGQy6wMCstsEkssAAVIEewACNCsgABARUUEy6wNiotsEossAAVIEewACNCsgABARUUEy6wNiotsEsssQABFBOwNyotsEwssDkqLbBNLLAAFkUjIC4gRoojYTixMAEUKy2wTiywCiNCsE0rLbBPLLIAAEYrLbBQLLIAAUYrLbBRLLIBAEYrLbBSLLIBAUYrLbBTLLIAAEcrLbBULLIAAUcrLbBVLLIBAEcrLbBWLLIBAUcrLbBXLLMAAABDKy2wWCyzAAEAQystsFksswEAAEMrLbBaLLMBAQBDKy2wWyyzAAABQystsFwsswABAUMrLbBdLLMBAAFDKy2wXiyzAQEBQystsF8ssgAARSstsGAssgABRSstsGEssgEARSstsGIssgEBRSstsGMssgAASCstsGQssgABSCstsGUssgEASCstsGYssgEBSCstsGcsswAAAEQrLbBoLLMAAQBEKy2waSyzAQAARCstsGosswEBAEQrLbBrLLMAAAFEKy2wbCyzAAEBRCstsG0sswEAAUQrLbBuLLMBAQFEKy2wbyyxADwrLrEwARQrLbBwLLEAPCuwQCstsHEssQA8K7BBKy2wciywABaxADwrsEIrLbBzLLEBPCuwQCstsHQssQE8K7BBKy2wdSywABaxATwrsEIrLbB2LLEAPSsusTABFCstsHcssQA9K7BAKy2weCyxAD0rsEErLbB5LLEAPSuwQistsHossQE9K7BAKy2weyyxAT0rsEErLbB8LLEBPSuwQistsH0ssQA+Ky6xMAEUKy2wfiyxAD4rsEArLbB/LLEAPiuwQSstsIAssQA+K7BCKy2wgSyxAT4rsEArLbCCLLEBPiuwQSstsIMssQE+K7BCKy2whCyxAD8rLrEwARQrLbCFLLEAPyuwQCstsIYssQA/K7BBKy2whyyxAD8rsEIrLbCILLEBPyuwQCstsIkssQE/K7BBKy2wiiyxAT8rsEIrLbCLLLILAANFUFiwBhuyBAIDRVgjIRshWVlCK7AIZbADJFB4sQUBFUVYMFktAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAHQrEAACqxAAdCsQAKKrEAB0KxAAoqsQAHQrkAAAALKrEAB0K5AAAACyq5AAMAAESxJAGIUViwQIhYuQADAGREsSgBiFFYuAgAiFi5AAMAAERZG7EnAYhRWLoIgAABBECIY1RYuQADAABEWVlZWVmxAA4quAH/hbAEjbECAESzBWQGAEREAAAAAAAAAAAAAAAAAAAAAAAAAAkAcgADAAEECQAAAKIAAAADAAEECQABABYAogADAAEECQACAA4AuAADAAEECQADAEYAxgADAAEECQAEACYBDAADAAEECQAFAEIBMgADAAEECQAGACYBDAADAAEECQANAmYBdAADAAEECQAOADQD2gBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBTAGkAegBlADQAUgBlAGcAdQBsAGEAcgBGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAEsAYQBUAGUAWABfAFMAaQB6AGUANAAtAFIAZQBnAHUAbABhAHIASwBhAFQAZQBYAF8AUwBpAHoAZQA0AC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AUwBpAHoAZQA0AC4ACgAKAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AAoAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAABAAIAAwALAAwAEgA+AD8AQABeAGABAgDYANkBAwEEAKUBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUHdW5pMDBBMAd1bmkwMzAyCXRpbGRlY29tYgd1bmkyMzA4B3VuaTIzMDkHdW5pMjMwQQd1bmkyMzBCB3VuaTIzOUIHdW5pMjM5Qwd1bmkyMzlEB3VuaTIzOUUHdW5pMjM5Rgd1bmkyM0EwB3VuaTIzQTEHdW5pMjNBMgd1bmkyM0EzB3VuaTIzQTQHdW5pMjNBNQd1bmkyM0E2B3VuaTIzQTcHdW5pMjNBOAd1bmkyM0E5B3VuaTIzQUEHdW5pMjNBQgd1bmkyM0FDB3VuaTIzQUQHdW5pMjNCNwd1bmkyN0U4B3VuaTI3RTkHdW5pRTAwMAd1bmlFMDAxB3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAAAAAEAAf//AA8=) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAD6cAA4AAAAAa6QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAzTAAAAFMAAABgRUuNwWNtYXAAADOgAAAAmgAAANyCRhu6Y3Z0IAAAO5AAAAA6AAAAWgJkF35mcGdtAAA0PAAABrwAAA4MYi79fGdhc3AAAD6UAAAACAAAAAgAAAAQZ2x5ZgAAAUQAAC/DAABRfFrBpzRoZWFkAAAyMAAAADYAAAA2YThCtmhoZWEAADMsAAAAHwAAACQFKAEZaG10eAAAMmgAAADCAAABDBReDwBsb2NhAAAxKAAAAQYAAAEGN/Ej4m1heHAAADEIAAAAIAAAACABNQ6ibmFtZQAAO8wAAAGiAAAEqGXfg0Bwb3N0AAA9cAAAASQAAAGkriEISnByZXAAADr4AAAAmAAAALJlwgKGeNrdfAWAHMeVdr/qrqpmhmHcnVmGweUVrmgFlgwRs+LEDPEf22HmYwodhnOxwzm+4EGY6ZiZw9bqr+qhleRjPlsadVfXdL/36r2vvnr1egQk1ARB+FUUCKJABaHu1J1q3SnXfvBCrYaCy39eg7ezPp8QBNiC7hRMISXI7/YtFaHauNto1cPQp5SQUqVa9cIw8Em5VGk2Wp8opqI8JsSZsglpJfKFVDJfRJlaAfK173/UlKn16Mafo1wyVcgn0wWBPeEh2A/fi+4SXGGYPSEXaPwJXqNVYzdlD6DsxtVKpVppX9/0UG4sT4koy74nyyKhb7/mHK36mXRgnDuepLJMk8fPmtec8+cPMQ3/FJ0X7hAeZs9/4K4bU+z57caK2K43W61mo1xlerVb9Xqrzf6vRZFPAr97Vq+FndNaxEWj5YDEF3OUC1ouByai3DDVRrtx9RlTYJg3xf35g4YQFXVYA2diIhmR6WlJUpEyoUhWo84P1cDwkZXOkESqXAJnfAIoIqKEIEGmp4CqYtzBrjcGx3MkgjxrcPjfjxCVijKI4osBgR6mKMoPr2HP06078OZDJCd9s9tNQhgRTKSkjBBsXSOsS/pW2HxIP454V/7BvGjhytvgM+g9wrrwBOGcoL731IkD+7dlxNo4dL2jXWXeEkRRGFuL0I6VStVqk12oVBr1eIDDKIrPY7NzM8fm598J+CdplLkLBH4U1qNGpcqt327BZzKpMGNKziwB9dh42JrYKipykKOguV57pR7mrKguasnMTOsm0UCFvKhkPFkRHyrKfweJaZm2QvWnZqpA/UX4cDqXjXyHFjV08oQY7KlM7KqPGpAuqXKYySAkezffmw/toE3h0wgb0YHJIy2gYOJsmrggq8W0dyJ1xxulkmvYkyn9I8WaceaMlhOwUL7y08zX3sN8vSA0hDXhJsHaot+wd9v8WDETmhjHjt+udbT1u47erpQrHX3bzB3F2JAtIXY+bj+BEhYa/HTzdxrVSrlECTcSs065OgSamA6Gh3OynguGT0mAkGmxv7YZAECIVN9iBxt/Jipvrg6JciYYGSpQPeOPPNEEIBQhSgEMNDO9XwEUVndN71bFaOR+GYleaVLln7nLpwMTIwl9EHv8AF9eIe7zZ/cqEFT2Tu3WkV/ZO2JCShlRUuAIzF8yV74Gf8awZa9wTLiV+cvFkzcfmEMiN0KsTddJwog7AdOI6dVkmvJLcXTxi1w/ZhVuC656tRpHGO/IvxMboloql2L78YgVK9US6VmzfWap7YbZUiko2/osjXKiCiAh2ZxrEdclyZRdS1N5qKTpQ76FW3bwJEOrL1WXTDVQhjJi9H1JUUQZA+nKlAypShJFopFSvUIGPrHzuGrurTVnC2VnaI/ROkRzAAQ7nk5FOkfF8RfN6spoxs67/oG03NC15sxEMTtTdcsZfdehBQMmldRUQ5kZkjYenZ9NSuHossVgoCyA8Ajk4STDq5RA3qkjYGjctxa3QC9smiVmiI8XUrqVLizPWqqaDQpjIlAUIadWwNrK+OqlrAIZjTnptnET2J1fz+L33cw7C+zONrA7Y79c6kViF+/iIekaMArh3RVLMpJHTh6rzKQ1yaogyXlphLLjF6xmFmF/5Zduf9WDs0M+RlmJqNqpX/CTR3bfu0UV2NNuYU+7xJ6WY09zJGCjzp/DNemNPB/JRvzcJnPnOwylaola5siJ9dndnh24ivGcDBkfQw/LmppDUsAe9op7ds/qbqjJx3+yMH7+6E38OTuEY/CrSBbuZM9pC9xeHLSp7xM/4NjR4nr1ZpYoh+qdyaw6hcol1sEP/YD5Vg+3G61Gk80Jpc4s1LU178sO2W3492usQ6PSaFaara8VIgQAaGJWUomdsKSzMKsnLbAiW5H12bLIL0aWHV7VSzwjXt8LyZ6ZzcqOoYkiJJm+kRtoqAkpYiq670YSyYYgiprhyNms5fnXdg5VaKLH7WxyK1WEG+CPkSfkmZVcPvbDHWDmDhDPfs0YYYJ+8MGo6wQGHDpEoogcOgRG4LjsJJFgJ7elUocPI9qg6PDhVOqnkFyTEXvGW688Bc4KLxOS7BkGZs8ocgN2jE+6cdvxszYoxepwbrSx1lSIlkHIBKPoY3O4mK8uTm455oppzVEBawmc5dLPgwWfg5sEyu5MOjHRLjI5i/NZOJPLbfwYJBqKWov97v0CwDqTQmN9Zd633ROBCfD+SrowVs0XhtdyI5VCvjLMv7HAUJvPax77hsI9KHocDD5l+wjBXqqGZoBg4z2ydiQwJRmjd5hBYIoyvnzACjjfGLvydfg9dIfgM5vL704HOnC+w43bA30ec9wwESFBF8BZBLC28ltGJ1NkfuLEXYfJGGlPnVh7UXv70NiCgue3rtZNA92QAW361E88+A4b4oOzP6xoLzh0Yc9h0H/k6P7nmXwUzjP9P8D4VpVpkzJ53DG7N+MZJLZ9yORwuoSm2B17NuVS8mLXJKZvSisVzZBcSZVbTeKGG5+NXNJsgSiNwhtVwwxshKyDgYQQws7lb4g0k9IUhnjv/2UkxmPVEAC+xFB/kT1/iHae33k8Z1PdOIxZEWvtzwLFAR3gtmCITrmxnpTI7qwPVcX1+wJ1yGvOPXzxkjujUISIufFiQ0HSJ6Ol0Dm2vZ1DWhp+KJds7XON9dVscbmVa0ydwaC5rkLNwhA2CDZdG5Ofdlvj+fL8zinsuIkMk3eCzVK/zeS9gcmbVbryxqDBp+n+HNU97M0+Xc/gg9cdu1J1swa8IcZRrsXTo6x00yqRUeKBGR/p89oYmdUBGQ/e+IT7FZQNg4IydNOxIWXHNB4tY0/BZrHpLziZlXYWmKp5+MVCqjEnA+B9hYLubp+QE3hkjrgJecfx7XM6iRifUf2hXV5iegkDollfISKS1ByzTdEFAHCVIMd8MysA/DW6W5gV2sw3mQoC58Id08eOUI5ds91yY9ev17uu0iG7PRemVYdD6Z8z+xOFVEae+1wbI6C/LRk6CtURi06M8el1bGKkwq6L4Q8Vn1s8B7H5FSyeAGLgZEqDs1gDam28SpRbsnhCxGycMsrfQ6vxiTpwP2Jx9CU2D66zcVnM8Diu9SzNDMvM3WMB9QXUqtW6pJxR9Fp7wC5IjG+9MPaZ+F+bu3l2WLfXR6juuliTAIiFJTvI5IacVwFFGIkA4TOeDur4QrXUXAP1aSdeMK3nwiAvIxuXt26fn96qiLMqRlSVXvsaycQAGEkiwbLEtHorDiz/4jaT7Lt0KjuTy4SuJiFbCpj1J7ueVhd2MesvNcZjZOiDE1en6/s8QmjQ0aMHG13mFwNHiVAGHDE36rpf5T1bdy+uZxK6NESyiuVPrbsKaFv2u3Z7pK6jTH6ynco79PzpvT9YPygmMrMKc/Oo7ITBMNo+vtBKZMCoYItIBGsHWkNYkkeROlLf5oZTK/lJk4D5huecevln5qfGploGcqPhZr4aBjaPHzZOv4PuE8bZOEUd9OzSiTK3eX+guDLFgS58gg7Ix8ZI6v4R+Y8UOelLGkaIlpkN9zsiwnbBezUBqtYmJn/51TVZcxUZYR1PTEqBrctUs1SrkPi5vyW6DAXONieZHL+N7mByNIUdjG0ut+pTyavZJumGci+WS5VezMbLTfYx3KiUGDaFtZZYi6OYjUYM0gsPHBiSd59ZnUAiG+rpVQWQ8cAbHzAQqNvriJNKfXQKdqyd273+hPWnzu/H2tr0/AGlDB/bcha0Y4sT2y0AhJC7dYS4kbzj2LEdcsRiZJvHwxNRb7U41KhVRmq1jR/bNqU7wzM7pkJvF/Oaqa7XTAjbmNfMTyUN5jUQ4xAXf7A0oF0fuRae2iJ3qViLnsvw5QO8aOHc+FympkMiu/XC4bn9yDk4PZcpHqpmslEiQ7ThWmmPWyuOVFL7FGXUC9Jj2y0ZkA7ibDJd206Ts8vZ3QsH3hOEz1iftBnbHY+yuVC1tEzzToCiWTmYD/xRWanmzMBStvC5MZ6b4RE2N0c822DK3VxAf352Hm+u7v0LT+pM2pWNx/qzNxIeYazjhvieZXbPyL7unt7AHtw6Pco5uH+7PZytVuerac00VbPoUGnwpPdqC/nq0vSBdtW0Uip1iqYIMSMR2vA5NBlzHQtxPtUJ4aGYTg31mQPGIXwuNIhMNt4iaZoER7Asm6GONr4EY/oxyxfFL0paThO/KEq+Zero539R51pVhA/CH8OPC7LgM61MhcRadVlPJeqmLPgjKll4QS61cV8qm01IH/lwKgfPSDEupCg/oaSSClh+Ut0kb4LJqwkcTUtc0OHhLq8NpRjlJUqOG4GGYGTjC5pnypTATZKuSxtvIbTt5zQmnmbZHhdaz+jSF0WRybrCDPIJ9CRhTGjyWWXS7Y/AwC1pl2L3VhqdCZJdZkHIu4adw5U7b7i3NVpVvYMeAtmOQlPB0UOWglB4aWdEs1PZZxVTLOvUyMFfLm2ZLM7OFGVtfEnJ5yyZmrmyf3JVNrCNhyPTCPK5jUvJQpyM4pkohlTfht9lcjZj/N2xMCNxOTcH0GByj9hBHPpxyPR79EB4qDcRdXqwDhMveiIxouCFSyOz9b2mevNqxjVpMnPkycd2y0FrWE+Hkmc09liRiZ/4UriznMaqKafy5bSUkDJQe/hRjcX0lQeWRg40iyMHH1J97H7XyRufb6GSiqhv6A1dBO1tR25eU5Fk7BgdZ/8ijWuVEQD+hvG9ZWGdabVrS4Mg5o1ddy938a3NsKxapiQg9Vq9i399pGBsx+3kvtgFN4x8ka3FY2X9WpPpCR9JOq508ECIiOZZlH43pSAizdMICg4elFwn6UF7XsQumcO+JM634a0A6YR0t5RIr9thWkY0Z0ka5UBXyOcLCAHVJCsrIzkd2ggeA0m2eArCkjceewwQ/BwFmnnJw0xD9eEXc2x3mI6/x7jApLAg7GPYvm21Nh0K4lXcxenNNPwsjGa6MM8Rv0s6qVjhLKbVodseh/yY1fAW1lbt8JkgigKiYqQY8NKX67Q0Zzm1Ma2+R7W2T2pJumPbygotTVQW0UwR79m5S7FaBojZcp/fwEdFrEq2y3mBiJTJXLE0uuZi9eZ2NjW+qCDko3cCUurF3NTGj40sYPgYsJ7qDEeVEYb1f8CwvsGilPIoxaU+wvMsSd8NuzBf7SM7g/UuyhECyduf//QTtrxSVzHzMjOUEZJsPykrXr7dnNyzPLM6ueiHCVe6X/vggw+/S0cVQhVX9fCx41inCtXSleXJXU+7Z21+25RrWOH6bczPbAHgD9kYZIQR5mdDRTvmjkyIvvG7ebw+afYasYWdOhO8EtrU831XtkN45jOU7dNru2a2qnesz5P6TKO5tAdoLqFx22mJHAVA1uqJl7z45iUTwcTRF6iw0QTzIW4hj0nxdXQ+ZuvbKfD47RNA9uBBhDabbGi72DZo7zX33b2z9mD9+lp4IQvqTGVkJvqkIyKENYlZjqLffoqbcImGey3KU77GjsgQb+KrkT0h0UiUSETEQctMBYPip2IdI5ka+dK77MgV2dnL4hYlsj86Ns4ORd72ImwQOWsbhGsfr2BDpuOfMR33cOb7b9Uxh7jvl69SLeSqZSsjs4nPblbt9x+8RrUH11RCFOPjXKVEKpV4PJV+6VqVfplIlsG8/mpdKsyj/4bnAHlOoJd36NOu2K9r1/p1dTO2dldYZaYuzw2GsVadyQRur25de0qk6+HFLbY8P01AVo2Bt8tINNOzMl7avzjrh+OpMJs1FMV4c2h7OjWDyMhU7ztZX5iv33S3goYly+4FgEzdYm4etJffdPDZSbU+VQTARkWnRtK30SOmrAkQR8NjbIxOML2YT16PRJ24yKHupMEHagBQm9qdQWKgvHkhFgzaOTBhRfaCwJMdH994hI2OGDd8gN1F4VD1pn5T3CKylvhL1O/2YS1MCc+ROgglJ/MU8QGzCGt45zvZdyWevOw3bTRZE7HYePa+9bGP9Vr4uO5m+n+I6T/Cs3t9/a/VHgd+X0euyWlDdcny6uoycQPpDa9HiogB9VqYhMR00nIsXzpHARFEiErSMpOGtbg6jZkX58PsyTWe36BxLmiwBESdB7JnPf5SvcVio/rroSTqdhCmjfsUShw5TAB2Tq2sHdVQJgpyUnFkJYOhVkP5JQqEWBpDpk++sWVMLUyPETuZzUaKaY4qM6//BDB5XL6mZvIc4lnV2BLXGyLsieWvoq6d+rJSGuZRd0auxN4xjQgNuhExGjkcNz3qRLC+L7Bl14ejtzimS9Z2ceHZAO9cK48dcD3shM8yFMMrLWVaaQ60wSZMzcqgp9jJvfuH4J67sekzo3Y1O3p0df/LAJCWyChsrANLXLpzdq10f/wtpl+SGf1PuvbOAPRyWZ2BvRZKKbN5vNUzCAROMyfwk57IUwLl4a/yNdwQ1mPQ/NRdC+MEU1GkSiGZLChURBSdRaLc4kM+Nk54N6wTDpEASKJyQaYUPkrZAdaZbOwvEphsNzHZxkgvxxyT707wRLVBarsbZE7MNfsLpTZToRpT1A7ykCC4toNTC20ft5Z9IlVGAeZCjDVtpUlcO7Ss0Halbdslfgy0OEz0JZ0MFylsvoAiZAVZinSdPvNlvgRS+md26yolzKkDC2002dW0jFB89nufoWN3PVtJJJRn3zVGP/N7m6/BR5nOPhuPb3bzIm3vH0GeTt7AjSLn8UGHf3b0RdXqJgga76EG6+n4DO5DFaUf1kSGPApGsvnqGGd4B1klqZyUUGj4kM4vPz7EINZj38ZrpjX44PUQgxzWESf9LXB2VttY6sMLEubYWv5z6A4WW2OMaxTDXg61Xrt66Y4rg+2eQTqkWrk0fNHctSs1NZXY9ZxdiSmo62Oj6xMEaTSdTSQaNUXDGK0XtXDyL/9qMtD1YPKv/jLn6WjysH/+oclchkiZkcmH7itOCChmHL/D7D0lLDJZWg2/x3uusni9VmvVmHi1Xs4wtnMvimMmVO1yz9EBUwhlOV0YdbPbxmG9XkXaLdvIzm2JiDrh29qjZHlpaZmMtmEwoyY5N6LbGlscc8vNCrxS5EELPzW2pDJuBqAuxbZ7ILZdSdjDs0xlHzF5MQcXvjsbf04hJnHPmrFPRGG10UvShCGfk1cQNyTrXaIm6tkXPmJsoRRlsrWtiaXAMNBU19CBWc3lfr5qoUJOgkDVkKjrCElulLk/Ms34KDf5gKYgihYWAGtjqZO7dvzlZDwCidcujDuLi2+HA9SSQIQRz8f2vpWl9cxKXdMic33LyoHUal2L18X2la8hNUbb00y7m47Me+j6COgr0t+HZofd//mGUA+yulm3akw4Ns+4Xn+w4vTaNRPwbU9NTa+ZNGRzFWBIqDE22VgChFVGCG00Wz3pIBDNaTw51pt9G/LE+PiEnJlQaP36mVhfGfczU+WcRwEwSua85QUl7SSxJoki9ae23io32/KICr/cCxLkIfglQLgYWN5QLc67s3nxS2wdeDPDhZUkxwWma7zQjoexZ5Soi4UxEvQXEf0dv87uXK8GIzCl2EL9LNOL6MvHEqMjtiE9W5pfX29NH5nRLIOQJEUIYbkmKzRxotpWka141sFdcnuHeGIbdc4vSCBLii6HMhKJkkzIyhsvebkLOU1COTBvXr6xkS/SEkE+fj0mkqJQ1fAOVfKylghNTXUd0Tu+ddcpBSoSQi5RJQ8fHqkwFFH4DJUSAP6O+cQ8R8QU07wVo3a5v1sep7T/UQrt9LnysxVj552IdnORIJuEhNnK6Gzic5vp8p0ddvzbhlfR2WRUyhs0zkwurzjS1Rx5o9nlxFiAK5eZ59pMyrUeT4ABW6Hd7UZu6mvJI78esJAMO3mG2Cm7ndgRfLtHYciuVr6w514KMbDA8aP8Ao0SwEw/lSUFkp2SJYivYspCqDv9v+URunrO1+88Qh95SwdguhceTY3da4mlWT75zJbs4g89yi4bJsF8FXblW/Atpss2pstkms+7PpMzhyJe29Fqthh6tMul7qwjdoh9WUT9WVYU2dWBml+2IgsZDp4XAcR5yTWQFVqy+UqKKULE8NzVVURNvIJNilZXPM8gKIT962wY0HJk4fZe72vjKouUsX9w981jK/J0KjFvUyxJpxtXNi5jEyPEPkAEoLpkcSUli/OHK9+K+cMtnMUTPial3vTJ6ZhISH+rgUtbJv0sazmOKrHcx5qAWyDg8RO0+wDDzcFPmvD0lOOSZxA3J5czMrFQEGBdFpUKQEURZR0HAbKInCnLuUDawsiwkwoMz2ASexbW13RseSJg1oIiK2LcjTGHsrhx+fNNqgDCBh17dFgGufK2MWpgBAptfh6YjZmerGNkSTvfd9s+3V09uc8IAmPfyVVX33fb+3ZKzAKZLns9yiwQCrBpZuM6VKsDb4zHseSHHEHanXVlX29K/TxiJ/2UU5sZp8pXcGEns0drfNILo4UmhWYrCjiM7t/Pxzcrp01TM5NKQTH3rxPXTUe12dUtUcgOpQMHwhwLes9z3bJEXFMxupPhw3cb4q23dsAzHmrmXU22Us22xLJjyLHWt94qPfQ04GQS0RzfZD9YZf8dBEC275hEiLkUxH68d6D9YAnGVLgmFktBPD/UuIKNcqUTgT22yKuWNk0h7+gxqfAoa6B2CAf2K5QUFInsRmu64hosCl+tqw5lNz0aXseg3jTz/lk2vXfjsSSBqv1YIIrhK1Ncfh6H1HRYmM6+f+ZNfeYEwgzT6HeZRqtMo9wmjYR2+x/Dw5zU2eKmm8l87Oi7TAUBjGH9tzaDIsZeslQeD96HNEQAwcYXsP7Xm3MhwELWxhh+kbhXgyOioqzJ7NLGNuJOTPQyIDvXsEGY7F9gFSO/j94T1yjIXHaWhHVsLtKg4q67HfmXNkXYwHfd1duxc8mhG244RNzwsOTDbXC7ZEmovy2XoeLl72KOoF67268j6Geqhai3DSdUKwueHWgU9iLkm5Eqb7wHEPo+vtF/+QC7nxEGFnoH5nPPKJO5xe4W8n2AjszXLf4ih9AtUU9Cn0ntStg5zHfN0T0izWQpUuzLoy63wRn4NXgrG78Cv193tRVGOdTLPnMOx8CUVHs5lMuiTHfbVQ9URVFNDebm4C7QTH4mvgSdRTAkByoQW7UdTAnk87BCKHbYOUG7OuvpH4fPXfnjQW1FeE1txc2d0goQHoWLcAq9ScjyXA7vCbG9+iHTZ75Bja/AYEs5YWnpwo5MSpJ1y+jVJ5Xhtak81lbHT+7IaAgsU+2WKBUFJMxc+TbS4b3CfJyj37ZYJCjekd9M6TiobMrXV6rdUp0VxM3d2yPmJQ1Rk38Gfmdl8IwwF+RvmpcXb5FhlOSo4kpDEyO2SEFdPrj92Pie/RNjFp4sKyUGNpJo/oL87PmgVZncpjBl82HWz4O61sB33YFBVr20jGRLlIEM3bJUbuZdScTJEQoQ0vRzh8Rh08mNlDOEc1aJ7Tv8BRvTMWGO6dSc9ATEM7vVXjSKTnnAWbl+/aN4yEmb7wnHLJbrAcPbG2IcjjpmwxlFsLLIA09p765Pz4VMmXzmyNrO+dKCKdnTY42DZCKkMiJxCRjQXFYGHnSnT7OHT+xPVzLSlrHq1G8u3jKcpg9PNI9wn9jGJP4MvE+YZiOt9vPQ8SDHa+tePXCzWupn6uqb83hQPvbC5twtEkXu3BY/4LvnKqSVyKxvObel7hIr8CRPnSLPOHNo6zYNQPeCbJjPBRgAaQcWVg83LAVRX/NPMPvlmU/IzH6V2H710aKJulU9bHrdbDqn3t/XaHb5XbsrWLvZSyrm775lpab0DKfKq2G4siq5SmtrtdjaduPO+o4hUQZnWXc0PLP1S0efVyAv6pnN2UBGMqMgOVLomJ28fffCLbuJJz615oogHxI6/gufYpYbEWpM1snRXLxybfc2XXiGJOLD2AXazSUlrCWqdKWk31RVctNZCqr+yh8RrWNLi34MsK4WHJ/b91DK3DZXfqsyPEwSs9WUBu8FdOstVHdMCur08pyGRVH21GBs9obtpdGVOzLOm8anFKimSmxsywLAu9GT4vqcSSVGmDgJwkevP7LVTuDE89nVKbziVXm+cVCMO4l1amUydLKBm0Vq04TtW3muZ+v2xQWe1Nv4JVNxycJiu0VceKmjybmqOz4nJrwoyIS2hMekXDaumdz4006SjxguTwJGoiyIQvZKGi7DzzKmuV84y3Z+nnBw38663N/Vj9qbyifKhAndPanGLtmKarUYLPqVszE5iT+rfLO/3N3tp4M1UD+JsHRhz2TFUKbGy9NpP22JCCTqR+f2jQ4rkmtRDFbe353acvDWXcniM3cOz2PJ8UgEuD4yPDN7YBbku0spK8q19rXOKMgOwN1xyqMkVcj62RQFkMtT287YWJWdNCAASd+xtLKuSdsr01vrkpwdToxplbGRmVqlOjPzN0CtKBv5xeEMwZGb4DEqCRBHxQ42jsMa8Iho169BEp8p0z3xg6ATHQOGw5WMvc1CvWtStLIJUpC5zVQyFyIMLEh+sbM95ocgZvLtYYMi3vrpqJLW4KMDXDl7uoLQUe9w1nuIh0pvV+zu+3EmMekm1FOneDPlscJzyJ9AFwQt3lGqRNft3IuddVy3QjGGxoEb/nopEZZLUbL4HMV46batYQhnTzsiWl6Kne71IZqOcvkgzOc34riIgC7FWxive13HzWgcrRl4KpNAjZFlZohyCSCWoCMAkySIOtHaanaxpr+O7IVvXDvSaAGOJQqTpR+PsnIxRacNDHv3hKEoaqbnJ/QnMvGwe2Z/bcGmkInlGyvkL780HxJAVsNq/dTHQM52Nlr+6O+DbXtRmLbMZIGPtiEAfIeN9hE22nvyvZVKn5dTzj7DKOqcddh5uxqTcNoP4lL1Gm7SdY0oYJQePL5CeeKTOCcPikV3zVlStyzGZ28NLU+f0ZIcqYoFzssvPVFiEV4o8jMka9J8i2iSCIsrcD5ensSUnDmEs905ZNzUPaM53wFYNUuyXCysxrwcya1uut/ChgSipEmPPrq0wPStM32/wvQtMn2D6/bAOkv2zsZd10XqAzO70vcrlIQbzw8xVb+PjUC8e6XYG4hT6YwiZzl9Zk4rM8te+QcBUALeFa+AUjjOm4R9G7Jbd4hWbChurn5RFguZQTz1WAfHkH/8wvMjO3hZZCccx8VONDpCDFwvziXJ6PJwGFEAh13/f4aSoYgoTrEqXd+wjsyQW5IngyOes09rInHyU3g0GdWk5z4zvsxirized3HUsOZHyMmjj9fWww+m9wrTO1K7FubRFdX/NYjR7KIOQw4WeQBLq7cP8AKr1+NFjDDwYia4HOCxq5FCUq9HihzDlwh4tDbY3PolNreGwhCL1nzSuLqytpfTib0c97A9RsD7tx+YHbnooeTsk21zsXHIQUiHbbvbzd1rc9mWmYUHV4P6A7a7MHXWQ6XGJXvIXr84f/jG9vKpYjTR4XBl+At4tzAhLLBnt6dLKhpYLGBz+WYRuI2Caw2Er2JxHXMp7RedcjljWzqfzuEpZbOFfmAThYvNRX1Myse2dhjbTSrKHz/RN9DXgH7/JgaHhNKVMioyecfirHV7MoE7nKld69AmjnGD4s5+EXij1KvT9rskpdnkuVFCSnccRKa0sym7icAiHRj4SgcFkLyw4+AdBhw51LTkpZwC+ZuV1t4vHn9QgVGiua5qXf7MINxPnyLjdxyQUytHkLHsZKOZs/QAR7iEAPDHTOI688eKxv0xh31mWyZon5VwytznJV0A6E96n0SdteCOs6sJkgm8lATjQbWGYcsqcYONX42ic7OzUQSPAAEsEqoQd8e4qTNy6olY83ZPkq0rDIl4eKV0iID/w3c6mdf9OrwvrjhYtIHX1vAw6C3AuEHjhPnmPez+FvYgqRp0L7H2XuK1h78hSE8rRrvXgpP56i0ooyymFaCq3d3IjlwAz5tt5lNGYvpM7rCDsHV6965pGURRn2B9qJIMZEKjtcXI0TVdLuwZz4+wq8xjVA/XZrFOGb2WNUv3DcWmtpJblR1Z9afqaYxJ4OHlpsuMIdnb+W4f0/aX0Ziw0EPD4T696icnY77YJftcsX7lrR91nQZ+KGmf374wXCYwO01cUIyzQG3f5qTi0X6R7ROeAHRhUQNFfo8RbD06XF4h99wuyllHk2t1Q+FsYnZ2c23tk+/AWw+6VObodeU7SGZVf22OXgqXs0P8q/287mYmFAWxZIM5vC96iGRO/w2szG5jwIX67EcSQV7Zl4xbeKwyyVfDSkZBxMGp3Vb1yc/qch5Jk171ytyslj16G/BYZGIzjmFwj77yGPwDk7HJMw1xxjeM7RSnEGmpVK52tmSuzffGGbZBhve3wjCVarSQ4quqqaq+glqNVDLy8ZEjce7XCyYng8Rk4MeJXXiEgwK87vWSiwGwK73+dUAZqUDdtO5LX7qy/6WDTK7NZHyMyXiWybiLQH+t3ecMQWynVrvz/6AgmdedNGOm3OUV3SilPiEDJGb3oiTgLYRryxsqrdAOpBtvIDF2SDgPIIYykiLPpboskQQ7z9AYYMjr4z3WTBYRXfZCdiMlBICETIN0wiWWlaFw3gl4mjMmEqnCzwYYtMKhlCiboqTT4MYhGSEiTrx5ROz04VuuDsDr3ihpRETUSZ5LUCpK2UuGKYOi3XTz6wA4GsWV8l27jMarpKjd4GC+ORnFVCuFceIzGlCGWjNmXeEmFsADpt3i7YPd2H5G9dP1GZpzyQ1HenHBzTIzC7lUu1SI6+ffHBqeNmHSfB5TzwzebCiEqNtazShdYz06pWpHDnOqxuxxbscOEMuMg23Ofm3dikZKu6FbYy9nfRvBNl+dmQFkBTE5MCyJ7NkDuaFt/eq1bl6VWyN1JRN7Mt9n39pZa/Ds6HVVLpTFWS8F3uiyzJ61GBqiuFP/paCAGTCMd9n+or7dTqeiCHq1LdR1EVKknUTUtgeebIdvHFgnkQL8EjSyOwjLM9kwyLlIRLSRlJIAL3h0vBOV/U1mAEIi9WdKWJv/deDbpepmuyB742Z8MSnXK1E2HYiYPWNJWecalwSArzKN+eqq2M+j8reGW73C9usTqTjwTaYjiTOpm3nJnCkDMDGjy+GnlE3bS9hLFYcmgp9HisgaAAgqbmi/rygJt5dKxWZAKZaY7tFfhkGmUwM/M8OTqVgkRKOqKlKx+FdauqjGiNloYoNwDWosz/lV9J44E1zlkY27NaFM6mnU5ML3JzGuFC8S5R+1fuhTymWnsRZRCG9Lux4ujGRv8xGI1j6phVSMEFZRS9pnieC/ks89sqLImTstQNqILI9oCAy+cqUIJHunevESzisggqhi18EqOwAlTy5eOk5BUUYUJX/xPJlKYJKYlM9dKDAd/oBlV0eZDgrTgfZrTxw+f/4BfyFNUiZ09OpU6vI48ZKs/2xX512s/1A/e8pdks/Dtf6GsIn4JOzTGIn7O1E1XibLTdCxS3PwUs9OqVjNLqwoAPohMZtCrsjUTmXFAyYA8m/LjGQMyhW/3RK54pLENBet2zPMGgS9iymvTI6UXlgaVhACkrUpUx0hZYg1qTttnhdXAl9W0vjCOXkyQZCYmCLnL0ppRfYDhfB3KYX74d2AhTLfp+rZoVuYzA+CWI8O5SjHQrPx/LSKyxlDsmZsQ1JNA6Kt42Op+FyXNH6+DCIa9cZt0zS1aKvYP1wUkHArovA6tjLWhSzjj0lfuaqmmz+kSyY7pdvsvHJrJvLxcDak7Y9GNsIAeiI3R8MsaoYJ0Ep+aspJihy+w6n0f8kT3g1/D7eg2wRDSLAneOa1T2B2imqdN26IH767VqgmnFphJHJusBMJ006l0FSmmHDcTDHpaLap23bK5pH1qisT8A6hFr/xkopz/lNo88tr1SlxsLrOo8HK4B0qJQo1h1byw8MpVZMJiDb2LNkG0OYCGYV3ZeY/h7Fl+DJFAFR2bA+BSPViWbQwEtVQk9xxO+nIO3WpV4X3CYZSGS5JjMv/VMZk9+MnSir/SHpEgE5+hN1/kueYklzTf01C5MK/JA1y/F+S/fiv3xU5B++HN6Ot8fsSTj/iuqv/zSVIrXtVha4sLS1Rg0qGpTzXfSG2dNRWE1EUyWJODbE0OSXiUMnx++5h8+gH2X1NvtsidCrWqoNJ9IyuAquBeJ1CaAj/gE2nSBDFtpbh+y8fYDU+P4zOD95T9UqDJUjvvao/sDxLeTEoohvqirh3N/zhkO1RMgooYWtsDMKI3el+dqe97E4uZ6YYNv8sQZ/s3++aIIs/iNn91N17xQDNW6EE45h69lAUdqp7D8I34RfR+dj/cMxwaxyKxlHHNt1q8FqHPMIPV1B5+Lhnrq4mXc9PE9FwX+kaDEoJOl8adl018JKuKVoSktgfXRT/FbtT/3nRfgt8Bt6Nzv9HYy86+/jY+394FutVks4wvdJdva6vxunTj8etI/30pzaX4nx1uMyXCZduTtPrqkivqcSJ2T/C15SQMr8px78Pcxfzmirzm3LWFrnf1GsxQY9Cl5u6wA3oxvszzcpsTIvqTLw/wdiiWaQSCuIbbLRxCtlvEJUmiEy5ndI3YWQLuhOASkSSLn/cUmUAWbVQXbLukyzAovXo3yroZV8UxE31juPCQbbLsWUq7+sgPn7NY68ij/8UAd/yjJNytLd7U+vVvwa9l0RKvZ3Sa6sik/3ivKlGdTIpi/zw3djzfUVBipwIDJmaQULunFjXVUwqg+K8UB+amEgd4CV7bzAUYCZGiFL29Qum3DuRTeYDOb6uYtbeznzA3VxvUmu2XDdeYXacwnWDsJtRKXdRjsVubIEq14iboDvjNHhtiePC3LwouxjbNBdIaGEOXFt2wh+LFJr0dFdqAjQlV/eSVAm7VSQIAICNIQaTShvf2dgAFFdUKhlPlQFB47DznSoBMrzhHG4Aind9VYGNV5Fp8efxju5e4SIbrxP7mpOGIPKaLtEPfb/3mn+zWeTGv/5lZbFTjxm38DmaXetFQplHAQ1Za/HqF+S7Uxt8WpRFLCLKq+02+m/OitQgOEgPV6ajXVHFkRCSnEr0kk2H90cOlPpvz583iQjERucRQVgimqay6JdlxZZlu7PKYEtwU4SNd3iarOMTWJc1D+PNJz8JZqDxF+x5hGH2eJ2UhiRDFja9H7H9X/p+xOO/B+Fsbr+mDPO3f+vf89LD9W84sC6DNq7DCNPhD5gOy0yHWrwH8Y8XEcbwTGl9U1avM2rxmHHPHUEBJn6mXJ0KP7IZw75RKGxHBD/jrxEdrPs27gkR+sEfQWg1LV9dU9ho3C4Z+pdKOZPG672HmOGVQMboMSx9g6NshUn9R+jOWOqq1p3bOSD0fwilB67xRjOhQWcUyt1ERbPCt8r5JY44laVJpTmtAoZoT33NwV7SQsj2FV7IBC2+zfJLfJelieQh4uJABLtmw1/Nrsk7liWfXFhvJBRkRIW8aB0vP/KTm/dffvIR6anMDvpsZBg8pkaZ3L/PrH1QOCXczmLqwpkTN8wQFlNut7q6v9UV1CO+q9svNykxl2GN/a0vrkS5zPSr9GKGcxveWI2a/X3eeApnNog3SWMQfWnIBihRtC7Eu165HEIIo7nTBkLGqXl2iNBSfOWjoWIssjMJzccXT8+zQ4Ry2UXkzSsKdeZUCV1gf5G74FInfo2ktyN2CkBeHlEsWx5dlgFO9ffGHJPya0tjsm0po0v8GvzRQlLVdFVNqeK94sJi0jfYMffMYZ4rZ7Y6ycZ4Z8DHmI2vHwZhrBVzx0F8dTOznSIInrIb/PhUr5TxWgfowFUnXcf67x8qEqZKwpEgnQpDOHOKD3s6DaKbcBEixaFIVgxeuu0XDioYbfYKrBws+BxnHR1Z8NVcCaXVyZqtvuIVHa7fcQh4xStUe3ZKTaNSDmTFd21s+SuVHb54ZrPHnBH9HZWVpEix7QcWt0NBAPgL5uvHmR0KCK75Zan+z4xsaip39vP6a7XNxc85FPX7xJy8xpC5n+wfeebxZHrPRUkeT6uq7w05Co2DeM8ekyCb8UZV2TKrG83dqqioGde2u1dtAkhJln1PVdOzGOD7jz4bW/fdkIga51ZyzLLaUPwDJTzAsS45+V1TEzurQ7n2PgWtzhhObqi6c3J8R9HhHYg9XMH+kMaMnlu5Z5kK/xVVWf+pv0n1WTgA84wPBOzOZn8EuyJ3OQ/789lsmLclQsQOgeOpL7QUZrOyoZ85nugQjMTxG4X49yieAr8jfFOYEgQcT5vV5hJqsZLwHjLXQp/PrayRtbV54jre7ITfkY2N/2cRAEAiKIamSCDCFhARUhIKwvCAI1Hzzbe4yUDXsAQIFEXyCkN/9EduwtdkzLmwgqQJpyj8f5syDjQAAAEAAACCAHwABQAAAAAAAgAAABgAjQAAACAODAAAAAAAAAASABIAEgASAEMAgwEoAbkCQALbAwgDPwNzBAYEOARlBHsElAS7BPsFOwWTBgkGXwbIBzMHdwfjCEkIcwiuCN4JBgk0CYgJ8wplCtkLJwtqC9wMQgyuDS4Naw2zDiMOcQ7rD10Pow/7EGoQ9xF0EccSLRKRExITkRP6FFgUixSyFNoVExUoFVoVxBYdFmQWuhcLF2IX7xhQGJEY5hleGZMaDxpoGqYa/htXG6McGhxuHMAdEh2eHiUenh7/H2EfeR/lIB4gTyBPIIAgrCDxISEhZSGeIcoh6CINIjEiYiJ3IqMi3CNII5Mj1SRKJK0lPiWgJfsmVybtJ3En8yglKFIoeyi+AAAAAQAAAAEAAJq59PJfDzz1AA8D6AAAAAAAAAAAAAAAAAAAAAD/9P8bAiECtgAAAAgAAgAAAAAAAHjaHcszQjUAAADg72H7kW3btq3xjRkHaOoq7S1ZB3jtGSfoCC1Z3/55UQ+BKYL/cGFDoXYFMu3bEjGo2I42Ue3KLWpUKUujKpWqVIva16ZYm26VMsUpFStBsmKxRrWJl+avRK0StIrVKP3zXYK/MiWq9aBdmTltDtQK65ejVoEsYaNq/dPw+SSsUVi+VKPShKWKlSVdvnqP6kSsYc2pzd81Z8GYM+tmtDkVUSdNgVbZ8sQqVaxMkVwH9t2q/AKRqCRgAAB42mNgZGBg2vZfmiGKiff/l/9vmBSBIqiABQCcQwZDAHjaY2Bi4mWcwMDKwMDUxbSHgYGhB0IzPmAwZGRiQAINDAzvBRjevIXxA9JcUxgcGBRUlJkV/lswRDFtY3iqwMDQH8cM1L2eKRmoRIGBEQDRyg/SAHjaVEo1YoJRDM6fdO5S32pr3Y7XO9TdXXGfcFlxl2vkER4O0c8AAPWS3ml9jc6fgKj+67Co0SQcwgN8gAlcxhYeYAQTmMcSndAFXdMdPdAzvdHn4sLi9uqKCAAsjuXDGMMsFul4JP9KH4vz3bw0JCA+scuf7De31LN6UmfqlKtc4gLnOMtpTnFrVx6kPfC7Ewd0HUkAALb9QmgAAHjarFbXettMDh2quVeVFKaAmcjrNYeK090Lx7Q23fX7yK2kJed+9yrPwH0ZUOl3+2gLkJJ7+ZtVMIMywDnA0EKhAMW+7wUAb36I0e03WNr9q4/PTJwOwo8Q7/uYq0c/+0W/aLXkgWlZKAIUWm50hCF06DpoKITwo4M5JS1pOZhX0P6cr1SFq7GsIQzdJFfRblLPa8zpvU+Aw5IWOmpjYetTJ5fL0TFoHd6xWNsZrRruHaCldDtlo0w2iWLLPww6NYM9HSwozNtY1T7nw5rWXQcT2oD/28LC1F8708aI9loeljzfwnw92PmbT85m7ANubZFqjbxxjldzQQBJ5k0VTZOquwOcZfssedKpPhAbcQQ4uOWHpAG2DfLqBa9ehGYYBIFJbOGwbqHY8VG8YWeL9uYbvMere2+iH+OixR4/iuIgCNpRgIYdBF0EAbQJj3QDB4sKqIJCPSJMfXrLxz7pYr90qQMUEjpYSukmJqCd9B24wEaGa2bl8zfmQq+FxRmLjBpiiClXMlusE0PbfrhlRjuBLwMrAFzb9clmEi+9UhzsUzig7Y7IZW3up610JaCQboS5g49otKgQ7JtxcEABVztKsAriAPgEXAsDdgk30moHVWdgVGjPnbGOBmdInR6k4ewUw5akJ+gheLGMoN0lW5jcEAQT144Io9bKaCNLMXJJOD6kKEFRFwWNqhTQ55FhkfcoiymtYIaGeEwluZyH7WjDwXFFrgA4pl/zAbSgDuE473ZoN572a0LRKiUFiIMWZcYJHUIcAk4QbQ5Oqjd7flJobwQPceRQfnKwrN5s+292M6Vpkb6c6isqEZN6308mJzUakYsTdsCQcnU3GeOvcfpCoyaBkGz5CdNHeN04Bk47PmNJCuutzcxOIfRJNQEhaVL9TdKebtYlLUyEKEviS6NY6RiGkXarqkQict6ej5PSBQ9HpYsjkkbOhfD7zZuGmBBl4bouM1AhmxEllX4b/2ubD4iuGmGs2g7eUInB8ibxzfKWSvIsb6ukwNJUSZHlHZWUWN5VSR/LeyrpZ3lfJQMsbSV7/GMpJKYlNND4B98WB9UJY+3I+O/M6JwwTh0Z/5MZQQkcsy/FSaC+ZlAZ50l8FuEDqusB4WMpCR/Lh4SPZZ3wsZwifCz/RPhYThM+ln8mfCxnCB/LhoKldGAfKUp7MwQtaau5pSSxwTM7q/CRjY/oPj5WAE24pJsympP8YL/Sw2T0T3otTkZLHk8cPp5JikbV82eDFOXTjJ4rfZ4peJ5W/lyJro93PicaNtVysV7Uvgj+21iRc8kzo8pYXxAf0LykfhQ6mnPwpWrcWHJw7jpXNHSL3OepRaJWhwY0UUi+La/iuCmbMgL/gPhAQ7qdOcOoVojhBUVl4Q1yK9Tpnbolw8LFIW0fxg0JsBTTmYun3aCRnYcl6fa8AUN+pqxt+58LUATzc2GqeDtwXQk4qCGWaYTcDLGkz17XEIie7L9SQYdtiUUdtclc0JFJ65CfdGdjIgnkPSU3qceSMmwSThJplhAuSiI5iyRLSBKL9Yg+Z53oRC6izkXk6bv7JD3ORYOw1OMCSFuc6nIhl4im5Z6JMKf2TdnkpNzFlZ4tBZMxjWLPb8CStEzS9JR06FErsFSn3auTv12yJl407d1uSR751ROV6F67Qv6BcxZyr8VrSkKDWdzEG9rfMncCH5aCRjJrVOjerp+y7phbp6zuhbFXRWiFC/ZVCTcULtox1cYzRqAudaWGNnCWIjyGnM7nVMZ8hMPSzaDzgEpYgoac656/qZLBQt2lkN8y0s0/aooZU0ToliQ9qk7MixV062yqRCzYPVb+QrtF25JdXuTcaQpeEQXV7Np3BN/wcgNf0C1/fYn+DR1nVMr4ktZvFc6TeMcsekQ3bMYy6rH1XvFA4/97rou02KEggMK3nqBLYMqMsALc3bVxa9y1cffFtG2QOlUhs//mO3EfUA5FhRA6FcMKASNRQQIYVQgYo+lSjNOACRowSQOmomIIoU01rRJTKiqKT5tRiWmWTtAcnWmezrRAZ1pknR2KJYWAZdYJVhQCVmm6FWs0IE0D1mnABusL7apNlZi2WJ9pWyWmHTpBu3SmPTrTPp3pQI9xfXICD22Ua1YeOVuUxxx0G7Xq6CTKS9ycQm/OrJG4OdeZG5KlXjDyOTLQ57iEnl/pcuLgGnpwAz241bYxWd4dI8/voecP0PNHnTMOnqAHz9CDF22bkuW9MvL8DXr+Dj3/0Dnj4BN68AU9+I4KlfZlmyupKvz787dDf5r0MZhqrcmVpXN/q4czvy/r2h9jTAFHeNpi8N7BcAJQozQcOBCG0TfWGpfFaZk0Ef0FxDjPFJAOYqOWMXsLRh+fmn2Doo4DnQpEiFCHBoSq9Q8axRg57+I9S8sp/uFf6QRL1UgAi2tIuTKlGqF87ZgFYABifFPrRl8vr/sx14jxH3NfRCqADN6Nv1gKxTEotrxW27kRl/MpPrL0XdGnzgudPRg0iMVpPAi5AKHCK5B42mPADSQgkCmZgZFJlIGBKe//NxDNEAKEPgw+YPFkxvUMjP+VwfIp/78ypTDu+P/rvwyIDwBTtg3zAAB42mJgYOBkKGJgZmBk4QSyFwExhM3IoADkQdhMDHwMhyBsIBnAcAHKZmEwYFSAslkZnBgDoGw2JHFepgLGSVA2H4MJCxOgVbJQkRiAgejgsF9R9Nzd3d0PPdZd639/j7B2roQ00zCdhEm1o7oaiplaVF4FeUwaVFpD1GlNEksaMzRFOtpVVq5xa7zdwCzSqVGzGqVzZHhcia+U0ZvtKi/SO4GTNNUtWEllUKzy/Qn4FvyoJ2qsBjg0VU9Z6jXPvHxVlORtn6k1eVZb9LM2bdx2Xya/Uht7qfdj/r11ccj2cDSlcXIF5BE5OD61rgKMWtuTwFiL5IyGfniR0R/cBB2tKrQYx9ukPPRL1Ejjbb/WNfSPt3s5sdxmJfs5LyaPKgGzaHs55qxrfgY8M3Ta1wWdo1Cl+/VF+ReJW3PcfaFxA8qBQrscWm1GhYp3sNz2XF81KmpgdjPuDb6eUi9sYu2F8ukLBW7wwX8x/mKzl3MdJRWQRfuzUjzp9bmTtIlbujLsaRktLkU0wBOEixo+8O6Bx0m0un5PsPm+Tn/zzTPxdLtOAAB42mzB02EkABQAwHlr62zbe1Zs22wl+5/yYlaSNJAZCeCipekqWwgJSSlpGVk5eQVFJWUVVTV1Dddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn3z2RdNX33z3w0+//PbHX//816Zdh05duvXo1affgEFDho0YNWbchElTps2YNWfegkVLlq1YtWbdhs1IRNK2lhO7kbLnPNKRiaxDR47tO41c5KMQxShFOSpRjVrUo+Fy2xi2MwozirCX5mUaGJi7QWhHAzBtZGwOoZ0tobQjlHZidU/MzU0E84wtTVhDMlJLEtl8EnOTUhKZIjKZAjJZgzPTgQpCC4ozc/LzmAMyMpkDijMhGhwt2XIz80pLUkFcIxMjYwAA/0ToAAEAAf//AA8=) format("woff"),url(data:font/ttf;base64,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AQBIKy2wZiyyAQFIKy2wZyyzAAAARCstsGgsswABAEQrLbBpLLMBAABEKy2waiyzAQEARCstsGssswAAAUQrLbBsLLMAAQFEKy2wbSyzAQABRCstsG4sswEBAUQrLbBvLLEAPCsusTABFCstsHAssQA8K7BAKy2wcSyxADwrsEErLbByLLAAFrEAPCuwQistsHMssQE8K7BAKy2wdCyxATwrsEErLbB1LLAAFrEBPCuwQistsHYssQA9Ky6xMAEUKy2wdyyxAD0rsEArLbB4LLEAPSuwQSstsHkssQA9K7BCKy2weiyxAT0rsEArLbB7LLEBPSuwQSstsHwssQE9K7BCKy2wfSyxAD4rLrEwARQrLbB+LLEAPiuwQCstsH8ssQA+K7BBKy2wgCyxAD4rsEIrLbCBLLEBPiuwQCstsIIssQE+K7BBKy2wgyyxAT4rsEIrLbCELLEAPysusTABFCstsIUssQA/K7BAKy2whiyxAD8rsEErLbCHLLEAPyuwQistsIgssQE/K7BAKy2wiSyxAT8rsEErLbCKLLEBPyuwQistsIsssgsAA0VQWLAGG7IEAgNFWCMhGyFZWUIrsAhlsAMkUHixBQEVRVgwWS0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAdCsygAAgAqsQAHQrUbCA8EAgoqsQAHQrUlBhUCAgoqsQAJQrsHAAQAAAIACyqxAAtCuwBAAEAAAgALKrkAAwAARLEkAYhRWLBAiFi5AAMAZESxKAGIUVi4CACIWLkAAwAARFkbsScBiFFYugiAAAEEQIhjVFi5AAMAAERZWVlZWbUdCBEEAg4quAH/hbAEjbECAESzBWQGAEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABgAGAAYAmMAAQIVAAACbv/2AhUAAABUAFQATABMAmMAAQJjAa8AAf8jAhUAAAJk//UCZAG4//r/HAIVAAAAAAAAAAkAcgADAAEECQAAAKIAAAADAAEECQABACAAogADAAEECQACAA4AwgADAAEECQADAFAA0AADAAEECQAEADABIAADAAEECQAFAEIBUAADAAEECQAGADABIAADAAEECQANAnABkgADAAEECQAOADQEAgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4ACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQBLAGEAVABlAFgAXwBUAHkAcABlAHcAcgBpAHQAZQByAFIAZQBnAHUAbABhAHIARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABLAGEAVABlAFgAXwBUAHkAcABlAHcAcgBpAHQAZQByAC0AUgBlAGcAdQBsAGEAcgBLAGEAVABlAFgAXwBUAHkAcABlAHcAcgBpAHQAZQByAC0AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADEAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAxAC4AOAAuADMAKQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOQAtADIAMAAxADAALAAgAEQAZQBzAGkAZwBuACAAUwBjAGkAZQBuAGMAZQAsACAASQBuAGMALgAgACgAPAB3AHcAdwAuAG0AYQB0AGgAagBhAHgALgBvAHIAZwA+ACkACgBDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEANAAtADIAMAAxADgAIABLAGgAYQBuACAAQQBjAGEAZABlAG0AeQAgACgAPAB3AHcAdwAuAGsAaABhAG4AYQBjAGEAZABlAG0AeQAuAG8AcgBnAD4AKQAsAAoAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAASwBhAFQAZQBYAF8AVAB5AHAAZQB3AHIAaQB0AGUAcgAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAACCAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAQMAjgCDAN4A1wEEANgA4QEFAQYBBwDbANwA3QDZAN8BCAEJAQoBCwEMAQ0BDgEPARABEQESALYAtwETARQHdW5pMDA3Rgd1bmkwMEEwB3VuaTAyMzcHdW5pMDJDOQd1bmkwMkNBB3VuaTAyQ0IFR2FtbWEHdW5pMDM5NAVUaGV0YQZMYW1iZGECWGkCUGkFU2lnbWEHVXBzaWxvbgNQaGkDUHNpB3VuaTAzQTkGbWludXRlB3VuaTI0MjMAAQAB//8ADw==) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}Tables */ table,tr,td,th{margin-top:var(--spacing-sm);margin-bottom:var(--spacing-sm);padding:var(--spacing-xl)}.md code,.md pre{background:none;font-family:var(--font-mono);font-size:var(--text-sm);text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none}.md pre[class*=language-]::selection,.md pre[class*=language-] ::selection,.md code[class*=language-]::selection,.md code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}.md pre{padding:1em;margin:.5em 0;overflow:auto;position:relative;margin-top:var(--spacing-sm);margin-bottom:var(--spacing-sm);box-shadow:none;border:none;border-radius:var(--radius-md);background:var(--code-background-fill);padding:var(--spacing-xxl);font-family:var(--font-mono);text-shadow:none;border-radius:var(--radius-sm);white-space:nowrap;display:block;white-space:pre}.md :not(pre)>code{padding:.1em;border-radius:var(--radius-xs);white-space:normal;background:var(--code-background-fill);border:1px solid var(--panel-border-color);padding:var(--spacing-xxs) var(--spacing-xs)}.md .token.comment,.md .token.prolog,.md .token.doctype,.md .token.cdata{color:#708090}.md .token.punctuation{color:#999}.md .token.namespace{opacity:.7}.md .token.property,.md .token.tag,.md .token.boolean,.md .token.number,.md .token.constant,.md .token.symbol,.md .token.deleted{color:#905}.md .token.selector,.md .token.attr-name,.md .token.string,.md .token.char,.md .token.builtin,.md .token.inserted{color:#690}.md .token.atrule,.md .token.attr-value,.md .token.keyword{color:#07a}.md .token.function,.md .token.class-name{color:#dd4a68}.md .token.regex,.md .token.important,.md .token.variable{color:#e90}.md .token.important,.md .token.bold{font-weight:700}.md .token.italic{font-style:italic}.md .token.entity{cursor:help}.dark .md .token.comment,.dark .md .token.prolog,.dark .md .token.cdata{color:#5c6370}.dark .md .token.doctype,.dark .md .token.punctuation,.dark .md .token.entity{color:#abb2bf}.dark .md .token.attr-name,.dark .md .token.class-name,.dark .md .token.boolean,.dark .md .token.constant,.dark .md .token.number,.dark .md .token.atrule{color:#d19a66}.dark .md .token.keyword{color:#c678dd}.dark .md .token.property,.dark .md .token.tag,.dark .md .token.symbol,.dark .md .token.deleted,.dark .md .token.important{color:#e06c75}.dark .md .token.selector,.dark .md .token.string,.dark .md .token.char,.dark .md .token.builtin,.dark .md .token.inserted,.dark .md .token.regex,.dark .md .token.attr-value,.dark .md .token.attr-value>.token.punctuation{color:#98c379}.dark .md .token.variable,.dark .md .token.operator,.dark .md .token.function{color:#61afef}.dark .md .token.url{color:#56b6c2}span.svelte-1m32c2s div[class*=code_wrap]{position:relative}span.svelte-1m32c2s span.katex{font-size:var(--text-lg);direction:ltr}span.svelte-1m32c2s div[class*=code_wrap]>button{z-index:1;cursor:pointer;border-bottom-left-radius:var(--radius-sm);padding:var(--spacing-md);width:25px;height:25px;position:absolute;right:0}span.svelte-1m32c2s .check{opacity:0;z-index:var(--layer-top);transition:opacity .2s;background:var(--code-background-fill);color:var(--body-text-color);position:absolute;top:var(--size-1-5);left:var(--size-1-5)}span.svelte-1m32c2s p:not(:first-child){margin-top:var(--spacing-xxl)}span.svelte-1m32c2s .md-header-anchor{margin-left:-25px;padding-right:8px;line-height:1;color:var(--body-text-color-subdued);opacity:0}span.svelte-1m32c2s h1:hover .md-header-anchor,span.svelte-1m32c2s h2:hover .md-header-anchor,span.svelte-1m32c2s h3:hover .md-header-anchor,span.svelte-1m32c2s h4:hover .md-header-anchor,span.svelte-1m32c2s h5:hover .md-header-anchor,span.svelte-1m32c2s h6:hover .md-header-anchor{opacity:1}span.md.svelte-1m32c2s .md-header-anchor>svg{color:var(--body-text-color-subdued)}span.svelte-1m32c2s table{word-break:break-word}div.svelte-17qq50w>.md.prose{font-weight:var(--block-info-text-weight);font-size:var(--block-info-text-size);line-height:var(--line-sm)}div.svelte-17qq50w>.md.prose *{color:var(--block-info-text-color)}div.svelte-17qq50w{margin-bottom:var(--spacing-md)}span.has-info.svelte-zgrq3{margin-bottom:var(--spacing-xs)}span.svelte-zgrq3:not(.has-info){margin-bottom:var(--spacing-lg)}span.svelte-zgrq3{display:inline-block;position:relative;z-index:var(--layer-4);border:solid var(--block-title-border-width) var(--block-title-border-color);border-radius:var(--block-title-radius);background:var(--block-title-background-fill);padding:var(--block-title-padding);color:var(--block-title-text-color);font-weight:var(--block-title-text-weight);font-size:var(--block-title-text-size);line-height:var(--line-sm)}span[dir=rtl].svelte-zgrq3{display:block}.hide.svelte-zgrq3{margin:0;height:0}label.svelte-13ao5pu.svelte-13ao5pu{display:inline-flex;align-items:center;z-index:var(--layer-2);box-shadow:var(--block-label-shadow);border:var(--block-label-border-width) solid var(--block-label-border-color);border-top:none;border-left:none;border-radius:var(--block-label-radius);background:var(--block-label-background-fill);padding:var(--block-label-padding);pointer-events:none;color:var(--block-label-text-color);font-weight:var(--block-label-text-weight);font-size:var(--block-label-text-size);line-height:var(--line-sm)}.gr-group label.svelte-13ao5pu.svelte-13ao5pu{border-top-left-radius:0}label.float.svelte-13ao5pu.svelte-13ao5pu{position:absolute;top:var(--block-label-margin);left:var(--block-label-margin)}label.svelte-13ao5pu.svelte-13ao5pu:not(.float){position:static;margin-top:var(--block-label-margin);margin-left:var(--block-label-margin)}.hide.svelte-13ao5pu.svelte-13ao5pu{height:0}span.svelte-13ao5pu.svelte-13ao5pu{opacity:.8;margin-right:var(--size-2);width:calc(var(--block-label-text-size) - 1px);height:calc(var(--block-label-text-size) - 1px)}.hide-label.svelte-13ao5pu.svelte-13ao5pu{box-shadow:none;border-width:0;background:transparent;overflow:visible}label[dir=rtl].svelte-13ao5pu.svelte-13ao5pu{border:var(--block-label-border-width) solid var(--block-label-border-color);border-top:none;border-right:none;border-bottom-left-radius:var(--block-radius);border-bottom-right-radius:var(--block-label-radius);border-top-left-radius:var(--block-label-radius)}label[dir=rtl].svelte-13ao5pu span.svelte-13ao5pu{margin-left:var(--size-2);margin-right:0}button.svelte-qgco6m{display:flex;justify-content:center;align-items:center;gap:1px;z-index:var(--layer-2);border-radius:var(--radius-xs);color:var(--block-label-text-color);border:1px solid transparent;padding:var(--spacing-xxs)}button.svelte-qgco6m:hover{background-color:var(--background-fill-secondary)}button[disabled].svelte-qgco6m{opacity:.5;box-shadow:none}button[disabled].svelte-qgco6m:hover{cursor:not-allowed}.padded.svelte-qgco6m{background:var(--bg-color)}button.svelte-qgco6m:hover,button.highlight.svelte-qgco6m{cursor:pointer;color:var(--color-accent)}.padded.svelte-qgco6m:hover{color:var(--block-label-text-color)}span.svelte-qgco6m{padding:0 1px;font-size:10px}div.svelte-qgco6m{display:flex;align-items:center;justify-content:center;transition:filter .2s ease-in-out}.x-small.svelte-qgco6m{width:10px;height:10px}.small.svelte-qgco6m{width:14px;height:14px}.medium.svelte-qgco6m{width:20px;height:20px}.large.svelte-qgco6m{width:22px;height:22px}.pending.svelte-qgco6m{animation:svelte-qgco6m-flash .5s infinite}@keyframes svelte-qgco6m-flash{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.transparent.svelte-qgco6m{background:transparent;border:none;box-shadow:none}.empty.svelte-3w3rth{display:flex;justify-content:center;align-items:center;margin-top:calc(0px - var(--size-6));height:var(--size-full)}.icon.svelte-3w3rth{opacity:.5;height:var(--size-5);color:var(--body-text-color)}.small.svelte-3w3rth{min-height:calc(var(--size-32) - 20px)}.large.svelte-3w3rth{min-height:calc(var(--size-64) - 20px)}.unpadded_box.svelte-3w3rth{margin-top:0}.small_parent.svelte-3w3rth{min-height:100%!important}.dropdown-arrow.svelte-145leq6,.dropdown-arrow.svelte-ihhdbf{fill:currentColor}.circle.svelte-ihhdbf{fill:currentColor;opacity:.1}svg.svelte-pb9pol{animation:svelte-pb9pol-spin 1.5s linear infinite}@keyframes svelte-pb9pol-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}h2.svelte-1xg7h5n{font-size:var(--text-xl)!important}p.svelte-1xg7h5n,h2.svelte-1xg7h5n{white-space:pre-line}.wrap.svelte-1xg7h5n{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:var(--size-60);color:var(--block-label-text-color);line-height:var(--line-md);height:100%;padding-top:var(--size-3);text-align:center;margin:auto var(--spacing-lg)}.or.svelte-1xg7h5n{color:var(--body-text-color-subdued);display:flex}.icon-wrap.svelte-1xg7h5n{width:30px;margin-bottom:var(--spacing-lg)}@media (--screen-md){.wrap.svelte-1xg7h5n{font-size:var(--text-lg)}}.hovered.svelte-1xg7h5n{color:var(--color-accent)}div.svelte-q32hvf{border-top:1px solid transparent;display:flex;max-height:100%;justify-content:center;align-items:center;gap:var(--spacing-sm);height:auto;align-items:flex-end;color:var(--block-label-text-color);flex-shrink:0}.show_border.svelte-q32hvf{border-top:1px solid var(--block-border-color);margin-top:var(--spacing-xxl);box-shadow:var(--shadow-drop)}.source-selection.svelte-15ls1gu{display:flex;align-items:center;justify-content:center;border-top:1px solid var(--border-color-primary);width:100%;margin-left:auto;margin-right:auto;height:var(--size-10)}.icon.svelte-15ls1gu{width:22px;height:22px;margin:var(--spacing-lg) var(--spacing-xs);padding:var(--spacing-xs);color:var(--neutral-400);border-radius:var(--radius-md)}.selected.svelte-15ls1gu{color:var(--color-accent)}.icon.svelte-15ls1gu:hover,.icon.svelte-15ls1gu:focus{color:var(--color-accent)}.icon-button-wrapper.svelte-109se4{display:flex;flex-direction:row;align-items:center;justify-content:center;z-index:var(--layer-3);gap:var(--spacing-sm);box-shadow:var(--shadow-drop);border:1px solid var(--border-color-primary);background:var(--block-background-fill);padding:var(--spacing-xxs)}.icon-button-wrapper.hide-top-corner.svelte-109se4{border-top:none;border-right:none;border-radius:var(--block-label-right-radius)}.icon-button-wrapper.display-top-corner.svelte-109se4{border-radius:var(--radius-sm) 0 0 var(--radius-sm);top:var(--spacing-sm);right:-1px}.icon-button-wrapper.svelte-109se4:not(.top-panel){border:1px solid var(--border-color-primary);border-radius:var(--radius-sm)}.top-panel.svelte-109se4{position:absolute;top:var(--block-label-margin);right:var(--block-label-margin);margin:0}.icon-button-wrapper.svelte-109se4 button{margin:var(--spacing-xxs);border-radius:var(--radius-xs);position:relative}.icon-button-wrapper.svelte-109se4 a.download-link:not(:last-child),.icon-button-wrapper.svelte-109se4 button:not(:last-child){margin-right:var(--spacing-xxs)}.icon-button-wrapper.svelte-109se4 a.download-link:not(:last-child):not(.no-border *):after,.icon-button-wrapper.svelte-109se4 button:not(:last-child):not(.no-border *):after{content:"";position:absolute;right:-4.5px;top:15%;height:70%;width:1px;background-color:var(--border-color-primary)}.icon-button-wrapper.svelte-109se4>*{height:100%}svg.svelte-43sxxs.svelte-43sxxs{width:var(--size-20);height:var(--size-20)}svg.svelte-43sxxs path.svelte-43sxxs{fill:var(--loader-color)}div.svelte-43sxxs.svelte-43sxxs{z-index:var(--layer-2)}.margin.svelte-43sxxs.svelte-43sxxs{margin:var(--size-4)}.wrap.svelte-17v219f.svelte-17v219f{display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:var(--layer-2);transition:opacity .1s ease-in-out;border-radius:var(--block-radius);background:var(--block-background-fill);padding:0 var(--size-6);max-height:var(--size-screen-h);overflow:hidden}.wrap.center.svelte-17v219f.svelte-17v219f{top:0;right:0;left:0}.wrap.default.svelte-17v219f.svelte-17v219f{top:0;right:0;bottom:0;left:0}.hide.svelte-17v219f.svelte-17v219f{opacity:0;pointer-events:none}.generating.svelte-17v219f.svelte-17v219f{animation:svelte-17v219f-pulseStart 1s cubic-bezier(.4,0,.6,1),svelte-17v219f-pulse 2s cubic-bezier(.4,0,.6,1) 1s infinite;border:2px solid var(--color-accent);background:transparent;z-index:var(--layer-1);pointer-events:none}.translucent.svelte-17v219f.svelte-17v219f{background:none}@keyframes svelte-17v219f-pulseStart{0%{opacity:0}to{opacity:1}}@keyframes svelte-17v219f-pulse{0%,to{opacity:1}50%{opacity:.5}}.loading.svelte-17v219f.svelte-17v219f{z-index:var(--layer-2);color:var(--body-text-color)}.eta-bar.svelte-17v219f.svelte-17v219f{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left;opacity:.8;z-index:var(--layer-1);transition:10ms;background:var(--background-fill-secondary)}.progress-bar-wrap.svelte-17v219f.svelte-17v219f{border:1px solid var(--border-color-primary);background:var(--background-fill-primary);width:55.5%;height:var(--size-4)}.progress-bar.svelte-17v219f.svelte-17v219f{transform-origin:left;background-color:var(--loader-color);width:var(--size-full);height:var(--size-full)}.progress-level.svelte-17v219f.svelte-17v219f{display:flex;flex-direction:column;align-items:center;gap:1;z-index:var(--layer-2);width:var(--size-full)}.progress-level-inner.svelte-17v219f.svelte-17v219f{margin:var(--size-2) auto;color:var(--body-text-color);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text.svelte-17v219f.svelte-17v219f{position:absolute;bottom:0;right:0;z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono)}.meta-text-center.svelte-17v219f.svelte-17v219f{display:flex;position:absolute;top:0;right:0;justify-content:center;align-items:center;transform:translateY(var(--size-6));z-index:var(--layer-2);padding:var(--size-1) var(--size-2);font-size:var(--text-sm);font-family:var(--font-mono);text-align:center}.error.svelte-17v219f.svelte-17v219f{box-shadow:var(--shadow-drop);border:solid 1px var(--error-border-color);border-radius:var(--radius-full);background:var(--error-background-fill);padding-right:var(--size-4);padding-left:var(--size-4);color:var(--error-text-color);font-weight:var(--weight-semibold);font-size:var(--text-lg);line-height:var(--line-lg);font-family:var(--font)}.minimal.svelte-17v219f.svelte-17v219f{pointer-events:none}.minimal.svelte-17v219f .progress-text.svelte-17v219f{background:var(--block-background-fill)}.border.svelte-17v219f.svelte-17v219f{border:1px solid var(--border-color-primary)}.clear-status.svelte-17v219f.svelte-17v219f{position:absolute;display:flex;top:var(--size-2);right:var(--size-2);justify-content:flex-end;gap:var(--spacing-sm);z-index:var(--layer-1)}.toast-body.svelte-1pgj5gs{display:flex;position:relative;right:0;left:0;align-items:center;margin:var(--size-6) var(--size-4);margin:auto;border-radius:var(--container-radius);overflow:hidden;pointer-events:auto}.toast-body.error.svelte-1pgj5gs{border:1px solid var(--color-red-700);background:var(--color-red-50)}.dark .toast-body.error.svelte-1pgj5gs{border:1px solid var(--color-red-500);background-color:var(--color-grey-950)}.toast-body.warning.svelte-1pgj5gs{border:1px solid var(--color-yellow-700);background:var(--color-yellow-50)}.dark .toast-body.warning.svelte-1pgj5gs{border:1px solid var(--color-yellow-500);background-color:var(--color-grey-950)}.toast-body.info.svelte-1pgj5gs{border:1px solid var(--color-grey-700);background:var (--color-grey-50)}.dark .toast-body.info.svelte-1pgj5gs{border:1px solid var(--color-grey-500);background-color:var(--color-grey-950)}.toast-body.success.svelte-1pgj5gs{border:1px solid var(--color-green-700);background:var(--color-green-50)}.dark .toast-body.success.svelte-1pgj5gs{border:1px solid var(--color-green-500);background-color:var(--color-grey-950)}.toast-title.svelte-1pgj5gs{display:flex;align-items:center;font-weight:var(--weight-bold);font-size:var(--text-lg);line-height:var(--line-sm)}.toast-title.error.svelte-1pgj5gs{color:var(--color-red-700)}.dark .toast-title.error.svelte-1pgj5gs{color:var(--color-red-50)}.toast-title.warning.svelte-1pgj5gs{color:var(--color-yellow-700)}.dark .toast-title.warning.svelte-1pgj5gs{color:var(--color-yellow-50)}.toast-title.info.svelte-1pgj5gs{color:var(--color-grey-700)}.dark .toast-title.info.svelte-1pgj5gs{color:var(--color-grey-50)}.toast-title.success.svelte-1pgj5gs{color:var(--color-green-700)}.dark .toast-title.success.svelte-1pgj5gs{color:var(--color-green-50)}.toast-close.svelte-1pgj5gs{margin:0 var(--size-3);border-radius:var(--size-3);padding:0px var(--size-1-5);font-size:var(--size-5);line-height:var(--size-5)}.toast-close.error.svelte-1pgj5gs{color:var(--color-red-700)}.dark .toast-close.error.svelte-1pgj5gs{color:var(--color-red-500)}.toast-close.warning.svelte-1pgj5gs{color:var(--color-yellow-700)}.dark .toast-close.warning.svelte-1pgj5gs{color:var(--color-yellow-500)}.toast-close.info.svelte-1pgj5gs{color:var(--color-grey-700)}.dark .toast-close.info.svelte-1pgj5gs{color:var(--color-grey-500)}.toast-close.success.svelte-1pgj5gs{color:var(--color-green-700)}.dark .toast-close.success.svelte-1pgj5gs{color:var(--color-green-500)}.toast-text.svelte-1pgj5gs{font-size:var(--text-lg);word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}.toast-text.error.svelte-1pgj5gs{color:var(--color-red-700)}.dark .toast-text.error.svelte-1pgj5gs{color:var(--color-red-50)}.toast-text.warning.svelte-1pgj5gs{color:var(--color-yellow-700)}.dark .toast-text.warning.svelte-1pgj5gs{color:var(--color-yellow-50)}.toast-text.info.svelte-1pgj5gs{color:var(--color-grey-700)}.dark .toast-text.info.svelte-1pgj5gs{color:var(--color-grey-50)}.toast-text.success.svelte-1pgj5gs{color:var(--color-green-700)}.dark .toast-text.success.svelte-1pgj5gs{color:var(--color-green-50)}.toast-details.svelte-1pgj5gs{margin:var(--size-3) var(--size-3) var(--size-3) 0;width:100%}.toast-icon.svelte-1pgj5gs{display:flex;position:absolute;position:relative;flex-shrink:0;justify-content:center;align-items:center;margin:var(--size-2);border-radius:var(--radius-full);padding:var(--size-1);padding-left:calc(var(--size-1) - 1px);width:35px;height:35px}.toast-icon.error.svelte-1pgj5gs{color:var(--color-red-700)}.dark .toast-icon.error.svelte-1pgj5gs{color:var(--color-red-500)}.toast-icon.warning.svelte-1pgj5gs{color:var(--color-yellow-700)}.dark .toast-icon.warning.svelte-1pgj5gs{color:var(--color-yellow-500)}.toast-icon.info.svelte-1pgj5gs{color:var(--color-grey-700)}.dark .toast-icon.info.svelte-1pgj5gs{color:var(--color-grey-500)}.toast-icon.success.svelte-1pgj5gs{color:var(--color-green-700)}.dark .toast-icon.success.svelte-1pgj5gs{color:var(--color-green-500)}@keyframes svelte-1pgj5gs-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.timer.svelte-1pgj5gs{position:absolute;bottom:0;left:0;transform-origin:0 0;animation:svelte-1pgj5gs-countdown 10s linear forwards;width:100%;height:var(--size-1)}.timer.error.svelte-1pgj5gs{background:var(--color-red-700)}.dark .timer.error.svelte-1pgj5gs{background:var(--color-red-500)}.timer.warning.svelte-1pgj5gs{background:var(--color-yellow-700)}.dark .timer.warning.svelte-1pgj5gs{background:var(--color-yellow-500)}.timer.info.svelte-1pgj5gs{background:var(--color-grey-700)}.dark .timer.info.svelte-1pgj5gs{background:var(--color-grey-500)}.timer.success.svelte-1pgj5gs{background:var(--color-green-700)}.dark .timer.success.svelte-1pgj5gs{background:var(--color-green-500)}.hidden.svelte-1pgj5gs{display:none}.toast-text.svelte-1pgj5gs a{text-decoration:underline}.toast-wrap.svelte-gatr8h{display:flex;position:fixed;top:var(--size-4);right:var(--size-4);flex-direction:column;align-items:end;gap:var(--size-2);z-index:var(--layer-top);width:calc(100% - var(--size-8))}@media (--screen-sm){.toast-wrap.svelte-gatr8h{width:calc(var(--size-96) + var(--size-10))}}.streaming-bar.svelte-ga0jj6{position:absolute;bottom:0;left:0;right:0;height:4px;background-color:var(--primary-600);animation:svelte-ga0jj6-countdown linear forwards;z-index:1}@keyframes svelte-ga0jj6-countdown{0%{transform:translate(0)}to{transform:translate(-100%)}}.wrap.svelte-zix4qo.svelte-zix4qo{position:relative;background:linear-gradient(135deg,var(--background-fill-secondary) 0%,var(--background-fill-primary) 100%);height:100%;width:100%;border-radius:var(--radius-xl);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000001f;border:1px solid rgba(255,255,255,.1)}.player-container.svelte-zix4qo.svelte-zix4qo{position:relative;width:100%;background:linear-gradient(135deg,#000,#1a1a1a);display:flex;align-items:center;justify-content:center;min-height:420px;max-height:780px;flex:1 1 auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden}.player-container.svelte-zix4qo.svelte-zix4qo:not(:has(video)){aspect-ratio:var(--player-aspect-ratio, 16 / 9)}.player-container video{display:block;height:100%;width:100%}.overlay-canvas.svelte-zix4qo.svelte-zix4qo{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.controls.svelte-zix4qo.svelte-zix4qo{width:100%;background:linear-gradient(135deg,#ffffff0d,#ffffff05);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;align-items:stretch;padding-bottom:0;flex:0 0 auto;box-shadow:0 -4px 16px #00000026}.inner.svelte-zix4qo.svelte-zix4qo{display:flex;justify-content:space-between;align-items:center;padding:8px var(--size-4);width:100%;min-height:48px;color:#fff;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.icon.svelte-zix4qo.svelte-zix4qo{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;padding:8px;margin:0;color:#fff;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.icon.svelte-zix4qo.svelte-zix4qo:hover{background:#fff3;border-color:#fff6;transform:scale(1.05)}.icon.svelte-zix4qo.svelte-zix4qo:active{transform:scale(.95)}.time.svelte-zix4qo.svelte-zix4qo{margin:0 var(--size-3);font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:var(--text-sm);font-weight:500;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.3)}progress.svelte-zix4qo.svelte-zix4qo,.frame-slider.svelte-zix4qo.svelte-zix4qo{flex-grow:1;margin:0 var(--size-4)}.checkbox-row.svelte-zix4qo.svelte-zix4qo{width:100%;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#ffffff05,#ffffff0d);padding:12px 0 14px;border-top:1px solid rgba(255,255,255,.05)}.checkbox-container.svelte-zix4qo.svelte-zix4qo{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:24px;background:none}.checkbox-container.svelte-zix4qo label.svelte-zix4qo{-webkit-user-select:none;user-select:none;font-size:var(--text-sm);font-weight:500;cursor:pointer;margin-right:8px;margin-left:2px;color:#ffffffd9;transition:color .2s ease;text-shadow:0 1px 2px rgba(0,0,0,.3)}.checkbox-container.svelte-zix4qo label.svelte-zix4qo:hover{color:#fff}.checkbox-container.svelte-zix4qo input[type=checkbox].svelte-zix4qo{width:18px;height:18px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff1a;border:2px solid rgba(255,255,255,.3);border-radius:4px;cursor:pointer;position:relative;transition:all .2s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.checkbox-container.svelte-zix4qo input[type=checkbox].svelte-zix4qo:checked{background:linear-gradient(135deg,var(--color-accent, #8b5cf6) 0%,var(--color-accent-soft, #a78bfa) 100%);border-color:var(--color-accent, #8b5cf6);box-shadow:0 2px 8px #8b5cf64d}.checkbox-container.svelte-zix4qo input[type=checkbox].svelte-zix4qo:checked:after{content:"✓";position:absolute;top:-1px;left:2px;color:#fff;font-size:12px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}.checkbox-container.svelte-zix4qo input[type=checkbox].svelte-zix4qo:hover{border-color:#ffffff80;transform:scale(1.05)}.checkbox-container.svelte-zix4qo input[type=checkbox].svelte-zix4qo:disabled{opacity:.5;cursor:not-allowed}.laban-overlay.svelte-zix4qo.svelte-zix4qo{position:absolute;top:16px;left:16px;background:linear-gradient(135deg,#000000e6,#141414e6);color:#fff;padding:14px 18px;border-radius:12px;font-size:13px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;z-index:10;pointer-events:none;min-width:200px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.15);box-shadow:0 8px 32px #0000004d}.laban-overlay.svelte-zix4qo>div.svelte-zix4qo{margin-bottom:6px;display:flex;justify-content:space-between;align-items:center;padding:2px 0}.laban-overlay.svelte-zix4qo>div.svelte-zix4qo:last-child{margin-bottom:0}.laban-overlay.svelte-zix4qo>div.svelte-zix4qo:not(:last-child){border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:6px}.metric-label.svelte-zix4qo.svelte-zix4qo{font-weight:600;text-transform:capitalize;color:#ffffffb3;margin-right:12px;min-width:90px;font-size:12px;letter-spacing:.025em}.metric-value.svelte-zix4qo.svelte-zix4qo{font-family:SF Mono,Monaco,Inconsolata,monospace;color:#fffffff2;text-align:right;font-weight:500;font-size:12px;background:#ffffff0d;padding:2px 6px;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.frame-slider.svelte-zix4qo.svelte-zix4qo::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--color-accent, #8b5cf6) 0%,var(--color-accent-soft, #a78bfa) 100%);cursor:pointer;border:2px solid rgba(255,255,255,.9);box-shadow:0 2px 8px #8b5cf64d;transition:all .2s ease}.frame-slider.svelte-zix4qo.svelte-zix4qo::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 4px 12px #8b5cf666} diff --git a/src/backend/gradio_overlay_video/templates/example/assets/worker-BAOIWoxA.js b/src/backend/gradio_overlay_video/templates/example/assets/worker-BAOIWoxA.js new file mode 100644 index 0000000000000000000000000000000000000000..4be75e95ecb195ea449864292c9771494629d71b --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/example/assets/worker-BAOIWoxA.js @@ -0,0 +1 @@ +(function(){"use strict";const i="https://unpkg.com/@ffmpeg/core@0.12.9/dist/umd/ffmpeg-core.js";var E;(function(t){t.LOAD="LOAD",t.EXEC="EXEC",t.FFPROBE="FFPROBE",t.WRITE_FILE="WRITE_FILE",t.READ_FILE="READ_FILE",t.DELETE_FILE="DELETE_FILE",t.RENAME="RENAME",t.CREATE_DIR="CREATE_DIR",t.LIST_DIR="LIST_DIR",t.DELETE_DIR="DELETE_DIR",t.ERROR="ERROR",t.DOWNLOAD="DOWNLOAD",t.PROGRESS="PROGRESS",t.LOG="LOG",t.MOUNT="MOUNT",t.UNMOUNT="UNMOUNT"})(E||(E={}));const f=new Error("unknown message type"),a=new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),u=new Error("failed to import ffmpeg-core.js");let r;const O=async({coreURL:t,wasmURL:n,workerURL:e})=>{const o=!r;try{t||(t=i),importScripts(t)}catch{if((!t||t===i)&&(t=i.replace("/umd/","/esm/")),self.createFFmpegCore=(await import(t)).default,!self.createFFmpegCore)throw u}const s=t,c=n||t.replace(/.js$/g,".wasm"),p=e||t.replace(/.js$/g,".worker.js");return r=await self.createFFmpegCore({mainScriptUrlOrBlob:`${s}#${btoa(JSON.stringify({wasmURL:c,workerURL:p}))}`}),r.setLogger(R=>self.postMessage({type:E.LOG,data:R})),r.setProgress(R=>self.postMessage({type:E.PROGRESS,data:R})),o},m=({args:t,timeout:n=-1})=>{r.setTimeout(n),r.exec(...t);const e=r.ret;return r.reset(),e},l=({args:t,timeout:n=-1})=>{r.setTimeout(n),r.ffprobe(...t);const e=r.ret;return r.reset(),e},D=({path:t,data:n})=>(r.FS.writeFile(t,n),!0),S=({path:t,encoding:n})=>r.FS.readFile(t,{encoding:n}),I=({path:t})=>(r.FS.unlink(t),!0),L=({oldPath:t,newPath:n})=>(r.FS.rename(t,n),!0),N=({path:t})=>(r.FS.mkdir(t),!0),A=({path:t})=>{const n=r.FS.readdir(t),e=[];for(const o of n){const s=r.FS.stat(`${t}/${o}`),c=r.FS.isDir(s.mode);e.push({name:o,isDir:c})}return e},k=({path:t})=>(r.FS.rmdir(t),!0),w=({fsType:t,options:n,mountPoint:e})=>{const o=t,s=r.FS.filesystems[o];return s?(r.FS.mount(s,n,e),!0):!1},b=({mountPoint:t})=>(r.FS.unmount(t),!0);self.onmessage=async({data:{id:t,type:n,data:e}})=>{const o=[];let s;try{if(n!==E.LOAD&&!r)throw a;switch(n){case E.LOAD:s=await O(e);break;case E.EXEC:s=m(e);break;case E.FFPROBE:s=l(e);break;case E.WRITE_FILE:s=D(e);break;case E.READ_FILE:s=S(e);break;case E.DELETE_FILE:s=I(e);break;case E.RENAME:s=L(e);break;case E.CREATE_DIR:s=N(e);break;case E.LIST_DIR:s=A(e);break;case E.DELETE_DIR:s=k(e);break;case E.MOUNT:s=w(e);break;case E.UNMOUNT:s=b(e);break;default:throw f}}catch(c){self.postMessage({id:t,type:E.ERROR,data:c.toString()});return}s instanceof Uint8Array&&o.push(s.buffer),self.postMessage({id:t,type:n,data:s},o)}})(); diff --git a/src/backend/gradio_overlay_video/templates/example/index.js b/src/backend/gradio_overlay_video/templates/example/index.js new file mode 100644 index 0000000000000000000000000000000000000000..bb56411bdd08b3237a548fbf6f61fda9561faee7 --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/example/index.js @@ -0,0 +1,21969 @@ +var Ki = (a) => { + throw TypeError(a); +}; +var Vi = (a, e, t) => e.has(a) || Ki("Cannot " + t); +var nt = (a, e, t) => (Vi(a, e, "read from private field"), t ? t.call(a) : e.get(a)), Hi = (a, e, t) => e.has(a) ? Ki("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(a) : e.set(a, t), Yi = (a, e, t, s) => (Vi(a, e, "write to private field"), s ? s.call(a, t) : e.set(a, t), t); +var Wi; +(function(a) { + a.LOAD = "LOAD", a.EXEC = "EXEC", a.FFPROBE = "FFPROBE", a.WRITE_FILE = "WRITE_FILE", a.READ_FILE = "READ_FILE", a.DELETE_FILE = "DELETE_FILE", a.RENAME = "RENAME", a.CREATE_DIR = "CREATE_DIR", a.LIST_DIR = "LIST_DIR", a.DELETE_DIR = "DELETE_DIR", a.ERROR = "ERROR", a.DOWNLOAD = "DOWNLOAD", a.PROGRESS = "PROGRESS", a.LOG = "LOG", a.MOUNT = "MOUNT", a.UNMOUNT = "UNMOUNT"; +})(Wi || (Wi = {})); +var qi; +(function(a) { + a.MEMFS = "MEMFS", a.NODEFS = "NODEFS", a.NODERAWFS = "NODERAWFS", a.IDBFS = "IDBFS", a.WORKERFS = "WORKERFS", a.PROXYFS = "PROXYFS"; +})(qi || (qi = {})); +function Wa(a, { autoplay: e }) { + async function t() { + e && await a.play(); + } + return a.addEventListener("loadeddata", t), { + destroy() { + a.removeEventListener("loadeddata", t); + } + }; +} +const { setContext: Md, getContext: qa } = window.__gradio__svelte__internal, ja = "WORKER_PROXY_CONTEXT_KEY"; +function Xa() { + return qa(ja); +} +const za = "lite.local"; +function Qa(a) { + return a.host === window.location.host || a.host === "localhost:7860" || a.host === "127.0.0.1:7860" || // Ref: https://github.com/gradio-app/gradio/blob/v3.32.0/js/app/src/Index.svelte#L194 + a.host === za; +} +function Za(a, e) { + const t = e.toLowerCase(); + for (const [s, i] of Object.entries(a)) + if (s.toLowerCase() === t) + return i; +} +function Ja(a) { + const e = typeof window < "u"; + if (a == null || !e) + return !1; + const t = new URL(a, window.location.href); + return !(!Qa(t) || t.protocol !== "http:" && t.protocol !== "https:"); +} +let Bt; +async function eo(a) { + const e = typeof window < "u"; + if (a == null || !e || !Ja(a)) + return a; + if (Bt == null) + try { + Bt = Xa(); + } catch { + return a; + } + if (Bt == null) + return a; + const s = new URL(a, window.location.href).pathname; + return Bt.httpRequest({ + method: "GET", + path: s, + headers: {}, + query_string: "" + }).then((i) => { + if (i.status !== 200) + throw new Error(`Failed to get file ${s} from the Wasm worker.`); + const r = new Blob([i.body], { + type: Za(i.headers, "content-type") + }); + return URL.createObjectURL(r); + }); +} +const { + SvelteComponent: Nd, + assign: Bd, + check_outros: Ud, + children: $d, + claim_element: Gd, + compute_rest_props: Kd, + create_slot: Vd, + detach: Hd, + element: Yd, + empty: Wd, + exclude_internal_props: qd, + get_all_dirty_from_scope: jd, + get_slot_changes: Xd, + get_spread_update: zd, + group_outros: Qd, + init: Zd, + insert_hydration: Jd, + listen: ef, + prevent_default: tf, + safe_not_equal: sf, + set_attributes: rf, + set_style: nf, + toggle_class: af, + transition_in: of, + transition_out: lf, + update_slot_base: cf +} = window.__gradio__svelte__internal, { createEventDispatcher: hf, onMount: uf } = window.__gradio__svelte__internal, N = Number.isFinite || function(a) { + return typeof a == "number" && isFinite(a); +}, to = Number.isSafeInteger || function(a) { + return typeof a == "number" && Math.abs(a) <= so; +}, so = Number.MAX_SAFE_INTEGER || 9007199254740991; +let K = /* @__PURE__ */ function(a) { + return a.NETWORK_ERROR = "networkError", a.MEDIA_ERROR = "mediaError", a.KEY_SYSTEM_ERROR = "keySystemError", a.MUX_ERROR = "muxError", a.OTHER_ERROR = "otherError", a; +}({}), b = /* @__PURE__ */ function(a) { + return a.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", a.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", a.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", a.KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense", a.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", a.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed", a.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed", a.KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed", a.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted", a.KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError", a.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR = "keySystemDestroyMediaKeysError", a.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR = "keySystemDestroyCloseSessionError", a.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR = "keySystemDestroyRemoveSessionError", a.MANIFEST_LOAD_ERROR = "manifestLoadError", a.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut", a.MANIFEST_PARSING_ERROR = "manifestParsingError", a.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError", a.LEVEL_EMPTY_ERROR = "levelEmptyError", a.LEVEL_LOAD_ERROR = "levelLoadError", a.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut", a.LEVEL_PARSING_ERROR = "levelParsingError", a.LEVEL_SWITCH_ERROR = "levelSwitchError", a.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError", a.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut", a.SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError", a.SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut", a.FRAG_LOAD_ERROR = "fragLoadError", a.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut", a.FRAG_DECRYPT_ERROR = "fragDecryptError", a.FRAG_PARSING_ERROR = "fragParsingError", a.FRAG_GAP = "fragGap", a.REMUX_ALLOC_ERROR = "remuxAllocError", a.KEY_LOAD_ERROR = "keyLoadError", a.KEY_LOAD_TIMEOUT = "keyLoadTimeOut", a.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError", a.BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError", a.BUFFER_APPEND_ERROR = "bufferAppendError", a.BUFFER_APPENDING_ERROR = "bufferAppendingError", a.BUFFER_STALLED_ERROR = "bufferStalledError", a.BUFFER_FULL_ERROR = "bufferFullError", a.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole", a.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall", a.ASSET_LIST_LOAD_ERROR = "assetListLoadError", a.ASSET_LIST_LOAD_TIMEOUT = "assetListLoadTimeout", a.ASSET_LIST_PARSING_ERROR = "assetListParsingError", a.INTERSTITIAL_ASSET_ITEM_ERROR = "interstitialAssetItemError", a.INTERNAL_EXCEPTION = "internalException", a.INTERNAL_ABORTED = "aborted", a.ATTACH_MEDIA_ERROR = "attachMediaError", a.UNKNOWN = "unknown", a; +}({}), m = /* @__PURE__ */ function(a) { + return a.MEDIA_ATTACHING = "hlsMediaAttaching", a.MEDIA_ATTACHED = "hlsMediaAttached", a.MEDIA_DETACHING = "hlsMediaDetaching", a.MEDIA_DETACHED = "hlsMediaDetached", a.MEDIA_ENDED = "hlsMediaEnded", a.STALL_RESOLVED = "hlsStallResolved", a.BUFFER_RESET = "hlsBufferReset", a.BUFFER_CODECS = "hlsBufferCodecs", a.BUFFER_CREATED = "hlsBufferCreated", a.BUFFER_APPENDING = "hlsBufferAppending", a.BUFFER_APPENDED = "hlsBufferAppended", a.BUFFER_EOS = "hlsBufferEos", a.BUFFERED_TO_END = "hlsBufferedToEnd", a.BUFFER_FLUSHING = "hlsBufferFlushing", a.BUFFER_FLUSHED = "hlsBufferFlushed", a.MANIFEST_LOADING = "hlsManifestLoading", a.MANIFEST_LOADED = "hlsManifestLoaded", a.MANIFEST_PARSED = "hlsManifestParsed", a.LEVEL_SWITCHING = "hlsLevelSwitching", a.LEVEL_SWITCHED = "hlsLevelSwitched", a.LEVEL_LOADING = "hlsLevelLoading", a.LEVEL_LOADED = "hlsLevelLoaded", a.LEVEL_UPDATED = "hlsLevelUpdated", a.LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated", a.LEVELS_UPDATED = "hlsLevelsUpdated", a.AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated", a.AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching", a.AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched", a.AUDIO_TRACK_LOADING = "hlsAudioTrackLoading", a.AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded", a.AUDIO_TRACK_UPDATED = "hlsAudioTrackUpdated", a.SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated", a.SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared", a.SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch", a.SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading", a.SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded", a.SUBTITLE_TRACK_UPDATED = "hlsSubtitleTrackUpdated", a.SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed", a.CUES_PARSED = "hlsCuesParsed", a.NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound", a.INIT_PTS_FOUND = "hlsInitPtsFound", a.FRAG_LOADING = "hlsFragLoading", a.FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted", a.FRAG_LOADED = "hlsFragLoaded", a.FRAG_DECRYPTED = "hlsFragDecrypted", a.FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment", a.FRAG_PARSING_USERDATA = "hlsFragParsingUserdata", a.FRAG_PARSING_METADATA = "hlsFragParsingMetadata", a.FRAG_PARSED = "hlsFragParsed", a.FRAG_BUFFERED = "hlsFragBuffered", a.FRAG_CHANGED = "hlsFragChanged", a.FPS_DROP = "hlsFpsDrop", a.FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping", a.MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated", a.ERROR = "hlsError", a.DESTROYING = "hlsDestroying", a.KEY_LOADING = "hlsKeyLoading", a.KEY_LOADED = "hlsKeyLoaded", a.LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached", a.BACK_BUFFER_REACHED = "hlsBackBufferReached", a.STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded", a.ASSET_LIST_LOADING = "hlsAssetListLoading", a.ASSET_LIST_LOADED = "hlsAssetListLoaded", a.INTERSTITIALS_UPDATED = "hlsInterstitialsUpdated", a.INTERSTITIALS_BUFFERED_TO_BOUNDARY = "hlsInterstitialsBufferedToBoundary", a.INTERSTITIAL_ASSET_PLAYER_CREATED = "hlsInterstitialAssetPlayerCreated", a.INTERSTITIAL_STARTED = "hlsInterstitialStarted", a.INTERSTITIAL_ASSET_STARTED = "hlsInterstitialAssetStarted", a.INTERSTITIAL_ASSET_ENDED = "hlsInterstitialAssetEnded", a.INTERSTITIAL_ASSET_ERROR = "hlsInterstitialAssetError", a.INTERSTITIAL_ENDED = "hlsInterstitialEnded", a.INTERSTITIALS_PRIMARY_RESUMED = "hlsInterstitialsPrimaryResumed", a.PLAYOUT_LIMIT_REACHED = "hlsPlayoutLimitReached", a.EVENT_CUE_ENTER = "hlsEventCueEnter", a; +}({}); +var z = { + MANIFEST: "manifest", + LEVEL: "level", + AUDIO_TRACK: "audioTrack", + SUBTITLE_TRACK: "subtitleTrack" +}, $ = { + MAIN: "main", + AUDIO: "audio", + SUBTITLE: "subtitle" +}; +class at { + // About half of the estimated value will be from the last |halfLife| samples by weight. + constructor(e, t = 0, s = 0) { + this.halfLife = void 0, this.alpha_ = void 0, this.estimate_ = void 0, this.totalWeight_ = void 0, this.halfLife = e, this.alpha_ = e ? Math.exp(Math.log(0.5) / e) : 0, this.estimate_ = t, this.totalWeight_ = s; + } + sample(e, t) { + const s = Math.pow(this.alpha_, e); + this.estimate_ = t * (1 - s) + s * this.estimate_, this.totalWeight_ += e; + } + getTotalWeight() { + return this.totalWeight_; + } + getEstimate() { + if (this.alpha_) { + const e = 1 - Math.pow(this.alpha_, this.totalWeight_); + if (e) + return this.estimate_ / e; + } + return this.estimate_; + } +} +class io { + constructor(e, t, s, i = 100) { + this.defaultEstimate_ = void 0, this.minWeight_ = void 0, this.minDelayMs_ = void 0, this.slow_ = void 0, this.fast_ = void 0, this.defaultTTFB_ = void 0, this.ttfb_ = void 0, this.defaultEstimate_ = s, this.minWeight_ = 1e-3, this.minDelayMs_ = 50, this.slow_ = new at(e), this.fast_ = new at(t), this.defaultTTFB_ = i, this.ttfb_ = new at(e); + } + update(e, t) { + const { + slow_: s, + fast_: i, + ttfb_: r + } = this; + s.halfLife !== e && (this.slow_ = new at(e, s.getEstimate(), s.getTotalWeight())), i.halfLife !== t && (this.fast_ = new at(t, i.getEstimate(), i.getTotalWeight())), r.halfLife !== e && (this.ttfb_ = new at(e, r.getEstimate(), r.getTotalWeight())); + } + sample(e, t) { + e = Math.max(e, this.minDelayMs_); + const s = 8 * t, i = e / 1e3, r = s / i; + this.fast_.sample(i, r), this.slow_.sample(i, r); + } + sampleTTFB(e) { + const t = e / 1e3, s = Math.sqrt(2) * Math.exp(-Math.pow(t, 2) / 2); + this.ttfb_.sample(s, Math.max(e, 5)); + } + canEstimate() { + return this.fast_.getTotalWeight() >= this.minWeight_; + } + getEstimate() { + return this.canEstimate() ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()) : this.defaultEstimate_; + } + getEstimateTTFB() { + return this.ttfb_.getTotalWeight() >= this.minWeight_ ? this.ttfb_.getEstimate() : this.defaultTTFB_; + } + get defaultEstimate() { + return this.defaultEstimate_; + } + destroy() { + } +} +function ro(a, e, t) { + return (e = ao(e)) in a ? Object.defineProperty(a, e, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : a[e] = t, a; +} +function ie() { + return ie = Object.assign ? Object.assign.bind() : function(a) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e]; + for (var s in t) ({}).hasOwnProperty.call(t, s) && (a[s] = t[s]); + } + return a; + }, ie.apply(null, arguments); +} +function ji(a, e) { + var t = Object.keys(a); + if (Object.getOwnPropertySymbols) { + var s = Object.getOwnPropertySymbols(a); + e && (s = s.filter(function(i) { + return Object.getOwnPropertyDescriptor(a, i).enumerable; + })), t.push.apply(t, s); + } + return t; +} +function te(a) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e] != null ? arguments[e] : {}; + e % 2 ? ji(Object(t), !0).forEach(function(s) { + ro(a, s, t[s]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(a, Object.getOwnPropertyDescriptors(t)) : ji(Object(t)).forEach(function(s) { + Object.defineProperty(a, s, Object.getOwnPropertyDescriptor(t, s)); + }); + } + return a; +} +function no(a, e) { + if (typeof a != "object" || !a) return a; + var t = a[Symbol.toPrimitive]; + if (t !== void 0) { + var s = t.call(a, e); + if (typeof s != "object") return s; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (e === "string" ? String : Number)(a); +} +function ao(a) { + var e = no(a, "string"); + return typeof e == "symbol" ? e : e + ""; +} +class Ve { + constructor(e, t) { + this.trace = void 0, this.debug = void 0, this.log = void 0, this.warn = void 0, this.info = void 0, this.error = void 0; + const s = `[${e}]:`; + this.trace = je, this.debug = t.debug.bind(null, s), this.log = t.log.bind(null, s), this.warn = t.warn.bind(null, s), this.info = t.info.bind(null, s), this.error = t.error.bind(null, s); + } +} +const je = function() { +}, oo = { + trace: je, + debug: je, + log: je, + warn: je, + info: je, + error: je +}; +function Zs() { + return ie({}, oo); +} +function lo(a, e) { + const t = self.console[a]; + return t ? t.bind(self.console, `${e ? "[" + e + "] " : ""}[${a}] >`) : je; +} +function Xi(a, e, t) { + return e[a] ? e[a].bind(e) : lo(a, t); +} +const Js = Zs(); +function co(a, e, t) { + const s = Zs(); + if (typeof console == "object" && a === !0 || typeof a == "object") { + const i = [ + // Remove out from list here to hard-disable a log-level + // 'trace', + "debug", + "log", + "info", + "warn", + "error" + ]; + i.forEach((r) => { + s[r] = Xi(r, a, t); + }); + try { + s.log(`Debug logs enabled for "${e}" in hls.js version 1.6.5`); + } catch { + return Zs(); + } + i.forEach((r) => { + Js[r] = Xi(r, a); + }); + } else + ie(Js, s); + return s; +} +const J = Js; +function ze(a = !0) { + return typeof self > "u" ? void 0 : (a || !self.MediaSource) && self.ManagedMediaSource || self.MediaSource || self.WebKitMediaSource; +} +function ho(a) { + return typeof self < "u" && a === self.ManagedMediaSource; +} +function yn(a, e) { + const t = Object.keys(a), s = Object.keys(e), i = t.length, r = s.length; + return !i || !r || i === r && !t.some((n) => s.indexOf(n) === -1); +} +function xe(a, e = !1) { + if (typeof TextDecoder < "u") { + const l = new TextDecoder("utf-8").decode(a); + if (e) { + const h = l.indexOf("\0"); + return h !== -1 ? l.substring(0, h) : l; + } + return l.replace(/\0/g, ""); + } + const t = a.length; + let s, i, r, n = "", o = 0; + for (; o < t; ) { + if (s = a[o++], s === 0 && e) + return n; + if (s === 0 || s === 3) + continue; + switch (s >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + n += String.fromCharCode(s); + break; + case 12: + case 13: + i = a[o++], n += String.fromCharCode((s & 31) << 6 | i & 63); + break; + case 14: + i = a[o++], r = a[o++], n += String.fromCharCode((s & 15) << 12 | (i & 63) << 6 | (r & 63) << 0); + break; + } + } + return n; +} +const we = { + hexDump: function(a) { + let e = ""; + for (let t = 0; t < a.length; t++) { + let s = a[t].toString(16); + s.length < 2 && (s = "0" + s), e += s; + } + return e; + } +}; +function uo(a) { + return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a; +} +var bs = { exports: {} }, zi; +function fo() { + return zi || (zi = 1, function(a, e) { + (function(t) { + var s = /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/, i = /^(?=([^\/?#]*))\1([^]*)$/, r = /(?:\/|^)\.(?=\/)/g, n = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, o = { + // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or // + // E.g + // With opts.alwaysNormalize = false (default, spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g + // With opts.alwaysNormalize = true (not spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/g + buildAbsoluteURL: function(c, l, h) { + if (h = h || {}, c = c.trim(), l = l.trim(), !l) { + if (!h.alwaysNormalize) + return c; + var u = o.parseURL(c); + if (!u) + throw new Error("Error trying to parse base URL."); + return u.path = o.normalizePath( + u.path + ), o.buildURLFromParts(u); + } + var d = o.parseURL(l); + if (!d) + throw new Error("Error trying to parse relative URL."); + if (d.scheme) + return h.alwaysNormalize ? (d.path = o.normalizePath(d.path), o.buildURLFromParts(d)) : l; + var g = o.parseURL(c); + if (!g) + throw new Error("Error trying to parse base URL."); + if (!g.netLoc && g.path && g.path[0] !== "/") { + var f = i.exec(g.path); + g.netLoc = f[1], g.path = f[2]; + } + g.netLoc && !g.path && (g.path = "/"); + var E = { + // 2c) Otherwise, the embedded URL inherits the scheme of + // the base URL. + scheme: g.scheme, + netLoc: d.netLoc, + path: null, + params: d.params, + query: d.query, + fragment: d.fragment + }; + if (!d.netLoc && (E.netLoc = g.netLoc, d.path[0] !== "/")) + if (!d.path) + E.path = g.path, d.params || (E.params = g.params, d.query || (E.query = g.query)); + else { + var p = g.path, y = p.substring(0, p.lastIndexOf("/") + 1) + d.path; + E.path = o.normalizePath(y); + } + return E.path === null && (E.path = h.alwaysNormalize ? o.normalizePath(d.path) : d.path), o.buildURLFromParts(E); + }, + parseURL: function(c) { + var l = s.exec(c); + return l ? { + scheme: l[1] || "", + netLoc: l[2] || "", + path: l[3] || "", + params: l[4] || "", + query: l[5] || "", + fragment: l[6] || "" + } : null; + }, + normalizePath: function(c) { + for (c = c.split("").reverse().join("").replace(r, ""); c.length !== (c = c.replace(n, "")).length; ) + ; + return c.split("").reverse().join(""); + }, + buildURLFromParts: function(c) { + return c.scheme + c.netLoc + c.path + c.params + c.query + c.fragment; + } + }; + a.exports = o; + })(); + }(bs)), bs.exports; +} +var mi = fo(); +class pi { + constructor() { + this.aborted = !1, this.loaded = 0, this.retry = 0, this.total = 0, this.chunkCount = 0, this.bwEstimate = 0, this.loading = { + start: 0, + first: 0, + end: 0 + }, this.parsing = { + start: 0, + end: 0 + }, this.buffering = { + start: 0, + first: 0, + end: 0 + }; + } +} +var ne = { + AUDIO: "audio", + VIDEO: "video", + AUDIOVIDEO: "audiovideo" +}; +class Tn { + constructor(e) { + this._byteRange = null, this._url = null, this._stats = null, this._streams = null, this.base = void 0, this.relurl = void 0, typeof e == "string" && (e = { + url: e + }), this.base = e, mo(this, "stats"); + } + // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array + setByteRange(e, t) { + const s = e.split("@", 2); + let i; + s.length === 1 ? i = (t == null ? void 0 : t.byteRangeEndOffset) || 0 : i = parseInt(s[1]), this._byteRange = [i, parseInt(s[0]) + i]; + } + get baseurl() { + return this.base.url; + } + get byteRange() { + return this._byteRange === null ? [] : this._byteRange; + } + get byteRangeStartOffset() { + return this.byteRange[0]; + } + get byteRangeEndOffset() { + return this.byteRange[1]; + } + get elementaryStreams() { + return this._streams === null && (this._streams = { + [ne.AUDIO]: null, + [ne.VIDEO]: null, + [ne.AUDIOVIDEO]: null + }), this._streams; + } + set elementaryStreams(e) { + this._streams = e; + } + get hasStats() { + return this._stats !== null; + } + get hasStreams() { + return this._streams !== null; + } + get stats() { + return this._stats === null && (this._stats = new pi()), this._stats; + } + set stats(e) { + this._stats = e; + } + get url() { + return !this._url && this.baseurl && this.relurl && (this._url = mi.buildAbsoluteURL(this.baseurl, this.relurl, { + alwaysNormalize: !0 + })), this._url || ""; + } + set url(e) { + this._url = e; + } + clearElementaryStreamInfo() { + const { + elementaryStreams: e + } = this; + e[ne.AUDIO] = null, e[ne.VIDEO] = null, e[ne.AUDIOVIDEO] = null; + } +} +function ue(a) { + return a.sn !== "initSegment"; +} +class _s extends Tn { + constructor(e, t) { + super(t), this._decryptdata = null, this._programDateTime = null, this._ref = null, this._bitrate = void 0, this.rawProgramDateTime = null, this.tagList = [], this.duration = 0, this.sn = 0, this.levelkeys = void 0, this.type = void 0, this.loader = null, this.keyLoader = null, this.level = -1, this.cc = 0, this.startPTS = void 0, this.endPTS = void 0, this.startDTS = void 0, this.endDTS = void 0, this.start = 0, this.playlistOffset = 0, this.deltaPTS = void 0, this.maxStartPTS = void 0, this.minEndPTS = void 0, this.data = void 0, this.bitrateTest = !1, this.title = null, this.initSegment = null, this.endList = void 0, this.gap = void 0, this.urlId = 0, this.type = e; + } + get byteLength() { + if (this.hasStats) { + const e = this.stats.total; + if (e) + return e; + } + if (this.byteRange) { + const e = this.byteRange[0], t = this.byteRange[1]; + if (N(e) && N(t)) + return t - e; + } + return null; + } + get bitrate() { + return this.byteLength ? this.byteLength * 8 / this.duration : this._bitrate ? this._bitrate : null; + } + set bitrate(e) { + this._bitrate = e; + } + get decryptdata() { + const { + levelkeys: e + } = this; + if (!e && !this._decryptdata) + return null; + if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) { + const t = this.levelkeys.identity; + if (t) + this._decryptdata = t.getDecryptData(this.sn); + else { + const s = Object.keys(this.levelkeys); + if (s.length === 1) + return this._decryptdata = this.levelkeys[s[0]].getDecryptData(this.sn); + } + } + return this._decryptdata; + } + get end() { + return this.start + this.duration; + } + get endProgramDateTime() { + if (this.programDateTime === null) + return null; + const e = N(this.duration) ? this.duration : 0; + return this.programDateTime + e * 1e3; + } + get encrypted() { + var e; + if ((e = this._decryptdata) != null && e.encrypted) + return !0; + if (this.levelkeys) { + const t = Object.keys(this.levelkeys), s = t.length; + if (s > 1 || s === 1 && this.levelkeys[t[0]].encrypted) + return !0; + } + return !1; + } + get programDateTime() { + return this._programDateTime === null && this.rawProgramDateTime && (this.programDateTime = Date.parse(this.rawProgramDateTime)), this._programDateTime; + } + set programDateTime(e) { + if (!N(e)) { + this._programDateTime = this.rawProgramDateTime = null; + return; + } + this._programDateTime = e; + } + get ref() { + return ue(this) ? (this._ref || (this._ref = { + base: this.base, + start: this.start, + duration: this.duration, + sn: this.sn, + programDateTime: this.programDateTime + }), this._ref) : null; + } + addStart(e) { + this.setStart(this.start + e); + } + setStart(e) { + this.start = e, this._ref && (this._ref.start = e); + } + setDuration(e) { + this.duration = e, this._ref && (this._ref.duration = e); + } + setKeyFormat(e) { + if (this.levelkeys) { + const t = this.levelkeys[e]; + t && !this._decryptdata && (this._decryptdata = t.getDecryptData(this.sn)); + } + } + abortRequests() { + var e, t; + (e = this.loader) == null || e.abort(), (t = this.keyLoader) == null || t.abort(); + } + setElementaryStreamInfo(e, t, s, i, r, n = !1) { + const { + elementaryStreams: o + } = this, c = o[e]; + if (!c) { + o[e] = { + startPTS: t, + endPTS: s, + startDTS: i, + endDTS: r, + partial: n + }; + return; + } + c.startPTS = Math.min(c.startPTS, t), c.endPTS = Math.max(c.endPTS, s), c.startDTS = Math.min(c.startDTS, i), c.endDTS = Math.max(c.endDTS, r); + } +} +class go extends Tn { + constructor(e, t, s, i, r) { + super(s), this.fragOffset = 0, this.duration = 0, this.gap = !1, this.independent = !1, this.relurl = void 0, this.fragment = void 0, this.index = void 0, this.duration = e.decimalFloatingPoint("DURATION"), this.gap = e.bool("GAP"), this.independent = e.bool("INDEPENDENT"), this.relurl = e.enumeratedString("URI"), this.fragment = t, this.index = i; + const n = e.enumeratedString("BYTERANGE"); + n && this.setByteRange(n, r), r && (this.fragOffset = r.fragOffset + r.duration); + } + get start() { + return this.fragment.start + this.fragOffset; + } + get end() { + return this.start + this.duration; + } + get loaded() { + const { + elementaryStreams: e + } = this; + return !!(e.audio || e.video || e.audiovideo); + } +} +function Sn(a, e) { + const t = Object.getPrototypeOf(a); + if (t) { + const s = Object.getOwnPropertyDescriptor(t, e); + return s || Sn(t, e); + } +} +function mo(a, e) { + const t = Sn(a, e); + t && (t.enumerable = !0, Object.defineProperty(a, e, t)); +} +const cs = Math.pow(2, 32) - 1, po = [].push, vn = { + video: 1, + audio: 2, + id3: 3, + text: 4 +}; +function le(a) { + return String.fromCharCode.apply(null, a); +} +function xn(a, e) { + const t = a[e] << 8 | a[e + 1]; + return t < 0 ? 65536 + t : t; +} +function H(a, e) { + const t = An(a, e); + return t < 0 ? 4294967296 + t : t; +} +function Qi(a, e) { + let t = H(a, e); + return t *= Math.pow(2, 32), t += H(a, e + 4), t; +} +function An(a, e) { + return a[e] << 24 | a[e + 1] << 16 | a[e + 2] << 8 | a[e + 3]; +} +function Ds(a, e, t) { + a[e] = t >> 24, a[e + 1] = t >> 16 & 255, a[e + 2] = t >> 8 & 255, a[e + 3] = t & 255; +} +function Eo(a) { + const e = a.byteLength; + for (let t = 0; t < e; ) { + const s = H(a, t); + if (s > 8 && a[t + 4] === 109 && a[t + 5] === 111 && a[t + 6] === 111 && a[t + 7] === 102) + return !0; + t = s > 1 ? t + s : e; + } + return !1; +} +function j(a, e) { + const t = []; + if (!e.length) + return t; + const s = a.byteLength; + for (let i = 0; i < s; ) { + const r = H(a, i), n = le(a.subarray(i + 4, i + 8)), o = r > 1 ? i + r : s; + if (n === e[0]) + if (e.length === 1) + t.push(a.subarray(i + 8, o)); + else { + const c = j(a.subarray(i + 8, o), e.slice(1)); + c.length && po.apply(t, c); + } + i = o; + } + return t; +} +function yo(a) { + const e = [], t = a[0]; + let s = 8; + const i = H(a, s); + s += 4; + let r = 0, n = 0; + t === 0 ? (r = H(a, s), n = H(a, s + 4), s += 8) : (r = Qi(a, s), n = Qi(a, s + 8), s += 16), s += 2; + let o = a.length + n; + const c = xn(a, s); + s += 2; + for (let l = 0; l < c; l++) { + let h = s; + const u = H(a, h); + h += 4; + const d = u & 2147483647; + if ((u & 2147483648) >>> 31 === 1) + return J.warn("SIDX has hierarchical references (not supported)"), null; + const f = H(a, h); + h += 4, e.push({ + referenceSize: d, + subsegmentDuration: f, + // unscaled + info: { + duration: f / i, + start: o, + end: o + d - 1 + } + }), o += d, h += 4, s = h; + } + return { + earliestPresentationTime: r, + timescale: i, + version: t, + referencesCount: c, + references: e + }; +} +function Ln(a) { + const e = [], t = j(a, ["moov", "trak"]); + for (let i = 0; i < t.length; i++) { + const r = t[i], n = j(r, ["tkhd"])[0]; + if (n) { + let o = n[0]; + const c = H(n, o === 0 ? 12 : 20), l = j(r, ["mdia", "mdhd"])[0]; + if (l) { + o = l[0]; + const h = H(l, o === 0 ? 12 : 20), u = j(r, ["mdia", "hdlr"])[0]; + if (u) { + const d = le(u.subarray(8, 12)), g = { + soun: ne.AUDIO, + vide: ne.VIDEO + }[d], f = j(r, ["mdia", "minf", "stbl", "stsd"])[0], E = To(f); + g ? (e[c] = { + timescale: h, + type: g, + stsd: E + }, e[g] = te({ + timescale: h, + id: c + }, E)) : e[c] = { + timescale: h, + type: d, + stsd: E + }; + } + } + } + } + return j(a, ["moov", "mvex", "trex"]).forEach((i) => { + const r = H(i, 4), n = e[r]; + n && (n.default = { + duration: H(i, 12), + flags: H(i, 20) + }); + }), e; +} +function To(a) { + const e = a.subarray(8), t = e.subarray(86), s = le(e.subarray(4, 8)); + let i = s, r; + const n = s === "enca" || s === "encv"; + if (n) { + const l = j(e, [s])[0].subarray(s === "enca" ? 28 : 78); + j(l, ["sinf"]).forEach((u) => { + const d = j(u, ["schm"])[0]; + if (d) { + const g = le(d.subarray(4, 8)); + if (g === "cbcs" || g === "cenc") { + const f = j(u, ["frma"])[0]; + f && (i = le(f)); + } + } + }); + } + const o = i; + switch (i) { + case "avc1": + case "avc2": + case "avc3": + case "avc4": { + const c = j(t, ["avcC"])[0]; + c && c.length > 3 && (i += "." + $t(c[1]) + $t(c[2]) + $t(c[3]), r = Ut(o === "avc1" ? "dva1" : "dvav", t)); + break; + } + case "mp4a": { + const c = j(e, [s])[0], l = j(c.subarray(28), ["esds"])[0]; + if (l && l.length > 7) { + let h = 4; + if (l[h++] !== 3) + break; + h = Cs(l, h), h += 2; + const u = l[h++]; + if (u & 128 && (h += 2), u & 64 && (h += l[h++]), l[h++] !== 4) + break; + h = Cs(l, h); + const d = l[h++]; + if (d === 64) + i += "." + $t(d); + else + break; + if (h += 12, l[h++] !== 5) + break; + h = Cs(l, h); + const g = l[h++]; + let f = (g & 248) >> 3; + f === 31 && (f += 1 + ((g & 7) << 3) + ((l[h] & 224) >> 5)), i += "." + f; + } + break; + } + case "hvc1": + case "hev1": { + const c = j(t, ["hvcC"])[0]; + if (c && c.length > 12) { + const l = c[1], h = ["", "A", "B", "C"][l >> 6], u = l & 31, d = H(c, 2), g = (l & 32) >> 5 ? "H" : "L", f = c[12], E = c.subarray(6, 12); + i += "." + h + u, i += "." + So(d).toString(16).toUpperCase(), i += "." + g + f; + let p = ""; + for (let y = E.length; y--; ) { + const S = E[y]; + (S || p) && (p = "." + S.toString(16).toUpperCase() + p); + } + i += p; + } + r = Ut(o == "hev1" ? "dvhe" : "dvh1", t); + break; + } + case "dvh1": + case "dvhe": + case "dvav": + case "dva1": + case "dav1": { + i = Ut(i, t) || i; + break; + } + case "vp09": { + const c = j(t, ["vpcC"])[0]; + if (c && c.length > 6) { + const l = c[4], h = c[5], u = c[6] >> 4 & 15; + i += "." + ke(l) + "." + ke(h) + "." + ke(u); + } + break; + } + case "av01": { + const c = j(t, ["av1C"])[0]; + if (c && c.length > 2) { + const l = c[1] >>> 5, h = c[1] & 31, u = c[2] >>> 7 ? "H" : "M", d = (c[2] & 64) >> 6, g = (c[2] & 32) >> 5, f = l === 2 && d ? g ? 12 : 10 : d ? 10 : 8, E = (c[2] & 16) >> 4, p = (c[2] & 8) >> 3, y = (c[2] & 4) >> 2, S = c[2] & 3; + i += "." + l + "." + ke(h) + u + "." + ke(f) + "." + E + "." + p + y + S + "." + ke(1) + "." + ke(1) + "." + ke(1) + "." + 0, r = Ut("dav1", t); + } + break; + } + } + return { + codec: i, + encrypted: n, + supplemental: r + }; +} +function Ut(a, e) { + const t = j(e, ["dvvC"]), s = t.length ? t[0] : j(e, ["dvcC"])[0]; + if (s) { + const i = s[2] >> 1 & 127, r = s[2] << 5 & 32 | s[3] >> 3 & 31; + return a + "." + ke(i) + "." + ke(r); + } +} +function So(a) { + let e = 0; + for (let t = 0; t < 32; t++) + e |= (a >> t & 1) << 31 - t; + return e >>> 0; +} +function Cs(a, e) { + const t = e + 5; + for (; a[e++] & 128 && e < t; ) + ; + return e; +} +function $t(a) { + return ("0" + a.toString(16).toUpperCase()).slice(-2); +} +function ke(a) { + return (a < 10 ? "0" : "") + a; +} +function vo(a, e) { + if (!a || !e) + return a; + const t = e.keyId; + return t && e.isCommonEncryption && j(a, ["moov", "trak"]).forEach((i) => { + const n = j(i, ["mdia", "minf", "stbl", "stsd"])[0].subarray(8); + let o = j(n, ["enca"]); + const c = o.length > 0; + c || (o = j(n, ["encv"])), o.forEach((l) => { + const h = c ? l.subarray(28) : l.subarray(78); + j(h, ["sinf"]).forEach((d) => { + const g = In(d); + if (g) { + const f = g.subarray(8, 24); + f.some((E) => E !== 0) || (J.log(`[eme] Patching keyId in 'enc${c ? "a" : "v"}>sinf>>tenc' box: ${we.hexDump(f)} -> ${we.hexDump(t)}`), g.set(t, 8)); + } + }); + }); + }), a; +} +function In(a) { + const e = j(a, ["schm"])[0]; + if (e) { + const t = le(e.subarray(4, 8)); + if (t === "cbcs" || t === "cenc") + return j(a, ["schi", "tenc"])[0]; + } + return null; +} +function xo(a, e, t) { + const s = {}, i = j(a, ["moof", "traf"]); + for (let r = 0; r < i.length; r++) { + const n = i[r], o = j(n, ["tfhd"])[0], c = H(o, 4), l = e[c]; + if (!l) + continue; + const h = s[c] || (s[c] = { + start: NaN, + duration: 0, + sampleCount: 0, + timescale: l.timescale, + type: l.type + }), u = j(n, ["tfdt"])[0]; + if (u) { + const T = u[0]; + let v = H(u, 4); + T === 1 && (v === cs ? t.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time") : (v *= cs + 1, v += H(u, 8))), N(v) && (!N(h.start) || v < h.start) && (h.start = v); + } + const d = l.default, g = H(o, 0) | (d == null ? void 0 : d.flags); + let f = (d == null ? void 0 : d.duration) || 0; + g & 8 && (g & 2 ? f = H(o, 12) : f = H(o, 8)); + const E = j(n, ["trun"]); + let p = h.start || 0, y = 0, S = f; + for (let T = 0; T < E.length; T++) { + const v = E[T], x = H(v, 4), _ = h.sampleCount; + h.sampleCount += x; + const A = v[3] & 1, R = v[3] & 4, D = v[2] & 1, L = v[2] & 2, k = v[2] & 4, M = v[2] & 8; + let V = 8, P = x; + for (A && (V += 4), R && x && (!(v[V + 1] & 1) && h.keyFrameIndex === void 0 && (h.keyFrameIndex = _), V += 4, D ? (S = H(v, V), V += 4) : S = f, L && (V += 4), M && (V += 4), p += S, y += S, P--); P--; ) + D ? (S = H(v, V), V += 4) : S = f, L && (V += 4), k && (v[V + 1] & 1 || h.keyFrameIndex === void 0 && (h.keyFrameIndex = h.sampleCount - (P + 1), h.keyFrameStart = p), V += 4), M && (V += 4), p += S, y += S; + !y && f && (y += f * x); + } + h.duration += y; + } + if (!Object.keys(s).some((r) => s[r].duration)) { + let r = 1 / 0, n = 0; + const o = j(a, ["sidx"]); + for (let c = 0; c < o.length; c++) { + const l = yo(o[c]); + if (l != null && l.references) { + r = Math.min(r, l.earliestPresentationTime / l.timescale); + const h = l.references.reduce((u, d) => u + d.info.duration || 0, 0); + n = Math.max(n, h + l.earliestPresentationTime / l.timescale); + } + } + n && N(n) && Object.keys(s).forEach((c) => { + s[c].duration || (s[c].duration = n * s[c].timescale - s[c].start); + }); + } + return s; +} +function Ao(a, e, t) { + j(e, ["moof", "traf"]).forEach((s) => { + j(s, ["tfhd"]).forEach((i) => { + const r = H(i, 4), n = a[r]; + if (!n) + return; + const o = n.timescale || 9e4; + j(s, ["tfdt"]).forEach((c) => { + const l = c[0], h = t * o; + if (h) { + let u = H(c, 4); + if (l === 0) + u -= h, u = Math.max(u, 0), Ds(c, 4, u); + else { + u *= Math.pow(2, 32), u += H(c, 8), u -= h, u = Math.max(u, 0); + const d = Math.floor(u / (cs + 1)), g = Math.floor(u % (cs + 1)); + Ds(c, 4, d), Ds(c, 8, g); + } + } + }); + }); + }); +} +function Lo(a) { + const e = { + valid: null, + remainder: null + }, t = j(a, ["moof"]); + if (t.length < 2) + return e.remainder = a, e; + const s = t[t.length - 1]; + return e.valid = a.slice(0, s.byteOffset - 8), e.remainder = a.slice(s.byteOffset - 8), e; +} +function be(a, e) { + const t = new Uint8Array(a.length + e.length); + return t.set(a), t.set(e, a.length), t; +} +function Zi(a, e) { + const t = [], s = e.samples, i = e.timescale, r = e.id; + let n = !1; + return j(s, ["moof"]).map((c) => { + const l = c.byteOffset - 8; + j(c, ["traf"]).map((u) => { + const d = j(u, ["tfdt"]).map((g) => { + const f = g[0]; + let E = H(g, 4); + return f === 1 && (E *= Math.pow(2, 32), E += H(g, 8)), E / i; + })[0]; + return d !== void 0 && (a = d), j(u, ["tfhd"]).map((g) => { + const f = H(g, 4), E = H(g, 0) & 16777215, p = (E & 1) !== 0, y = (E & 2) !== 0, S = (E & 8) !== 0; + let T = 0; + const v = (E & 16) !== 0; + let x = 0; + const _ = (E & 32) !== 0; + let A = 8; + f === r && (p && (A += 8), y && (A += 4), S && (T = H(g, A), A += 4), v && (x = H(g, A), A += 4), _ && (A += 4), e.type === "video" && (n = xs(e.codec)), j(u, ["trun"]).map((R) => { + const D = R[0], L = H(R, 0) & 16777215, k = (L & 1) !== 0; + let M = 0; + const V = (L & 4) !== 0, P = (L & 256) !== 0; + let U = 0; + const F = (L & 512) !== 0; + let B = 0; + const G = (L & 1024) !== 0, w = (L & 2048) !== 0; + let O = 0; + const W = H(R, 4); + let Y = 8; + k && (M = H(R, Y), Y += 4), V && (Y += 4); + let X = M + l; + for (let Q = 0; Q < W; Q++) { + if (P ? (U = H(R, Y), Y += 4) : U = T, F ? (B = H(R, Y), Y += 4) : B = x, G && (Y += 4), w && (D === 0 ? O = H(R, Y) : O = An(R, Y), Y += 4), e.type === ne.VIDEO) { + let ee = 0; + for (; ee < B; ) { + const re = H(s, X); + if (X += 4, Io(n, s[X])) { + const me = s.subarray(X, X + re); + Ei(me, n ? 2 : 1, a + O / i, t); + } + X += re, ee += re + 4; + } + } + a += U / i; + } + })); + }); + }); + }), t; +} +function xs(a) { + if (!a) + return !1; + const e = a.substring(0, 4); + return e === "hvc1" || e === "hev1" || // Dolby Vision + e === "dvh1" || e === "dvhe"; +} +function Io(a, e) { + if (a) { + const t = e >> 1 & 63; + return t === 39 || t === 40; + } else + return (e & 31) === 6; +} +function Ei(a, e, t, s) { + const i = Rn(a); + let r = 0; + r += e; + let n = 0, o = 0, c = 0; + for (; r < i.length; ) { + n = 0; + do { + if (r >= i.length) + break; + c = i[r++], n += c; + } while (c === 255); + o = 0; + do { + if (r >= i.length) + break; + c = i[r++], o += c; + } while (c === 255); + const l = i.length - r; + let h = r; + if (o < l) + r += o; + else if (o > l) { + J.error(`Malformed SEI payload. ${o} is too small, only ${l} bytes left to parse.`); + break; + } + if (n === 4) { + if (i[h++] === 181) { + const d = xn(i, h); + if (h += 2, d === 49) { + const g = H(i, h); + if (h += 4, g === 1195456820) { + const f = i[h++]; + if (f === 3) { + const E = i[h++], p = 31 & E, y = 64 & E, S = y ? 2 + p * 3 : 0, T = new Uint8Array(S); + if (y) { + T[0] = E; + for (let v = 1; v < S; v++) + T[v] = i[h++]; + } + s.push({ + type: f, + payloadType: n, + pts: t, + bytes: T + }); + } + } + } + } + } else if (n === 5 && o > 16) { + const u = []; + for (let f = 0; f < 16; f++) { + const E = i[h++].toString(16); + u.push(E.length == 1 ? "0" + E : E), (f === 3 || f === 5 || f === 7 || f === 9) && u.push("-"); + } + const d = o - 16, g = new Uint8Array(d); + for (let f = 0; f < d; f++) + g[f] = i[h++]; + s.push({ + payloadType: n, + pts: t, + uuid: u.join(""), + userData: xe(g), + userDataBytes: g + }); + } + } +} +function Rn(a) { + const e = a.byteLength, t = []; + let s = 1; + for (; s < e - 2; ) + a[s] === 0 && a[s + 1] === 0 && a[s + 2] === 3 ? (t.push(s + 2), s += 2) : s++; + if (t.length === 0) + return a; + const i = e - t.length, r = new Uint8Array(i); + let n = 0; + for (s = 0; s < i; n++, s++) + n === t[0] && (n++, t.shift()), r[s] = a[n]; + return r; +} +function Ro(a) { + const e = a[0]; + let t = "", s = "", i = 0, r = 0, n = 0, o = 0, c = 0, l = 0; + if (e === 0) { + for (; le(a.subarray(l, l + 1)) !== "\0"; ) + t += le(a.subarray(l, l + 1)), l += 1; + for (t += le(a.subarray(l, l + 1)), l += 1; le(a.subarray(l, l + 1)) !== "\0"; ) + s += le(a.subarray(l, l + 1)), l += 1; + s += le(a.subarray(l, l + 1)), l += 1, i = H(a, 12), r = H(a, 16), o = H(a, 20), c = H(a, 24), l = 28; + } else if (e === 1) { + l += 4, i = H(a, l), l += 4; + const u = H(a, l); + l += 4; + const d = H(a, l); + for (l += 4, n = 2 ** 32 * u + d, to(n) || (n = Number.MAX_SAFE_INTEGER, J.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")), o = H(a, l), l += 4, c = H(a, l), l += 4; le(a.subarray(l, l + 1)) !== "\0"; ) + t += le(a.subarray(l, l + 1)), l += 1; + for (t += le(a.subarray(l, l + 1)), l += 1; le(a.subarray(l, l + 1)) !== "\0"; ) + s += le(a.subarray(l, l + 1)), l += 1; + s += le(a.subarray(l, l + 1)), l += 1; + } + const h = a.subarray(l, a.byteLength); + return { + schemeIdUri: t, + value: s, + timeScale: i, + presentationTime: n, + presentationTimeDelta: r, + eventDuration: o, + id: c, + payload: h + }; +} +function bo(a, ...e) { + const t = e.length; + let s = 8, i = t; + for (; i--; ) + s += e[i].byteLength; + const r = new Uint8Array(s); + for (r[0] = s >> 24 & 255, r[1] = s >> 16 & 255, r[2] = s >> 8 & 255, r[3] = s & 255, r.set(a, 4), i = 0, s = 8; i < t; i++) + r.set(e[i], s), s += e[i].byteLength; + return r; +} +function _o(a, e, t) { + if (a.byteLength !== 16) + throw new RangeError("Invalid system id"); + let s, i; + s = 0, i = new Uint8Array(); + let r; + s > 0 ? (r = new Uint8Array(4), e.length > 0 && new DataView(r.buffer).setUint32(0, e.length, !1)) : r = new Uint8Array(); + const n = new Uint8Array(4); + return t && t.byteLength > 0 && new DataView(n.buffer).setUint32(0, t.byteLength, !1), bo( + [112, 115, 115, 104], + new Uint8Array([ + s, + 0, + 0, + 0 + // Flags + ]), + a, + // 16 bytes + r, + i, + n, + t || new Uint8Array() + ); +} +function Do(a) { + const e = []; + if (a instanceof ArrayBuffer) { + const t = a.byteLength; + let s = 0; + for (; s + 32 < t; ) { + const i = new DataView(a, s), r = Co(i); + e.push(r), s += r.size; + } + } + return e; +} +function Co(a) { + const e = a.getUint32(0), t = a.byteOffset, s = a.byteLength; + if (s < e) + return { + offset: t, + size: s + }; + if (a.getUint32(4) !== 1886614376) + return { + offset: t, + size: e + }; + const r = a.getUint32(8) >>> 24; + if (r !== 0 && r !== 1) + return { + offset: t, + size: e + }; + const n = a.buffer, o = we.hexDump(new Uint8Array(n, t + 12, 16)), c = a.getUint32(28); + let l = null, h = null; + if (r === 0) { + if (e - 32 < c || c < 22) + return { + offset: t, + size: e + }; + h = new Uint8Array(n, t + 32, c); + } else if (r === 1) { + if (!c || s < t + 32 + c * 16 + 16) + return { + offset: t, + size: e + }; + l = []; + for (let u = 0; u < c; u++) + l.push(new Uint8Array(n, t + 32 + u * 16, 16)); + } + return { + version: r, + systemId: o, + kids: l, + data: h, + offset: t, + size: e + }; +} +const bn = () => /\(Windows.+Firefox\//i.test(navigator.userAgent), pt = { + audio: { + a3ds: 1, + "ac-3": 0.95, + "ac-4": 1, + alac: 0.9, + alaw: 1, + dra1: 1, + "dts+": 1, + "dts-": 1, + dtsc: 1, + dtse: 1, + dtsh: 1, + "ec-3": 0.9, + enca: 1, + fLaC: 0.9, + // MP4-RA listed codec entry for FLAC + flac: 0.9, + // legacy browser codec name for FLAC + FLAC: 0.9, + // some manifests may list "FLAC" with Apple's tools + g719: 1, + g726: 1, + m4ae: 1, + mha1: 1, + mha2: 1, + mhm1: 1, + mhm2: 1, + mlpa: 1, + mp4a: 1, + "raw ": 1, + Opus: 1, + opus: 1, + // browsers expect this to be lowercase despite MP4RA says 'Opus' + samr: 1, + sawb: 1, + sawp: 1, + sevc: 1, + sqcp: 1, + ssmv: 1, + twos: 1, + ulaw: 1 + }, + video: { + avc1: 1, + avc2: 1, + avc3: 1, + avc4: 1, + avcp: 1, + av01: 0.8, + dav1: 0.8, + drac: 1, + dva1: 1, + dvav: 1, + dvh1: 0.7, + dvhe: 0.7, + encv: 1, + hev1: 0.75, + hvc1: 0.75, + mjp2: 1, + mp4v: 1, + mvc1: 1, + mvc2: 1, + mvc3: 1, + mvc4: 1, + resv: 1, + rv60: 1, + s263: 1, + svc1: 1, + svc2: 1, + "vc-1": 1, + vp08: 1, + vp09: 0.9 + }, + text: { + stpp: 1, + wvtt: 1 + } +}; +function _n(a, e) { + const t = pt[e]; + return !!t && !!t[a.slice(0, 4)]; +} +function ei(a, e, t = !0) { + return !a.split(",").some((s) => !Dn(s, e, t)); +} +function Dn(a, e, t = !0) { + var s; + const i = ze(t); + return (s = i == null ? void 0 : i.isTypeSupported(Dt(a, e))) != null ? s : !1; +} +function Dt(a, e) { + return `${e}/mp4;codecs=${a}`; +} +function Ji(a) { + if (a) { + const e = a.substring(0, 4); + return pt.video[e]; + } + return 2; +} +function hs(a) { + const e = bn(); + return a.split(",").reduce((t, s) => { + const r = e && xs(s) ? 9 : pt.video[s]; + return r ? (r * 2 + t) / (t ? 3 : 2) : (pt.audio[s] + t) / (t ? 2 : 1); + }, 0); +} +const Ps = {}; +function Po(a, e = !0) { + if (Ps[a]) + return Ps[a]; + const t = { + // Idealy fLaC and Opus would be first (spec-compliant) but + // some browsers will report that fLaC is supported then fail. + // see: https://bugs.chromium.org/p/chromium/issues/detail?id=1422728 + flac: ["flac", "fLaC", "FLAC"], + opus: ["opus", "Opus"], + // Replace audio codec info if browser does not support mp4a.40.34, + // and demuxer can fallback to 'audio/mpeg' or 'audio/mp4;codecs="mp3"' + "mp4a.40.34": ["mp3"] + }[a]; + for (let i = 0; i < t.length; i++) { + var s; + if (Dn(t[i], "audio", e)) + return Ps[a] = t[i], t[i]; + if (t[i] === "mp3" && (s = ze(e)) != null && s.isTypeSupported("audio/mpeg")) + return ""; + } + return a; +} +const ko = /flac|opus|mp4a\.40\.34/i; +function us(a, e = !0) { + return a.replace(ko, (t) => Po(t.toLowerCase(), e)); +} +function wo(a, e) { + const t = []; + if (a) { + const s = a.split(","); + for (let i = 0; i < s.length; i++) + _n(s[i], "video") || t.push(s[i]); + } + return e && t.push(e), t.join(","); +} +function ts(a, e) { + if (a && (a.length > 4 || ["ac-3", "ec-3", "alac", "fLaC", "Opus"].indexOf(a) !== -1)) + return a; + if (e) { + const t = e.split(","); + if (t.length > 1) { + if (a) { + for (let s = t.length; s--; ) + if (t[s].substring(0, 4) === a.substring(0, 4)) + return t[s]; + } + return t[0]; + } + } + return e || a; +} +function Oo(a) { + const e = a.split(","); + for (let t = 0; t < e.length; t++) { + const s = e[t].split("."); + s.length > 2 && s[0] === "avc1" && (e[t] = `avc1.${parseInt(s[1]).toString(16)}${("000" + parseInt(s[2]).toString(16)).slice(-4)}`); + } + return e.join(","); +} +function Fo(a) { + if (a.startsWith("av01.")) { + const e = a.split("."), t = ["0", "111", "01", "01", "01", "0"]; + for (let s = e.length; s > 4 && s < 10; s++) + e[s] = t[s - 4]; + return e.join("."); + } + return a; +} +function er(a) { + const e = ze(a) || { + isTypeSupported: () => !1 + }; + return { + mpeg: e.isTypeSupported("audio/mpeg"), + mp3: e.isTypeSupported('audio/mp4; codecs="mp3"'), + ac3: e.isTypeSupported('audio/mp4; codecs="ac-3"') + }; +} +function Cn(a) { + return a.replace(/^.+codecs=["']?([^"']+).*$/, "$1"); +} +const Pn = { + supported: !0, + configurations: [], + decodingInfoResults: [{ + supported: !0, + powerEfficient: !0, + smooth: !0 + }] +}; +function kn(a, e) { + return { + supported: !1, + configurations: e, + decodingInfoResults: [{ + supported: !1, + smooth: !1, + powerEfficient: !1 + }], + error: a + }; +} +const tr = {}; +function Mo(a, e, t, s, i, r) { + const n = a.audioCodec ? a.audioGroups : null, o = r == null ? void 0 : r.audioCodec, c = r == null ? void 0 : r.channels, l = c ? parseInt(c) : o ? 1 / 0 : 2; + let h = null; + if (n != null && n.length) + try { + n.length === 1 && n[0] ? h = e.groups[n[0]].channels : h = n.reduce((u, d) => { + if (d) { + const g = e.groups[d]; + if (!g) + throw new Error(`Audio track group ${d} not found`); + Object.keys(g.channels).forEach((f) => { + u[f] = (u[f] || 0) + g.channels[f]; + }); + } + return u; + }, { + 2: 0 + }); + } catch { + return !0; + } + return a.videoCodec !== void 0 && (a.width > 1920 && a.height > 1088 || a.height > 1920 && a.width > 1088 || a.frameRate > Math.max(s, 30) || a.videoRange !== "SDR" && a.videoRange !== t || a.bitrate > Math.max(i, 8e6)) || !!h && N(l) && Object.keys(h).some((u) => parseInt(u) > l); +} +function wn(a, e, t) { + const s = a.videoCodec, i = a.audioCodec; + if (!s && !i || !t) + return Promise.resolve(Pn); + const r = []; + if (s) { + const n = { + width: a.width, + height: a.height, + bitrate: Math.ceil(Math.max(a.bitrate * 0.9, a.averageBitrate)), + // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0. + framerate: a.frameRate || 30 + }, o = a.videoRange; + o !== "SDR" && (n.transferFunction = o.toLowerCase()); + const c = s.split(","), l = navigator.userAgent; + if (c.some((h) => xs(h)) && bn()) + return Promise.resolve(kn(new Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent sting: (${l})`), r)); + r.push.apply(r, c.map((h) => ({ + type: "media-source", + video: te(te({}, n), {}, { + contentType: Dt(Fo(h), "video") + }) + }))); + } + return i && a.audioGroups && a.audioGroups.forEach((n) => { + var o; + n && ((o = e.groups[n]) == null || o.tracks.forEach((c) => { + if (c.groupId === n) { + const l = c.channels || "", h = parseFloat(l); + N(h) && h > 2 && r.push.apply(r, i.split(",").map((u) => ({ + type: "media-source", + audio: { + contentType: Dt(u, "audio"), + channels: "" + h + // spatialRendering: + // audioCodec === 'ec-3' && channels.indexOf('JOC'), + } + }))); + } + })); + }), Promise.all(r.map((n) => { + const o = No(n); + return tr[o] || (tr[o] = t.decodingInfo(n)); + })).then((n) => ({ + supported: !n.some((o) => !o.supported), + configurations: r, + decodingInfoResults: n + })).catch((n) => ({ + supported: !1, + configurations: r, + decodingInfoResults: [], + error: n + })); +} +function No(a) { + const { + audio: e, + video: t + } = a, s = t || e; + if (s) { + const i = Cn(s.contentType); + if (t) + return `r${t.height}x${t.width}f${Math.ceil(t.framerate)}${t.transferFunction || "sd"}_${i}_${Math.ceil(t.bitrate / 1e5)}`; + if (e) + return `c${e.channels}${e.spatialRendering ? "s" : "n"}_${i}`; + } + return ""; +} +const ti = ["NONE", "TYPE-0", "TYPE-1", null]; +function Bo(a) { + return ti.indexOf(a) > -1; +} +const ds = ["SDR", "PQ", "HLG"]; +function Uo(a) { + return !!a && ds.indexOf(a) > -1; +} +var ss = { + No: "", + Yes: "YES", + v2: "v2" +}; +function sr(a) { + const { + canSkipUntil: e, + canSkipDateRanges: t, + age: s + } = a, i = s < e / 2; + return e && i ? t ? ss.v2 : ss.Yes : ss.No; +} +class ir { + constructor(e, t, s) { + this.msn = void 0, this.part = void 0, this.skip = void 0, this.msn = e, this.part = t, this.skip = s; + } + addDirectives(e) { + const t = new self.URL(e); + return this.msn !== void 0 && t.searchParams.set("_HLS_msn", this.msn.toString()), this.part !== void 0 && t.searchParams.set("_HLS_part", this.part.toString()), this.skip && t.searchParams.set("_HLS_skip", this.skip), t.href; + } +} +class Ct { + constructor(e) { + if (this._attrs = void 0, this.audioCodec = void 0, this.bitrate = void 0, this.codecSet = void 0, this.url = void 0, this.frameRate = void 0, this.height = void 0, this.id = void 0, this.name = void 0, this.supplemental = void 0, this.videoCodec = void 0, this.width = void 0, this.details = void 0, this.fragmentError = 0, this.loadError = 0, this.loaded = void 0, this.realBitrate = 0, this.supportedPromise = void 0, this.supportedResult = void 0, this._avgBitrate = 0, this._audioGroups = void 0, this._subtitleGroups = void 0, this._urlId = 0, this.url = [e.url], this._attrs = [e.attrs], this.bitrate = e.bitrate, e.details && (this.details = e.details), this.id = e.id || 0, this.name = e.name, this.width = e.width || 0, this.height = e.height || 0, this.frameRate = e.attrs.optionalFloat("FRAME-RATE", 0), this._avgBitrate = e.attrs.decimalInteger("AVERAGE-BANDWIDTH"), this.audioCodec = e.audioCodec, this.videoCodec = e.videoCodec, this.codecSet = [e.videoCodec, e.audioCodec].filter((s) => !!s).map((s) => s.substring(0, 4)).join(","), "supplemental" in e) { + var t; + this.supplemental = e.supplemental; + const s = (t = e.supplemental) == null ? void 0 : t.videoCodec; + s && s !== e.videoCodec && (this.codecSet += `,${s.substring(0, 4)}`); + } + this.addGroupId("audio", e.attrs.AUDIO), this.addGroupId("text", e.attrs.SUBTITLES); + } + get maxBitrate() { + return Math.max(this.realBitrate, this.bitrate); + } + get averageBitrate() { + return this._avgBitrate || this.realBitrate || this.bitrate; + } + get attrs() { + return this._attrs[0]; + } + get codecs() { + return this.attrs.CODECS || ""; + } + get pathwayId() { + return this.attrs["PATHWAY-ID"] || "."; + } + get videoRange() { + return this.attrs["VIDEO-RANGE"] || "SDR"; + } + get score() { + return this.attrs.optionalFloat("SCORE", 0); + } + get uri() { + return this.url[0] || ""; + } + hasAudioGroup(e) { + return rr(this._audioGroups, e); + } + hasSubtitleGroup(e) { + return rr(this._subtitleGroups, e); + } + get audioGroups() { + return this._audioGroups; + } + get subtitleGroups() { + return this._subtitleGroups; + } + addGroupId(e, t) { + if (t) { + if (e === "audio") { + let s = this._audioGroups; + s || (s = this._audioGroups = []), s.indexOf(t) === -1 && s.push(t); + } else if (e === "text") { + let s = this._subtitleGroups; + s || (s = this._subtitleGroups = []), s.indexOf(t) === -1 && s.push(t); + } + } + } + // Deprecated methods (retained for backwards compatibility) + get urlId() { + return 0; + } + set urlId(e) { + } + get audioGroupIds() { + return this.audioGroups ? [this.audioGroupId] : void 0; + } + get textGroupIds() { + return this.subtitleGroups ? [this.textGroupId] : void 0; + } + get audioGroupId() { + var e; + return (e = this.audioGroups) == null ? void 0 : e[0]; + } + get textGroupId() { + var e; + return (e = this.subtitleGroups) == null ? void 0 : e[0]; + } + addFallback() { + } +} +function rr(a, e) { + return !e || !a ? !1 : a.indexOf(e) !== -1; +} +function $o() { + if (typeof matchMedia == "function") { + const a = matchMedia("(dynamic-range: high)"), e = matchMedia("bad query"); + if (a.media !== e.media) + return a.matches === !0; + } + return !1; +} +function Go(a, e) { + let t = !1, s = []; + if (a && (t = a !== "SDR", s = [a]), e) { + s = e.allowedVideoRanges || ds.slice(0); + const i = s.join("") !== "SDR" && !e.videoCodec; + t = e.preferHDR !== void 0 ? e.preferHDR : i && $o(), t || (s = ["SDR"]); + } + return { + preferHDR: t, + allowedVideoRanges: s + }; +} +const Ko = (a) => { + const e = /* @__PURE__ */ new WeakSet(); + return (t, s) => { + if (a && (s = a(t, s)), typeof s == "object" && s !== null) { + if (e.has(s)) + return; + e.add(s); + } + return s; + }; +}, ae = (a, e) => JSON.stringify(a, Ko(e)); +function Vo(a, e, t, s, i) { + const r = Object.keys(a), n = s == null ? void 0 : s.channels, o = s == null ? void 0 : s.audioCodec, c = i == null ? void 0 : i.videoCodec, l = n && parseInt(n) === 2; + let h = !1, u = !1, d = 1 / 0, g = 1 / 0, f = 1 / 0, E = 1 / 0, p = 0, y = []; + const { + preferHDR: S, + allowedVideoRanges: T + } = Go(e, i); + for (let R = r.length; R--; ) { + const D = a[r[R]]; + h || (h = D.channels[2] > 0), d = Math.min(d, D.minHeight), g = Math.min(g, D.minFramerate), f = Math.min(f, D.minBitrate), T.filter((k) => D.videoRanges[k] > 0).length > 0 && (u = !0); + } + d = N(d) ? d : 0, g = N(g) ? g : 0; + const v = Math.max(1080, d), x = Math.max(30, g); + f = N(f) ? f : t, t = Math.max(f, t), u || (e = void 0); + const _ = r.length > 1; + return { + codecSet: r.reduce((R, D) => { + const L = a[D]; + if (D === R) + return R; + if (y = u ? T.filter((k) => L.videoRanges[k] > 0) : [], _) { + if (L.minBitrate > t) + return Pe(D, `min bitrate of ${L.minBitrate} > current estimate of ${t}`), R; + if (!L.hasDefaultAudio) + return Pe(D, "no renditions with default or auto-select sound found"), R; + if (o && D.indexOf(o.substring(0, 4)) % 5 !== 0) + return Pe(D, `audio codec preference "${o}" not found`), R; + if (n && !l) { + if (!L.channels[n]) + return Pe(D, `no renditions with ${n} channel sound found (channels options: ${Object.keys(L.channels)})`), R; + } else if ((!o || l) && h && L.channels[2] === 0) + return Pe(D, "no renditions with stereo sound found"), R; + if (L.minHeight > v) + return Pe(D, `min resolution of ${L.minHeight} > maximum of ${v}`), R; + if (L.minFramerate > x) + return Pe(D, `min framerate of ${L.minFramerate} > maximum of ${x}`), R; + if (!y.some((k) => L.videoRanges[k] > 0)) + return Pe(D, `no variants with VIDEO-RANGE of ${ae(y)} found`), R; + if (c && D.indexOf(c.substring(0, 4)) % 5 !== 0) + return Pe(D, `video codec preference "${c}" not found`), R; + if (L.maxScore < p) + return Pe(D, `max score of ${L.maxScore} < selected max of ${p}`), R; + } + return R && (hs(D) >= hs(R) || L.fragmentError > a[R].fragmentError) ? R : (E = L.minIndex, p = L.maxScore, D); + }, void 0), + videoRanges: y, + preferHDR: S, + minFramerate: g, + minBitrate: f, + minIndex: E + }; +} +function Pe(a, e) { + J.log(`[abr] start candidates with "${a}" ignored because ${e}`); +} +function On(a) { + return a.reduce((e, t) => { + let s = e.groups[t.groupId]; + s || (s = e.groups[t.groupId] = { + tracks: [], + channels: { + 2: 0 + }, + hasDefault: !1, + hasAutoSelect: !1 + }), s.tracks.push(t); + const i = t.channels || "2"; + return s.channels[i] = (s.channels[i] || 0) + 1, s.hasDefault = s.hasDefault || t.default, s.hasAutoSelect = s.hasAutoSelect || t.autoselect, s.hasDefault && (e.hasDefaultAudio = !0), s.hasAutoSelect && (e.hasAutoSelectAudio = !0), e; + }, { + hasDefaultAudio: !1, + hasAutoSelectAudio: !1, + groups: {} + }); +} +function Ho(a, e, t, s) { + return a.slice(t, s + 1).reduce((i, r, n) => { + if (!r.codecSet) + return i; + const o = r.audioGroups; + let c = i[r.codecSet]; + c || (i[r.codecSet] = c = { + minBitrate: 1 / 0, + minHeight: 1 / 0, + minFramerate: 1 / 0, + minIndex: n, + maxScore: 0, + videoRanges: { + SDR: 0 + }, + channels: { + 2: 0 + }, + hasDefaultAudio: !o, + fragmentError: 0 + }), c.minBitrate = Math.min(c.minBitrate, r.bitrate); + const l = Math.min(r.height, r.width); + return c.minHeight = Math.min(c.minHeight, l), c.minFramerate = Math.min(c.minFramerate, r.frameRate), c.minIndex = Math.min(c.minIndex, n), c.maxScore = Math.max(c.maxScore, r.score), c.fragmentError += r.fragmentError, c.videoRanges[r.videoRange] = (c.videoRanges[r.videoRange] || 0) + 1, o && o.forEach((h) => { + if (!h) + return; + const u = e.groups[h]; + u && (c.hasDefaultAudio = c.hasDefaultAudio || e.hasDefaultAudio ? u.hasDefault : u.hasAutoSelect || !e.hasDefaultAudio && !e.hasAutoSelectAudio, Object.keys(u.channels).forEach((d) => { + c.channels[d] = (c.channels[d] || 0) + u.channels[d]; + })); + }), i; + }, {}); +} +function nr(a) { + if (!a) + return a; + const { + lang: e, + assocLang: t, + characteristics: s, + channels: i, + audioCodec: r + } = a; + return { + lang: e, + assocLang: t, + characteristics: s, + channels: i, + audioCodec: r + }; +} +function Fe(a, e, t) { + if ("attrs" in a) { + const s = e.indexOf(a); + if (s !== -1) + return s; + } + for (let s = 0; s < e.length; s++) { + const i = e[s]; + if (st(a, i, t)) + return s; + } + return -1; +} +function st(a, e, t) { + const { + groupId: s, + name: i, + lang: r, + assocLang: n, + default: o + } = a, c = a.forced; + return (s === void 0 || e.groupId === s) && (i === void 0 || e.name === i) && (r === void 0 || Yo(r, e.lang)) && (r === void 0 || e.assocLang === n) && (o === void 0 || e.default === o) && (c === void 0 || e.forced === c) && (!("characteristics" in a) || Wo(a.characteristics || "", e.characteristics)) && (t === void 0 || t(a, e)); +} +function Yo(a, e = "--") { + return a.length === e.length ? a === e : a.startsWith(e) || e.startsWith(a); +} +function Wo(a, e = "") { + const t = a.split(","), s = e.split(","); + return t.length === s.length && !t.some((i) => s.indexOf(i) === -1); +} +function tt(a, e) { + const { + audioCodec: t, + channels: s + } = a; + return (t === void 0 || (e.audioCodec || "").substring(0, 4) === t.substring(0, 4)) && (s === void 0 || s === (e.channels || "2")); +} +function qo(a, e, t, s, i) { + const r = e[s], o = e.reduce((d, g, f) => { + const E = g.uri; + return (d[E] || (d[E] = [])).push(f), d; + }, {})[r.uri]; + o.length > 1 && (s = Math.max.apply(Math, o)); + const c = r.videoRange, l = r.frameRate, h = r.codecSet.substring(0, 4), u = ar(e, s, (d) => { + if (d.videoRange !== c || d.frameRate !== l || d.codecSet.substring(0, 4) !== h) + return !1; + const g = d.audioGroups, f = t.filter((E) => !g || g.indexOf(E.groupId) !== -1); + return Fe(a, f, i) > -1; + }); + return u > -1 ? u : ar(e, s, (d) => { + const g = d.audioGroups, f = t.filter((E) => !g || g.indexOf(E.groupId) !== -1); + return Fe(a, f, i) > -1; + }); +} +function ar(a, e, t) { + for (let s = e; s > -1; s--) + if (t(a[s])) + return s; + for (let s = e + 1; s < a.length; s++) + if (t(a[s])) + return s; + return -1; +} +function fs(a, e) { + var t; + return !!a && a !== ((t = e.loadLevelObj) == null ? void 0 : t.uri); +} +class jo extends Ve { + constructor(e) { + super("abr", e.logger), this.hls = void 0, this.lastLevelLoadSec = 0, this.lastLoadedFragLevel = -1, this.firstSelection = -1, this._nextAutoLevel = -1, this.nextAutoLevelKey = "", this.audioTracksByGroup = null, this.codecTiers = null, this.timer = -1, this.fragCurrent = null, this.partCurrent = null, this.bitrateTestDelay = 0, this.rebufferNotice = -1, this.bwEstimator = void 0, this._abandonRulesCheck = (t) => { + var s; + const { + fragCurrent: i, + partCurrent: r, + hls: n + } = this, { + autoLevelEnabled: o, + media: c + } = n; + if (!i || !c) + return; + const l = performance.now(), h = r ? r.stats : i.stats, u = r ? r.duration : i.duration, d = l - h.loading.start, g = n.minAutoLevel, f = i.level, E = this._nextAutoLevel; + if (h.aborted || h.loaded && h.loaded === h.total || f <= g) { + this.clearTimer(), this._nextAutoLevel = -1; + return; + } + if (!o) + return; + const p = E > -1 && E !== f, y = !!t || p; + if (!y && (c.paused || !c.playbackRate || !c.readyState)) + return; + const S = n.mainForwardBufferInfo; + if (!y && S === null) + return; + const T = this.bwEstimator.getEstimateTTFB(), v = Math.abs(c.playbackRate); + if (d <= Math.max(T, 1e3 * (u / (v * 2)))) + return; + const x = S ? S.len / v : 0, _ = h.loading.first ? h.loading.first - h.loading.start : -1, A = h.loaded && _ > -1, R = this.getBwEstimate(), D = n.levels, L = D[f], k = Math.max(h.loaded, Math.round(u * (i.bitrate || L.averageBitrate) / 8)); + let M = A ? d - _ : d; + M < 1 && A && (M = Math.min(d, h.loaded * 8 / R)); + const V = A ? h.loaded * 1e3 / M : 0, P = T / 1e3, U = V ? (k - h.loaded) / V : k * 8 / R + P; + if (U <= x) + return; + const F = V ? V * 8 : R, B = ((s = (t == null ? void 0 : t.details) || this.hls.latestLevelDetails) == null ? void 0 : s.live) === !0, G = this.hls.config.abrBandWidthUpFactor; + let w = Number.POSITIVE_INFINITY, O; + for (O = f - 1; O > g; O--) { + const Q = D[O].maxBitrate, ee = !D[O].details || B; + if (w = this.getTimeToLoadFrag(P, F, u * Q, ee), w < Math.min(x, u + P)) + break; + } + if (w >= U || w > u * 10) + return; + A ? this.bwEstimator.sample(d - Math.min(T, _), h.loaded) : this.bwEstimator.sampleTTFB(d); + const W = D[O].maxBitrate; + this.getBwEstimate() * G > W && this.resetEstimator(W); + const Y = this.findBestLevel(W, g, O, 0, x, 1, 1); + Y > -1 && (O = Y), this.warn(`Fragment ${i.sn}${r ? " part " + r.index : ""} of level ${f} is loading too slowly; + Fragment duration: ${i.duration.toFixed(3)} + Time to underbuffer: ${x.toFixed(3)} s + Estimated load time for current fragment: ${U.toFixed(3)} s + Estimated load time for down switch fragment: ${w.toFixed(3)} s + TTFB estimate: ${_ | 0} ms + Current BW estimate: ${N(R) ? R | 0 : "Unknown"} bps + New BW estimate: ${this.getBwEstimate() | 0} bps + Switching to level ${O} @ ${W | 0} bps`), n.nextLoadLevel = n.nextAutoLevel = O, this.clearTimer(); + const X = () => { + if (this.clearTimer(), this.fragCurrent === i && this.hls.loadLevel === O && O > 0) { + const Q = this.getStarvationDelay(); + if (this.warn(`Aborting inflight request ${O > 0 ? "and switching down" : ""} + Fragment duration: ${i.duration.toFixed(3)} s + Time to underbuffer: ${Q.toFixed(3)} s`), i.abortRequests(), this.fragCurrent = this.partCurrent = null, O > g) { + let ee = this.findBestLevel(this.hls.levels[g].bitrate, g, O, 0, Q, 1, 1); + ee === -1 && (ee = g), this.hls.nextLoadLevel = this.hls.nextAutoLevel = ee, this.resetEstimator(this.hls.levels[ee].bitrate); + } + } + }; + p || U > w * 2 ? X() : this.timer = self.setInterval(X, w * 1e3), n.trigger(m.FRAG_LOAD_EMERGENCY_ABORTED, { + frag: i, + part: r, + stats: h + }); + }, this.hls = e, this.bwEstimator = this.initEstimator(), this.registerListeners(); + } + resetEstimator(e) { + e && (this.log(`setting initial bwe to ${e}`), this.hls.config.abrEwmaDefaultEstimate = e), this.firstSelection = -1, this.bwEstimator = this.initEstimator(); + } + initEstimator() { + const e = this.hls.config; + return new io(e.abrEwmaSlowVoD, e.abrEwmaFastVoD, e.abrEwmaDefaultEstimate); + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.FRAG_LOADING, this.onFragLoading, this), e.on(m.FRAG_LOADED, this.onFragLoaded, this), e.on(m.FRAG_BUFFERED, this.onFragBuffered, this), e.on(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(m.LEVEL_LOADED, this.onLevelLoaded, this), e.on(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(m.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.FRAG_LOADING, this.onFragLoading, this), e.off(m.FRAG_LOADED, this.onFragLoaded, this), e.off(m.FRAG_BUFFERED, this.onFragBuffered, this), e.off(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(m.LEVEL_LOADED, this.onLevelLoaded, this), e.off(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(m.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this), e.off(m.ERROR, this.onError, this)); + } + destroy() { + this.unregisterListeners(), this.clearTimer(), this.hls = this._abandonRulesCheck = null, this.fragCurrent = this.partCurrent = null; + } + onManifestLoading(e, t) { + this.lastLoadedFragLevel = -1, this.firstSelection = -1, this.lastLevelLoadSec = 0, this.fragCurrent = this.partCurrent = null, this.onLevelsUpdated(), this.clearTimer(); + } + onLevelsUpdated() { + this.lastLoadedFragLevel > -1 && this.fragCurrent && (this.lastLoadedFragLevel = this.fragCurrent.level), this._nextAutoLevel = -1, this.onMaxAutoLevelUpdated(), this.codecTiers = null, this.audioTracksByGroup = null; + } + onMaxAutoLevelUpdated() { + this.firstSelection = -1, this.nextAutoLevelKey = ""; + } + onFragLoading(e, t) { + const s = t.frag; + if (!this.ignoreFragment(s)) { + if (!s.bitrateTest) { + var i; + this.fragCurrent = s, this.partCurrent = (i = t.part) != null ? i : null; + } + this.clearTimer(), this.timer = self.setInterval(this._abandonRulesCheck, 100); + } + } + onLevelSwitching(e, t) { + this.clearTimer(); + } + onError(e, t) { + if (!t.fatal) + switch (t.details) { + case b.BUFFER_ADD_CODEC_ERROR: + case b.BUFFER_APPEND_ERROR: + this.lastLoadedFragLevel = -1, this.firstSelection = -1; + break; + case b.FRAG_LOAD_TIMEOUT: { + const s = t.frag, { + fragCurrent: i, + partCurrent: r + } = this; + if (s && i && s.sn === i.sn && s.level === i.level) { + const n = performance.now(), o = r ? r.stats : s.stats, c = n - o.loading.start, l = o.loading.first ? o.loading.first - o.loading.start : -1; + if (o.loaded && l > -1) { + const u = this.bwEstimator.getEstimateTTFB(); + this.bwEstimator.sample(c - Math.min(u, l), o.loaded); + } else + this.bwEstimator.sampleTTFB(c); + } + break; + } + } + } + getTimeToLoadFrag(e, t, s, i) { + const r = e + s / t, n = i ? e + this.lastLevelLoadSec : 0; + return r + n; + } + onLevelLoaded(e, t) { + const s = this.hls.config, { + loading: i + } = t.stats, r = i.end - i.first; + N(r) && (this.lastLevelLoadSec = r / 1e3), t.details.live ? this.bwEstimator.update(s.abrEwmaSlowLive, s.abrEwmaFastLive) : this.bwEstimator.update(s.abrEwmaSlowVoD, s.abrEwmaFastVoD), this.timer > -1 && this._abandonRulesCheck(t.levelInfo); + } + onFragLoaded(e, { + frag: t, + part: s + }) { + const i = s ? s.stats : t.stats; + if (t.type === $.MAIN && this.bwEstimator.sampleTTFB(i.loading.first - i.loading.start), !this.ignoreFragment(t)) { + if (this.clearTimer(), t.level === this._nextAutoLevel && (this._nextAutoLevel = -1), this.firstSelection = -1, this.hls.config.abrMaxWithRealBitrate) { + const r = s ? s.duration : t.duration, n = this.hls.levels[t.level], o = (n.loaded ? n.loaded.bytes : 0) + i.loaded, c = (n.loaded ? n.loaded.duration : 0) + r; + n.loaded = { + bytes: o, + duration: c + }, n.realBitrate = Math.round(8 * o / c); + } + if (t.bitrateTest) { + const r = { + stats: i, + frag: t, + part: s, + id: t.type + }; + this.onFragBuffered(m.FRAG_BUFFERED, r), t.bitrateTest = !1; + } else + this.lastLoadedFragLevel = t.level; + } + } + onFragBuffered(e, t) { + const { + frag: s, + part: i + } = t, r = i != null && i.stats.loaded ? i.stats : s.stats; + if (r.aborted || this.ignoreFragment(s)) + return; + const n = r.parsing.end - r.loading.start - Math.min(r.loading.first - r.loading.start, this.bwEstimator.getEstimateTTFB()); + this.bwEstimator.sample(n, r.loaded), r.bwEstimate = this.getBwEstimate(), s.bitrateTest ? this.bitrateTestDelay = n / 1e3 : this.bitrateTestDelay = 0; + } + ignoreFragment(e) { + return e.type !== $.MAIN || e.sn === "initSegment"; + } + clearTimer() { + this.timer > -1 && (self.clearInterval(this.timer), this.timer = -1); + } + get firstAutoLevel() { + const { + maxAutoLevel: e, + minAutoLevel: t + } = this.hls, s = this.getBwEstimate(), i = this.hls.config.maxStarvationDelay, r = this.findBestLevel(s, t, e, 0, i, 1, 1); + if (r > -1) + return r; + const n = this.hls.firstLevel, o = Math.min(Math.max(n, t), e); + return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${o}`), o; + } + get forcedAutoLevel() { + return this.nextAutoLevelKey ? -1 : this._nextAutoLevel; + } + // return next auto level + get nextAutoLevel() { + const e = this.forcedAutoLevel, s = this.bwEstimator.canEstimate(), i = this.lastLoadedFragLevel > -1; + if (e !== -1 && (!s || !i || this.nextAutoLevelKey === this.getAutoLevelKey())) + return e; + const r = s && i ? this.getNextABRAutoLevel() : this.firstAutoLevel; + if (e !== -1) { + const n = this.hls.levels; + if (n.length > Math.max(e, r) && n[e].loadError <= n[r].loadError) + return e; + } + return this._nextAutoLevel = r, this.nextAutoLevelKey = this.getAutoLevelKey(), r; + } + getAutoLevelKey() { + return `${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`; + } + getNextABRAutoLevel() { + const { + fragCurrent: e, + partCurrent: t, + hls: s + } = this; + if (s.levels.length <= 1) + return s.loadLevel; + const { + maxAutoLevel: i, + config: r, + minAutoLevel: n + } = s, o = t ? t.duration : e ? e.duration : 0, c = this.getBwEstimate(), l = this.getStarvationDelay(); + let h = r.abrBandWidthFactor, u = r.abrBandWidthUpFactor; + if (l) { + const p = this.findBestLevel(c, n, i, l, 0, h, u); + if (p >= 0) + return this.rebufferNotice = -1, p; + } + let d = o ? Math.min(o, r.maxStarvationDelay) : r.maxStarvationDelay; + if (!l) { + const p = this.bitrateTestDelay; + p && (d = (o ? Math.min(o, r.maxLoadingDelay) : r.maxLoadingDelay) - p, this.info(`bitrate test took ${Math.round(1e3 * p)}ms, set first fragment max fetchDuration to ${Math.round(1e3 * d)} ms`), h = u = 1); + } + const g = this.findBestLevel(c, n, i, l, d, h, u); + if (this.rebufferNotice !== g && (this.rebufferNotice = g, this.info(`${l ? "rebuffering expected" : "buffer is empty"}, optimal quality level ${g}`)), g > -1) + return g; + const f = s.levels[n], E = s.loadLevelObj; + return E && (f == null ? void 0 : f.bitrate) < E.bitrate ? n : s.loadLevel; + } + getStarvationDelay() { + const e = this.hls, t = e.media; + if (!t) + return 1 / 0; + const s = t && t.playbackRate !== 0 ? Math.abs(t.playbackRate) : 1, i = e.mainForwardBufferInfo; + return (i ? i.len : 0) / s; + } + getBwEstimate() { + return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate; + } + findBestLevel(e, t, s, i, r, n, o) { + var c; + const l = i + r, h = this.lastLoadedFragLevel, u = h === -1 ? this.hls.firstLevel : h, { + fragCurrent: d, + partCurrent: g + } = this, { + levels: f, + allAudioTracks: E, + loadLevel: p, + config: y + } = this.hls; + if (f.length === 1) + return 0; + const S = f[u], T = !!((c = this.hls.latestLevelDetails) != null && c.live), v = p === -1 || h === -1; + let x, _ = "SDR", A = (S == null ? void 0 : S.frameRate) || 0; + const { + audioPreference: R, + videoPreference: D + } = y, L = this.audioTracksByGroup || (this.audioTracksByGroup = On(E)); + let k = -1; + if (v) { + if (this.firstSelection !== -1) + return this.firstSelection; + const F = this.codecTiers || (this.codecTiers = Ho(f, L, t, s)), B = Vo(F, _, e, R, D), { + codecSet: G, + videoRanges: w, + minFramerate: O, + minBitrate: W, + minIndex: Y, + preferHDR: X + } = B; + k = Y, x = G, _ = X ? w[w.length - 1] : w[0], A = O, e = Math.max(e, W), this.log(`picked start tier ${ae(B)}`); + } else + x = S == null ? void 0 : S.codecSet, _ = S == null ? void 0 : S.videoRange; + const M = g ? g.duration : d ? d.duration : 0, V = this.bwEstimator.getEstimateTTFB() / 1e3, P = []; + for (let F = s; F >= t; F--) { + var U; + const B = f[F], G = F > u; + if (!B) + continue; + if (y.useMediaCapabilities && !B.supportedResult && !B.supportedPromise) { + const ee = navigator.mediaCapabilities; + typeof (ee == null ? void 0 : ee.decodingInfo) == "function" && (Mo(B, L, _, A, e, R) || xs(B.videoCodec)) ? (B.supportedPromise = wn(B, L, ee), B.supportedPromise.then((re) => { + if (!this.hls) + return; + B.supportedResult = re; + const me = this.hls.levels, pe = me.indexOf(B); + re.error ? this.warn(`MediaCapabilities decodingInfo error: "${re.error}" for level ${pe} ${ae(re)}`) : re.supported || (this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${pe} ${ae(re)}`), pe > -1 && me.length > 1 && (this.log(`Removing unsupported level ${pe}`), this.hls.removeLevel(pe), this.hls.loadLevel === -1 && (this.hls.nextLoadLevel = 0))); + })) : B.supportedResult = Pn; + } + if ((x && B.codecSet !== x || _ && B.videoRange !== _ || G && A > B.frameRate || !G && A > 0 && A < B.frameRate || B.supportedResult && !((U = B.supportedResult.decodingInfoResults) != null && U[0].smooth)) && (!v || F !== k)) { + P.push(F); + continue; + } + const w = B.details, O = (g ? w == null ? void 0 : w.partTarget : w == null ? void 0 : w.averagetargetduration) || M; + let W; + G ? W = o * e : W = n * e; + const Y = M && i >= M * 2 && r === 0 ? B.averageBitrate : B.maxBitrate, X = this.getTimeToLoadFrag(V, W, Y * O, w === void 0); + if ( + // if adjusted bw is greater than level bitrate AND + W >= Y && // no level change, or new level has no error history + (F === h || B.loadError === 0 && B.fragmentError === 0) && // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches + // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ... + // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1 + (X <= V || !N(X) || T && !this.bitrateTestDelay || X < l) + ) { + const ee = this.forcedAutoLevel; + return F !== p && (ee === -1 || ee !== p) && (P.length && this.trace(`Skipped level(s) ${P.join(",")} of ${s} max with CODECS and VIDEO-RANGE:"${f[P[0]].codecs}" ${f[P[0]].videoRange}; not compatible with "${x}" ${_}`), this.info(`switch candidate:${u}->${F} adjustedbw(${Math.round(W)})-bitrate=${Math.round(W - Y)} ttfb:${V.toFixed(1)} avgDuration:${O.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${X.toFixed(1)} firstSelection:${v} codecSet:${B.codecSet} videoRange:${B.videoRange} hls.loadLevel:${p}`)), v && (this.firstSelection = F), F; + } + } + return -1; + } + set nextAutoLevel(e) { + const t = this.deriveNextAutoLevel(e); + this._nextAutoLevel !== t && (this.nextAutoLevelKey = "", this._nextAutoLevel = t); + } + deriveNextAutoLevel(e) { + const { + maxAutoLevel: t, + minAutoLevel: s + } = this.hls; + return Math.min(Math.max(e, s), t); + } +} +const Fn = { + /** + * Searches for an item in an array which matches a certain condition. + * This requires the condition to only match one item in the array, + * and for the array to be ordered. + * + * @param list The array to search. + * @param comparisonFn + * Called and provided a candidate item as the first argument. + * Should return: + * > -1 if the item should be located at a lower index than the provided item. + * > 1 if the item should be located at a higher index than the provided item. + * > 0 if the item is the item you're looking for. + * + * @returns the object if found, otherwise returns null + */ + search: function(a, e) { + let t = 0, s = a.length - 1, i = null, r = null; + for (; t <= s; ) { + i = (t + s) / 2 | 0, r = a[i]; + const n = e(r); + if (n > 0) + t = i + 1; + else if (n < 0) + s = i - 1; + else + return r; + } + return null; + } +}; +function Xo(a, e, t) { + if (e === null || !Array.isArray(a) || !a.length || !N(e)) + return null; + const s = a[0].programDateTime; + if (e < (s || 0)) + return null; + const i = a[a.length - 1].endProgramDateTime; + if (e >= (i || 0)) + return null; + for (let r = 0; r < a.length; ++r) { + const n = a[r]; + if (Qo(e, t, n)) + return n; + } + return null; +} +function it(a, e, t = 0, s = 0, i = 5e-3) { + let r = null; + if (a) { + r = e[1 + a.sn - e[0].sn] || null; + const o = a.endDTS - t; + o > 0 && o < 15e-7 && (t += 15e-7), r && a.level !== r.level && r.end <= a.end && (r = e[2 + a.sn - e[0].sn] || null); + } else t === 0 && e[0].start === 0 && (r = e[0]); + if (r && ((!a || a.level === r.level) && or(t, s, r) === 0 || zo(r, a, Math.min(i, s)))) + return r; + const n = Fn.search(e, or.bind(null, t, s)); + return n && (n !== a || !r) ? n : r; +} +function zo(a, e, t) { + if (e && e.start === 0 && e.level < a.level && (e.endPTS || 0) > 0) { + const s = e.tagList.reduce((i, r) => (r[0] === "INF" && (i += parseFloat(r[1])), i), t); + return a.start <= s; + } + return !1; +} +function or(a = 0, e = 0, t) { + if (t.start <= a && t.start + t.duration > a) + return 0; + const s = Math.min(e, t.duration + (t.deltaPTS ? t.deltaPTS : 0)); + return t.start + t.duration - s <= a ? 1 : t.start - s > a && t.start ? -1 : 0; +} +function Qo(a, e, t) { + const s = Math.min(e, t.duration + (t.deltaPTS ? t.deltaPTS : 0)) * 1e3; + return (t.endProgramDateTime || 0) - s > a; +} +function Mn(a, e, t) { + if (a && a.startCC <= e && a.endCC >= e) { + let s = a.fragments; + const { + fragmentHint: i + } = a; + i && (s = s.concat(i)); + let r; + return Fn.search(s, (n) => n.cc < e ? 1 : n.cc > e ? -1 : (r = n, n.end <= t ? 1 : n.start > t ? -1 : 0)), r || null; + } + return null; +} +function gs(a) { + switch (a.details) { + case b.FRAG_LOAD_TIMEOUT: + case b.KEY_LOAD_TIMEOUT: + case b.LEVEL_LOAD_TIMEOUT: + case b.MANIFEST_LOAD_TIMEOUT: + return !0; + } + return !1; +} +function lr(a, e) { + const t = gs(e); + return a.default[`${t ? "timeout" : "error"}Retry`]; +} +function yi(a, e) { + const t = a.backoff === "linear" ? 1 : Math.pow(2, e); + return Math.min(t * a.retryDelayMs, a.maxRetryDelayMs); +} +function cr(a) { + return te(te({}, a), { + errorRetry: null, + timeoutRetry: null + }); +} +function ms(a, e, t, s) { + if (!a) + return !1; + const i = s == null ? void 0 : s.code, r = e < a.maxNumRetry && (Zo(i) || !!t); + return a.shouldRetry ? a.shouldRetry(a, e, t, s, r) : r; +} +function Zo(a) { + return a === 0 && navigator.onLine === !1 || !!a && (a < 400 || a > 499); +} +var ge = { + DoNothing: 0, + SendAlternateToPenaltyBox: 2, + RemoveAlternatePermanently: 3, + RetryRequest: 5 +}, Ce = { + None: 0, + MoveAllAlternatesMatchingHost: 1, + MoveAllAlternatesMatchingHDCP: 2 +}; +class Jo extends Ve { + constructor(e) { + super("error-controller", e.logger), this.hls = void 0, this.playlistError = 0, this.penalizedRenditions = {}, this.hls = e, this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(m.ERROR, this.onError, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.LEVEL_UPDATED, this.onLevelUpdated, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(m.ERROR, this.onError, this), e.off(m.ERROR, this.onErrorOut, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.LEVEL_UPDATED, this.onLevelUpdated, this)); + } + destroy() { + this.unregisterListeners(), this.hls = null, this.penalizedRenditions = {}; + } + startLoad(e) { + } + stopLoad() { + this.playlistError = 0; + } + getVariantLevelIndex(e) { + return (e == null ? void 0 : e.type) === $.MAIN ? e.level : this.hls.loadLevel; + } + onManifestLoading() { + this.playlistError = 0, this.penalizedRenditions = {}; + } + onLevelUpdated() { + this.playlistError = 0; + } + onError(e, t) { + var s; + if (t.fatal) + return; + const i = this.hls, r = t.context; + switch (t.details) { + case b.FRAG_LOAD_ERROR: + case b.FRAG_LOAD_TIMEOUT: + case b.KEY_LOAD_ERROR: + case b.KEY_LOAD_TIMEOUT: + t.errorAction = this.getFragRetryOrSwitchAction(t); + return; + case b.FRAG_PARSING_ERROR: + if ((s = t.frag) != null && s.gap) { + t.errorAction = Pt(); + return; + } + case b.FRAG_GAP: + case b.FRAG_DECRYPT_ERROR: { + t.errorAction = this.getFragRetryOrSwitchAction(t), t.errorAction.action = ge.SendAlternateToPenaltyBox; + return; + } + case b.LEVEL_EMPTY_ERROR: + case b.LEVEL_PARSING_ERROR: + { + var n, o; + const l = t.parent === $.MAIN ? t.level : i.loadLevel; + t.details === b.LEVEL_EMPTY_ERROR && ((n = t.context) != null && (o = n.levelDetails) != null && o.live) ? t.errorAction = this.getPlaylistRetryOrSwitchAction(t, l) : (t.levelRetry = !1, t.errorAction = this.getLevelSwitchAction(t, l)); + } + return; + case b.LEVEL_LOAD_ERROR: + case b.LEVEL_LOAD_TIMEOUT: + typeof (r == null ? void 0 : r.level) == "number" && (t.errorAction = this.getPlaylistRetryOrSwitchAction(t, r.level)); + return; + case b.AUDIO_TRACK_LOAD_ERROR: + case b.AUDIO_TRACK_LOAD_TIMEOUT: + case b.SUBTITLE_LOAD_ERROR: + case b.SUBTITLE_TRACK_LOAD_TIMEOUT: + if (r) { + const l = i.loadLevelObj; + if (l && (r.type === z.AUDIO_TRACK && l.hasAudioGroup(r.groupId) || r.type === z.SUBTITLE_TRACK && l.hasSubtitleGroup(r.groupId))) { + t.errorAction = this.getPlaylistRetryOrSwitchAction(t, i.loadLevel), t.errorAction.action = ge.SendAlternateToPenaltyBox, t.errorAction.flags = Ce.MoveAllAlternatesMatchingHost; + return; + } + } + return; + case b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED: + { + const l = i.loadLevelObj, h = l == null ? void 0 : l.attrs["HDCP-LEVEL"]; + h ? t.errorAction = { + action: ge.SendAlternateToPenaltyBox, + flags: Ce.MoveAllAlternatesMatchingHDCP, + hdcpLevel: h + } : this.keySystemError(t); + } + return; + case b.BUFFER_ADD_CODEC_ERROR: + case b.REMUX_ALLOC_ERROR: + case b.BUFFER_APPEND_ERROR: + if (!t.errorAction) { + var c; + t.errorAction = this.getLevelSwitchAction(t, (c = t.level) != null ? c : i.loadLevel); + } + return; + case b.INTERNAL_EXCEPTION: + case b.BUFFER_APPENDING_ERROR: + case b.BUFFER_FULL_ERROR: + case b.LEVEL_SWITCH_ERROR: + case b.BUFFER_STALLED_ERROR: + case b.BUFFER_SEEK_OVER_HOLE: + case b.BUFFER_NUDGE_ON_STALL: + t.errorAction = Pt(); + return; + } + t.type === K.KEY_SYSTEM_ERROR && this.keySystemError(t); + } + keySystemError(e) { + const t = this.getVariantLevelIndex(e.frag); + e.levelRetry = !1, e.errorAction = this.getLevelSwitchAction(e, t); + } + getPlaylistRetryOrSwitchAction(e, t) { + const s = this.hls, i = lr(s.config.playlistLoadPolicy, e), r = this.playlistError++; + if (ms(i, r, gs(e), e.response)) + return { + action: ge.RetryRequest, + flags: Ce.None, + retryConfig: i, + retryCount: r + }; + const o = this.getLevelSwitchAction(e, t); + return i && (o.retryConfig = i, o.retryCount = r), o; + } + getFragRetryOrSwitchAction(e) { + const t = this.hls, s = this.getVariantLevelIndex(e.frag), i = t.levels[s], { + fragLoadPolicy: r, + keyLoadPolicy: n + } = t.config, o = lr(e.details.startsWith("key") ? n : r, e), c = t.levels.reduce((h, u) => h + u.fragmentError, 0); + if (i && (e.details !== b.FRAG_GAP && i.fragmentError++, ms(o, c, gs(e), e.response))) + return { + action: ge.RetryRequest, + flags: Ce.None, + retryConfig: o, + retryCount: c + }; + const l = this.getLevelSwitchAction(e, s); + return o && (l.retryConfig = o, l.retryCount = c), l; + } + getLevelSwitchAction(e, t) { + const s = this.hls; + t == null && (t = s.loadLevel); + const i = this.hls.levels[t]; + if (i) { + var r, n; + const l = e.details; + i.loadError++, l === b.BUFFER_APPEND_ERROR && i.fragmentError++; + let h = -1; + const { + levels: u, + loadLevel: d, + minAutoLevel: g, + maxAutoLevel: f + } = s; + !s.autoLevelEnabled && !s.config.preserveManualLevelOnError && (s.loadLevel = -1); + const E = (r = e.frag) == null ? void 0 : r.type, y = (E === $.AUDIO && l === b.FRAG_PARSING_ERROR || e.sourceBufferName === "audio" && (l === b.BUFFER_ADD_CODEC_ERROR || l === b.BUFFER_APPEND_ERROR)) && u.some(({ + audioCodec: _ + }) => i.audioCodec !== _), T = e.sourceBufferName === "video" && (l === b.BUFFER_ADD_CODEC_ERROR || l === b.BUFFER_APPEND_ERROR) && u.some(({ + codecSet: _, + audioCodec: A + }) => i.codecSet !== _ && i.audioCodec === A), { + type: v, + groupId: x + } = (n = e.context) != null ? n : {}; + for (let _ = u.length; _--; ) { + const A = (_ + d) % u.length; + if (A !== d && A >= g && A <= f && u[A].loadError === 0) { + var o, c; + const R = u[A]; + if (l === b.FRAG_GAP && E === $.MAIN && e.frag) { + const D = u[A].details; + if (D) { + const L = it(e.frag, D.fragments, e.frag.start); + if (L != null && L.gap) + continue; + } + } else { + if (v === z.AUDIO_TRACK && R.hasAudioGroup(x) || v === z.SUBTITLE_TRACK && R.hasSubtitleGroup(x)) + continue; + if (E === $.AUDIO && (o = i.audioGroups) != null && o.some((D) => R.hasAudioGroup(D)) || E === $.SUBTITLE && (c = i.subtitleGroups) != null && c.some((D) => R.hasSubtitleGroup(D)) || y && i.audioCodec === R.audioCodec || !y && i.audioCodec !== R.audioCodec || T && i.codecSet === R.codecSet) + continue; + } + h = A; + break; + } + } + if (h > -1 && s.loadLevel !== h) + return e.levelRetry = !0, this.playlistError = 0, { + action: ge.SendAlternateToPenaltyBox, + flags: Ce.None, + nextAutoLevel: h + }; + } + return { + action: ge.SendAlternateToPenaltyBox, + flags: Ce.MoveAllAlternatesMatchingHost + }; + } + onErrorOut(e, t) { + var s; + switch ((s = t.errorAction) == null ? void 0 : s.action) { + case ge.DoNothing: + break; + case ge.SendAlternateToPenaltyBox: + this.sendAlternateToPenaltyBox(t), !t.errorAction.resolved && t.details !== b.FRAG_GAP ? t.fatal = !0 : /MediaSource readyState: ended/.test(t.error.message) && (this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`), this.hls.recoverMediaError()); + break; + } + if (t.fatal) { + this.hls.stopLoad(); + return; + } + } + sendAlternateToPenaltyBox(e) { + const t = this.hls, s = e.errorAction; + if (!s) + return; + const { + flags: i, + hdcpLevel: r, + nextAutoLevel: n + } = s; + switch (i) { + case Ce.None: + this.switchLevel(e, n); + break; + case Ce.MoveAllAlternatesMatchingHDCP: + r && (t.maxHdcpLevel = ti[ti.indexOf(r) - 1], s.resolved = !0), this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`); + break; + } + s.resolved || this.switchLevel(e, n); + } + switchLevel(e, t) { + if (t !== void 0 && e.errorAction && (this.warn(`switching to level ${t} after ${e.details}`), this.hls.nextAutoLevel = t, e.errorAction.resolved = !0, this.hls.nextLoadLevel = this.hls.nextAutoLevel, e.details === b.BUFFER_ADD_CODEC_ERROR && e.mimeType && e.sourceBufferName !== "audiovideo")) { + const s = Cn(e.mimeType), i = this.hls.levels; + for (let r = i.length; r--; ) + i[r][`${e.sourceBufferName}Codec`] === s && this.hls.removeLevel(r); + } + } +} +function Pt(a) { + const e = { + action: ge.DoNothing, + flags: Ce.None + }; + return a && (e.resolved = !0), e; +} +var ce = { + NOT_LOADED: "NOT_LOADED", + APPENDING: "APPENDING", + PARTIAL: "PARTIAL", + OK: "OK" +}; +class el { + constructor(e) { + this.activePartLists = /* @__PURE__ */ Object.create(null), this.endListFragments = /* @__PURE__ */ Object.create(null), this.fragments = /* @__PURE__ */ Object.create(null), this.timeRanges = /* @__PURE__ */ Object.create(null), this.bufferPadding = 0.2, this.hls = void 0, this.hasGaps = !1, this.hls = e, this._registerListeners(); + } + _registerListeners() { + const { + hls: e + } = this; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.BUFFER_APPENDED, this.onBufferAppended, this), e.on(m.FRAG_BUFFERED, this.onFragBuffered, this), e.on(m.FRAG_LOADED, this.onFragLoaded, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.BUFFER_APPENDED, this.onBufferAppended, this), e.off(m.FRAG_BUFFERED, this.onFragBuffered, this), e.off(m.FRAG_LOADED, this.onFragLoaded, this); + } + destroy() { + this._unregisterListeners(), this.fragments = // @ts-ignore + this.activePartLists = // @ts-ignore + this.endListFragments = this.timeRanges = null; + } + /** + * Return a Fragment or Part with an appended range that matches the position and levelType + * Otherwise, return null + */ + getAppendedFrag(e, t) { + const s = this.activePartLists[t]; + if (s) + for (let i = s.length; i--; ) { + const r = s[i]; + if (!r) + break; + const n = r.end; + if (r.start <= e && n !== null && e <= n) + return r; + } + return this.getBufferedFrag(e, t); + } + /** + * Return a buffered Fragment that matches the position and levelType. + * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted). + * If not found any Fragment, return null + */ + getBufferedFrag(e, t) { + return this.getFragAtPos(e, t, !0); + } + getFragAtPos(e, t, s) { + const { + fragments: i + } = this, r = Object.keys(i); + for (let n = r.length; n--; ) { + const o = i[r[n]]; + if ((o == null ? void 0 : o.body.type) === t && (!s || o.buffered)) { + const c = o.body; + if (c.start <= e && e <= c.end) + return c; + } + } + return null; + } + /** + * Partial fragments effected by coded frame eviction will be removed + * The browser will unload parts of the buffer to free up memory for new buffer data + * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable) + */ + detectEvictedFragments(e, t, s, i, r) { + this.timeRanges && (this.timeRanges[e] = t); + const n = (i == null ? void 0 : i.fragment.sn) || -1; + Object.keys(this.fragments).forEach((o) => { + const c = this.fragments[o]; + if (!c || n >= c.body.sn) + return; + if (!c.buffered && (!c.loaded || r)) { + c.body.type === s && this.removeFragment(c.body); + return; + } + const l = c.range[e]; + if (l) { + if (l.time.length === 0) { + this.removeFragment(c.body); + return; + } + l.time.some((h) => { + const u = !this.isTimeBuffered(h.startPTS, h.endPTS, t); + return u && this.removeFragment(c.body), u; + }); + } + }); + } + /** + * Checks if the fragment passed in is loaded in the buffer properly + * Partially loaded fragments will be registered as a partial fragment + */ + detectPartialFragments(e) { + const t = this.timeRanges; + if (!t || e.frag.sn === "initSegment") + return; + const s = e.frag, i = ot(s), r = this.fragments[i]; + if (!r || r.buffered && s.gap) + return; + const n = !s.relurl; + Object.keys(t).forEach((o) => { + const c = s.elementaryStreams[o]; + if (!c) + return; + const l = t[o], h = n || c.partial === !0; + r.range[o] = this.getBufferedTimes(s, e.part, h, l); + }), r.loaded = null, Object.keys(r.range).length ? (r.buffered = !0, (r.body.endList = s.endList || r.body.endList) && (this.endListFragments[r.body.type] = r), Gt(r) || this.removeParts(s.sn - 1, s.type)) : this.removeFragment(r.body); + } + removeParts(e, t) { + const s = this.activePartLists[t]; + s && (this.activePartLists[t] = hr(s, (i) => i.fragment.sn >= e)); + } + fragBuffered(e, t) { + const s = ot(e); + let i = this.fragments[s]; + !i && t && (i = this.fragments[s] = { + body: e, + appendedPTS: null, + loaded: null, + buffered: !1, + range: /* @__PURE__ */ Object.create(null) + }, e.gap && (this.hasGaps = !0)), i && (i.loaded = null, i.buffered = !0); + } + getBufferedTimes(e, t, s, i) { + const r = { + time: [], + partial: s + }, n = e.start, o = e.end, c = e.minEndPTS || o, l = e.maxStartPTS || n; + for (let h = 0; h < i.length; h++) { + const u = i.start(h) - this.bufferPadding, d = i.end(h) + this.bufferPadding; + if (l >= u && c <= d) { + r.time.push({ + startPTS: Math.max(n, i.start(h)), + endPTS: Math.min(o, i.end(h)) + }); + break; + } else if (n < d && o > u) { + const g = Math.max(n, i.start(h)), f = Math.min(o, i.end(h)); + f > g && (r.partial = !0, r.time.push({ + startPTS: g, + endPTS: f + })); + } else if (o <= u) + break; + } + return r; + } + /** + * Gets the partial fragment for a certain time + */ + getPartialFragment(e) { + let t = null, s, i, r, n = 0; + const { + bufferPadding: o, + fragments: c + } = this; + return Object.keys(c).forEach((l) => { + const h = c[l]; + h && Gt(h) && (i = h.body.start - o, r = h.body.end + o, e >= i && e <= r && (s = Math.min(e - i, r - e), n <= s && (t = h.body, n = s))); + }), t; + } + isEndListAppended(e) { + const t = this.endListFragments[e]; + return t !== void 0 && (t.buffered || Gt(t)); + } + getState(e) { + const t = ot(e), s = this.fragments[t]; + return s ? s.buffered ? Gt(s) ? ce.PARTIAL : ce.OK : ce.APPENDING : ce.NOT_LOADED; + } + isTimeBuffered(e, t, s) { + let i, r; + for (let n = 0; n < s.length; n++) { + if (i = s.start(n) - this.bufferPadding, r = s.end(n) + this.bufferPadding, e >= i && t <= r) + return !0; + if (t <= i) + return !1; + } + return !1; + } + onManifestLoading() { + this.removeAllFragments(); + } + onFragLoaded(e, t) { + if (t.frag.sn === "initSegment" || t.frag.bitrateTest) + return; + const s = t.frag, i = t.part ? null : t, r = ot(s); + this.fragments[r] = { + body: s, + appendedPTS: null, + loaded: i, + buffered: !1, + range: /* @__PURE__ */ Object.create(null) + }; + } + onBufferAppended(e, t) { + const { + frag: s, + part: i, + timeRanges: r, + type: n + } = t; + if (s.sn === "initSegment") + return; + const o = s.type; + if (i) { + let l = this.activePartLists[o]; + l || (this.activePartLists[o] = l = []), l.push(i); + } + this.timeRanges = r; + const c = r[n]; + this.detectEvictedFragments(n, c, o, i); + } + onFragBuffered(e, t) { + this.detectPartialFragments(t); + } + hasFragment(e) { + const t = ot(e); + return !!this.fragments[t]; + } + hasFragments(e) { + const { + fragments: t + } = this, s = Object.keys(t); + if (!e) + return s.length > 0; + for (let i = s.length; i--; ) { + const r = t[s[i]]; + if ((r == null ? void 0 : r.body.type) === e) + return !0; + } + return !1; + } + hasParts(e) { + var t; + return !!((t = this.activePartLists[e]) != null && t.length); + } + removeFragmentsInRange(e, t, s, i, r) { + i && !this.hasGaps || Object.keys(this.fragments).forEach((n) => { + const o = this.fragments[n]; + if (!o) + return; + const c = o.body; + c.type !== s || i && !c.gap || c.start < t && c.end > e && (o.buffered || r) && this.removeFragment(c); + }); + } + removeFragment(e) { + const t = ot(e); + e.clearElementaryStreamInfo(); + const s = this.activePartLists[e.type]; + if (s) { + const i = e.sn; + this.activePartLists[e.type] = hr(s, (r) => r.fragment.sn !== i); + } + delete this.fragments[t], e.endList && delete this.endListFragments[e.type]; + } + removeAllFragments() { + var e, t; + this.fragments = /* @__PURE__ */ Object.create(null), this.endListFragments = /* @__PURE__ */ Object.create(null), this.activePartLists = /* @__PURE__ */ Object.create(null), this.hasGaps = !1; + const s = (e = this.hls) == null || (t = e.latestLevelDetails) == null ? void 0 : t.partList; + s && s.forEach((i) => i.clearElementaryStreamInfo()); + } +} +function Gt(a) { + var e, t, s; + return a.buffered && (a.body.gap || ((e = a.range.video) == null ? void 0 : e.partial) || ((t = a.range.audio) == null ? void 0 : t.partial) || ((s = a.range.audiovideo) == null ? void 0 : s.partial)); +} +function ot(a) { + return `${a.type}_${a.level}_${a.sn}`; +} +function hr(a, e) { + return a.filter((t) => { + const s = e(t); + return s || t.clearElementaryStreamInfo(), s; + }); +} +var Qe = { + cbc: 0, + ctr: 1 +}; +class tl { + constructor(e, t, s) { + this.subtle = void 0, this.aesIV = void 0, this.aesMode = void 0, this.subtle = e, this.aesIV = t, this.aesMode = s; + } + decrypt(e, t) { + switch (this.aesMode) { + case Qe.cbc: + return this.subtle.decrypt({ + name: "AES-CBC", + iv: this.aesIV + }, t, e); + case Qe.ctr: + return this.subtle.decrypt( + { + name: "AES-CTR", + counter: this.aesIV, + length: 64 + }, + //64 : NIST SP800-38A standard suggests that the counter should occupy half of the counter block + t, + e + ); + default: + throw new Error(`[AESCrypto] invalid aes mode ${this.aesMode}`); + } + } +} +function sl(a) { + const e = a.byteLength, t = e && new DataView(a.buffer).getUint8(e - 1); + return t ? a.slice(0, e - t) : a; +} +class il { + constructor() { + this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.ksRows = 0, this.keySize = 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.initTable(); + } + // Using view.getUint32() also swaps the byte order. + uint8ArrayToUint32Array_(e) { + const t = new DataView(e), s = new Uint32Array(4); + for (let i = 0; i < 4; i++) + s[i] = t.getUint32(i * 4); + return s; + } + initTable() { + const e = this.sBox, t = this.invSBox, s = this.subMix, i = s[0], r = s[1], n = s[2], o = s[3], c = this.invSubMix, l = c[0], h = c[1], u = c[2], d = c[3], g = new Uint32Array(256); + let f = 0, E = 0, p = 0; + for (p = 0; p < 256; p++) + p < 128 ? g[p] = p << 1 : g[p] = p << 1 ^ 283; + for (p = 0; p < 256; p++) { + let y = E ^ E << 1 ^ E << 2 ^ E << 3 ^ E << 4; + y = y >>> 8 ^ y & 255 ^ 99, e[f] = y, t[y] = f; + const S = g[f], T = g[S], v = g[T]; + let x = g[y] * 257 ^ y * 16843008; + i[f] = x << 24 | x >>> 8, r[f] = x << 16 | x >>> 16, n[f] = x << 8 | x >>> 24, o[f] = x, x = v * 16843009 ^ T * 65537 ^ S * 257 ^ f * 16843008, l[y] = x << 24 | x >>> 8, h[y] = x << 16 | x >>> 16, u[y] = x << 8 | x >>> 24, d[y] = x, f ? (f = S ^ g[g[g[v ^ S]]], E ^= g[g[E]]) : f = E = 1; + } + } + expandKey(e) { + const t = this.uint8ArrayToUint32Array_(e); + let s = !0, i = 0; + for (; i < t.length && s; ) + s = t[i] === this.key[i], i++; + if (s) + return; + this.key = t; + const r = this.keySize = t.length; + if (r !== 4 && r !== 6 && r !== 8) + throw new Error("Invalid aes key size=" + r); + const n = this.ksRows = (r + 6 + 1) * 4; + let o, c; + const l = this.keySchedule = new Uint32Array(n), h = this.invKeySchedule = new Uint32Array(n), u = this.sBox, d = this.rcon, g = this.invSubMix, f = g[0], E = g[1], p = g[2], y = g[3]; + let S, T; + for (o = 0; o < n; o++) { + if (o < r) { + S = l[o] = t[o]; + continue; + } + T = S, o % r === 0 ? (T = T << 8 | T >>> 24, T = u[T >>> 24] << 24 | u[T >>> 16 & 255] << 16 | u[T >>> 8 & 255] << 8 | u[T & 255], T ^= d[o / r | 0] << 24) : r > 6 && o % r === 4 && (T = u[T >>> 24] << 24 | u[T >>> 16 & 255] << 16 | u[T >>> 8 & 255] << 8 | u[T & 255]), l[o] = S = (l[o - r] ^ T) >>> 0; + } + for (c = 0; c < n; c++) + o = n - c, c & 3 ? T = l[o] : T = l[o - 4], c < 4 || o <= 4 ? h[c] = T : h[c] = f[u[T >>> 24]] ^ E[u[T >>> 16 & 255]] ^ p[u[T >>> 8 & 255]] ^ y[u[T & 255]], h[c] = h[c] >>> 0; + } + // Adding this as a method greatly improves performance. + networkToHostOrderSwap(e) { + return e << 24 | (e & 65280) << 8 | (e & 16711680) >> 8 | e >>> 24; + } + decrypt(e, t, s) { + const i = this.keySize + 6, r = this.invKeySchedule, n = this.invSBox, o = this.invSubMix, c = o[0], l = o[1], h = o[2], u = o[3], d = this.uint8ArrayToUint32Array_(s); + let g = d[0], f = d[1], E = d[2], p = d[3]; + const y = new Int32Array(e), S = new Int32Array(y.length); + let T, v, x, _, A, R, D, L, k, M, V, P, U, F; + const B = this.networkToHostOrderSwap; + for (; t < y.length; ) { + for (k = B(y[t]), M = B(y[t + 1]), V = B(y[t + 2]), P = B(y[t + 3]), A = k ^ r[0], R = P ^ r[1], D = V ^ r[2], L = M ^ r[3], U = 4, F = 1; F < i; F++) + T = c[A >>> 24] ^ l[R >> 16 & 255] ^ h[D >> 8 & 255] ^ u[L & 255] ^ r[U], v = c[R >>> 24] ^ l[D >> 16 & 255] ^ h[L >> 8 & 255] ^ u[A & 255] ^ r[U + 1], x = c[D >>> 24] ^ l[L >> 16 & 255] ^ h[A >> 8 & 255] ^ u[R & 255] ^ r[U + 2], _ = c[L >>> 24] ^ l[A >> 16 & 255] ^ h[R >> 8 & 255] ^ u[D & 255] ^ r[U + 3], A = T, R = v, D = x, L = _, U = U + 4; + T = n[A >>> 24] << 24 ^ n[R >> 16 & 255] << 16 ^ n[D >> 8 & 255] << 8 ^ n[L & 255] ^ r[U], v = n[R >>> 24] << 24 ^ n[D >> 16 & 255] << 16 ^ n[L >> 8 & 255] << 8 ^ n[A & 255] ^ r[U + 1], x = n[D >>> 24] << 24 ^ n[L >> 16 & 255] << 16 ^ n[A >> 8 & 255] << 8 ^ n[R & 255] ^ r[U + 2], _ = n[L >>> 24] << 24 ^ n[A >> 16 & 255] << 16 ^ n[R >> 8 & 255] << 8 ^ n[D & 255] ^ r[U + 3], S[t] = B(T ^ g), S[t + 1] = B(_ ^ f), S[t + 2] = B(x ^ E), S[t + 3] = B(v ^ p), g = k, f = M, E = V, p = P, t = t + 4; + } + return S.buffer; + } +} +class rl { + constructor(e, t, s) { + this.subtle = void 0, this.key = void 0, this.aesMode = void 0, this.subtle = e, this.key = t, this.aesMode = s; + } + expandKey() { + const e = nl(this.aesMode); + return this.subtle.importKey("raw", this.key, { + name: e + }, !1, ["encrypt", "decrypt"]); + } +} +function nl(a) { + switch (a) { + case Qe.cbc: + return "AES-CBC"; + case Qe.ctr: + return "AES-CTR"; + default: + throw new Error(`[FastAESKey] invalid aes mode ${a}`); + } +} +const al = 16; +class Ti { + constructor(e, { + removePKCS7Padding: t = !0 + } = {}) { + if (this.logEnabled = !0, this.removePKCS7Padding = void 0, this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null, this.useSoftware = void 0, this.enableSoftwareAES = void 0, this.enableSoftwareAES = e.enableSoftwareAES, this.removePKCS7Padding = t, t) + try { + const s = self.crypto; + s && (this.subtle = s.subtle || s.webkitSubtle); + } catch { + } + this.useSoftware = !this.subtle; + } + destroy() { + this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null; + } + isSync() { + return this.useSoftware; + } + flush() { + const { + currentResult: e, + remainderData: t + } = this; + if (!e || t) + return this.reset(), null; + const s = new Uint8Array(e); + return this.reset(), this.removePKCS7Padding ? sl(s) : s; + } + reset() { + this.currentResult = null, this.currentIV = null, this.remainderData = null, this.softwareDecrypter && (this.softwareDecrypter = null); + } + decrypt(e, t, s, i) { + return this.useSoftware ? new Promise((r, n) => { + const o = ArrayBuffer.isView(e) ? e : new Uint8Array(e); + this.softwareDecrypt(o, t, s, i); + const c = this.flush(); + c ? r(c.buffer) : n(new Error("[softwareDecrypt] Failed to decrypt data")); + }) : this.webCryptoDecrypt(new Uint8Array(e), t, s, i); + } + // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached + // data is handled in the flush() call + softwareDecrypt(e, t, s, i) { + const { + currentIV: r, + currentResult: n, + remainderData: o + } = this; + if (i !== Qe.cbc || t.byteLength !== 16) + return J.warn("SoftwareDecrypt: can only handle AES-128-CBC"), null; + this.logOnce("JS AES decrypt"), o && (e = be(o, e), this.remainderData = null); + const c = this.getValidChunk(e); + if (!c.length) + return null; + r && (s = r); + let l = this.softwareDecrypter; + l || (l = this.softwareDecrypter = new il()), l.expandKey(t); + const h = n; + return this.currentResult = l.decrypt(c.buffer, 0, s), this.currentIV = c.slice(-16).buffer, h || null; + } + webCryptoDecrypt(e, t, s, i) { + if (this.key !== t || !this.fastAesKey) { + if (!this.subtle) + return Promise.resolve(this.onWebCryptoError(e, t, s, i)); + this.key = t, this.fastAesKey = new rl(this.subtle, t, i); + } + return this.fastAesKey.expandKey().then((r) => this.subtle ? (this.logOnce("WebCrypto AES decrypt"), new tl(this.subtle, new Uint8Array(s), i).decrypt(e.buffer, r)) : Promise.reject(new Error("web crypto not initialized"))).catch((r) => (J.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${r.name}: ${r.message}`), this.onWebCryptoError(e, t, s, i))); + } + onWebCryptoError(e, t, s, i) { + const r = this.enableSoftwareAES; + if (r) { + this.useSoftware = !0, this.logEnabled = !0, this.softwareDecrypt(e, t, s, i); + const n = this.flush(); + if (n) + return n.buffer; + } + throw new Error("WebCrypto" + (r ? " and softwareDecrypt" : "") + ": failed to decrypt data"); + } + getValidChunk(e) { + let t = e; + const s = e.length - e.length % al; + return s !== e.length && (t = e.slice(0, s), this.remainderData = e.slice(s)), t; + } + logOnce(e) { + this.logEnabled && (J.log(`[decrypter]: ${e}`), this.logEnabled = !1); + } +} +const ur = Math.pow(2, 17); +class ol { + constructor(e) { + this.config = void 0, this.loader = null, this.partLoadTimeout = -1, this.config = e; + } + destroy() { + this.loader && (this.loader.destroy(), this.loader = null); + } + abort() { + this.loader && this.loader.abort(); + } + load(e, t) { + const s = e.url; + if (!s) + return Promise.reject(new $e({ + type: K.NETWORK_ERROR, + details: b.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + error: new Error(`Fragment does not have a ${s ? "part list" : "url"}`), + networkDetails: null + })); + this.abort(); + const i = this.config, r = i.fLoader, n = i.loader; + return new Promise((o, c) => { + if (this.loader && this.loader.destroy(), e.gap) + if (e.tagList.some((f) => f[0] === "GAP")) { + c(fr(e)); + return; + } else + e.gap = !1; + const l = this.loader = r ? new r(i) : new n(i), h = dr(e); + e.loader = l; + const u = cr(i.fragLoadPolicy.default), d = { + loadPolicy: u, + timeout: u.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: e.sn === "initSegment" ? 1 / 0 : ur + }; + e.stats = l.stats; + const g = { + onSuccess: (f, E, p, y) => { + this.resetLoader(e, l); + let S = f.data; + p.resetIV && e.decryptdata && (e.decryptdata.iv = new Uint8Array(S.slice(0, 16)), S = S.slice(16)), o({ + frag: e, + part: null, + payload: S, + networkDetails: y + }); + }, + onError: (f, E, p, y) => { + this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + response: te({ + url: s, + data: void 0 + }, f), + error: new Error(`HTTP Error ${f.code} ${f.text}`), + networkDetails: p, + stats: y + })); + }, + onAbort: (f, E, p) => { + this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.INTERNAL_ABORTED, + fatal: !1, + frag: e, + error: new Error("Aborted"), + networkDetails: p, + stats: f + })); + }, + onTimeout: (f, E, p) => { + this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.FRAG_LOAD_TIMEOUT, + fatal: !1, + frag: e, + error: new Error(`Timeout after ${d.timeout}ms`), + networkDetails: p, + stats: f + })); + } + }; + t && (g.onProgress = (f, E, p, y) => t({ + frag: e, + part: null, + payload: p, + networkDetails: y + })), l.load(h, d, g); + }); + } + loadPart(e, t, s) { + this.abort(); + const i = this.config, r = i.fLoader, n = i.loader; + return new Promise((o, c) => { + if (this.loader && this.loader.destroy(), e.gap || t.gap) { + c(fr(e, t)); + return; + } + const l = this.loader = r ? new r(i) : new n(i), h = dr(e, t); + e.loader = l; + const u = cr(i.fragLoadPolicy.default), d = { + loadPolicy: u, + timeout: u.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0, + highWaterMark: ur + }; + t.stats = l.stats, l.load(h, d, { + onSuccess: (g, f, E, p) => { + this.resetLoader(e, l), this.updateStatsFromPart(e, t); + const y = { + frag: e, + part: t, + payload: g.data, + networkDetails: p + }; + s(y), o(y); + }, + onError: (g, f, E, p) => { + this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.FRAG_LOAD_ERROR, + fatal: !1, + frag: e, + part: t, + response: te({ + url: h.url, + data: void 0 + }, g), + error: new Error(`HTTP Error ${g.code} ${g.text}`), + networkDetails: E, + stats: p + })); + }, + onAbort: (g, f, E) => { + e.stats.aborted = t.stats.aborted, this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.INTERNAL_ABORTED, + fatal: !1, + frag: e, + part: t, + error: new Error("Aborted"), + networkDetails: E, + stats: g + })); + }, + onTimeout: (g, f, E) => { + this.resetLoader(e, l), c(new $e({ + type: K.NETWORK_ERROR, + details: b.FRAG_LOAD_TIMEOUT, + fatal: !1, + frag: e, + part: t, + error: new Error(`Timeout after ${d.timeout}ms`), + networkDetails: E, + stats: g + })); + } + }); + }); + } + updateStatsFromPart(e, t) { + const s = e.stats, i = t.stats, r = i.total; + if (s.loaded += i.loaded, r) { + const c = Math.round(e.duration / t.duration), l = Math.min(Math.round(s.loaded / r), c), u = (c - l) * Math.round(s.loaded / l); + s.total = s.loaded + u; + } else + s.total = Math.max(s.loaded, s.total); + const n = s.loading, o = i.loading; + n.start ? n.first += o.first - o.start : (n.start = o.start, n.first = o.first), n.end = o.end; + } + resetLoader(e, t) { + e.loader = null, this.loader === t && (self.clearTimeout(this.partLoadTimeout), this.loader = null), t.destroy(); + } +} +function dr(a, e = null) { + const t = e || a, s = { + frag: a, + part: e, + responseType: "arraybuffer", + url: t.url, + headers: {}, + rangeStart: 0, + rangeEnd: 0 + }, i = t.byteRangeStartOffset, r = t.byteRangeEndOffset; + if (N(i) && N(r)) { + var n; + let o = i, c = r; + if (a.sn === "initSegment" && ll((n = a.decryptdata) == null ? void 0 : n.method)) { + const l = r - i; + l % 16 && (c = r + (16 - l % 16)), i !== 0 && (s.resetIV = !0, o = i - 16); + } + s.rangeStart = o, s.rangeEnd = c; + } + return s; +} +function fr(a, e) { + const t = new Error(`GAP ${a.gap ? "tag" : "attribute"} found`), s = { + type: K.MEDIA_ERROR, + details: b.FRAG_GAP, + fatal: !1, + frag: a, + error: t, + networkDetails: null + }; + return e && (s.part = e), (e || a).stats.aborted = !0, new $e(s); +} +function ll(a) { + return a === "AES-128" || a === "AES-256"; +} +class $e extends Error { + constructor(e) { + super(e.error.message), this.data = void 0, this.data = e; + } +} +class Nn extends Ve { + constructor(e, t) { + super(e, t), this._boundTick = void 0, this._tickTimer = null, this._tickInterval = null, this._tickCallCount = 0, this._boundTick = this.tick.bind(this); + } + destroy() { + this.onHandlerDestroying(), this.onHandlerDestroyed(); + } + onHandlerDestroying() { + this.clearNextTick(), this.clearInterval(); + } + onHandlerDestroyed() { + } + hasInterval() { + return !!this._tickInterval; + } + hasNextTick() { + return !!this._tickTimer; + } + /** + * @param millis - Interval time (ms) + * @eturns True when interval has been scheduled, false when already scheduled (no effect) + */ + setInterval(e) { + return this._tickInterval ? !1 : (this._tickCallCount = 0, this._tickInterval = self.setInterval(this._boundTick, e), !0); + } + /** + * @returns True when interval was cleared, false when none was set (no effect) + */ + clearInterval() { + return this._tickInterval ? (self.clearInterval(this._tickInterval), this._tickInterval = null, !0) : !1; + } + /** + * @returns True when timeout was cleared, false when none was set (no effect) + */ + clearNextTick() { + return this._tickTimer ? (self.clearTimeout(this._tickTimer), this._tickTimer = null, !0) : !1; + } + /** + * Will call the subclass doTick implementation in this main loop tick + * or in the next one (via setTimeout(,0)) in case it has already been called + * in this tick (in case this is a re-entrant call). + */ + tick() { + this._tickCallCount++, this._tickCallCount === 1 && (this.doTick(), this._tickCallCount > 1 && this.tickImmediate(), this._tickCallCount = 0); + } + tickImmediate() { + this.clearNextTick(), this._tickTimer = self.setTimeout(this._boundTick, 0); + } + /** + * For subclass to implement task logic + * @abstract + */ + doTick() { + } +} +class Si { + constructor(e, t, s, i = 0, r = -1, n = !1) { + this.level = void 0, this.sn = void 0, this.part = void 0, this.id = void 0, this.size = void 0, this.partial = void 0, this.transmuxing = Kt(), this.buffering = { + audio: Kt(), + video: Kt(), + audiovideo: Kt() + }, this.level = e, this.sn = t, this.id = s, this.size = i, this.part = r, this.partial = n; + } +} +function Kt() { + return { + start: 0, + executeStart: 0, + executeEnd: 0, + end: 0 + }; +} +const gr = { + length: 0, + start: () => 0, + end: () => 0 +}; +class q { + /** + * Return true if `media`'s buffered include `position` + */ + static isBuffered(e, t) { + if (e) { + const s = q.getBuffered(e); + for (let i = s.length; i--; ) + if (t >= s.start(i) && t <= s.end(i)) + return !0; + } + return !1; + } + static bufferedRanges(e) { + if (e) { + const t = q.getBuffered(e); + return q.timeRangesToArray(t); + } + return []; + } + static timeRangesToArray(e) { + const t = []; + for (let s = 0; s < e.length; s++) + t.push({ + start: e.start(s), + end: e.end(s) + }); + return t; + } + static bufferInfo(e, t, s) { + if (e) { + const i = q.bufferedRanges(e); + if (i.length) + return q.bufferedInfo(i, t, s); + } + return { + len: 0, + start: t, + end: t, + bufferedIndex: -1 + }; + } + static bufferedInfo(e, t, s) { + t = Math.max(0, t), e.length > 1 && e.sort((h, u) => h.start - u.start || u.end - h.end); + let i = -1, r = []; + if (s) + for (let h = 0; h < e.length; h++) { + t >= e[h].start && t <= e[h].end && (i = h); + const u = r.length; + if (u) { + const d = r[u - 1].end; + e[h].start - d < s ? e[h].end > d && (r[u - 1].end = e[h].end) : r.push(e[h]); + } else + r.push(e[h]); + } + else + r = e; + let n = 0, o, c = t, l = t; + for (let h = 0; h < r.length; h++) { + const u = r[h].start, d = r[h].end; + if (i === -1 && t >= u && t <= d && (i = h), t + s >= u && t < d) + c = u, l = d, n = l - t; + else if (t + s < u) { + o = u; + break; + } + } + return { + len: n, + start: c || 0, + end: l || 0, + nextStart: o, + buffered: e, + bufferedIndex: i + }; + } + /** + * Safe method to get buffered property. + * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource + */ + static getBuffered(e) { + try { + return e.buffered || gr; + } catch (t) { + return J.log("failed to get media.buffered", t), gr; + } + } +} +const Bn = /\{\$([a-zA-Z0-9-_]+)\}/g; +function mr(a) { + return Bn.test(a); +} +function si(a, e) { + if (a.variableList !== null || a.hasVariableRefs) { + const t = a.variableList; + return e.replace(Bn, (s) => { + const i = s.substring(2, s.length - 1), r = t == null ? void 0 : t[i]; + return r === void 0 ? (a.playlistParsingError || (a.playlistParsingError = new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)), s) : r; + }); + } + return e; +} +function pr(a, e, t) { + let s = a.variableList; + s || (a.variableList = s = {}); + let i, r; + if ("QUERYPARAM" in e) { + i = e.QUERYPARAM; + try { + const n = new self.URL(t).searchParams; + if (n.has(i)) + r = n.get(i); + else + throw new Error(`"${i}" does not match any query parameter in URI: "${t}"`); + } catch (n) { + a.playlistParsingError || (a.playlistParsingError = new Error(`EXT-X-DEFINE QUERYPARAM: ${n.message}`)); + } + } else + i = e.NAME, r = e.VALUE; + i in s ? a.playlistParsingError || (a.playlistParsingError = new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)) : s[i] = r || ""; +} +function cl(a, e, t) { + const s = e.IMPORT; + if (t && s in t) { + let i = a.variableList; + i || (a.variableList = i = {}), i[s] = t[s]; + } else + a.playlistParsingError || (a.playlistParsingError = new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`)); +} +const hl = /^(\d+)x(\d+)$/, Er = /(.+?)=(".*?"|.*?)(?:,|$)/g; +class oe { + constructor(e, t) { + typeof e == "string" && (e = oe.parseAttrList(e, t)), ie(this, e); + } + get clientAttrs() { + return Object.keys(this).filter((e) => e.substring(0, 2) === "X-"); + } + decimalInteger(e) { + const t = parseInt(this[e], 10); + return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t; + } + hexadecimalInteger(e) { + if (this[e]) { + let t = (this[e] || "0x").slice(2); + t = (t.length & 1 ? "0" : "") + t; + const s = new Uint8Array(t.length / 2); + for (let i = 0; i < t.length / 2; i++) + s[i] = parseInt(t.slice(i * 2, i * 2 + 2), 16); + return s; + } + return null; + } + hexadecimalIntegerAsNumber(e) { + const t = parseInt(this[e], 16); + return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t; + } + decimalFloatingPoint(e) { + return parseFloat(this[e]); + } + optionalFloat(e, t) { + const s = this[e]; + return s ? parseFloat(s) : t; + } + enumeratedString(e) { + return this[e]; + } + enumeratedStringList(e, t) { + const s = this[e]; + return (s ? s.split(/[ ,]+/) : []).reduce((i, r) => (i[r.toLowerCase()] = !0, i), t); + } + bool(e) { + return this[e] === "YES"; + } + decimalResolution(e) { + const t = hl.exec(this[e]); + if (t !== null) + return { + width: parseInt(t[1], 10), + height: parseInt(t[2], 10) + }; + } + static parseAttrList(e, t) { + let s; + const i = {}, r = '"'; + for (Er.lastIndex = 0; (s = Er.exec(e)) !== null; ) { + const n = s[1].trim(); + let o = s[2]; + const c = o.indexOf(r) === 0 && o.lastIndexOf(r) === o.length - 1; + let l = !1; + if (c) + o = o.slice(1, -1); + else + switch (n) { + case "IV": + case "SCTE35-CMD": + case "SCTE35-IN": + case "SCTE35-OUT": + l = !0; + } + if (t && (c || l)) + o = si(t, o); + else if (!l && !c) + switch (n) { + case "CLOSED-CAPTIONS": + if (o === "NONE") + break; + case "ALLOWED-CPC": + case "CLASS": + case "ASSOC-LANGUAGE": + case "AUDIO": + case "BYTERANGE": + case "CHANNELS": + case "CHARACTERISTICS": + case "CODECS": + case "DATA-ID": + case "END-DATE": + case "GROUP-ID": + case "ID": + case "IMPORT": + case "INSTREAM-ID": + case "KEYFORMAT": + case "KEYFORMATVERSIONS": + case "LANGUAGE": + case "NAME": + case "PATHWAY-ID": + case "QUERYPARAM": + case "RECENTLY-REMOVED-DATERANGES": + case "SERVER-URI": + case "STABLE-RENDITION-ID": + case "STABLE-VARIANT-ID": + case "START-DATE": + case "SUBTITLES": + case "SUPPLEMENTAL-CODECS": + case "URI": + case "VALUE": + case "VIDEO": + case "X-ASSET-LIST": + case "X-ASSET-URI": + J.warn(`${e}: attribute ${n} is missing quotes`); + } + i[n] = o; + } + return i; + } +} +const ul = "com.apple.hls.interstitial"; +function dl(a) { + return a !== "ID" && a !== "CLASS" && a !== "CUE" && a !== "START-DATE" && a !== "DURATION" && a !== "END-DATE" && a !== "END-ON-NEXT"; +} +function fl(a) { + return a === "SCTE35-OUT" || a === "SCTE35-IN" || a === "SCTE35-CMD"; +} +class Un { + constructor(e, t, s = 0) { + var i; + if (this.attr = void 0, this.tagAnchor = void 0, this.tagOrder = void 0, this._startDate = void 0, this._endDate = void 0, this._dateAtEnd = void 0, this._cue = void 0, this._badValueForSameId = void 0, this.tagAnchor = (t == null ? void 0 : t.tagAnchor) || null, this.tagOrder = (i = t == null ? void 0 : t.tagOrder) != null ? i : s, t) { + const r = t.attr; + for (const n in r) + if (Object.prototype.hasOwnProperty.call(e, n) && e[n] !== r[n]) { + J.warn(`DATERANGE tag attribute: "${n}" does not match for tags with ID: "${e.ID}"`), this._badValueForSameId = n; + break; + } + e = ie(new oe({}), r, e); + } + if (this.attr = e, t ? (this._startDate = t._startDate, this._cue = t._cue, this._endDate = t._endDate, this._dateAtEnd = t._dateAtEnd) : this._startDate = new Date(e["START-DATE"]), "END-DATE" in this.attr) { + const r = (t == null ? void 0 : t.endDate) || new Date(this.attr["END-DATE"]); + N(r.getTime()) && (this._endDate = r); + } + } + get id() { + return this.attr.ID; + } + get class() { + return this.attr.CLASS; + } + get cue() { + const e = this._cue; + return e === void 0 ? this._cue = this.attr.enumeratedStringList(this.attr.CUE ? "CUE" : "X-CUE", { + pre: !1, + post: !1, + once: !1 + }) : e; + } + get startTime() { + const { + tagAnchor: e + } = this; + return e === null || e.programDateTime === null ? (J.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${e}`), NaN) : e.start + (this.startDate.getTime() - e.programDateTime) / 1e3; + } + get startDate() { + return this._startDate; + } + get endDate() { + const e = this._endDate || this._dateAtEnd; + if (e) + return e; + const t = this.duration; + return t !== null ? this._dateAtEnd = new Date(this._startDate.getTime() + t * 1e3) : null; + } + get duration() { + if ("DURATION" in this.attr) { + const e = this.attr.decimalFloatingPoint("DURATION"); + if (N(e)) + return e; + } else if (this._endDate) + return (this._endDate.getTime() - this._startDate.getTime()) / 1e3; + return null; + } + get plannedDuration() { + return "PLANNED-DURATION" in this.attr ? this.attr.decimalFloatingPoint("PLANNED-DURATION") : null; + } + get endOnNext() { + return this.attr.bool("END-ON-NEXT"); + } + get isInterstitial() { + return this.class === ul; + } + get isValid() { + return !!this.id && !this._badValueForSameId && N(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class) && (!this.attr.CUE || !this.cue.pre && !this.cue.post || this.cue.pre !== this.cue.post) && (!this.isInterstitial || "X-ASSET-URI" in this.attr || "X-ASSET-LIST" in this.attr); + } +} +const gl = 10; +class ml { + constructor(e) { + this.PTSKnown = !1, this.alignedSliding = !1, this.averagetargetduration = void 0, this.endCC = 0, this.endSN = 0, this.fragments = void 0, this.fragmentHint = void 0, this.partList = null, this.dateRanges = void 0, this.dateRangeTagCount = 0, this.live = !0, this.requestScheduled = -1, this.ageHeader = 0, this.advancedDateTime = void 0, this.updated = !0, this.advanced = !0, this.misses = 0, this.startCC = 0, this.startSN = 0, this.startTimeOffset = null, this.targetduration = 0, this.totalduration = 0, this.type = null, this.url = void 0, this.m3u8 = "", this.version = null, this.canBlockReload = !1, this.canSkipUntil = 0, this.canSkipDateRanges = !1, this.skippedSegments = 0, this.recentlyRemovedDateranges = void 0, this.partHoldBack = 0, this.holdBack = 0, this.partTarget = 0, this.preloadHint = void 0, this.renditionReports = void 0, this.tuneInGoal = 0, this.deltaUpdateFailed = void 0, this.driftStartTime = 0, this.driftEndTime = 0, this.driftStart = 0, this.driftEnd = 0, this.encryptedFragments = void 0, this.playlistParsingError = null, this.variableList = null, this.hasVariableRefs = !1, this.appliedTimelineOffset = void 0, this.fragments = [], this.encryptedFragments = [], this.dateRanges = {}, this.url = e; + } + reloaded(e) { + if (!e) { + this.advanced = !0, this.updated = !0; + return; + } + const t = this.lastPartSn - e.lastPartSn, s = this.lastPartIndex - e.lastPartIndex; + this.updated = this.endSN !== e.endSN || !!s || !!t || !this.live, this.advanced = this.endSN > e.endSN || t > 0 || t === 0 && s > 0, this.updated || this.advanced ? this.misses = Math.floor(e.misses * 0.6) : this.misses = e.misses + 1; + } + get hasProgramDateTime() { + return this.fragments.length ? N(this.fragments[this.fragments.length - 1].programDateTime) : !1; + } + get levelTargetDuration() { + return this.averagetargetduration || this.targetduration || gl; + } + get drift() { + const e = this.driftEndTime - this.driftStartTime; + return e > 0 ? (this.driftEnd - this.driftStart) * 1e3 / e : 1; + } + get edge() { + return this.partEnd || this.fragmentEnd; + } + get partEnd() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].end : this.fragmentEnd; + } + get fragmentEnd() { + var e; + return (e = this.fragments) != null && e.length ? this.fragments[this.fragments.length - 1].end : 0; + } + get fragmentStart() { + var e; + return (e = this.fragments) != null && e.length ? this.fragments[0].start : 0; + } + get age() { + return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0; + } + get lastPartIndex() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].index : -1; + } + get maxPartIndex() { + const e = this.partList; + if (e) { + const t = this.lastPartIndex; + if (t !== -1) { + for (let s = e.length; s--; ) + if (e[s].index > t) + return e[s].index; + return t; + } + } + return 0; + } + get lastPartSn() { + var e; + return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].fragment.sn : this.endSN; + } + get expired() { + if (this.live && this.age && this.misses < 3) { + const e = this.partEnd - this.fragmentStart; + return this.age > Math.max(e, this.totalduration) + this.levelTargetDuration; + } + return !1; + } +} +function ft(a) { + return a === "AES-128" || a === "AES-256" || a === "AES-256-CTR"; +} +function vi(a) { + switch (a) { + case "AES-128": + case "AES-256": + return Qe.cbc; + case "AES-256-CTR": + return Qe.ctr; + default: + throw new Error(`invalid full segment method ${a}`); + } +} +function xi(a) { + return Uint8Array.from(atob(a), (e) => e.charCodeAt(0)); +} +function ii(a) { + return Uint8Array.from(unescape(encodeURIComponent(a)), (e) => e.charCodeAt(0)); +} +function pl(a) { + const e = ii(a).subarray(0, 16), t = new Uint8Array(16); + return t.set(e, 16 - e.length), t; +} +function El(a) { + const e = function(s, i, r) { + const n = s[i]; + s[i] = s[r], s[r] = n; + }; + e(a, 0, 3), e(a, 1, 2), e(a, 4, 5), e(a, 6, 7); +} +function yl(a) { + const e = a.split(":"); + let t = null; + if (e[0] === "data" && e.length === 2) { + const s = e[1].split(";"), i = s[s.length - 1].split(","); + if (i.length === 2) { + const r = i[0] === "base64", n = i[1]; + r ? (s.splice(-1, 1), t = xi(n)) : t = pl(n); + } + } + return t; +} +const ps = typeof self < "u" ? self : void 0; +var se = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.fps", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "com.widevine.alpha" +}, ye = { + CLEARKEY: "org.w3.clearkey", + FAIRPLAY: "com.apple.streamingkeydelivery", + PLAYREADY: "com.microsoft.playready", + WIDEVINE: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" +}; +function is(a) { + switch (a) { + case ye.FAIRPLAY: + return se.FAIRPLAY; + case ye.PLAYREADY: + return se.PLAYREADY; + case ye.WIDEVINE: + return se.WIDEVINE; + case ye.CLEARKEY: + return se.CLEARKEY; + } +} +var Vt = { + CENC: "1077efecc0b24d02ace33c1e52e2fb4b", + CLEARKEY: "e2719d58a985b3c9781ab030af78d30e", + PLAYREADY: "9a04f07998404286ab92e65be0885f95", + WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed" +}; +function ks(a) { + if (a === Vt.WIDEVINE) + return se.WIDEVINE; + if (a === Vt.PLAYREADY) + return se.PLAYREADY; + if (a === Vt.CENC || a === Vt.CLEARKEY) + return se.CLEARKEY; +} +function Ht(a) { + switch (a) { + case se.FAIRPLAY: + return ye.FAIRPLAY; + case se.PLAYREADY: + return ye.PLAYREADY; + case se.WIDEVINE: + return ye.WIDEVINE; + case se.CLEARKEY: + return ye.CLEARKEY; + } +} +function At(a) { + const { + drmSystems: e, + widevineLicenseUrl: t + } = a, s = e ? [se.FAIRPLAY, se.WIDEVINE, se.PLAYREADY, se.CLEARKEY].filter((i) => !!e[i]) : []; + return !s[se.WIDEVINE] && t && s.push(se.WIDEVINE), s; +} +const $n = function(a) { + return ps != null && (a = ps.navigator) != null && a.requestMediaKeySystemAccess ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator) : null; +}(); +function Tl(a, e, t, s) { + let i; + switch (a) { + case se.FAIRPLAY: + i = ["cenc", "sinf"]; + break; + case se.WIDEVINE: + case se.PLAYREADY: + i = ["cenc"]; + break; + case se.CLEARKEY: + i = ["cenc", "keyids"]; + break; + default: + throw new Error(`Unknown key-system: ${a}`); + } + return Sl(i, e, t, s); +} +function Sl(a, e, t, s) { + return [{ + initDataTypes: a, + persistentState: s.persistentState || "optional", + distinctiveIdentifier: s.distinctiveIdentifier || "optional", + sessionTypes: s.sessionTypes || [s.sessionType || "temporary"], + audioCapabilities: e.map((r) => ({ + contentType: `audio/mp4; codecs=${r}`, + robustness: s.audioRobustness || "", + encryptionScheme: s.audioEncryptionScheme || null + })), + videoCapabilities: t.map((r) => ({ + contentType: `video/mp4; codecs=${r}`, + robustness: s.videoRobustness || "", + encryptionScheme: s.videoEncryptionScheme || null + })) + }]; +} +function vl(a) { + var e; + return a.sessionType === "persistent-license" || !!((e = a.sessionTypes) != null && e.some((t) => t === "persistent-license")); +} +function Gn(a) { + const e = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2), t = String.fromCharCode.apply(null, Array.from(e)), s = t.substring(t.indexOf("<"), t.length), n = new DOMParser().parseFromString(s, "text/xml").getElementsByTagName("KID")[0]; + if (n) { + const o = n.childNodes[0] ? n.childNodes[0].nodeValue : n.getAttribute("VALUE"); + if (o) { + const c = xi(o).subarray(0, 16); + return El(c), c; + } + } + return null; +} +let Yt = {}; +class kt { + static clearKeyUriToKeyIdMap() { + Yt = {}; + } + constructor(e, t, s, i = [1], r = null) { + this.uri = void 0, this.method = void 0, this.keyFormat = void 0, this.keyFormatVersions = void 0, this.encrypted = void 0, this.isCommonEncryption = void 0, this.iv = null, this.key = null, this.keyId = null, this.pssh = null, this.method = e, this.uri = t, this.keyFormat = s, this.keyFormatVersions = i, this.iv = r, this.encrypted = e ? e !== "NONE" : !1, this.isCommonEncryption = this.encrypted && !ft(e); + } + isSupported() { + if (this.method) { + if (ft(this.method) || this.method === "NONE") + return !0; + if (this.keyFormat === "identity") + return this.method === "SAMPLE-AES"; + switch (this.keyFormat) { + case ye.FAIRPLAY: + case ye.WIDEVINE: + case ye.PLAYREADY: + case ye.CLEARKEY: + return ["ISO-23001-7", "SAMPLE-AES", "SAMPLE-AES-CENC", "SAMPLE-AES-CTR"].indexOf(this.method) !== -1; + } + } + return !1; + } + getDecryptData(e) { + if (!this.encrypted || !this.uri) + return null; + if (ft(this.method) && this.uri && !this.iv) { + typeof e != "number" && (J.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`), e = 0); + const s = xl(e); + return new kt(this.method, this.uri, "identity", this.keyFormatVersions, s); + } + const t = yl(this.uri); + if (t) + switch (this.keyFormat) { + case ye.WIDEVINE: + this.pssh = t, t.length >= 22 && (this.keyId = t.subarray(t.length - 22, t.length - 6)); + break; + case ye.PLAYREADY: { + const s = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]); + this.pssh = _o(s, null, t), this.keyId = Gn(t); + break; + } + default: { + let s = t.subarray(0, 16); + if (s.length !== 16) { + const i = new Uint8Array(16); + i.set(s, 16 - s.length), s = i; + } + this.keyId = s; + break; + } + } + if (!this.keyId || this.keyId.byteLength !== 16) { + let s = Yt[this.uri]; + if (!s) { + const i = Object.keys(Yt).length % Number.MAX_SAFE_INTEGER; + s = new Uint8Array(16), new DataView(s.buffer, 12, 4).setUint32(0, i), Yt[this.uri] = s; + } + this.keyId = s; + } + return this; + } +} +function xl(a) { + const e = new Uint8Array(16); + for (let t = 12; t < 16; t++) + e[t] = a >> 8 * (15 - t) & 255; + return e; +} +const yr = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g, Tr = /#EXT-X-MEDIA:(.*)/g, Al = /^#EXT(?:INF|-X-TARGETDURATION):/m, ws = new RegExp([ + /#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, + // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title + /(?!#) *(\S[^\r\n]*)/.source, + // segment URI, group 3 => the URI (note newline is not eaten) + /#.*/.source + // All other non-segment oriented tags will match with all groups empty +].join("|"), "g"), Ll = new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\r?\n?/.source].join("|")); +class Me { + static findGroup(e, t) { + for (let s = 0; s < e.length; s++) { + const i = e[s]; + if (i.id === t) + return i; + } + } + static resolve(e, t) { + return mi.buildAbsoluteURL(t, e, { + alwaysNormalize: !0 + }); + } + static isMediaPlaylist(e) { + return Al.test(e); + } + static parseMasterPlaylist(e, t) { + const s = mr(e), i = { + contentSteering: null, + levels: [], + playlistParsingError: null, + sessionData: null, + sessionKeys: null, + startTimeOffset: null, + variableList: null, + hasVariableRefs: s + }, r = []; + yr.lastIndex = 0; + let n; + for (; (n = yr.exec(e)) != null; ) + if (n[1]) { + var o; + const l = new oe(n[1], i), h = si(i, n[2]), u = { + attrs: l, + bitrate: l.decimalInteger("BANDWIDTH") || l.decimalInteger("AVERAGE-BANDWIDTH"), + name: l.NAME, + url: Me.resolve(h, t) + }, d = l.decimalResolution("RESOLUTION"); + d && (u.width = d.width, u.height = d.height), xr(l.CODECS, u); + const g = l["SUPPLEMENTAL-CODECS"]; + g && (u.supplemental = {}, xr(g, u.supplemental)), (o = u.unknownCodecs) != null && o.length || r.push(u), i.levels.push(u); + } else if (n[3]) { + const l = n[3], h = n[4]; + switch (l) { + case "SESSION-DATA": { + const u = new oe(h, i), d = u["DATA-ID"]; + d && (i.sessionData === null && (i.sessionData = {}), i.sessionData[d] = u); + break; + } + case "SESSION-KEY": { + const u = Sr(h, t, i); + u.encrypted && u.isSupported() ? (i.sessionKeys === null && (i.sessionKeys = []), i.sessionKeys.push(u)) : J.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "${h}"`); + break; + } + case "DEFINE": { + { + const u = new oe(h, i); + pr(i, u, t); + } + break; + } + case "CONTENT-STEERING": { + const u = new oe(h, i); + i.contentSteering = { + uri: Me.resolve(u["SERVER-URI"], t), + pathwayId: u["PATHWAY-ID"] || "." + }; + break; + } + case "START": { + i.startTimeOffset = vr(h); + break; + } + } + } + const c = r.length > 0 && r.length < i.levels.length; + return i.levels = c ? r : i.levels, i.levels.length === 0 && (i.playlistParsingError = new Error("no levels found in manifest")), i; + } + static parseMasterPlaylistMedia(e, t, s) { + let i; + const r = {}, n = s.levels, o = { + AUDIO: n.map((l) => ({ + id: l.attrs.AUDIO, + audioCodec: l.audioCodec + })), + SUBTITLES: n.map((l) => ({ + id: l.attrs.SUBTITLES, + textCodec: l.textCodec + })), + "CLOSED-CAPTIONS": [] + }; + let c = 0; + for (Tr.lastIndex = 0; (i = Tr.exec(e)) !== null; ) { + const l = new oe(i[1], s), h = l.TYPE; + if (h) { + const u = o[h], d = r[h] || []; + r[h] = d; + const g = l.LANGUAGE, f = l["ASSOC-LANGUAGE"], E = l.CHANNELS, p = l.CHARACTERISTICS, y = l["INSTREAM-ID"], S = { + attrs: l, + bitrate: 0, + id: c++, + groupId: l["GROUP-ID"] || "", + name: l.NAME || g || "", + type: h, + default: l.bool("DEFAULT"), + autoselect: l.bool("AUTOSELECT"), + forced: l.bool("FORCED"), + lang: g, + url: l.URI ? Me.resolve(l.URI, t) : "" + }; + if (f && (S.assocLang = f), E && (S.channels = E), p && (S.characteristics = p), y && (S.instreamId = y), u != null && u.length) { + const T = Me.findGroup(u, S.groupId) || u[0]; + Ar(S, T, "audioCodec"), Ar(S, T, "textCodec"); + } + d.push(S); + } + } + return r; + } + static parseLevelPlaylist(e, t, s, i, r, n) { + var o; + const c = { + url: t + }, l = new ml(t), h = l.fragments, u = []; + let d = null, g = 0, f = 0, E = 0, p = 0, y = 0, S = null, T = new _s(i, c), v, x, _, A = -1, R = !1, D = null, L; + if (ws.lastIndex = 0, l.m3u8 = e, l.hasVariableRefs = mr(e), ((o = ws.exec(e)) == null ? void 0 : o[0]) !== "#EXTM3U") + return l.playlistParsingError = new Error("Missing format identifier #EXTM3U"), l; + for (; (v = ws.exec(e)) !== null; ) { + R && (R = !1, T = new _s(i, c), T.playlistOffset = E, T.start = E, T.sn = g, T.cc = p, y && (T.bitrate = y), T.level = s, d && (T.initSegment = d, d.rawProgramDateTime && (T.rawProgramDateTime = d.rawProgramDateTime, d.rawProgramDateTime = null), D && (T.setByteRange(D), D = null))); + const P = v[1]; + if (P) { + T.duration = parseFloat(P); + const U = (" " + v[2]).slice(1); + T.title = U || null, T.tagList.push(U ? ["INF", P, U] : ["INF", P]); + } else if (v[3]) { + if (N(T.duration)) { + T.playlistOffset = E, T.start = E, _ && Ir(T, _, l), T.sn = g, T.level = s, T.cc = p, h.push(T); + const U = (" " + v[3]).slice(1); + T.relurl = si(l, U), ri(T, S, u), S = T, E += T.duration, g++, f = 0, R = !0; + } + } else { + if (v = v[0].match(Ll), !v) { + J.warn("No matches on slow regex match for level playlist!"); + continue; + } + for (x = 1; x < v.length && v[x] === void 0; x++) + ; + const U = (" " + v[x]).slice(1), F = (" " + v[x + 1]).slice(1), B = v[x + 2] ? (" " + v[x + 2]).slice(1) : null; + switch (U) { + case "BYTERANGE": + S ? T.setByteRange(F, S) : T.setByteRange(F); + break; + case "PROGRAM-DATE-TIME": + T.rawProgramDateTime = F, T.tagList.push(["PROGRAM-DATE-TIME", F]), A === -1 && (A = h.length); + break; + case "PLAYLIST-TYPE": + l.type && Be(l, U, v), l.type = F.toUpperCase(); + break; + case "MEDIA-SEQUENCE": + l.startSN !== 0 ? Be(l, U, v) : h.length > 0 && Rr(l, U, v), g = l.startSN = parseInt(F); + break; + case "SKIP": { + l.skippedSegments && Be(l, U, v); + const G = new oe(F, l), w = G.decimalInteger("SKIPPED-SEGMENTS"); + if (N(w)) { + l.skippedSegments += w; + for (let W = w; W--; ) + h.push(null); + g += w; + } + const O = G.enumeratedString("RECENTLY-REMOVED-DATERANGES"); + O && (l.recentlyRemovedDateranges = (l.recentlyRemovedDateranges || []).concat(O.split(" "))); + break; + } + case "TARGETDURATION": + l.targetduration !== 0 && Be(l, U, v), l.targetduration = Math.max(parseInt(F), 1); + break; + case "VERSION": + l.version !== null && Be(l, U, v), l.version = parseInt(F); + break; + case "INDEPENDENT-SEGMENTS": + break; + case "ENDLIST": + l.live || Be(l, U, v), l.live = !1; + break; + case "#": + (F || B) && T.tagList.push(B ? [F, B] : [F]); + break; + case "DISCONTINUITY": + p++, T.tagList.push(["DIS"]); + break; + case "GAP": + T.gap = !0, T.tagList.push([U]); + break; + case "BITRATE": + T.tagList.push([U, F]), y = parseInt(F) * 1e3, N(y) ? T.bitrate = y : y = 0; + break; + case "DATERANGE": { + const G = new oe(F, l), w = new Un(G, l.dateRanges[G.ID], l.dateRangeTagCount); + l.dateRangeTagCount++, w.isValid || l.skippedSegments ? l.dateRanges[w.id] = w : J.warn(`Ignoring invalid DATERANGE tag: "${F}"`), T.tagList.push(["EXT-X-DATERANGE", F]); + break; + } + case "DEFINE": { + { + const G = new oe(F, l); + "IMPORT" in G ? cl(l, G, n) : pr(l, G, t); + } + break; + } + case "DISCONTINUITY-SEQUENCE": + l.startCC !== 0 ? Be(l, U, v) : h.length > 0 && Rr(l, U, v), l.startCC = p = parseInt(F); + break; + case "KEY": { + const G = Sr(F, t, l); + if (G.isSupported()) { + if (G.method === "NONE") { + _ = void 0; + break; + } + _ || (_ = {}), _[G.keyFormat] && (_ = ie({}, _)), _[G.keyFormat] = G; + } else + J.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: "${F}"`); + break; + } + case "START": + l.startTimeOffset = vr(F); + break; + case "MAP": { + const G = new oe(F, l); + if (T.duration) { + const w = new _s(i, c); + Lr(w, G, s, _), d = w, T.initSegment = d, d.rawProgramDateTime && !T.rawProgramDateTime && (T.rawProgramDateTime = d.rawProgramDateTime); + } else { + const w = T.byteRangeEndOffset; + if (w) { + const O = T.byteRangeStartOffset; + D = `${w - O}@${O}`; + } else + D = null; + Lr(T, G, s, _), d = T, R = !0; + } + d.cc = p; + break; + } + case "SERVER-CONTROL": { + L && Be(l, U, v), L = new oe(F), l.canBlockReload = L.bool("CAN-BLOCK-RELOAD"), l.canSkipUntil = L.optionalFloat("CAN-SKIP-UNTIL", 0), l.canSkipDateRanges = l.canSkipUntil > 0 && L.bool("CAN-SKIP-DATERANGES"), l.partHoldBack = L.optionalFloat("PART-HOLD-BACK", 0), l.holdBack = L.optionalFloat("HOLD-BACK", 0); + break; + } + case "PART-INF": { + l.partTarget && Be(l, U, v); + const G = new oe(F); + l.partTarget = G.decimalFloatingPoint("PART-TARGET"); + break; + } + case "PART": { + let G = l.partList; + G || (G = l.partList = []); + const w = f > 0 ? G[G.length - 1] : void 0, O = f++, W = new oe(F, l), Y = new go(W, T, c, O, w); + G.push(Y), T.duration += Y.duration; + break; + } + case "PRELOAD-HINT": { + const G = new oe(F, l); + l.preloadHint = G; + break; + } + case "RENDITION-REPORT": { + const G = new oe(F, l); + l.renditionReports = l.renditionReports || [], l.renditionReports.push(G); + break; + } + default: + J.warn(`line parsed but not handled: ${v}`); + break; + } + } + } + S && !S.relurl ? (h.pop(), E -= S.duration, l.partList && (l.fragmentHint = S)) : l.partList && (ri(T, S, u), T.cc = p, l.fragmentHint = T, _ && Ir(T, _, l)), l.targetduration || (l.playlistParsingError = new Error("#EXT-X-TARGETDURATION is required")); + const k = h.length, M = h[0], V = h[k - 1]; + if (E += l.skippedSegments * l.targetduration, E > 0 && k && V) { + l.averagetargetduration = E / k; + const P = V.sn; + l.endSN = P !== "initSegment" ? P : 0, l.live || (V.endList = !0), M && l.startCC === void 0 && (l.startCC = M.cc), A > 0 && (Rl(h, A), M && u.unshift(M)); + } else + l.endSN = 0, l.startCC = 0; + return l.fragmentHint && (E += l.fragmentHint.duration), l.totalduration = E, u.length && l.dateRangeTagCount && M && Kn(u, l), l.endCC = p, l; + } +} +function Kn(a, e) { + const t = a.length; + if (!t) + return; + const s = a[t - 1], i = e.live ? 1 / 0 : e.totalduration, r = Object.keys(e.dateRanges); + for (let n = r.length; n--; ) { + const o = e.dateRanges[r[n]], c = o.startDate.getTime(); + o.tagAnchor = s.ref; + for (let l = t; l--; ) { + const h = Il(e, c, a, l, i); + if (h !== -1) { + o.tagAnchor = e.fragments[h].ref; + break; + } + } + } +} +function Il(a, e, t, s, i) { + const r = t[s]; + if (r) { + const o = r.programDateTime; + if (e >= o || s === 0) { + var n; + const c = (((n = t[s + 1]) == null ? void 0 : n.start) || i) - r.start; + if (e <= o + c * 1e3) { + const l = t[s].sn - a.startSN, h = a.fragments; + if (h.length > t.length) { + const d = (t[s + 1] || h[h.length - 1]).sn - a.startSN; + for (let g = d; g > l; g--) { + const f = h[g].programDateTime; + if (e >= f && e < f + h[g].duration * 1e3) + return g; + } + } + return l; + } + } + } + return -1; +} +function Sr(a, e, t) { + var s, i; + const r = new oe(a, t), n = (s = r.METHOD) != null ? s : "", o = r.URI, c = r.hexadecimalInteger("IV"), l = r.KEYFORMATVERSIONS, h = (i = r.KEYFORMAT) != null ? i : "identity"; + o && r.IV && !c && J.error(`Invalid IV: ${r.IV}`); + const u = o ? Me.resolve(o, e) : "", d = (l || "1").split("/").map(Number).filter(Number.isFinite); + return new kt(n, u, h, d, c); +} +function vr(a) { + const t = new oe(a).decimalFloatingPoint("TIME-OFFSET"); + return N(t) ? t : null; +} +function xr(a, e) { + let t = (a || "").split(/[ ,]+/).filter((s) => s); + ["video", "audio", "text"].forEach((s) => { + const i = t.filter((r) => _n(r, s)); + i.length && (e[`${s}Codec`] = i.map((r) => r.split("/")[0]).join(","), t = t.filter((r) => i.indexOf(r) === -1)); + }), e.unknownCodecs = t; +} +function Ar(a, e, t) { + const s = e[t]; + s && (a[t] = s); +} +function Rl(a, e) { + let t = a[e]; + for (let s = e; s--; ) { + const i = a[s]; + if (!i) + return; + i.programDateTime = t.programDateTime - i.duration * 1e3, t = i; + } +} +function ri(a, e, t) { + a.rawProgramDateTime ? t.push(a) : e != null && e.programDateTime && (a.programDateTime = e.endProgramDateTime); +} +function Lr(a, e, t, s) { + a.relurl = e.URI, e.BYTERANGE && a.setByteRange(e.BYTERANGE), a.level = t, a.sn = "initSegment", s && (a.levelkeys = s), a.initSegment = null; +} +function Ir(a, e, t) { + a.levelkeys = e; + const { + encryptedFragments: s + } = t; + (!s.length || s[s.length - 1].levelkeys !== e) && Object.keys(e).some((i) => e[i].isCommonEncryption) && s.push(a); +} +function Be(a, e, t) { + a.playlistParsingError = new Error(`#EXT-X-${e} must not appear more than once (${t[0]})`); +} +function Rr(a, e, t) { + a.playlistParsingError = new Error(`#EXT-X-${e} must appear before the first Media Segment (${t[0]})`); +} +function Os(a, e) { + const t = e.startPTS; + if (N(t)) { + let s = 0, i; + e.sn > a.sn ? (s = t - a.start, i = a) : (s = a.start - t, i = e), i.duration !== s && i.setDuration(s); + } else e.sn > a.sn ? a.cc === e.cc && a.minEndPTS ? e.setStart(a.start + (a.minEndPTS - a.start)) : e.setStart(a.start + a.duration) : e.setStart(Math.max(a.start - e.duration, 0)); +} +function Vn(a, e, t, s, i, r) { + s - t <= 0 && (J.warn("Fragment should have a positive duration", e), s = t + e.duration, r = i + e.duration); + let o = t, c = s; + const l = e.startPTS, h = e.endPTS; + if (N(l)) { + const p = Math.abs(l - t); + N(e.deltaPTS) ? e.deltaPTS = Math.max(p, e.deltaPTS) : e.deltaPTS = p, o = Math.max(t, l), t = Math.min(t, l), i = Math.min(i, e.startDTS), c = Math.min(s, h), s = Math.max(s, h), r = Math.max(r, e.endDTS); + } + const u = t - e.start; + e.start !== 0 && e.setStart(t), e.setDuration(s - e.start), e.startPTS = t, e.maxStartPTS = o, e.startDTS = i, e.endPTS = s, e.minEndPTS = c, e.endDTS = r; + const d = e.sn; + if (!a || d < a.startSN || d > a.endSN) + return 0; + let g; + const f = d - a.startSN, E = a.fragments; + for (E[f] = e, g = f; g > 0; g--) + Os(E[g], E[g - 1]); + for (g = f; g < E.length - 1; g++) + Os(E[g], E[g + 1]); + return a.fragmentHint && Os(E[E.length - 1], a.fragmentHint), a.PTSKnown = a.alignedSliding = !0, u; +} +function bl(a, e) { + if (a === e) + return; + let t = null; + const s = a.fragments; + for (let l = s.length - 1; l >= 0; l--) { + const h = s[l].initSegment; + if (h) { + t = h; + break; + } + } + a.fragmentHint && delete a.fragmentHint.endPTS; + let i; + Cl(a, e, (l, h, u, d) => { + if ((!e.startCC || e.skippedSegments) && h.cc !== l.cc) { + const g = l.cc - h.cc; + for (let f = u; f < d.length; f++) + d[f].cc += g; + e.endCC = d[d.length - 1].cc; + } + N(l.startPTS) && N(l.endPTS) && (h.setStart(h.startPTS = l.startPTS), h.startDTS = l.startDTS, h.maxStartPTS = l.maxStartPTS, h.endPTS = l.endPTS, h.endDTS = l.endDTS, h.minEndPTS = l.minEndPTS, h.setDuration(l.endPTS - l.startPTS), h.duration && (i = h), e.PTSKnown = e.alignedSliding = !0), l.hasStreams && (h.elementaryStreams = l.elementaryStreams), h.loader = l.loader, l.hasStats && (h.stats = l.stats), l.initSegment && (h.initSegment = l.initSegment, t = l.initSegment); + }); + const r = e.fragments, n = e.fragmentHint ? r.concat(e.fragmentHint) : r; + if (t && n.forEach((l) => { + var h; + l && (!l.initSegment || l.initSegment.relurl === ((h = t) == null ? void 0 : h.relurl)) && (l.initSegment = t); + }), e.skippedSegments) { + if (e.deltaUpdateFailed = r.some((l) => !l), e.deltaUpdateFailed) { + J.warn("[level-helper] Previous playlist missing segments skipped in delta playlist"); + for (let l = e.skippedSegments; l--; ) + r.shift(); + e.startSN = r[0].sn; + } else { + e.canSkipDateRanges && (e.dateRanges = _l(a.dateRanges, e)); + const l = a.fragments.filter((h) => h.rawProgramDateTime); + if (a.hasProgramDateTime && !e.hasProgramDateTime) + for (let h = 1; h < n.length; h++) + n[h].programDateTime === null && ri(n[h], n[h - 1], l); + Kn(l, e); + } + e.endCC = r[r.length - 1].cc; + } + if (!e.startCC) { + var o; + const l = Wn(a, e.startSN - 1); + e.startCC = (o = l == null ? void 0 : l.cc) != null ? o : r[0].cc; + } + Dl(a.partList, e.partList, (l, h) => { + h.elementaryStreams = l.elementaryStreams, h.stats = l.stats; + }), i ? Vn(e, i, i.startPTS, i.endPTS, i.startDTS, i.endDTS) : Hn(a, e), r.length && (e.totalduration = e.edge - r[0].start), e.driftStartTime = a.driftStartTime, e.driftStart = a.driftStart; + const c = e.advancedDateTime; + if (e.advanced && c) { + const l = e.edge; + e.driftStart || (e.driftStartTime = c, e.driftStart = l), e.driftEndTime = c, e.driftEnd = l; + } else + e.driftEndTime = a.driftEndTime, e.driftEnd = a.driftEnd, e.advancedDateTime = a.advancedDateTime; + e.requestScheduled === -1 && (e.requestScheduled = a.requestScheduled); +} +function _l(a, e) { + const { + dateRanges: t, + recentlyRemovedDateranges: s + } = e, i = ie({}, a); + s && s.forEach((o) => { + delete i[o]; + }); + const n = Object.keys(i).length; + return n && Object.keys(t).forEach((o) => { + const c = i[o], l = new Un(t[o].attr, c); + l.isValid ? (i[o] = l, c || (l.tagOrder += n)) : J.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${ae(t[o].attr)}"`); + }), i; +} +function Dl(a, e, t) { + if (a && e) { + let s = 0; + for (let i = 0, r = a.length; i <= r; i++) { + const n = a[i], o = e[i + s]; + n && o && n.index === o.index && n.fragment.sn === o.fragment.sn ? t(n, o) : s--; + } + } +} +function Cl(a, e, t) { + const s = e.skippedSegments, i = Math.max(a.startSN, e.startSN) - e.startSN, r = (a.fragmentHint ? 1 : 0) + (s ? e.endSN : Math.min(a.endSN, e.endSN)) - e.startSN, n = e.startSN - a.startSN, o = e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments, c = a.fragmentHint ? a.fragments.concat(a.fragmentHint) : a.fragments; + for (let l = i; l <= r; l++) { + const h = c[n + l]; + let u = o[l]; + if (s && !u && h && (u = e.fragments[l] = h), h && u) { + if (t(h, u, l, o), h.url && h.url !== u.url) { + e.playlistParsingError = br(`media sequence mismatch ${u.sn}:`, a, e, h, u); + return; + } else if (h.cc !== u.cc) { + e.playlistParsingError = br(`discontinuity sequence mismatch (${h.cc}!=${u.cc})`, a, e, h, u); + return; + } + } + } +} +function br(a, e, t, s, i) { + return new Error(`${a} ${i.url} +Playlist starting @${e.startSN} +${e.m3u8} + +Playlist starting @${t.startSN} +${t.m3u8}`); +} +function Hn(a, e, t = !0) { + const s = e.startSN + e.skippedSegments - a.startSN, i = a.fragments, r = s >= 0; + let n = 0; + if (r && s < i.length) + n = i[s].start; + else if (r && e.startSN === a.endSN + 1) + n = a.fragmentEnd; + else if (r && t) + n = a.fragmentStart + s * e.levelTargetDuration; + else if (!e.skippedSegments && e.fragmentStart === 0) + n = a.fragmentStart; + else + return; + ni(e, n); +} +function ni(a, e) { + if (e) { + const t = a.fragments; + for (let s = a.skippedSegments; s < t.length; s++) + t[s].addStart(e); + a.fragmentHint && a.fragmentHint.addStart(e); + } +} +function Yn(a, e = 1 / 0) { + let t = 1e3 * a.targetduration; + if (a.updated) { + const s = a.fragments; + if (s.length && t * 4 > e) { + const r = s[s.length - 1].duration * 1e3; + r < t && (t = r); + } + } else + t /= 2; + return Math.round(t); +} +function Wn(a, e, t) { + if (!a) + return null; + let s = a.fragments[e - a.startSN]; + return s || (s = a.fragmentHint, s && s.sn === e) ? s : e < a.startSN && t && t.sn === e ? t : null; +} +function _r(a, e, t) { + return a ? qn(a.partList, e, t) : null; +} +function qn(a, e, t) { + if (a) + for (let s = a.length; s--; ) { + const i = a[s]; + if (i.index === t && i.fragment.sn === e) + return i; + } + return null; +} +function jn(a) { + a.forEach((e, t) => { + var s; + (s = e.details) == null || s.fragments.forEach((i) => { + i.level = t, i.initSegment && (i.initSegment.level = t); + }); + }); +} +function It(a, e) { + for (let s = 0, i = a.length; s < i; s++) { + var t; + if (((t = a[s]) == null ? void 0 : t.cc) === e) + return a[s]; + } + return null; +} +function Pl(a, e) { + return !!(a && e.startCC < a.endCC && e.endCC > a.startCC); +} +function Dr(a, e) { + if (a) { + const t = a.start + e; + a.start = a.startPTS = t, a.endPTS = t + a.duration; + } +} +function Xn(a, e) { + const t = e.fragments; + for (let s = 0, i = t.length; s < i; s++) + Dr(t[s], a); + e.fragmentHint && Dr(e.fragmentHint, a), e.alignedSliding = !0; +} +function kl(a, e) { + a && (zn(e, a), !e.alignedSliding && a && Es(e, a), !e.alignedSliding && a && !e.skippedSegments && Hn(a, e, !1)); +} +function zn(a, e) { + if (!Pl(e, a)) + return; + const t = Math.min(e.endCC, a.endCC), s = It(e.fragments, t), i = It(a.fragments, t); + if (!s || !i) + return; + J.log(`Aligning playlist at start of dicontinuity sequence ${t}`); + const r = s.start - i.start; + Xn(r, a); +} +function Es(a, e) { + if (!a.hasProgramDateTime || !e.hasProgramDateTime) + return; + const t = a.fragments, s = e.fragments; + if (!t.length || !s.length) + return; + let i, r; + const n = Math.min(e.endCC, a.endCC); + e.startCC < n && a.startCC < n && (i = It(s, n), r = It(t, n)), (!i || !r) && (i = s[Math.floor(s.length / 2)], r = It(t, i.cc) || t[Math.floor(t.length / 2)]); + const o = i.programDateTime, c = r.programDateTime; + if (!o || !c) + return; + const l = (c - o) / 1e3 - (r.start - i.start); + Xn(l, a); +} +const wl = { + toString: function(a) { + let e = ""; + const t = a.length; + for (let s = 0; s < t; s++) + e += `[${a.start(s).toFixed(3)}-${a.end(s).toFixed(3)}]`; + return e; + } +}, C = { + STOPPED: "STOPPED", + IDLE: "IDLE", + KEY_LOADING: "KEY_LOADING", + FRAG_LOADING: "FRAG_LOADING", + FRAG_LOADING_WAITING_RETRY: "FRAG_LOADING_WAITING_RETRY", + WAITING_TRACK: "WAITING_TRACK", + PARSING: "PARSING", + PARSED: "PARSED", + ENDED: "ENDED", + ERROR: "ERROR", + WAITING_INIT_PTS: "WAITING_INIT_PTS", + WAITING_LEVEL: "WAITING_LEVEL" +}; +class Ai extends Nn { + constructor(e, t, s, i, r) { + super(i, e.logger), this.hls = void 0, this.fragPrevious = null, this.fragCurrent = null, this.fragmentTracker = void 0, this.transmuxer = null, this._state = C.STOPPED, this.playlistType = void 0, this.media = null, this.mediaBuffer = null, this.config = void 0, this.bitrateTest = !1, this.lastCurrentTime = 0, this.nextLoadPosition = 0, this.startPosition = 0, this.startTimeOffset = null, this.retryDate = 0, this.levels = null, this.fragmentLoader = void 0, this.keyLoader = void 0, this.levelLastLoaded = null, this.startFragRequested = !1, this.decrypter = void 0, this.initPTS = [], this.buffering = !0, this.loadingParts = !1, this.loopSn = void 0, this.onMediaSeeking = () => { + const { + config: n, + fragCurrent: o, + media: c, + mediaBuffer: l, + state: h + } = this, u = c ? c.currentTime : 0, d = q.bufferInfo(l || c, u, n.maxBufferHole); + if (this.log(`media seeking to ${N(u) ? u.toFixed(3) : u}, state: ${h}`), this.state === C.ENDED) + this.resetLoadingState(); + else if (o) { + const g = n.maxFragLookUpTolerance, f = o.start - g, E = o.start + o.duration + g; + if (!d.len || E < d.start || f > d.end) { + const p = u > E; + (u < f || p) && (p && o.loader && (this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"), o.abortRequests(), this.resetLoadingState()), this.fragPrevious = null); + } + } + if (c) { + this.fragmentTracker.removeFragmentsInRange(u, 1 / 0, this.playlistType, !0); + const g = this.lastCurrentTime; + if (u > g && (this.lastCurrentTime = u), !this.loadingParts) { + const f = Math.max(d.end, u), E = this.shouldLoadParts(this.getLevelDetails(), f); + E && (this.log(`LL-Part loading ON after seeking to ${u.toFixed(2)} with buffer @${f.toFixed(2)}`), this.loadingParts = E); + } + } + !this.hls.hasEnoughToStart && !d.len && (this.log(`setting startPosition to ${u} because of seek before start`), this.nextLoadPosition = this.startPosition = u), this.tickImmediate(); + }, this.onMediaEnded = () => { + this.log("setting startPosition to 0 because media ended"), this.startPosition = this.lastCurrentTime = 0; + }, this.playlistType = r, this.hls = e, this.fragmentLoader = new ol(e.config), this.keyLoader = s, this.fragmentTracker = t, this.config = e.config, this.decrypter = new Ti(e.config); + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(m.ERROR, this.onError, this); + } + doTick() { + this.onTickEnd(); + } + onTickEnd() { + } + startLoad(e) { + } + stopLoad() { + if (this.state === C.STOPPED) + return; + this.fragmentLoader.abort(), this.keyLoader.abort(this.playlistType); + const e = this.fragCurrent; + e != null && e.loader && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.resetTransmuxer(), this.fragCurrent = null, this.fragPrevious = null, this.clearInterval(), this.clearNextTick(), this.state = C.STOPPED; + } + get startPositionValue() { + const { + nextLoadPosition: e, + startPosition: t + } = this; + return t === -1 && e ? e : t; + } + get bufferingEnabled() { + return this.buffering; + } + pauseBuffering() { + this.buffering = !1; + } + resumeBuffering() { + this.buffering = !0; + } + get inFlightFrag() { + return { + frag: this.fragCurrent, + state: this.state + }; + } + _streamEnded(e, t) { + if (t.live || !this.media) + return !1; + const s = e.end || 0, i = this.config.timelineOffset || 0; + if (s <= i) + return !1; + const r = e.buffered; + this.config.maxBufferHole && r && r.length > 1 && (e = q.bufferedInfo(r, e.start, 0)); + const n = e.nextStart; + if (n && n > i && n < t.edge || this.media.currentTime < e.start) + return !1; + const c = t.partList; + if (c != null && c.length) { + const h = c[c.length - 1]; + return q.isBuffered(this.media, h.start + h.duration / 2); + } + const l = t.fragments[t.fragments.length - 1].type; + return this.fragmentTracker.isEndListAppended(l); + } + getLevelDetails() { + if (this.levels && this.levelLastLoaded !== null) { + var e; + return (e = this.levelLastLoaded) == null ? void 0 : e.details; + } + } + get timelineOffset() { + const e = this.config.timelineOffset; + if (e) { + var t; + return ((t = this.getLevelDetails()) == null ? void 0 : t.appliedTimelineOffset) || e; + } + return 0; + } + onMediaAttached(e, t) { + const s = this.media = this.mediaBuffer = t.media; + s.removeEventListener("seeking", this.onMediaSeeking), s.removeEventListener("ended", this.onMediaEnded), s.addEventListener("seeking", this.onMediaSeeking), s.addEventListener("ended", this.onMediaEnded); + const i = this.config; + this.levels && i.autoStartLoad && this.state === C.STOPPED && this.startLoad(i.startPosition); + } + onMediaDetaching(e, t) { + const s = !!t.transferMedia, i = this.media; + if (i !== null) { + if (i.ended && (this.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0), i.removeEventListener("seeking", this.onMediaSeeking), i.removeEventListener("ended", this.onMediaEnded), this.keyLoader && !s && this.keyLoader.detach(), this.media = this.mediaBuffer = null, this.loopSn = void 0, s) { + this.resetLoadingState(), this.resetTransmuxer(); + return; + } + this.loadingParts = !1, this.fragmentTracker.removeAllFragments(), this.stopLoad(); + } + } + onManifestLoading() { + this.initPTS = [], this.levels = this.levelLastLoaded = this.fragCurrent = null, this.lastCurrentTime = this.startPosition = 0, this.startFragRequested = !1; + } + onError(e, t) { + } + onManifestLoaded(e, t) { + this.startTimeOffset = t.startTimeOffset; + } + onHandlerDestroying() { + this.stopLoad(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), super.onHandlerDestroying(), this.hls = this.onMediaSeeking = this.onMediaEnded = null; + } + onHandlerDestroyed() { + this.state = C.STOPPED, this.fragmentLoader && this.fragmentLoader.destroy(), this.keyLoader && this.keyLoader.destroy(), this.decrypter && this.decrypter.destroy(), this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null, super.onHandlerDestroyed(); + } + loadFragment(e, t, s) { + this.startFragRequested = !0, this._loadFragForPlayback(e, t, s); + } + _loadFragForPlayback(e, t, s) { + const i = (r) => { + const n = r.frag; + if (this.fragContextChanged(n)) { + this.warn(`${n.type} sn: ${n.sn}${r.part ? " part: " + r.part.index : ""} of ${this.fragInfo(n, !1, r.part)}) was dropped during download.`), this.fragmentTracker.removeFragment(n); + return; + } + n.stats.chunkCount++, this._handleFragmentLoadProgress(r); + }; + this._doFragLoad(e, t, s, i).then((r) => { + if (!r) + return; + const n = this.state, o = r.frag; + if (this.fragContextChanged(o)) { + (n === C.FRAG_LOADING || !this.fragCurrent && n === C.PARSING) && (this.fragmentTracker.removeFragment(o), this.state = C.IDLE); + return; + } + "payload" in r && (this.log(`Loaded ${o.type} sn: ${o.sn} of ${this.playlistLabel()} ${o.level}`), this.hls.trigger(m.FRAG_LOADED, r)), this._handleFragmentLoadComplete(r); + }).catch((r) => { + this.state === C.STOPPED || this.state === C.ERROR || (this.warn(`Frag error: ${(r == null ? void 0 : r.message) || r}`), this.resetFragmentLoading(e)); + }); + } + clearTrackerIfNeeded(e) { + var t; + const { + fragmentTracker: s + } = this; + if (s.getState(e) === ce.APPENDING) { + const r = e.type, n = this.getFwdBufferInfo(this.mediaBuffer, r), o = Math.max(e.duration, n ? n.len : this.config.maxBufferLength), c = this.backtrackFragment; + ((c ? e.sn - c.sn : 0) === 1 || this.reduceMaxBufferLength(o, e.duration)) && s.removeFragment(e); + } else ((t = this.mediaBuffer) == null ? void 0 : t.buffered.length) === 0 ? s.removeAllFragments() : s.hasParts(e.type) && (s.detectPartialFragments({ + frag: e, + part: null, + stats: e.stats, + id: e.type + }), s.getState(e) === ce.PARTIAL && s.removeFragment(e)); + } + checkLiveUpdate(e) { + if (e.updated && !e.live) { + const t = e.fragments[e.fragments.length - 1]; + this.fragmentTracker.detectPartialFragments({ + frag: t, + part: null, + stats: t.stats, + id: t.type + }); + } + e.fragments[0] || (e.deltaUpdateFailed = !0); + } + waitForLive(e) { + const t = e.details; + return (t == null ? void 0 : t.live) && t.type !== "EVENT" && (this.levelLastLoaded !== e || t.expired); + } + flushMainBuffer(e, t, s = null) { + if (!(e - t)) + return; + const i = { + startOffset: e, + endOffset: t, + type: s + }; + this.hls.trigger(m.BUFFER_FLUSHING, i); + } + _loadInitSegment(e, t) { + this._doFragLoad(e, t).then((s) => { + const i = s == null ? void 0 : s.frag; + if (!i || this.fragContextChanged(i) || !this.levels) + throw new Error("init load aborted"); + return s; + }).then((s) => { + const { + hls: i + } = this, { + frag: r, + payload: n + } = s, o = r.decryptdata; + if (n && n.byteLength > 0 && o != null && o.key && o.iv && ft(o.method)) { + const c = self.performance.now(); + return this.decrypter.decrypt(new Uint8Array(n), o.key.buffer, o.iv.buffer, vi(o.method)).catch((l) => { + throw i.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_DECRYPT_ERROR, + fatal: !1, + error: l, + reason: l.message, + frag: r + }), l; + }).then((l) => { + const h = self.performance.now(); + return i.trigger(m.FRAG_DECRYPTED, { + frag: r, + payload: l, + stats: { + tstart: c, + tdecrypt: h + } + }), s.payload = l, this.completeInitSegmentLoad(s); + }); + } + return this.completeInitSegmentLoad(s); + }).catch((s) => { + this.state === C.STOPPED || this.state === C.ERROR || (this.warn(s), this.resetFragmentLoading(e)); + }); + } + completeInitSegmentLoad(e) { + const { + levels: t + } = this; + if (!t) + throw new Error("init load aborted, missing levels"); + const s = e.frag.stats; + this.state !== C.STOPPED && (this.state = C.IDLE), e.frag.data = new Uint8Array(e.payload), s.parsing.start = s.buffering.start = self.performance.now(), s.parsing.end = s.buffering.end = self.performance.now(), this.tick(); + } + fragContextChanged(e) { + const { + fragCurrent: t + } = this; + return !e || !t || e.sn !== t.sn || e.level !== t.level; + } + fragBufferedComplete(e, t) { + const s = this.mediaBuffer ? this.mediaBuffer : this.media; + if (this.log(`Buffered ${e.type} sn: ${e.sn}${t ? " part: " + t.index : ""} of ${this.fragInfo(e, !1, t)} > buffer:${s ? wl.toString(q.getBuffered(s)) : "(detached)"})`), ue(e)) { + var i; + if (e.type !== $.SUBTITLE) { + const n = e.elementaryStreams; + if (!Object.keys(n).some((o) => !!n[o])) { + this.state = C.IDLE; + return; + } + } + const r = (i = this.levels) == null ? void 0 : i[e.level]; + r != null && r.fragmentError && (this.log(`Resetting level fragment error count of ${r.fragmentError} on frag buffered`), r.fragmentError = 0); + } + this.state = C.IDLE; + } + _handleFragmentLoadComplete(e) { + const { + transmuxer: t + } = this; + if (!t) + return; + const { + frag: s, + part: i, + partsLoaded: r + } = e, n = !r || r.length === 0 || r.some((c) => !c), o = new Si(s.level, s.sn, s.stats.chunkCount + 1, 0, i ? i.index : -1, !n); + t.flush(o); + } + _handleFragmentLoadProgress(e) { + } + _doFragLoad(e, t, s = null, i) { + var r; + this.fragCurrent = e; + const n = t == null ? void 0 : t.details; + if (!this.levels || !n) + throw new Error(`frag load aborted, missing level${n ? "" : " detail"}s`); + let o = null; + e.encrypted && !((r = e.decryptdata) != null && r.key) ? (this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${this.playlistLabel()} ${e.level}`), this.state = C.KEY_LOADING, this.fragCurrent = e, o = this.keyLoader.load(e).then((u) => { + if (!this.fragContextChanged(u.frag)) + return this.hls.trigger(m.KEY_LOADED, u), this.state === C.KEY_LOADING && (this.state = C.IDLE), u; + }), this.hls.trigger(m.KEY_LOADING, { + frag: e + }), this.fragCurrent === null && (o = Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))) : e.encrypted || (o = this.keyLoader.loadClear(e, n.encryptedFragments), o && this.log("[eme] blocking frag load until media-keys acquired")); + const c = this.fragPrevious; + if (ue(e) && (!c || e.sn !== c.sn)) { + const u = this.shouldLoadParts(t.details, e.end); + u !== this.loadingParts && (this.log(`LL-Part loading ${u ? "ON" : "OFF"} loading sn ${c == null ? void 0 : c.sn}->${e.sn}`), this.loadingParts = u); + } + if (s = Math.max(e.start, s || 0), this.loadingParts && ue(e)) { + const u = n.partList; + if (u && i) { + s > e.end && n.fragmentHint && (e = n.fragmentHint); + const d = this.getNextPart(u, e, s); + if (d > -1) { + const g = u[d]; + e = this.fragCurrent = g.fragment, this.log(`Loading ${e.type} sn: ${e.sn} part: ${g.index} (${d}/${u.length - 1}) of ${this.fragInfo(e, !1, g)}) cc: ${e.cc} [${n.startSN}-${n.endSN}], target: ${parseFloat(s.toFixed(3))}`), this.nextLoadPosition = g.start + g.duration, this.state = C.FRAG_LOADING; + let f; + return o ? f = o.then((E) => !E || this.fragContextChanged(E.frag) ? null : this.doFragPartsLoad(e, g, t, i)).catch((E) => this.handleFragLoadError(E)) : f = this.doFragPartsLoad(e, g, t, i).catch((E) => this.handleFragLoadError(E)), this.hls.trigger(m.FRAG_LOADING, { + frag: e, + part: g, + targetBufferTime: s + }), this.fragCurrent === null ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")) : f; + } else if (!e.url || this.loadedEndOfParts(u, s)) + return Promise.resolve(null); + } + } + if (ue(e) && this.loadingParts) + this.log(`LL-Part loading OFF after next part miss @${s.toFixed(2)}`), this.loadingParts = !1; + else if (!e.url) + return Promise.resolve(null); + this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e, !1)}) cc: ${e.cc} ${n ? "[" + n.startSN + "-" + n.endSN + "]" : ""}, target: ${parseFloat(s.toFixed(3))}`), N(e.sn) && !this.bitrateTest && (this.nextLoadPosition = e.start + e.duration), this.state = C.FRAG_LOADING; + const l = this.config.progressive; + let h; + return l && o ? h = o.then((u) => !u || this.fragContextChanged(u == null ? void 0 : u.frag) ? null : this.fragmentLoader.load(e, i)).catch((u) => this.handleFragLoadError(u)) : h = Promise.all([this.fragmentLoader.load(e, l ? i : void 0), o]).then(([u]) => (!l && u && i && i(u), u)).catch((u) => this.handleFragLoadError(u)), this.hls.trigger(m.FRAG_LOADING, { + frag: e, + targetBufferTime: s + }), this.fragCurrent === null ? Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")) : h; + } + doFragPartsLoad(e, t, s, i) { + return new Promise((r, n) => { + var o; + const c = [], l = (o = s.details) == null ? void 0 : o.partList, h = (u) => { + this.fragmentLoader.loadPart(e, u, i).then((d) => { + c[u.index] = d; + const g = d.part; + this.hls.trigger(m.FRAG_LOADED, d); + const f = _r(s.details, e.sn, u.index + 1) || qn(l, e.sn, u.index + 1); + if (f) + h(f); + else + return r({ + frag: e, + part: g, + partsLoaded: c + }); + }).catch(n); + }; + h(t); + }); + } + handleFragLoadError(e) { + if ("data" in e) { + const t = e.data; + e.data && t.details === b.INTERNAL_ABORTED ? this.handleFragLoadAborted(t.frag, t.part) : this.hls.trigger(m.ERROR, t); + } else + this.hls.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.INTERNAL_EXCEPTION, + err: e, + error: e, + fatal: !0 + }); + return null; + } + _handleTransmuxerFlush(e) { + const t = this.getCurrentContext(e); + if (!t || this.state !== C.PARSING) { + !this.fragCurrent && this.state !== C.STOPPED && this.state !== C.ERROR && (this.state = C.IDLE); + return; + } + const { + frag: s, + part: i, + level: r + } = t, n = self.performance.now(); + s.stats.parsing.end = n, i && (i.stats.parsing.end = n); + const o = this.getLevelDetails(), l = o && s.sn > o.endSN || this.shouldLoadParts(o, s.end); + l !== this.loadingParts && (this.log(`LL-Part loading ${l ? "ON" : "OFF"} after parsing segment ending @${s.end.toFixed(2)}`), this.loadingParts = l), this.updateLevelTiming(s, i, r, e.partial); + } + shouldLoadParts(e, t) { + if (this.config.lowLatencyMode) { + if (!e) + return this.loadingParts; + if (e != null && e.partList) { + var s; + const r = e.partList[0], n = r.end + (((s = e.fragmentHint) == null ? void 0 : s.duration) || 0); + if (t >= n) { + var i; + if ((this.hls.hasEnoughToStart ? ((i = this.media) == null ? void 0 : i.currentTime) || this.lastCurrentTime : this.getLoadPosition()) > r.start - r.fragment.duration) + return !0; + } + } + } + return !1; + } + getCurrentContext(e) { + const { + levels: t, + fragCurrent: s + } = this, { + level: i, + sn: r, + part: n + } = e; + if (!(t != null && t[i])) + return this.warn(`Levels object was unset while buffering fragment ${r} of ${this.playlistLabel()} ${i}. The current chunk will not be buffered.`), null; + const o = t[i], c = o.details, l = n > -1 ? _r(c, r, n) : null, h = l ? l.fragment : Wn(c, r, s); + return h ? (s && s !== h && (h.stats = s.stats), { + frag: h, + part: l, + level: o + }) : null; + } + bufferFragmentData(e, t, s, i, r) { + var n; + if (!e || this.state !== C.PARSING) + return; + const { + data1: o, + data2: c + } = e; + let l = o; + if (o && c && (l = be(o, c)), !((n = l) != null && n.length)) + return; + const h = { + type: e.type, + frag: t, + part: s, + chunkMeta: i, + parent: t.type, + data: l + }; + if (this.hls.trigger(m.BUFFER_APPENDING, h), e.dropped && e.independent && !s) { + if (r) + return; + this.flushBufferGap(t); + } + } + flushBufferGap(e) { + const t = this.media; + if (!t) + return; + if (!q.isBuffered(t, t.currentTime)) { + this.flushMainBuffer(0, e.start); + return; + } + const s = t.currentTime, i = q.bufferInfo(t, s, 0), r = e.duration, n = Math.min(this.config.maxFragLookUpTolerance * 2, r * 0.25), o = Math.max(Math.min(e.start - n, i.end - n), s + n); + e.start - o > n && this.flushMainBuffer(o, e.start); + } + getFwdBufferInfo(e, t) { + var s; + const i = this.getLoadPosition(); + if (!N(i)) + return null; + const n = this.lastCurrentTime > i || (s = this.media) != null && s.paused ? 0 : this.config.maxBufferHole; + return this.getFwdBufferInfoAtPos(e, i, t, n); + } + getFwdBufferInfoAtPos(e, t, s, i) { + const r = q.bufferInfo(e, t, i); + if (r.len === 0 && r.nextStart !== void 0) { + const n = this.fragmentTracker.getBufferedFrag(t, s); + if (n && (r.nextStart <= n.end || n.gap)) { + const o = Math.max(Math.min(r.nextStart, n.end) - t, i); + return q.bufferInfo(e, t, o); + } + } + return r; + } + getMaxBufferLength(e) { + const { + config: t + } = this; + let s; + return e ? s = Math.max(8 * t.maxBufferSize / e, t.maxBufferLength) : s = t.maxBufferLength, Math.min(s, t.maxMaxBufferLength); + } + reduceMaxBufferLength(e, t) { + const s = this.config, i = Math.max(Math.min(e - t, s.maxBufferLength), t), r = Math.max(e - t * 3, s.maxMaxBufferLength / 2, i); + return r >= i ? (s.maxMaxBufferLength = r, this.warn(`Reduce max buffer length to ${r}s`), !0) : !1; + } + getAppendedFrag(e, t = $.MAIN) { + var s; + const i = (s = this.fragmentTracker) == null ? void 0 : s.getAppendedFrag(e, t); + return i && "fragment" in i ? i.fragment : i; + } + getNextFragment(e, t) { + const s = t.fragments, i = s.length; + if (!i) + return null; + const { + config: r + } = this, n = s[0].start, o = r.lowLatencyMode && !!t.partList; + let c = null; + if (t.live) { + const u = r.initialLiveManifestSize; + if (i < u) + return this.warn(`Not enough fragments to start playback (have: ${i}, need: ${u})`), null; + if (!t.PTSKnown && !this.startFragRequested && this.startPosition === -1 || e < n) { + var l; + o && !this.loadingParts && (this.log("LL-Part loading ON for initial live fragment"), this.loadingParts = !0), c = this.getInitialLiveFragment(t); + const d = this.hls.startPosition, g = this.hls.liveSyncPosition, f = c ? (d !== -1 && d >= n ? d : g) || c.start : e; + this.log(`Setting startPosition to ${f} to match start frag at live edge. mainStart: ${d} liveSyncPosition: ${g} frag.start: ${(l = c) == null ? void 0 : l.start}`), this.startPosition = this.nextLoadPosition = f; + } + } else e <= n && (c = s[0]); + if (!c) { + const u = this.loadingParts ? t.partEnd : t.fragmentEnd; + c = this.getFragmentAtPosition(e, u, t); + } + let h = this.filterReplacedPrimary(c, t); + if (!h && c) { + const u = c.sn - t.startSN; + h = this.filterReplacedPrimary(s[u + 1] || null, t); + } + return this.mapToInitFragWhenRequired(h); + } + isLoopLoading(e, t) { + const s = this.fragmentTracker.getState(e); + return (s === ce.OK || s === ce.PARTIAL && !!e.gap) && this.nextLoadPosition > t; + } + getNextFragmentLoopLoading(e, t, s, i, r) { + let n = null; + if (e.gap && (n = this.getNextFragment(this.nextLoadPosition, t), n && !n.gap && s.nextStart)) { + const o = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, s.nextStart, i, 0); + if (o !== null && s.len + o.len >= r) { + const c = n.sn; + return this.loopSn !== c && (this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${c}`), this.loopSn = c), null; + } + } + return this.loopSn = void 0, n; + } + get primaryPrefetch() { + if (Cr(this.hls.config)) { + var e, t; + if ((e = this.hls.interstitialsManager) == null || (t = e.playingItem) == null ? void 0 : t.event) + return !0; + } + return !1; + } + filterReplacedPrimary(e, t) { + if (!e) + return e; + if (Cr(this.hls.config) && e.type !== $.SUBTITLE) { + const s = this.hls.interstitialsManager, i = s == null ? void 0 : s.bufferingItem; + if (i) { + const n = i.event; + if (n) { + if (n.appendInPlace || Math.abs(e.start - i.start) > 1 || i.start === 0) + return null; + } else if (e.end <= i.start && (t == null ? void 0 : t.live) === !1 || e.start > i.end && i.nextEvent && (i.nextEvent.appendInPlace || e.start - i.end > 1)) + return null; + } + const r = s == null ? void 0 : s.playerQueue; + if (r) + for (let n = r.length; n--; ) { + const o = r[n].interstitial; + if (o.appendInPlace && e.start >= o.startTime && e.end <= o.resumeTime) + return null; + } + } + return e; + } + mapToInitFragWhenRequired(e) { + return e != null && e.initSegment && !(e != null && e.initSegment.data) && !this.bitrateTest ? e.initSegment : e; + } + getNextPart(e, t, s) { + let i = -1, r = !1, n = !0; + for (let o = 0, c = e.length; o < c; o++) { + const l = e[o]; + if (n = n && !l.independent, i > -1 && s < l.start) + break; + const h = l.loaded; + h ? i = -1 : (r || l.independent || n) && l.fragment === t && (i = o), r = h; + } + return i; + } + loadedEndOfParts(e, t) { + const s = e[e.length - 1]; + return s && t > s.start && s.loaded; + } + /* + This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the + "sliding" of the playlist, which is its offset from the start of playback. After sliding we can compute the real + start and end times for each fragment in the playlist (after which this method will not need to be called). + */ + getInitialLiveFragment(e) { + const t = e.fragments, s = this.fragPrevious; + let i = null; + if (s) { + if (e.hasProgramDateTime && (this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`), i = Xo(t, s.endProgramDateTime, this.config.maxFragLookUpTolerance)), !i) { + const r = s.sn + 1; + if (r >= e.startSN && r <= e.endSN) { + const n = t[r - e.startSN]; + s.cc === n.cc && (i = n, this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`)); + } + i || (i = Mn(e, s.cc, s.end), i && this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`)); + } + } else { + const r = this.hls.liveSyncPosition; + r !== null && (i = this.getFragmentAtPosition(r, this.bitrateTest ? e.fragmentEnd : e.edge, e)); + } + return i; + } + /* + This method finds the best matching fragment given the provided position. + */ + getFragmentAtPosition(e, t, s) { + const { + config: i + } = this; + let { + fragPrevious: r + } = this, { + fragments: n, + endSN: o + } = s; + const { + fragmentHint: c + } = s, { + maxFragLookUpTolerance: l + } = i, h = s.partList, u = !!(this.loadingParts && h != null && h.length && c); + u && c && !this.bitrateTest && h[h.length - 1].fragment.sn === c.sn && (n = n.concat(c), o = c.sn); + let d; + if (e < t) { + var g; + const E = e < this.lastCurrentTime || e > t - l || (g = this.media) != null && g.paused || !this.startFragRequested ? 0 : l; + d = it(r, n, e, E); + } else + d = n[n.length - 1]; + if (d) { + const f = d.sn - s.startSN, E = this.fragmentTracker.getState(d); + if ((E === ce.OK || E === ce.PARTIAL && d.gap) && (r = d), r && d.sn === r.sn && (!u || h[0].fragment.sn > d.sn || !s.live && !u) && r && d.level === r.level) { + const y = n[f + 1]; + d.sn < o && this.fragmentTracker.getState(y) !== ce.OK ? d = y : d = null; + } + } + return d; + } + alignPlaylists(e, t, s) { + const i = e.fragments.length; + if (!i) + return this.warn("No fragments in live playlist"), 0; + const r = e.fragmentStart, n = !t, o = e.alignedSliding && N(r); + if (n || !o && !r) { + kl(s, e); + const c = e.fragmentStart; + return this.log(`Live playlist sliding: ${c.toFixed(2)} start-sn: ${t ? t.startSN : "na"}->${e.startSN} fragments: ${i}`), c; + } + return r; + } + waitForCdnTuneIn(e) { + return e.live && e.canBlockReload && e.partTarget && e.tuneInGoal > Math.max(e.partHoldBack, e.partTarget * 3); + } + setStartPosition(e, t) { + let s = this.startPosition; + s < t && (s = -1); + const i = this.timelineOffset; + if (s === -1) { + const r = this.startTimeOffset !== null, n = r ? this.startTimeOffset : e.startTimeOffset; + n !== null && N(n) ? (s = t + n, n < 0 && (s += e.edge), s = Math.min(Math.max(t, s), t + e.totalduration), this.log(`Setting startPosition to ${s} for start time offset ${n} found in ${r ? "multivariant" : "media"} playlist`), this.startPosition = s) : e.live ? (s = this.hls.liveSyncPosition || t, this.log(`Setting startPosition to -1 to start at live edge ${s}`), this.startPosition = -1) : (this.log("setting startPosition to 0 by default"), this.startPosition = s = 0), this.lastCurrentTime = s + i; + } + this.nextLoadPosition = s + i; + } + getLoadPosition() { + var e; + const { + media: t + } = this; + let s = 0; + return (e = this.hls) != null && e.hasEnoughToStart && t ? s = t.currentTime : this.nextLoadPosition >= 0 && (s = this.nextLoadPosition), s; + } + handleFragLoadAborted(e, t) { + this.transmuxer && e.type === this.playlistType && ue(e) && e.stats.aborted && (this.warn(`Fragment ${e.sn}${t ? " part " + t.index : ""} of ${this.playlistLabel()} ${e.level} was aborted`), this.resetFragmentLoading(e)); + } + resetFragmentLoading(e) { + (!this.fragCurrent || !this.fragContextChanged(e) && this.state !== C.FRAG_LOADING_WAITING_RETRY) && (this.state = C.IDLE); + } + onFragmentOrKeyLoadError(e, t) { + if (t.chunkMeta && !t.frag) { + const f = this.getCurrentContext(t.chunkMeta); + f && (t.frag = f.frag); + } + const s = t.frag; + if (!s || s.type !== e || !this.levels) + return; + if (this.fragContextChanged(s)) { + var i; + this.warn(`Frag load error must match current frag to retry ${s.url} > ${(i = this.fragCurrent) == null ? void 0 : i.url}`); + return; + } + const r = t.details === b.FRAG_GAP; + r && this.fragmentTracker.fragBuffered(s, !0); + const n = t.errorAction, { + action: o, + flags: c, + retryCount: l = 0, + retryConfig: h + } = n || {}, u = !!n && !!h, d = u && o === ge.RetryRequest, g = u && !n.resolved && c === Ce.MoveAllAlternatesMatchingHost; + if (!d && g && ue(s) && !s.endList) + this.resetFragmentErrors(e), this.treatAsGap(s), n.resolved = !0; + else if ((d || g) && l < h.maxNumRetry) { + this.resetStartWhenNotLoaded(this.levelLastLoaded); + const f = yi(h, l); + this.warn(`Fragment ${s.sn} of ${e} ${s.level} errored with ${t.details}, retrying loading ${l + 1}/${h.maxNumRetry} in ${f}ms`), n.resolved = !0, this.retryDate = self.performance.now() + f, this.state = C.FRAG_LOADING_WAITING_RETRY; + } else if (h && n) + if (this.resetFragmentErrors(e), l < h.maxNumRetry) + !r && o !== ge.RemoveAlternatePermanently && (n.resolved = !0); + else { + this.warn(`${t.details} reached or exceeded max retry (${l})`); + return; + } + else o === ge.SendAlternateToPenaltyBox ? this.state = C.WAITING_LEVEL : this.state = C.ERROR; + this.tickImmediate(); + } + reduceLengthAndFlushBuffer(e) { + if (this.state === C.PARSING || this.state === C.PARSED) { + const t = e.frag, s = e.parent, i = this.getFwdBufferInfo(this.mediaBuffer, s), r = i && i.len > 0.5; + r && this.reduceMaxBufferLength(i.len, (t == null ? void 0 : t.duration) || 10); + const n = !r; + return n && this.warn(`Buffer full error while media.currentTime is not buffered, flush ${s} buffer`), t && (this.fragmentTracker.removeFragment(t), this.nextLoadPosition = t.start), this.resetLoadingState(), n; + } + return !1; + } + resetFragmentErrors(e) { + e === $.AUDIO && (this.fragCurrent = null), this.hls.hasEnoughToStart || (this.startFragRequested = !1), this.state !== C.STOPPED && (this.state = C.IDLE); + } + afterBufferFlushed(e, t, s) { + if (!e) + return; + const i = q.getBuffered(e); + this.fragmentTracker.detectEvictedFragments(t, i, s), this.state === C.ENDED && this.resetLoadingState(); + } + resetLoadingState() { + this.log("Reset loading state"), this.fragCurrent = null, this.fragPrevious = null, this.state !== C.STOPPED && (this.state = C.IDLE); + } + resetStartWhenNotLoaded(e) { + if (!this.hls.hasEnoughToStart) { + this.startFragRequested = !1; + const t = e ? e.details : null; + t != null && t.live ? (this.log("resetting startPosition for live start"), this.startPosition = -1, this.setStartPosition(t, t.fragmentStart), this.resetLoadingState()) : this.nextLoadPosition = this.startPosition; + } + } + resetWhenMissingContext(e) { + this.warn(`The loading context changed while buffering fragment ${e.sn} of ${this.playlistLabel()} ${e.level}. This chunk will not be buffered.`), this.removeUnbufferedFrags(), this.resetStartWhenNotLoaded(this.levelLastLoaded), this.resetLoadingState(); + } + removeUnbufferedFrags(e = 0) { + this.fragmentTracker.removeFragmentsInRange(e, 1 / 0, this.playlistType, !1, !0); + } + updateLevelTiming(e, t, s, i) { + const r = s.details; + if (!r) { + this.warn("level.details undefined"); + return; + } + if (!Object.keys(e.elementaryStreams).reduce((c, l) => { + const h = e.elementaryStreams[l]; + if (h) { + const u = h.endPTS - h.startPTS; + if (u <= 0) + return this.warn(`Could not parse fragment ${e.sn} ${l} duration reliably (${u})`), c || !1; + const d = i ? 0 : Vn(r, e, h.startPTS, h.endPTS, h.startDTS, h.endDTS); + return this.hls.trigger(m.LEVEL_PTS_UPDATED, { + details: r, + level: s, + drift: d, + type: l, + frag: e, + start: h.startPTS, + end: h.endPTS + }), !0; + } + return c; + }, !1)) { + var o; + if (s.fragmentError === 0 && this.treatAsGap(e, s), ((o = this.transmuxer) == null ? void 0 : o.error) === null) { + const c = new Error(`Found no media in fragment ${e.sn} of ${this.playlistLabel()} ${e.level} resetting transmuxer to fallback to playlist timing`); + if (this.warn(c.message), this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_PARSING_ERROR, + fatal: !1, + error: c, + frag: e, + reason: `Found no media in msn ${e.sn} of ${this.playlistLabel()} "${s.url}"` + }), !this.hls) + return; + this.resetTransmuxer(); + } + } + this.state = C.PARSED, this.log(`Parsed ${e.type} sn: ${e.sn}${t ? " part: " + t.index : ""} of ${this.fragInfo(e, !1, t)})`), this.hls.trigger(m.FRAG_PARSED, { + frag: e, + part: t + }); + } + playlistLabel() { + return this.playlistType === $.MAIN ? "level" : "track"; + } + fragInfo(e, t = !0, s) { + var i, r; + return `${this.playlistLabel()} ${e.level} (${s ? "part" : "frag"}:[${((i = t && !s ? e.startPTS : (s || e).start) != null ? i : NaN).toFixed(3)}-${((r = t && !s ? e.endPTS : (s || e).end) != null ? r : NaN).toFixed(3)}]${s && e.type === "main" ? "INDEPENDENT=" + (s.independent ? "YES" : "NO") : ""}`; + } + treatAsGap(e, t) { + t && t.fragmentError++, e.gap = !0, this.fragmentTracker.removeFragment(e), this.fragmentTracker.fragBuffered(e, !0); + } + resetTransmuxer() { + var e; + (e = this.transmuxer) == null || e.reset(); + } + recoverWorkerError(e) { + e.event === "demuxerWorker" && (this.fragmentTracker.removeAllFragments(), this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null), this.resetStartWhenNotLoaded(this.levelLastLoaded), this.resetLoadingState()); + } + set state(e) { + const t = this._state; + t !== e && (this._state = e, this.log(`${t}->${e}`)); + } + get state() { + return this._state; + } +} +function Cr(a) { + return !!a.interstitialsController && a.enableInterstitialPlayback !== !1; +} +class Qn { + constructor() { + this.chunks = [], this.dataLength = 0; + } + push(e) { + this.chunks.push(e), this.dataLength += e.length; + } + flush() { + const { + chunks: e, + dataLength: t + } = this; + let s; + if (e.length) + e.length === 1 ? s = e[0] : s = Ol(e, t); + else return new Uint8Array(0); + return this.reset(), s; + } + reset() { + this.chunks.length = 0, this.dataLength = 0; + } +} +function Ol(a, e) { + const t = new Uint8Array(e); + let s = 0; + for (let i = 0; i < a.length; i++) { + const r = a[i]; + t.set(r, s), s += r.length; + } + return t; +} +var Fs = { exports: {} }, Pr; +function Fl() { + return Pr || (Pr = 1, function(a) { + var e = Object.prototype.hasOwnProperty, t = "~"; + function s() { + } + Object.create && (s.prototype = /* @__PURE__ */ Object.create(null), new s().__proto__ || (t = !1)); + function i(c, l, h) { + this.fn = c, this.context = l, this.once = h || !1; + } + function r(c, l, h, u, d) { + if (typeof h != "function") + throw new TypeError("The listener must be a function"); + var g = new i(h, u || c, d), f = t ? t + l : l; + return c._events[f] ? c._events[f].fn ? c._events[f] = [c._events[f], g] : c._events[f].push(g) : (c._events[f] = g, c._eventsCount++), c; + } + function n(c, l) { + --c._eventsCount === 0 ? c._events = new s() : delete c._events[l]; + } + function o() { + this._events = new s(), this._eventsCount = 0; + } + o.prototype.eventNames = function() { + var l = [], h, u; + if (this._eventsCount === 0) return l; + for (u in h = this._events) + e.call(h, u) && l.push(t ? u.slice(1) : u); + return Object.getOwnPropertySymbols ? l.concat(Object.getOwnPropertySymbols(h)) : l; + }, o.prototype.listeners = function(l) { + var h = t ? t + l : l, u = this._events[h]; + if (!u) return []; + if (u.fn) return [u.fn]; + for (var d = 0, g = u.length, f = new Array(g); d < g; d++) + f[d] = u[d].fn; + return f; + }, o.prototype.listenerCount = function(l) { + var h = t ? t + l : l, u = this._events[h]; + return u ? u.fn ? 1 : u.length : 0; + }, o.prototype.emit = function(l, h, u, d, g, f) { + var E = t ? t + l : l; + if (!this._events[E]) return !1; + var p = this._events[E], y = arguments.length, S, T; + if (p.fn) { + switch (p.once && this.removeListener(l, p.fn, void 0, !0), y) { + case 1: + return p.fn.call(p.context), !0; + case 2: + return p.fn.call(p.context, h), !0; + case 3: + return p.fn.call(p.context, h, u), !0; + case 4: + return p.fn.call(p.context, h, u, d), !0; + case 5: + return p.fn.call(p.context, h, u, d, g), !0; + case 6: + return p.fn.call(p.context, h, u, d, g, f), !0; + } + for (T = 1, S = new Array(y - 1); T < y; T++) + S[T - 1] = arguments[T]; + p.fn.apply(p.context, S); + } else { + var v = p.length, x; + for (T = 0; T < v; T++) + switch (p[T].once && this.removeListener(l, p[T].fn, void 0, !0), y) { + case 1: + p[T].fn.call(p[T].context); + break; + case 2: + p[T].fn.call(p[T].context, h); + break; + case 3: + p[T].fn.call(p[T].context, h, u); + break; + case 4: + p[T].fn.call(p[T].context, h, u, d); + break; + default: + if (!S) for (x = 1, S = new Array(y - 1); x < y; x++) + S[x - 1] = arguments[x]; + p[T].fn.apply(p[T].context, S); + } + } + return !0; + }, o.prototype.on = function(l, h, u) { + return r(this, l, h, u, !1); + }, o.prototype.once = function(l, h, u) { + return r(this, l, h, u, !0); + }, o.prototype.removeListener = function(l, h, u, d) { + var g = t ? t + l : l; + if (!this._events[g]) return this; + if (!h) + return n(this, g), this; + var f = this._events[g]; + if (f.fn) + f.fn === h && (!d || f.once) && (!u || f.context === u) && n(this, g); + else { + for (var E = 0, p = [], y = f.length; E < y; E++) + (f[E].fn !== h || d && !f[E].once || u && f[E].context !== u) && p.push(f[E]); + p.length ? this._events[g] = p.length === 1 ? p[0] : p : n(this, g); + } + return this; + }, o.prototype.removeAllListeners = function(l) { + var h; + return l ? (h = t ? t + l : l, this._events[h] && n(this, h)) : (this._events = new s(), this._eventsCount = 0), this; + }, o.prototype.off = o.prototype.removeListener, o.prototype.addListener = o.prototype.on, o.prefixed = t, o.EventEmitter = o, a.exports = o; + }(Fs)), Fs.exports; +} +var Ml = Fl(), Li = /* @__PURE__ */ uo(Ml); +const wt = "1.6.5", Et = {}; +function Nl() { + return typeof __HLS_WORKER_BUNDLE__ == "function"; +} +function Bl() { + const a = Et[wt]; + if (a) + return a.clientCount++, a; + const e = new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`], { + type: "text/javascript" + }), t = self.URL.createObjectURL(e), i = { + worker: new self.Worker(t), + objectURL: t, + clientCount: 1 + }; + return Et[wt] = i, i; +} +function Ul(a) { + const e = Et[a]; + if (e) + return e.clientCount++, e; + const t = new self.URL(a, self.location.href).href, i = { + worker: new self.Worker(t), + scriptURL: t, + clientCount: 1 + }; + return Et[a] = i, i; +} +function $l(a) { + const e = Et[a || wt]; + if (e && e.clientCount-- === 1) { + const { + worker: s, + objectURL: i + } = e; + delete Et[a || wt], i && self.URL.revokeObjectURL(i), s.terminate(); + } +} +function Zn(a, e) { + return e + 10 <= a.length && a[e] === 51 && a[e + 1] === 68 && a[e + 2] === 73 && a[e + 3] < 255 && a[e + 4] < 255 && a[e + 6] < 128 && a[e + 7] < 128 && a[e + 8] < 128 && a[e + 9] < 128; +} +function Ii(a, e) { + return e + 10 <= a.length && a[e] === 73 && a[e + 1] === 68 && a[e + 2] === 51 && a[e + 3] < 255 && a[e + 4] < 255 && a[e + 6] < 128 && a[e + 7] < 128 && a[e + 8] < 128 && a[e + 9] < 128; +} +function As(a, e) { + let t = 0; + return t = (a[e] & 127) << 21, t |= (a[e + 1] & 127) << 14, t |= (a[e + 2] & 127) << 7, t |= a[e + 3] & 127, t; +} +function Ot(a, e) { + const t = e; + let s = 0; + for (; Ii(a, e); ) { + s += 10; + const i = As(a, e + 6); + s += i, Zn(a, e + 10) && (s += 10), e += s; + } + if (s > 0) + return a.subarray(t, t + s); +} +function Gl(a, e, t, s) { + const i = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], r = e[t + 2], n = r >> 2 & 15; + if (n > 12) { + const g = new Error(`invalid ADTS sampling index:${n}`); + a.emit(m.ERROR, m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_PARSING_ERROR, + fatal: !0, + error: g, + reason: g.message + }); + return; + } + const o = (r >> 6 & 3) + 1, c = e[t + 3] >> 6 & 3 | (r & 1) << 2, l = "mp4a.40." + o, h = i[n]; + let u = n; + (o === 5 || o === 29) && (u -= 3); + const d = [o << 3 | (u & 14) >> 1, (u & 1) << 7 | c << 3]; + return J.log(`manifest codec:${s}, parsed codec:${l}, channels:${c}, rate:${h} (ADTS object type:${o} sampling index:${n})`), { + config: d, + samplerate: h, + channelCount: c, + codec: l, + parsedCodec: l, + manifestCodec: s + }; +} +function Jn(a, e) { + return a[e] === 255 && (a[e + 1] & 246) === 240; +} +function ea(a, e) { + return a[e + 1] & 1 ? 7 : 9; +} +function Ri(a, e) { + return (a[e + 3] & 3) << 11 | a[e + 4] << 3 | (a[e + 5] & 224) >>> 5; +} +function Kl(a, e) { + return e + 5 < a.length; +} +function ys(a, e) { + return e + 1 < a.length && Jn(a, e); +} +function Vl(a, e) { + return Kl(a, e) && Jn(a, e) && Ri(a, e) <= a.length - e; +} +function Hl(a, e) { + if (ys(a, e)) { + const t = ea(a, e); + if (e + t >= a.length) + return !1; + const s = Ri(a, e); + if (s <= t) + return !1; + const i = e + s; + return i === a.length || ys(a, i); + } + return !1; +} +function ta(a, e, t, s, i) { + if (!a.samplerate) { + const r = Gl(e, t, s, i); + if (!r) + return; + ie(a, r); + } +} +function sa(a) { + return 1024 * 9e4 / a; +} +function Yl(a, e) { + const t = ea(a, e); + if (e + t <= a.length) { + const s = Ri(a, e) - t; + if (s > 0) + return { + headerLength: t, + frameLength: s + }; + } +} +function ia(a, e, t, s, i) { + const r = sa(a.samplerate), n = s + i * r, o = Yl(e, t); + let c; + if (o) { + const { + frameLength: u, + headerLength: d + } = o, g = d + u, f = Math.max(0, t + g - e.length); + f ? (c = new Uint8Array(g - d), c.set(e.subarray(t + d, e.length), 0)) : c = e.subarray(t + d, t + g); + const E = { + unit: c, + pts: n + }; + return f || a.samples.push(E), { + sample: E, + length: g, + missing: f + }; + } + const l = e.length - t; + return c = new Uint8Array(l), c.set(e.subarray(t, e.length), 0), { + sample: { + unit: c, + pts: n + }, + length: l, + missing: -1 + }; +} +function Wl(a, e) { + return Ii(a, e) && As(a, e + 6) + 10 <= a.length - e; +} +function ql(a) { + return a instanceof ArrayBuffer ? a : a.byteOffset == 0 && a.byteLength == a.buffer.byteLength ? a.buffer : new Uint8Array(a).buffer; +} +function Ms(a, e = 0, t = 1 / 0) { + return jl(a, e, t, Uint8Array); +} +function jl(a, e, t, s) { + const i = Xl(a); + let r = 1; + "BYTES_PER_ELEMENT" in s && (r = s.BYTES_PER_ELEMENT); + const n = zl(a) ? a.byteOffset : 0, o = (n + a.byteLength) / r, c = (n + e) / r, l = Math.floor(Math.max(0, Math.min(c, o))), h = Math.floor(Math.min(l + Math.max(t, 0), o)); + return new s(i, l, h - l); +} +function Xl(a) { + return a instanceof ArrayBuffer ? a : a.buffer; +} +function zl(a) { + return a && a.buffer instanceof ArrayBuffer && a.byteLength !== void 0 && a.byteOffset !== void 0; +} +function Ql(a) { + const e = { + key: a.type, + description: "", + data: "", + mimeType: null, + pictureType: null + }, t = 3; + if (a.size < 2) + return; + if (a.data[0] !== t) { + console.log("Ignore frame with unrecognized character encoding"); + return; + } + const s = a.data.subarray(1).indexOf(0); + if (s === -1) + return; + const i = xe(Ms(a.data, 1, s)), r = a.data[2 + s], n = a.data.subarray(3 + s).indexOf(0); + if (n === -1) + return; + const o = xe(Ms(a.data, 3 + s, n)); + let c; + return i === "-->" ? c = xe(Ms(a.data, 4 + s + n)) : c = ql(a.data.subarray(4 + s + n)), e.mimeType = i, e.pictureType = r, e.description = o, e.data = c, e; +} +function Zl(a) { + if (a.size < 2) + return; + const e = xe(a.data, !0), t = new Uint8Array(a.data.subarray(e.length + 1)); + return { + key: a.type, + info: e, + data: t.buffer + }; +} +function Jl(a) { + if (a.size < 2) + return; + if (a.type === "TXXX") { + let t = 1; + const s = xe(a.data.subarray(t), !0); + t += s.length + 1; + const i = xe(a.data.subarray(t)); + return { + key: a.type, + info: s, + data: i + }; + } + const e = xe(a.data.subarray(1)); + return { + key: a.type, + info: "", + data: e + }; +} +function ec(a) { + if (a.type === "WXXX") { + if (a.size < 2) + return; + let t = 1; + const s = xe(a.data.subarray(t), !0); + t += s.length + 1; + const i = xe(a.data.subarray(t)); + return { + key: a.type, + info: s, + data: i + }; + } + const e = xe(a.data); + return { + key: a.type, + info: "", + data: e + }; +} +function tc(a) { + return a.type === "PRIV" ? Zl(a) : a.type[0] === "W" ? ec(a) : a.type === "APIC" ? Ql(a) : Jl(a); +} +function sc(a) { + const e = String.fromCharCode(a[0], a[1], a[2], a[3]), t = As(a, 4), s = 10; + return { + type: e, + size: t, + data: a.subarray(s, s + t) + }; +} +const Wt = 10, ic = 10; +function ra(a) { + let e = 0; + const t = []; + for (; Ii(a, e); ) { + const s = As(a, e + 6); + a[e + 5] >> 6 & 1 && (e += Wt), e += Wt; + const i = e + s; + for (; e + ic < i; ) { + const r = sc(a.subarray(e)), n = tc(r); + n && t.push(n), e += r.size + Wt; + } + Zn(a, e) && (e += Wt); + } + return t; +} +function na(a) { + return a && a.key === "PRIV" && a.info === "com.apple.streaming.transportStreamTimestamp"; +} +function rc(a) { + if (a.data.byteLength === 8) { + const e = new Uint8Array(a.data), t = e[3] & 1; + let s = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7]; + return s /= 45, t && (s += 4772185884e-2), Math.round(s); + } +} +function bi(a) { + const e = ra(a); + for (let t = 0; t < e.length; t++) { + const s = e[t]; + if (na(s)) + return rc(s); + } +} +let Te = /* @__PURE__ */ function(a) { + return a.audioId3 = "org.id3", a.dateRange = "com.apple.quicktime.HLS", a.emsg = "https://aomedia.org/emsg/ID3", a.misbklv = "urn:misb:KLV:bin:1910.1", a; +}({}); +function Oe(a = "", e = 9e4) { + return { + type: a, + id: -1, + pid: -1, + inputTimeScale: e, + sequenceNumber: -1, + samples: [], + dropped: 0 + }; +} +class _i { + constructor() { + this._audioTrack = void 0, this._id3Track = void 0, this.frameIndex = 0, this.cachedData = null, this.basePTS = null, this.initPTS = null, this.lastPTS = null; + } + resetInitSegment(e, t, s, i) { + this._id3Track = { + type: "id3", + id: 3, + pid: -1, + inputTimeScale: 9e4, + sequenceNumber: 0, + samples: [], + dropped: 0 + }; + } + resetTimeStamp(e) { + this.initPTS = e, this.resetContiguity(); + } + resetContiguity() { + this.basePTS = null, this.lastPTS = null, this.frameIndex = 0; + } + canParse(e, t) { + return !1; + } + appendFrame(e, t, s) { + } + // feed incoming data to the front of the parsing pipeline + demux(e, t) { + this.cachedData && (e = be(this.cachedData, e), this.cachedData = null); + let s = Ot(e, 0), i = s ? s.length : 0, r; + const n = this._audioTrack, o = this._id3Track, c = s ? bi(s) : void 0, l = e.length; + for ((this.basePTS === null || this.frameIndex === 0 && N(c)) && (this.basePTS = nc(c, t, this.initPTS), this.lastPTS = this.basePTS), this.lastPTS === null && (this.lastPTS = this.basePTS), s && s.length > 0 && o.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: s, + type: Te.audioId3, + duration: Number.POSITIVE_INFINITY + }); i < l; ) { + if (this.canParse(e, i)) { + const h = this.appendFrame(n, e, i); + h ? (this.frameIndex++, this.lastPTS = h.sample.pts, i += h.length, r = i) : i = l; + } else Wl(e, i) ? (s = Ot(e, i), o.samples.push({ + pts: this.lastPTS, + dts: this.lastPTS, + data: s, + type: Te.audioId3, + duration: Number.POSITIVE_INFINITY + }), i += s.length, r = i) : i++; + if (i === l && r !== l) { + const h = e.slice(r); + this.cachedData ? this.cachedData = be(this.cachedData, h) : this.cachedData = h; + } + } + return { + audioTrack: n, + videoTrack: Oe(), + id3Track: o, + textTrack: Oe() + }; + } + demuxSampleAes(e, t, s) { + return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`)); + } + flush(e) { + const t = this.cachedData; + return t && (this.cachedData = null, this.demux(t, 0)), { + audioTrack: this._audioTrack, + videoTrack: Oe(), + id3Track: this._id3Track, + textTrack: Oe() + }; + } + destroy() { + this.cachedData = null, this._audioTrack = this._id3Track = void 0; + } +} +const nc = (a, e, t) => { + if (N(a)) + return a * 90; + const s = t ? t.baseTime * 9e4 / t.timescale : 0; + return e * 9e4 + s; +}; +let qt = null; +const ac = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160], oc = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3], lc = [ + // MPEG 2.5 + [ + 0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ], + // Reserved + [ + 0, + // Reserved + 0, + // Layer3 + 0, + // Layer2 + 0 + // Layer1 + ], + // MPEG 2 + [ + 0, + // Reserved + 72, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ], + // MPEG 1 + [ + 0, + // Reserved + 144, + // Layer3 + 144, + // Layer2 + 12 + // Layer1 + ] +], cc = [ + 0, + // Reserved + 1, + // Layer3 + 1, + // Layer2 + 4 + // Layer1 +]; +function aa(a, e, t, s, i) { + if (t + 24 > e.length) + return; + const r = oa(e, t); + if (r && t + r.frameLength <= e.length) { + const n = r.samplesPerFrame * 9e4 / r.sampleRate, o = s + i * n, c = { + unit: e.subarray(t, t + r.frameLength), + pts: o, + dts: o + }; + return a.config = [], a.channelCount = r.channelCount, a.samplerate = r.sampleRate, a.samples.push(c), { + sample: c, + length: r.frameLength, + missing: 0 + }; + } +} +function oa(a, e) { + const t = a[e + 1] >> 3 & 3, s = a[e + 1] >> 1 & 3, i = a[e + 2] >> 4 & 15, r = a[e + 2] >> 2 & 3; + if (t !== 1 && i !== 0 && i !== 15 && r !== 3) { + const n = a[e + 2] >> 1 & 1, o = a[e + 3] >> 6, c = t === 3 ? 3 - s : s === 3 ? 3 : 4, l = ac[c * 14 + i - 1] * 1e3, u = oc[(t === 3 ? 0 : t === 2 ? 1 : 2) * 3 + r], d = o === 3 ? 1 : 2, g = lc[t][s], f = cc[s], E = g * 8 * f, p = Math.floor(g * l / u + n) * f; + if (qt === null) { + const T = (navigator.userAgent || "").match(/Chrome\/(\d+)/i); + qt = T ? parseInt(T[1]) : 0; + } + return !!qt && qt <= 87 && s === 2 && l >= 224e3 && o === 0 && (a[e + 3] = a[e + 3] | 128), { + sampleRate: u, + channelCount: d, + frameLength: p, + samplesPerFrame: E + }; + } +} +function Di(a, e) { + return a[e] === 255 && (a[e + 1] & 224) === 224 && (a[e + 1] & 6) !== 0; +} +function la(a, e) { + return e + 1 < a.length && Di(a, e); +} +function hc(a, e) { + return Di(a, e) && 4 <= a.length - e; +} +function ca(a, e) { + if (e + 1 < a.length && Di(a, e)) { + const s = oa(a, e); + let i = 4; + s != null && s.frameLength && (i = s.frameLength); + const r = e + i; + return r === a.length || la(a, r); + } + return !1; +} +class uc extends _i { + constructor(e, t) { + super(), this.observer = void 0, this.config = void 0, this.observer = e, this.config = t; + } + resetInitSegment(e, t, s, i) { + super.resetInitSegment(e, t, s, i), this._audioTrack = { + container: "audio/adts", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "aac", + samples: [], + manifestCodec: t, + duration: i, + inputTimeScale: 9e4, + dropped: 0 + }; + } + // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS + static probe(e, t) { + if (!e) + return !1; + const s = Ot(e, 0); + let i = (s == null ? void 0 : s.length) || 0; + if (ca(e, i)) + return !1; + for (let r = e.length; i < r; i++) + if (Hl(e, i)) + return t.log("ADTS sync word found !"), !0; + return !1; + } + canParse(e, t) { + return Vl(e, t); + } + appendFrame(e, t, s) { + ta(e, this.observer, t, s, e.manifestCodec); + const i = ia(e, t, s, this.basePTS, this.frameIndex); + if (i && i.missing === 0) + return i; + } +} +const ha = (a, e) => { + let t = 0, s = 5; + e += s; + const i = new Uint32Array(1), r = new Uint32Array(1), n = new Uint8Array(1); + for (; s > 0; ) { + n[0] = a[e]; + const o = Math.min(s, 8), c = 8 - o; + r[0] = 4278190080 >>> 24 + c << c, i[0] = (n[0] & r[0]) >> c, t = t ? t << o | i[0] : i[0], e += 1, s -= o; + } + return t; +}; +class dc extends _i { + constructor(e) { + super(), this.observer = void 0, this.observer = e; + } + resetInitSegment(e, t, s, i) { + super.resetInitSegment(e, t, s, i), this._audioTrack = { + container: "audio/ac-3", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "ac3", + samples: [], + manifestCodec: t, + duration: i, + inputTimeScale: 9e4, + dropped: 0 + }; + } + canParse(e, t) { + return t + 64 < e.length; + } + appendFrame(e, t, s) { + const i = ua(e, t, s, this.basePTS, this.frameIndex); + if (i !== -1) + return { + sample: e.samples[e.samples.length - 1], + length: i, + missing: 0 + }; + } + static probe(e) { + if (!e) + return !1; + const t = Ot(e, 0); + if (!t) + return !1; + const s = t.length; + return e[s] === 11 && e[s + 1] === 119 && bi(t) !== void 0 && // check the bsid to confirm ac-3 + ha(e, s) < 16; + } +} +function ua(a, e, t, s, i) { + if (t + 8 > e.length || e[t] !== 11 || e[t + 1] !== 119) + return -1; + const r = e[t + 4] >> 6; + if (r >= 3) + return -1; + const o = [48e3, 44100, 32e3][r], c = e[t + 4] & 63, h = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920][c * 3 + r] * 2; + if (t + h > e.length) + return -1; + const u = e[t + 6] >> 5; + let d = 0; + u === 2 ? d += 2 : (u & 1 && u !== 1 && (d += 2), u & 4 && (d += 2)); + const g = (e[t + 6] << 8 | e[t + 7]) >> 12 - d & 1, E = [2, 1, 2, 3, 3, 4, 4, 5][u] + g, p = e[t + 5] >> 3, y = e[t + 5] & 7, S = new Uint8Array([r << 6 | p << 1 | y >> 2, (y & 3) << 6 | u << 3 | g << 2 | c >> 4, c << 4 & 224]), T = 1536 / o * 9e4, v = s + i * T, x = e.subarray(t, t + h); + return a.config = S, a.channelCount = E, a.samplerate = o, a.samples.push({ + unit: x, + pts: v + }), h; +} +class fc extends _i { + resetInitSegment(e, t, s, i) { + super.resetInitSegment(e, t, s, i), this._audioTrack = { + container: "audio/mpeg", + type: "audio", + id: 2, + pid: -1, + sequenceNumber: 0, + segmentCodec: "mp3", + samples: [], + manifestCodec: t, + duration: i, + inputTimeScale: 9e4, + dropped: 0 + }; + } + static probe(e) { + if (!e) + return !1; + const t = Ot(e, 0); + let s = (t == null ? void 0 : t.length) || 0; + if (t && e[s] === 11 && e[s + 1] === 119 && bi(t) !== void 0 && // check the bsid to confirm ac-3 or ec-3 (not mp3) + ha(e, s) <= 16) + return !1; + for (let i = e.length; s < i; s++) + if (ca(e, s)) + return J.log("MPEG Audio sync word found !"), !0; + return !1; + } + canParse(e, t) { + return hc(e, t); + } + appendFrame(e, t, s) { + if (this.basePTS !== null) + return aa(e, t, s, this.basePTS, this.frameIndex); + } +} +const gc = /\/emsg[-/]ID3/i; +class mc { + constructor(e, t) { + this.remainderData = null, this.timeOffset = 0, this.config = void 0, this.videoTrack = void 0, this.audioTrack = void 0, this.id3Track = void 0, this.txtTrack = void 0, this.config = t; + } + resetTimeStamp() { + } + resetInitSegment(e, t, s, i) { + const r = this.videoTrack = Oe("video", 1), n = this.audioTrack = Oe("audio", 1), o = this.txtTrack = Oe("text", 1); + if (this.id3Track = Oe("id3", 1), this.timeOffset = 0, !(e != null && e.byteLength)) + return; + const c = Ln(e); + if (c.video) { + const { + id: l, + timescale: h, + codec: u, + supplemental: d + } = c.video; + r.id = l, r.timescale = o.timescale = h, r.codec = u, r.supplemental = d; + } + if (c.audio) { + const { + id: l, + timescale: h, + codec: u + } = c.audio; + n.id = l, n.timescale = h, n.codec = u; + } + o.id = vn.text, r.sampleDuration = 0, r.duration = n.duration = i; + } + resetContiguity() { + this.remainderData = null; + } + static probe(e) { + return Eo(e); + } + demux(e, t) { + this.timeOffset = t; + let s = e; + const i = this.videoTrack, r = this.txtTrack; + if (this.config.progressive) { + this.remainderData && (s = be(this.remainderData, e)); + const o = Lo(s); + this.remainderData = o.remainder, i.samples = o.valid || new Uint8Array(); + } else + i.samples = s; + const n = this.extractID3Track(i, t); + return r.samples = Zi(t, i), { + videoTrack: i, + audioTrack: this.audioTrack, + id3Track: n, + textTrack: this.txtTrack + }; + } + flush() { + const e = this.timeOffset, t = this.videoTrack, s = this.txtTrack; + t.samples = this.remainderData || new Uint8Array(), this.remainderData = null; + const i = this.extractID3Track(t, this.timeOffset); + return s.samples = Zi(e, t), { + videoTrack: t, + audioTrack: Oe(), + id3Track: i, + textTrack: Oe() + }; + } + extractID3Track(e, t) { + const s = this.id3Track; + if (e.samples.length) { + const i = j(e.samples, ["emsg"]); + i && i.forEach((r) => { + const n = Ro(r); + if (gc.test(n.schemeIdUri)) { + const o = kr(n, t); + let c = n.eventDuration === 4294967295 ? Number.POSITIVE_INFINITY : n.eventDuration / n.timeScale; + c <= 1e-3 && (c = Number.POSITIVE_INFINITY); + const l = n.payload; + s.samples.push({ + data: l, + len: l.byteLength, + dts: o, + pts: o, + type: Te.emsg, + duration: c + }); + } else if (this.config.enableEmsgKLVMetadata && n.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")) { + const o = kr(n, t); + s.samples.push({ + data: n.payload, + len: n.payload.byteLength, + dts: o, + pts: o, + type: Te.misbklv, + duration: Number.POSITIVE_INFINITY + }); + } + }); + } + return s; + } + demuxSampleAes(e, t, s) { + return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption")); + } + destroy() { + this.config = null, this.remainderData = null, this.videoTrack = this.audioTrack = this.id3Track = this.txtTrack = void 0; + } +} +function kr(a, e) { + return N(a.presentationTime) ? a.presentationTime / a.timeScale : e + a.presentationTimeDelta / a.timeScale; +} +class pc { + constructor(e, t, s) { + this.keyData = void 0, this.decrypter = void 0, this.keyData = s, this.decrypter = new Ti(t, { + removePKCS7Padding: !1 + }); + } + decryptBuffer(e) { + return this.decrypter.decrypt(e, this.keyData.key.buffer, this.keyData.iv.buffer, Qe.cbc); + } + // AAC - encrypt all full 16 bytes blocks starting from offset 16 + decryptAacSample(e, t, s) { + const i = e[t].unit; + if (i.length <= 16) + return; + const r = i.subarray(16, i.length - i.length % 16), n = r.buffer.slice(r.byteOffset, r.byteOffset + r.length); + this.decryptBuffer(n).then((o) => { + const c = new Uint8Array(o); + i.set(c, 16), this.decrypter.isSync() || this.decryptAacSamples(e, t + 1, s); + }); + } + decryptAacSamples(e, t, s) { + for (; ; t++) { + if (t >= e.length) { + s(); + return; + } + if (!(e[t].unit.length < 32) && (this.decryptAacSample(e, t, s), !this.decrypter.isSync())) + return; + } + } + // AVC - encrypt one 16 bytes block out of ten, starting from offset 32 + getAvcEncryptedData(e) { + const t = Math.floor((e.length - 48) / 160) * 16 + 16, s = new Int8Array(t); + let i = 0; + for (let r = 32; r < e.length - 16; r += 160, i += 16) + s.set(e.subarray(r, r + 16), i); + return s; + } + getAvcDecryptedUnit(e, t) { + const s = new Uint8Array(t); + let i = 0; + for (let r = 32; r < e.length - 16; r += 160, i += 16) + e.set(s.subarray(i, i + 16), r); + return e; + } + decryptAvcSample(e, t, s, i, r) { + const n = Rn(r.data), o = this.getAvcEncryptedData(n); + this.decryptBuffer(o.buffer).then((c) => { + r.data = this.getAvcDecryptedUnit(n, c), this.decrypter.isSync() || this.decryptAvcSamples(e, t, s + 1, i); + }); + } + decryptAvcSamples(e, t, s, i) { + if (e instanceof Uint8Array) + throw new Error("Cannot decrypt samples of type Uint8Array"); + for (; ; t++, s = 0) { + if (t >= e.length) { + i(); + return; + } + const r = e[t].units; + for (; !(s >= r.length); s++) { + const n = r[s]; + if (!(n.data.length <= 48 || n.type !== 1 && n.type !== 5) && (this.decryptAvcSample(e, t, s, i, n), !this.decrypter.isSync())) + return; + } + } + } +} +class da { + constructor() { + this.VideoSample = null; + } + createVideoSample(e, t, s) { + return { + key: e, + frame: !1, + pts: t, + dts: s, + units: [], + length: 0 + }; + } + getLastNalUnit(e) { + var t; + let s = this.VideoSample, i; + if ((!s || s.units.length === 0) && (s = e[e.length - 1]), (t = s) != null && t.units) { + const r = s.units; + i = r[r.length - 1]; + } + return i; + } + pushAccessUnit(e, t) { + if (e.units.length && e.frame) { + if (e.pts === void 0) { + const s = t.samples, i = s.length; + if (i) { + const r = s[i - 1]; + e.pts = r.pts, e.dts = r.dts; + } else { + t.dropped++; + return; + } + } + t.samples.push(e); + } + } + parseNALu(e, t, s) { + const i = t.byteLength; + let r = e.naluState || 0; + const n = r, o = []; + let c = 0, l, h, u, d = -1, g = 0; + for (r === -1 && (d = 0, g = this.getNALuType(t, 0), r = 0, c = 1); c < i; ) { + if (l = t[c++], !r) { + r = l ? 0 : 1; + continue; + } + if (r === 1) { + r = l ? 0 : 2; + continue; + } + if (!l) + r = 3; + else if (l === 1) { + if (h = c - r - 1, d >= 0) { + const f = { + data: t.subarray(d, h), + type: g + }; + o.push(f); + } else { + const f = this.getLastNalUnit(e.samples); + f && (n && c <= 4 - n && f.state && (f.data = f.data.subarray(0, f.data.byteLength - n)), h > 0 && (f.data = be(f.data, t.subarray(0, h)), f.state = 0)); + } + c < i ? (u = this.getNALuType(t, c), d = c, g = u, r = 0) : r = -1; + } else + r = 0; + } + if (d >= 0 && r >= 0) { + const f = { + data: t.subarray(d, i), + type: g, + state: r + }; + o.push(f); + } + if (o.length === 0) { + const f = this.getLastNalUnit(e.samples); + f && (f.data = be(f.data, t)); + } + return e.naluState = r, o; + } +} +class Rt { + constructor(e) { + this.data = void 0, this.bytesAvailable = void 0, this.word = void 0, this.bitsAvailable = void 0, this.data = e, this.bytesAvailable = e.byteLength, this.word = 0, this.bitsAvailable = 0; + } + // ():void + loadWord() { + const e = this.data, t = this.bytesAvailable, s = e.byteLength - t, i = new Uint8Array(4), r = Math.min(4, t); + if (r === 0) + throw new Error("no bytes available"); + i.set(e.subarray(s, s + r)), this.word = new DataView(i.buffer).getUint32(0), this.bitsAvailable = r * 8, this.bytesAvailable -= r; + } + // (count:int):void + skipBits(e) { + let t; + e = Math.min(e, this.bytesAvailable * 8 + this.bitsAvailable), this.bitsAvailable > e ? (this.word <<= e, this.bitsAvailable -= e) : (e -= this.bitsAvailable, t = e >> 3, e -= t << 3, this.bytesAvailable -= t, this.loadWord(), this.word <<= e, this.bitsAvailable -= e); + } + // (size:int):uint + readBits(e) { + let t = Math.min(this.bitsAvailable, e); + const s = this.word >>> 32 - t; + if (e > 32 && J.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= t, this.bitsAvailable > 0) + this.word <<= t; + else if (this.bytesAvailable > 0) + this.loadWord(); + else + throw new Error("no bits available"); + return t = e - t, t > 0 && this.bitsAvailable ? s << t | this.readBits(t) : s; + } + // ():uint + skipLZ() { + let e; + for (e = 0; e < this.bitsAvailable; ++e) + if (this.word & 2147483648 >>> e) + return this.word <<= e, this.bitsAvailable -= e, e; + return this.loadWord(), e + this.skipLZ(); + } + // ():void + skipUEG() { + this.skipBits(1 + this.skipLZ()); + } + // ():void + skipEG() { + this.skipBits(1 + this.skipLZ()); + } + // ():uint + readUEG() { + const e = this.skipLZ(); + return this.readBits(e + 1) - 1; + } + // ():int + readEG() { + const e = this.readUEG(); + return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1); + } + // Some convenience functions + // :Boolean + readBoolean() { + return this.readBits(1) === 1; + } + // ():int + readUByte() { + return this.readBits(8); + } + // ():int + readUShort() { + return this.readBits(16); + } + // ():int + readUInt() { + return this.readBits(32); + } +} +class wr extends da { + parsePES(e, t, s, i) { + const r = this.parseNALu(e, s.data, i); + let n = this.VideoSample, o, c = !1; + s.data = null, n && r.length && !e.audFound && (this.pushAccessUnit(n, e), n = this.VideoSample = this.createVideoSample(!1, s.pts, s.dts)), r.forEach((l) => { + var h, u; + switch (l.type) { + case 1: { + let E = !1; + o = !0; + const p = l.data; + if (c && p.length > 4) { + const y = this.readSliceType(p); + (y === 2 || y === 4 || y === 7 || y === 9) && (E = !0); + } + if (E) { + var d; + (d = n) != null && d.frame && !n.key && (this.pushAccessUnit(n, e), n = this.VideoSample = null); + } + n || (n = this.VideoSample = this.createVideoSample(!0, s.pts, s.dts)), n.frame = !0, n.key = E; + break; + } + case 5: + o = !0, (h = n) != null && h.frame && !n.key && (this.pushAccessUnit(n, e), n = this.VideoSample = null), n || (n = this.VideoSample = this.createVideoSample(!0, s.pts, s.dts)), n.key = !0, n.frame = !0; + break; + case 6: { + o = !0, Ei(l.data, 1, s.pts, t.samples); + break; + } + case 7: { + var g, f; + o = !0, c = !0; + const E = l.data, p = this.readSPS(E); + if (!e.sps || e.width !== p.width || e.height !== p.height || ((g = e.pixelRatio) == null ? void 0 : g[0]) !== p.pixelRatio[0] || ((f = e.pixelRatio) == null ? void 0 : f[1]) !== p.pixelRatio[1]) { + e.width = p.width, e.height = p.height, e.pixelRatio = p.pixelRatio, e.sps = [E]; + const y = E.subarray(1, 4); + let S = "avc1."; + for (let T = 0; T < 3; T++) { + let v = y[T].toString(16); + v.length < 2 && (v = "0" + v), S += v; + } + e.codec = S; + } + break; + } + case 8: + o = !0, e.pps = [l.data]; + break; + case 9: + o = !0, e.audFound = !0, (u = n) != null && u.frame && (this.pushAccessUnit(n, e), n = null), n || (n = this.VideoSample = this.createVideoSample(!1, s.pts, s.dts)); + break; + case 12: + o = !0; + break; + default: + o = !1; + break; + } + n && o && n.units.push(l); + }), i && n && (this.pushAccessUnit(n, e), this.VideoSample = null); + } + getNALuType(e, t) { + return e[t] & 31; + } + readSliceType(e) { + const t = new Rt(e); + return t.readUByte(), t.readUEG(), t.readUEG(); + } + /** + * The scaling list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count the number of entries in this scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */ + skipScalingList(e, t) { + let s = 8, i = 8, r; + for (let n = 0; n < e; n++) + i !== 0 && (r = t.readEG(), i = (s + r + 256) % 256), s = i === 0 ? s : i; + } + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @returns an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */ + readSPS(e) { + const t = new Rt(e); + let s = 0, i = 0, r = 0, n = 0, o, c, l; + const h = t.readUByte.bind(t), u = t.readBits.bind(t), d = t.readUEG.bind(t), g = t.readBoolean.bind(t), f = t.skipBits.bind(t), E = t.skipEG.bind(t), p = t.skipUEG.bind(t), y = this.skipScalingList.bind(this); + h(); + const S = h(); + if (u(5), f(3), h(), p(), S === 100 || S === 110 || S === 122 || S === 244 || S === 44 || S === 83 || S === 86 || S === 118 || S === 128) { + const R = d(); + if (R === 3 && f(1), p(), p(), f(1), g()) + for (c = R !== 3 ? 8 : 12, l = 0; l < c; l++) + g() && (l < 6 ? y(16, t) : y(64, t)); + } + p(); + const T = d(); + if (T === 0) + d(); + else if (T === 1) + for (f(1), E(), E(), o = d(), l = 0; l < o; l++) + E(); + p(), f(1); + const v = d(), x = d(), _ = u(1); + _ === 0 && f(1), f(1), g() && (s = d(), i = d(), r = d(), n = d()); + let A = [1, 1]; + if (g() && g()) + switch (h()) { + case 1: + A = [1, 1]; + break; + case 2: + A = [12, 11]; + break; + case 3: + A = [10, 11]; + break; + case 4: + A = [16, 11]; + break; + case 5: + A = [40, 33]; + break; + case 6: + A = [24, 11]; + break; + case 7: + A = [20, 11]; + break; + case 8: + A = [32, 11]; + break; + case 9: + A = [80, 33]; + break; + case 10: + A = [18, 11]; + break; + case 11: + A = [15, 11]; + break; + case 12: + A = [64, 33]; + break; + case 13: + A = [160, 99]; + break; + case 14: + A = [4, 3]; + break; + case 15: + A = [3, 2]; + break; + case 16: + A = [2, 1]; + break; + case 255: { + A = [h() << 8 | h(), h() << 8 | h()]; + break; + } + } + return { + width: Math.ceil((v + 1) * 16 - s * 2 - i * 2), + height: (2 - _) * (x + 1) * 16 - (_ ? 2 : 4) * (r + n), + pixelRatio: A + }; + } +} +class Or extends da { + constructor(...e) { + super(...e), this.initVPS = null; + } + parsePES(e, t, s, i) { + const r = this.parseNALu(e, s.data, i); + let n = this.VideoSample, o, c = !1; + s.data = null, n && r.length && !e.audFound && (this.pushAccessUnit(n, e), n = this.VideoSample = this.createVideoSample(!1, s.pts, s.dts)), r.forEach((l) => { + var h, u; + switch (l.type) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + n || (n = this.VideoSample = this.createVideoSample(!1, s.pts, s.dts)), n.frame = !0, o = !0; + break; + case 16: + case 17: + case 18: + case 21: + if (o = !0, c) { + var d; + (d = n) != null && d.frame && !n.key && (this.pushAccessUnit(n, e), n = this.VideoSample = null); + } + n || (n = this.VideoSample = this.createVideoSample(!0, s.pts, s.dts)), n.key = !0, n.frame = !0; + break; + case 19: + case 20: + o = !0, (h = n) != null && h.frame && !n.key && (this.pushAccessUnit(n, e), n = this.VideoSample = null), n || (n = this.VideoSample = this.createVideoSample(!0, s.pts, s.dts)), n.key = !0, n.frame = !0; + break; + case 39: + o = !0, Ei( + l.data, + 2, + // NALu header size + s.pts, + t.samples + ); + break; + case 32: + o = !0, e.vps || (typeof e.params != "object" && (e.params = {}), e.params = ie(e.params, this.readVPS(l.data)), this.initVPS = l.data), e.vps = [l.data]; + break; + case 33: + if (o = !0, c = !0, e.vps !== void 0 && e.vps[0] !== this.initVPS && e.sps !== void 0 && !this.matchSPS(e.sps[0], l.data) && (this.initVPS = e.vps[0], e.sps = e.pps = void 0), !e.sps) { + const g = this.readSPS(l.data); + e.width = g.width, e.height = g.height, e.pixelRatio = g.pixelRatio, e.codec = g.codecString, e.sps = [], typeof e.params != "object" && (e.params = {}); + for (const f in g.params) + e.params[f] = g.params[f]; + } + this.pushParameterSet(e.sps, l.data, e.vps), n || (n = this.VideoSample = this.createVideoSample(!0, s.pts, s.dts)), n.key = !0; + break; + case 34: + if (o = !0, typeof e.params == "object") { + if (!e.pps) { + e.pps = []; + const g = this.readPPS(l.data); + for (const f in g) + e.params[f] = g[f]; + } + this.pushParameterSet(e.pps, l.data, e.vps); + } + break; + case 35: + o = !0, e.audFound = !0, (u = n) != null && u.frame && (this.pushAccessUnit(n, e), n = null), n || (n = this.VideoSample = this.createVideoSample(!1, s.pts, s.dts)); + break; + default: + o = !1; + break; + } + n && o && n.units.push(l); + }), i && n && (this.pushAccessUnit(n, e), this.VideoSample = null); + } + pushParameterSet(e, t, s) { + (s && s[0] === this.initVPS || !s && !e.length) && e.push(t); + } + getNALuType(e, t) { + return (e[t] & 126) >>> 1; + } + ebsp2rbsp(e) { + const t = new Uint8Array(e.byteLength); + let s = 0; + for (let i = 0; i < e.byteLength; i++) + i >= 2 && e[i] === 3 && e[i - 1] === 0 && e[i - 2] === 0 || (t[s] = e[i], s++); + return new Uint8Array(t.buffer, 0, s); + } + pushAccessUnit(e, t) { + super.pushAccessUnit(e, t), this.initVPS && (this.initVPS = null); + } + readVPS(e) { + const t = new Rt(e); + t.readUByte(), t.readUByte(), t.readBits(4), t.skipBits(2), t.readBits(6); + const s = t.readBits(3), i = t.readBoolean(); + return { + numTemporalLayers: s + 1, + temporalIdNested: i + }; + } + readSPS(e) { + const t = new Rt(this.ebsp2rbsp(e)); + t.readUByte(), t.readUByte(), t.readBits(4); + const s = t.readBits(3); + t.readBoolean(); + const i = t.readBits(2), r = t.readBoolean(), n = t.readBits(5), o = t.readUByte(), c = t.readUByte(), l = t.readUByte(), h = t.readUByte(), u = t.readUByte(), d = t.readUByte(), g = t.readUByte(), f = t.readUByte(), E = t.readUByte(), p = t.readUByte(), y = t.readUByte(), S = [], T = []; + for (let Z = 0; Z < s; Z++) + S.push(t.readBoolean()), T.push(t.readBoolean()); + if (s > 0) + for (let Z = s; Z < 8; Z++) + t.readBits(2); + for (let Z = 0; Z < s; Z++) + S[Z] && (t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte(), t.readUByte()), T[Z] && t.readUByte(); + t.readUEG(); + const v = t.readUEG(); + v == 3 && t.skipBits(1); + const x = t.readUEG(), _ = t.readUEG(), A = t.readBoolean(); + let R = 0, D = 0, L = 0, k = 0; + A && (R += t.readUEG(), D += t.readUEG(), L += t.readUEG(), k += t.readUEG()); + const M = t.readUEG(), V = t.readUEG(), P = t.readUEG(), U = t.readBoolean(); + for (let Z = U ? 0 : s; Z <= s; Z++) + t.skipUEG(), t.skipUEG(), t.skipUEG(); + if (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.readBoolean() && t.readBoolean()) + for (let fe = 0; fe < 4; fe++) + for (let Ae = 0; Ae < (fe === 3 ? 2 : 6); Ae++) + if (!t.readBoolean()) + t.readUEG(); + else { + const _e = Math.min(64, 1 << 4 + (fe << 1)); + fe > 1 && t.readEG(); + for (let rt = 0; rt < _e; rt++) + t.readEG(); + } + t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.skipUEG(), t.skipUEG(), t.readBoolean()); + const G = t.readUEG(); + let w = 0; + for (let Z = 0; Z < G; Z++) { + let fe = !1; + if (Z !== 0 && (fe = t.readBoolean()), fe) { + Z === G && t.readUEG(), t.readBoolean(), t.readUEG(); + let Ae = 0; + for (let Ze = 0; Ze <= w; Ze++) { + const _e = t.readBoolean(); + let rt = !1; + _e || (rt = t.readBoolean()), (_e || rt) && Ae++; + } + w = Ae; + } else { + const Ae = t.readUEG(), Ze = t.readUEG(); + w = Ae + Ze; + for (let _e = 0; _e < Ae; _e++) + t.readUEG(), t.readBoolean(); + for (let _e = 0; _e < Ze; _e++) + t.readUEG(), t.readBoolean(); + } + } + if (t.readBoolean()) { + const Z = t.readUEG(); + for (let fe = 0; fe < Z; fe++) { + for (let Ae = 0; Ae < P + 4; Ae++) + t.readBits(1); + t.readBits(1); + } + } + let W = 0, Y = 1, X = 1, Q = !0, ee = 1, re = 0; + t.readBoolean(), t.readBoolean(); + let me = !1; + if (t.readBoolean()) { + if (t.readBoolean()) { + const Je = t.readUByte(), Ni = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2], Nt = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1]; + Je > 0 && Je < 16 ? (Y = Ni[Je - 1], X = Nt[Je - 1]) : Je === 255 && (Y = t.readBits(16), X = t.readBits(16)); + } + if (t.readBoolean() && t.readBoolean(), t.readBoolean() && (t.readBits(3), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.readUByte(), t.readUByte())), t.readBoolean() && (t.readUEG(), t.readUEG()), t.readBoolean(), t.readBoolean(), t.readBoolean(), me = t.readBoolean(), me && (R += t.readUEG(), D += t.readUEG(), L += t.readUEG(), k += t.readUEG()), t.readBoolean() && (ee = t.readBits(32), re = t.readBits(32), t.readBoolean() && t.readUEG(), t.readBoolean())) { + const Nt = t.readBoolean(), Bi = t.readBoolean(); + let St = !1; + (Nt || Bi) && (St = t.readBoolean(), St && (t.readUByte(), t.readBits(5), t.readBoolean(), t.readBits(5)), t.readBits(4), t.readBits(4), St && t.readBits(4), t.readBits(5), t.readBits(5), t.readBits(5)); + for (let Ui = 0; Ui <= s; Ui++) { + Q = t.readBoolean(); + const Ya = Q || t.readBoolean(); + let $i = !1; + Ya ? t.readEG() : $i = t.readBoolean(); + const Gi = $i ? 1 : t.readUEG() + 1; + if (Nt) + for (let vt = 0; vt < Gi; vt++) + t.readUEG(), t.readUEG(), St && (t.readUEG(), t.readUEG()), t.skipBits(1); + if (Bi) + for (let vt = 0; vt < Gi; vt++) + t.readUEG(), t.readUEG(), St && (t.readUEG(), t.readUEG()), t.skipBits(1); + } + } + t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(), W = t.readUEG()); + } + let He = x, Mi = _; + if (A || me) { + let Z = 1, fe = 1; + v === 1 ? Z = fe = 2 : v == 2 && (Z = 2), He = x - Z * D - Z * R, Mi = _ - fe * k - fe * L; + } + const Va = i ? ["A", "B", "C"][i] : "", Ha = o << 24 | c << 16 | l << 8 | h; + let Is = 0; + for (let Z = 0; Z < 32; Z++) + Is = (Is | (Ha >> Z & 1) << 31 - Z) >>> 0; + let Rs = Is.toString(16); + return n === 1 && Rs === "2" && (Rs = "6"), { + codecString: `hvc1.${Va}${n}.${Rs}.${r ? "H" : "L"}${y}.B0`, + params: { + general_tier_flag: r, + general_profile_idc: n, + general_profile_space: i, + general_profile_compatibility_flags: [o, c, l, h], + general_constraint_indicator_flags: [u, d, g, f, E, p], + general_level_idc: y, + bit_depth: M + 8, + bit_depth_luma_minus8: M, + bit_depth_chroma_minus8: V, + min_spatial_segmentation_idc: W, + chroma_format_idc: v, + frame_rate: { + fixed: Q, + fps: re / ee + } + }, + width: He, + height: Mi, + pixelRatio: [Y, X] + }; + } + readPPS(e) { + const t = new Rt(this.ebsp2rbsp(e)); + t.readUByte(), t.readUByte(), t.skipUEG(), t.skipUEG(), t.skipBits(2), t.skipBits(3), t.skipBits(2), t.skipUEG(), t.skipUEG(), t.skipEG(), t.skipBits(2), t.readBoolean() && t.skipUEG(), t.skipEG(), t.skipEG(), t.skipBits(4); + const i = t.readBoolean(), r = t.readBoolean(); + let n = 1; + return r && i ? n = 0 : r ? n = 3 : i && (n = 2), { + parallelismType: n + }; + } + matchSPS(e, t) { + return String.fromCharCode.apply(null, e).substr(3) === String.fromCharCode.apply(null, t).substr(3); + } +} +const he = 188; +class Xe { + constructor(e, t, s, i) { + this.logger = void 0, this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.sampleAes = null, this.pmtParsed = !1, this.audioCodec = void 0, this.videoCodec = void 0, this._pmtId = -1, this._videoTrack = void 0, this._audioTrack = void 0, this._id3Track = void 0, this._txtTrack = void 0, this.aacOverFlow = null, this.remainderData = null, this.videoParser = void 0, this.observer = e, this.config = t, this.typeSupported = s, this.logger = i, this.videoParser = null; + } + static probe(e, t) { + const s = Xe.syncOffset(e); + return s > 0 && t.warn(`MPEG2-TS detected but first sync word found @ offset ${s}`), s !== -1; + } + static syncOffset(e) { + const t = e.length; + let s = Math.min(he * 5, t - he) + 1, i = 0; + for (; i < s; ) { + let r = !1, n = -1, o = 0; + for (let c = i; c < t; c += he) + if (e[c] === 71 && (t - c === he || e[c + he] === 71)) { + if (o++, n === -1 && (n = c, n !== 0 && (s = Math.min(n + he * 99, e.length - he) + 1)), r || (r = ai(e, c) === 0), r && o > 1 && (n === 0 && o > 2 || c + he > s)) + return n; + } else { + if (o) + return -1; + break; + } + i++; + } + return -1; + } + /** + * Creates a track model internal to demuxer used to drive remuxing input + */ + static createTrack(e, t) { + return { + container: e === "video" || e === "audio" ? "video/mp2t" : void 0, + type: e, + id: vn[e], + pid: -1, + inputTimeScale: 9e4, + sequenceNumber: 0, + samples: [], + dropped: 0, + duration: e === "audio" ? t : void 0 + }; + } + /** + * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start) + * Resets all internal track instances of the demuxer. + */ + resetInitSegment(e, t, s, i) { + this.pmtParsed = !1, this._pmtId = -1, this._videoTrack = Xe.createTrack("video"), this._videoTrack.duration = i, this._audioTrack = Xe.createTrack("audio", i), this._id3Track = Xe.createTrack("id3"), this._txtTrack = Xe.createTrack("text"), this._audioTrack.segmentCodec = "aac", this.aacOverFlow = null, this.remainderData = null, this.audioCodec = t, this.videoCodec = s; + } + resetTimeStamp() { + } + resetContiguity() { + const { + _audioTrack: e, + _videoTrack: t, + _id3Track: s + } = this; + e && (e.pesData = null), t && (t.pesData = null), s && (s.pesData = null), this.aacOverFlow = null, this.remainderData = null; + } + demux(e, t, s = !1, i = !1) { + s || (this.sampleAes = null); + let r; + const n = this._videoTrack, o = this._audioTrack, c = this._id3Track, l = this._txtTrack; + let h = n.pid, u = n.pesData, d = o.pid, g = c.pid, f = o.pesData, E = c.pesData, p = null, y = this.pmtParsed, S = this._pmtId, T = e.length; + if (this.remainderData && (e = be(this.remainderData, e), T = e.length, this.remainderData = null), T < he && !i) + return this.remainderData = e, { + audioTrack: o, + videoTrack: n, + id3Track: c, + textTrack: l + }; + const v = Math.max(0, Xe.syncOffset(e)); + T -= (T - v) % he, T < e.byteLength && !i && (this.remainderData = new Uint8Array(e.buffer, T, e.buffer.byteLength - T)); + let x = 0; + for (let A = v; A < T; A += he) + if (e[A] === 71) { + const R = !!(e[A + 1] & 64), D = ai(e, A), L = (e[A + 3] & 48) >> 4; + let k; + if (L > 1) { + if (k = A + 5 + e[A + 4], k === A + he) + continue; + } else + k = A + 4; + switch (D) { + case h: + if (R) { + if (u && (r = lt(u, this.logger))) { + if (this.videoParser === null) + switch (n.segmentCodec) { + case "avc": + this.videoParser = new wr(); + break; + case "hevc": + this.videoParser = new Or(); + break; + } + this.videoParser !== null && this.videoParser.parsePES(n, l, r, !1); + } + u = { + data: [], + size: 0 + }; + } + u && (u.data.push(e.subarray(k, A + he)), u.size += A + he - k); + break; + case d: + if (R) { + if (f && (r = lt(f, this.logger))) + switch (o.segmentCodec) { + case "aac": + this.parseAACPES(o, r); + break; + case "mp3": + this.parseMPEGPES(o, r); + break; + case "ac3": + this.parseAC3PES(o, r); + break; + } + f = { + data: [], + size: 0 + }; + } + f && (f.data.push(e.subarray(k, A + he)), f.size += A + he - k); + break; + case g: + R && (E && (r = lt(E, this.logger)) && this.parseID3PES(c, r), E = { + data: [], + size: 0 + }), E && (E.data.push(e.subarray(k, A + he)), E.size += A + he - k); + break; + case 0: + R && (k += e[k] + 1), S = this._pmtId = Ec(e, k); + break; + case S: { + R && (k += e[k] + 1); + const M = yc(e, k, this.typeSupported, s, this.observer, this.logger); + h = M.videoPid, h > 0 && (n.pid = h, n.segmentCodec = M.segmentVideoCodec), d = M.audioPid, d > 0 && (o.pid = d, o.segmentCodec = M.segmentAudioCodec), g = M.id3Pid, g > 0 && (c.pid = g), p !== null && !y && (this.logger.warn(`MPEG-TS PMT found at ${A} after unknown PID '${p}'. Backtracking to sync byte @${v} to parse all TS packets.`), p = null, A = v - 188), y = this.pmtParsed = !0; + break; + } + case 17: + case 8191: + break; + default: + p = D; + break; + } + } else + x++; + x > 0 && oi(this.observer, new Error(`Found ${x} TS packet/s that do not start with 0x47`), void 0, this.logger), n.pesData = u, o.pesData = f, c.pesData = E; + const _ = { + audioTrack: o, + videoTrack: n, + id3Track: c, + textTrack: l + }; + return i && this.extractRemainingSamples(_), _; + } + flush() { + const { + remainderData: e + } = this; + this.remainderData = null; + let t; + return e ? t = this.demux(e, -1, !1, !0) : t = { + videoTrack: this._videoTrack, + audioTrack: this._audioTrack, + id3Track: this._id3Track, + textTrack: this._txtTrack + }, this.extractRemainingSamples(t), this.sampleAes ? this.decrypt(t, this.sampleAes) : t; + } + extractRemainingSamples(e) { + const { + audioTrack: t, + videoTrack: s, + id3Track: i, + textTrack: r + } = e, n = s.pesData, o = t.pesData, c = i.pesData; + let l; + if (n && (l = lt(n, this.logger))) { + if (this.videoParser === null) + switch (s.segmentCodec) { + case "avc": + this.videoParser = new wr(); + break; + case "hevc": + this.videoParser = new Or(); + break; + } + this.videoParser !== null && (this.videoParser.parsePES(s, r, l, !0), s.pesData = null); + } else + s.pesData = n; + if (o && (l = lt(o, this.logger))) { + switch (t.segmentCodec) { + case "aac": + this.parseAACPES(t, l); + break; + case "mp3": + this.parseMPEGPES(t, l); + break; + case "ac3": + this.parseAC3PES(t, l); + break; + } + t.pesData = null; + } else + o != null && o.size && this.logger.log("last AAC PES packet truncated,might overlap between fragments"), t.pesData = o; + c && (l = lt(c, this.logger)) ? (this.parseID3PES(i, l), i.pesData = null) : i.pesData = c; + } + demuxSampleAes(e, t, s) { + const i = this.demux(e, s, !0, !this.config.progressive), r = this.sampleAes = new pc(this.observer, this.config, t); + return this.decrypt(i, r); + } + decrypt(e, t) { + return new Promise((s) => { + const { + audioTrack: i, + videoTrack: r + } = e; + i.samples && i.segmentCodec === "aac" ? t.decryptAacSamples(i.samples, 0, () => { + r.samples ? t.decryptAvcSamples(r.samples, 0, 0, () => { + s(e); + }) : s(e); + }) : r.samples && t.decryptAvcSamples(r.samples, 0, 0, () => { + s(e); + }); + }); + } + destroy() { + this.observer && this.observer.removeAllListeners(), this.config = this.logger = this.observer = null, this.aacOverFlow = this.videoParser = this.remainderData = this.sampleAes = null, this._videoTrack = this._audioTrack = this._id3Track = this._txtTrack = void 0; + } + parseAACPES(e, t) { + let s = 0; + const i = this.aacOverFlow; + let r = t.data; + if (i) { + this.aacOverFlow = null; + const u = i.missing, d = i.sample.unit.byteLength; + if (u === -1) + r = be(i.sample.unit, r); + else { + const g = d - u; + i.sample.unit.set(r.subarray(0, u), g), e.samples.push(i.sample), s = i.missing; + } + } + let n, o; + for (n = s, o = r.length; n < o - 1 && !ys(r, n); n++) + ; + if (n !== s) { + let u; + const d = n < o - 1; + if (d ? u = `AAC PES did not start with ADTS header,offset:${n}` : u = "No ADTS header found in AAC PES", oi(this.observer, new Error(u), d, this.logger), !d) + return; + } + ta(e, this.observer, r, n, this.audioCodec); + let c; + if (t.pts !== void 0) + c = t.pts; + else if (i) { + const u = sa(e.samplerate); + c = i.sample.pts + u; + } else { + this.logger.warn("[tsdemuxer]: AAC PES unknown PTS"); + return; + } + let l = 0, h; + for (; n < o; ) + if (h = ia(e, r, n, c, l), n += h.length, h.missing) { + this.aacOverFlow = h; + break; + } else + for (l++; n < o - 1 && !ys(r, n); n++) + ; + } + parseMPEGPES(e, t) { + const s = t.data, i = s.length; + let r = 0, n = 0; + const o = t.pts; + if (o === void 0) { + this.logger.warn("[tsdemuxer]: MPEG PES unknown PTS"); + return; + } + for (; n < i; ) + if (la(s, n)) { + const c = aa(e, s, n, o, r); + if (c) + n += c.length, r++; + else + break; + } else + n++; + } + parseAC3PES(e, t) { + { + const s = t.data, i = t.pts; + if (i === void 0) { + this.logger.warn("[tsdemuxer]: AC3 PES unknown PTS"); + return; + } + const r = s.length; + let n = 0, o = 0, c; + for (; o < r && (c = ua(e, s, o, i, n++)) > 0; ) + o += c; + } + } + parseID3PES(e, t) { + if (t.pts === void 0) { + this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS"); + return; + } + const s = ie({}, t, { + type: this._videoTrack ? Te.emsg : Te.audioId3, + duration: Number.POSITIVE_INFINITY + }); + e.samples.push(s); + } +} +function ai(a, e) { + return ((a[e + 1] & 31) << 8) + a[e + 2]; +} +function Ec(a, e) { + return (a[e + 10] & 31) << 8 | a[e + 11]; +} +function yc(a, e, t, s, i, r) { + const n = { + audioPid: -1, + videoPid: -1, + id3Pid: -1, + segmentVideoCodec: "avc", + segmentAudioCodec: "aac" + }, o = (a[e + 1] & 15) << 8 | a[e + 2], c = e + 3 + o - 4, l = (a[e + 10] & 15) << 8 | a[e + 11]; + for (e += 12 + l; e < c; ) { + const h = ai(a, e), u = (a[e + 3] & 15) << 8 | a[e + 4]; + switch (a[e]) { + case 207: + if (!s) { + Ns("ADTS AAC", r); + break; + } + case 15: + n.audioPid === -1 && (n.audioPid = h); + break; + case 21: + n.id3Pid === -1 && (n.id3Pid = h); + break; + case 219: + if (!s) { + Ns("H.264", r); + break; + } + case 27: + n.videoPid === -1 && (n.videoPid = h); + break; + case 3: + case 4: + !t.mpeg && !t.mp3 ? r.log("MPEG audio found, not supported in this browser") : n.audioPid === -1 && (n.audioPid = h, n.segmentAudioCodec = "mp3"); + break; + case 193: + if (!s) { + Ns("AC-3", r); + break; + } + case 129: + t.ac3 ? n.audioPid === -1 && (n.audioPid = h, n.segmentAudioCodec = "ac3") : r.log("AC-3 audio found, not supported in this browser"); + break; + case 6: + if (n.audioPid === -1 && u > 0) { + let d = e + 5, g = u; + for (; g > 2; ) { + switch (a[d]) { + case 106: + t.ac3 !== !0 ? r.log("AC-3 audio found, not supported in this browser for now") : (n.audioPid = h, n.segmentAudioCodec = "ac3"); + break; + } + const E = a[d + 1] + 2; + d += E, g -= E; + } + } + break; + case 194: + case 135: + return oi(i, new Error("Unsupported EC-3 in M2TS found"), void 0, r), n; + case 36: + n.videoPid === -1 && (n.videoPid = h, n.segmentVideoCodec = "hevc", r.log("HEVC in M2TS found")); + break; + } + e += u + 5; + } + return n; +} +function oi(a, e, t, s) { + s.warn(`parsing error: ${e.message}`), a.emit(m.ERROR, m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_PARSING_ERROR, + fatal: !1, + levelRetry: t, + error: e, + reason: e.message + }); +} +function Ns(a, e) { + e.log(`${a} with AES-128-CBC encryption found in unencrypted stream`); +} +function lt(a, e) { + let t = 0, s, i, r, n, o; + const c = a.data; + if (!a || a.size === 0) + return null; + for (; c[0].length < 19 && c.length > 1; ) + c[0] = be(c[0], c[1]), c.splice(1, 1); + if (s = c[0], (s[0] << 16) + (s[1] << 8) + s[2] === 1) { + if (i = (s[4] << 8) + s[5], i && i > a.size - 6) + return null; + const h = s[7]; + h & 192 && (n = (s[9] & 14) * 536870912 + // 1 << 29 + (s[10] & 255) * 4194304 + // 1 << 22 + (s[11] & 254) * 16384 + // 1 << 14 + (s[12] & 255) * 128 + // 1 << 7 + (s[13] & 254) / 2, h & 64 ? (o = (s[14] & 14) * 536870912 + // 1 << 29 + (s[15] & 255) * 4194304 + // 1 << 22 + (s[16] & 254) * 16384 + // 1 << 14 + (s[17] & 255) * 128 + // 1 << 7 + (s[18] & 254) / 2, n - o > 60 * 9e4 && (e.warn(`${Math.round((n - o) / 9e4)}s delta between PTS and DTS, align them`), n = o)) : o = n), r = s[8]; + let u = r + 9; + if (a.size <= u) + return null; + a.size -= u; + const d = new Uint8Array(a.size); + for (let g = 0, f = c.length; g < f; g++) { + s = c[g]; + let E = s.byteLength; + if (u) + if (u > E) { + u -= E; + continue; + } else + s = s.subarray(u), E -= u, u = 0; + d.set(s, t), t += E; + } + return i && (i -= r + 3), { + data: d, + pts: n, + dts: o, + len: i + }; + } + return null; +} +class Tc { + static getSilentFrame(e, t) { + switch (e) { + case "mp4a.40.2": + if (t === 1) + return new Uint8Array([0, 200, 0, 128, 35, 128]); + if (t === 2) + return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]); + if (t === 3) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]); + if (t === 4) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]); + if (t === 5) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]); + if (t === 6) + return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]); + break; + default: + if (t === 1) + return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + if (t === 2) + return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + if (t === 3) + return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]); + break; + } + } +} +const Ye = Math.pow(2, 32) - 1; +class I { + static init() { + I.types = { + avc1: [], + // codingname + avcC: [], + hvc1: [], + hvcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], + ".mp3": [], + dac3: [], + "ac-3": [], + mvex: [], + mvhd: [], + pasp: [], + sdtp: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [], + smhd: [] + }; + let e; + for (e in I.types) + I.types.hasOwnProperty(e) && (I.types[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]); + const t = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // pre_defined + 118, + 105, + 100, + 101, + // handler_type: 'vide' + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 86, + 105, + 100, + 101, + 111, + 72, + 97, + 110, + 100, + 108, + 101, + 114, + 0 + // name: 'VideoHandler' + ]), s = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // pre_defined + 115, + 111, + 117, + 110, + // handler_type: 'soun' + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 83, + 111, + 117, + 110, + 100, + 72, + 97, + 110, + 100, + 108, + 101, + 114, + 0 + // name: 'SoundHandler' + ]); + I.HDLR_TYPES = { + video: t, + audio: s + }; + const i = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 1, + // entry_count + 0, + 0, + 0, + 12, + // entry_size + 117, + 114, + 108, + 32, + // 'url' type + 0, + // version 0 + 0, + 0, + 1 + // entry_flags + ]), r = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0 + // entry_count + ]); + I.STTS = I.STSC = I.STCO = r, I.STSZ = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + // sample_size + 0, + 0, + 0, + 0 + // sample_count + ]), I.VMHD = new Uint8Array([ + 0, + // version + 0, + 0, + 1, + // flags + 0, + 0, + // graphicsmode + 0, + 0, + 0, + 0, + 0, + 0 + // opcolor + ]), I.SMHD = new Uint8Array([ + 0, + // version + 0, + 0, + 0, + // flags + 0, + 0, + // balance + 0, + 0 + // reserved + ]), I.STSD = new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 1 + ]); + const n = new Uint8Array([105, 115, 111, 109]), o = new Uint8Array([97, 118, 99, 49]), c = new Uint8Array([0, 0, 0, 1]); + I.FTYP = I.box(I.types.ftyp, n, c, n, o), I.DINF = I.box(I.types.dinf, I.box(I.types.dref, i)); + } + static box(e, ...t) { + let s = 8, i = t.length; + const r = i; + for (; i--; ) + s += t[i].byteLength; + const n = new Uint8Array(s); + for (n[0] = s >> 24 & 255, n[1] = s >> 16 & 255, n[2] = s >> 8 & 255, n[3] = s & 255, n.set(e, 4), i = 0, s = 8; i < r; i++) + n.set(t[i], s), s += t[i].byteLength; + return n; + } + static hdlr(e) { + return I.box(I.types.hdlr, I.HDLR_TYPES[e]); + } + static mdat(e) { + return I.box(I.types.mdat, e); + } + static mdhd(e, t) { + t *= e; + const s = Math.floor(t / (Ye + 1)), i = Math.floor(t % (Ye + 1)); + return I.box(I.types.mdhd, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + e >> 24 & 255, + e >> 16 & 255, + e >> 8 & 255, + e & 255, + // timescale + s >> 24, + s >> 16 & 255, + s >> 8 & 255, + s & 255, + i >> 24, + i >> 16 & 255, + i >> 8 & 255, + i & 255, + 85, + 196, + // 'und' language (undetermined) + 0, + 0 + ])); + } + static mdia(e) { + return I.box(I.types.mdia, I.mdhd(e.timescale || 0, e.duration || 0), I.hdlr(e.type), I.minf(e)); + } + static mfhd(e) { + return I.box(I.types.mfhd, new Uint8Array([ + 0, + 0, + 0, + 0, + // flags + e >> 24, + e >> 16 & 255, + e >> 8 & 255, + e & 255 + // sequence_number + ])); + } + static minf(e) { + return e.type === "audio" ? I.box(I.types.minf, I.box(I.types.smhd, I.SMHD), I.DINF, I.stbl(e)) : I.box(I.types.minf, I.box(I.types.vmhd, I.VMHD), I.DINF, I.stbl(e)); + } + static moof(e, t, s) { + return I.box(I.types.moof, I.mfhd(e), I.traf(s, t)); + } + static moov(e) { + let t = e.length; + const s = []; + for (; t--; ) + s[t] = I.trak(e[t]); + return I.box.apply(null, [I.types.moov, I.mvhd(e[0].timescale || 0, e[0].duration || 0)].concat(s).concat(I.mvex(e))); + } + static mvex(e) { + let t = e.length; + const s = []; + for (; t--; ) + s[t] = I.trex(e[t]); + return I.box.apply(null, [I.types.mvex, ...s]); + } + static mvhd(e, t) { + t *= e; + const s = Math.floor(t / (Ye + 1)), i = Math.floor(t % (Ye + 1)), r = new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + e >> 24 & 255, + e >> 16 & 255, + e >> 8 & 255, + e & 255, + // timescale + s >> 24, + s >> 16 & 255, + s >> 8 & 255, + s & 255, + i >> 24, + i >> 16 & 255, + i >> 8 & 255, + i & 255, + 0, + 1, + 0, + 0, + // 1.0 rate + 1, + 0, + // 1.0 volume + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + // transformation: unity matrix + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + 255, + 255, + 255, + 255 + // next_track_ID + ]); + return I.box(I.types.mvhd, r); + } + static sdtp(e) { + const t = e.samples || [], s = new Uint8Array(4 + t.length); + let i, r; + for (i = 0; i < t.length; i++) + r = t[i].flags, s[i + 4] = r.dependsOn << 4 | r.isDependedOn << 2 | r.hasRedundancy; + return I.box(I.types.sdtp, s); + } + static stbl(e) { + return I.box(I.types.stbl, I.stsd(e), I.box(I.types.stts, I.STTS), I.box(I.types.stsc, I.STSC), I.box(I.types.stsz, I.STSZ), I.box(I.types.stco, I.STCO)); + } + static avc1(e) { + let t = [], s = [], i, r, n; + for (i = 0; i < e.sps.length; i++) + r = e.sps[i], n = r.byteLength, t.push(n >>> 8 & 255), t.push(n & 255), t = t.concat(Array.prototype.slice.call(r)); + for (i = 0; i < e.pps.length; i++) + r = e.pps[i], n = r.byteLength, s.push(n >>> 8 & 255), s.push(n & 255), s = s.concat(Array.prototype.slice.call(r)); + const o = I.box(I.types.avcC, new Uint8Array([ + 1, + // version + t[3], + // profile + t[4], + // profile compat + t[5], + // level + 255, + // lengthSizeMinusOne, hard-coded to 4 bytes + 224 | e.sps.length + // 3bit reserved (111) + numOfSequenceParameterSets + ].concat(t).concat([ + e.pps.length + // numOfPictureParameterSets + ]).concat(s))), c = e.width, l = e.height, h = e.pixelRatio[0], u = e.pixelRatio[1]; + return I.box( + I.types.avc1, + new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + // pre_defined + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + c >> 8 & 255, + c & 255, + // width + l >> 8 & 255, + l & 255, + // height + 0, + 72, + 0, + 0, + // horizresolution + 0, + 72, + 0, + 0, + // vertresolution + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + // frame_count + 18, + 100, + 97, + 105, + 108, + // dailymotion/hls.js + 121, + 109, + 111, + 116, + 105, + 111, + 110, + 47, + 104, + 108, + 115, + 46, + 106, + 115, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // compressorname + 0, + 24, + // depth = 24 + 17, + 17 + ]), + // pre_defined = -1 + o, + I.box(I.types.btrt, new Uint8Array([ + 0, + 28, + 156, + 128, + // bufferSizeDB + 0, + 45, + 198, + 192, + // maxBitrate + 0, + 45, + 198, + 192 + ])), + // avgBitrate + I.box(I.types.pasp, new Uint8Array([ + h >> 24, + // hSpacing + h >> 16 & 255, + h >> 8 & 255, + h & 255, + u >> 24, + // vSpacing + u >> 16 & 255, + u >> 8 & 255, + u & 255 + ])) + ); + } + static esds(e) { + const t = e.config; + return new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + 3, + // descriptor_type + 25, + // length + 0, + 1, + // es_id + 0, + // stream_priority + 4, + // descriptor_type + 17, + // length + 64, + // codec : mpeg4_audio + 21, + // stream_type + 0, + 0, + 0, + // buffer_size + 0, + 0, + 0, + 0, + // maxBitrate + 0, + 0, + 0, + 0, + // avgBitrate + 5, + // descriptor_type + 2, + // length + ...t, + 6, + 1, + 2 + // GASpecificConfig)); // length + audio config descriptor + ]); + } + static audioStsd(e) { + const t = e.samplerate || 0; + return new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // reserved + 0, + e.channelCount || 0, + // channelcount + 0, + 16, + // sampleSize:16bits + 0, + 0, + 0, + 0, + // reserved2 + t >> 8 & 255, + t & 255, + // + 0, + 0 + ]); + } + static mp4a(e) { + return I.box(I.types.mp4a, I.audioStsd(e), I.box(I.types.esds, I.esds(e))); + } + static mp3(e) { + return I.box(I.types[".mp3"], I.audioStsd(e)); + } + static ac3(e) { + return I.box(I.types["ac-3"], I.audioStsd(e), I.box(I.types.dac3, e.config)); + } + static stsd(e) { + const { + segmentCodec: t + } = e; + if (e.type === "audio") { + if (t === "aac") + return I.box(I.types.stsd, I.STSD, I.mp4a(e)); + if (t === "ac3" && e.config) + return I.box(I.types.stsd, I.STSD, I.ac3(e)); + if (t === "mp3" && e.codec === "mp3") + return I.box(I.types.stsd, I.STSD, I.mp3(e)); + } else if (e.pps && e.sps) { + if (t === "avc") + return I.box(I.types.stsd, I.STSD, I.avc1(e)); + if (t === "hevc" && e.vps) + return I.box(I.types.stsd, I.STSD, I.hvc1(e)); + } else + throw new Error("video track missing pps or sps"); + throw new Error(`unsupported ${e.type} segment codec (${t}/${e.codec})`); + } + static tkhd(e) { + const t = e.id, s = (e.duration || 0) * (e.timescale || 0), i = e.width || 0, r = e.height || 0, n = Math.floor(s / (Ye + 1)), o = Math.floor(s % (Ye + 1)); + return I.box(I.types.tkhd, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 7, + // flags + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + // creation_time + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3, + // modification_time + t >> 24 & 255, + t >> 16 & 255, + t >> 8 & 255, + t & 255, + // track_ID + 0, + 0, + 0, + 0, + // reserved + n >> 24, + n >> 16 & 255, + n >> 8 & 255, + n & 255, + o >> 24, + o >> 16 & 255, + o >> 8 & 255, + o & 255, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // reserved + 0, + 0, + // layer + 0, + 0, + // alternate_group + 0, + 0, + // non-audio track volume + 0, + 0, + // reserved + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 0, + 0, + 0, + // transformation: unity matrix + i >> 8 & 255, + i & 255, + 0, + 0, + // width + r >> 8 & 255, + r & 255, + 0, + 0 + // height + ])); + } + static traf(e, t) { + const s = I.sdtp(e), i = e.id, r = Math.floor(t / (Ye + 1)), n = Math.floor(t % (Ye + 1)); + return I.box( + I.types.traf, + I.box(I.types.tfhd, new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + i >> 24, + i >> 16 & 255, + i >> 8 & 255, + i & 255 + // track_ID + ])), + I.box(I.types.tfdt, new Uint8Array([ + 1, + // version 1 + 0, + 0, + 0, + // flags + r >> 24, + r >> 16 & 255, + r >> 8 & 255, + r & 255, + n >> 24, + n >> 16 & 255, + n >> 8 & 255, + n & 255 + ])), + I.trun(e, s.length + 16 + // tfhd + 20 + // tfdt + 8 + // traf header + 16 + // mfhd + 8 + // moof header + 8), + // mdat header + s + ); + } + /** + * Generate a track box. + * @param track a track definition + */ + static trak(e) { + return e.duration = e.duration || 4294967295, I.box(I.types.trak, I.tkhd(e), I.mdia(e)); + } + static trex(e) { + const t = e.id; + return I.box(I.types.trex, new Uint8Array([ + 0, + // version 0 + 0, + 0, + 0, + // flags + t >> 24, + t >> 16 & 255, + t >> 8 & 255, + t & 255, + // track_ID + 0, + 0, + 0, + 1, + // default_sample_description_index + 0, + 0, + 0, + 0, + // default_sample_duration + 0, + 0, + 0, + 0, + // default_sample_size + 0, + 1, + 0, + 1 + // default_sample_flags + ])); + } + static trun(e, t) { + const s = e.samples || [], i = s.length, r = 12 + 16 * i, n = new Uint8Array(r); + let o, c, l, h, u, d; + for (t += 8 + r, n.set([ + e.type === "video" ? 1 : 0, + // version 1 for video with signed-int sample_composition_time_offset + 0, + 15, + 1, + // flags + i >>> 24 & 255, + i >>> 16 & 255, + i >>> 8 & 255, + i & 255, + // sample_count + t >>> 24 & 255, + t >>> 16 & 255, + t >>> 8 & 255, + t & 255 + // data_offset + ], 0), o = 0; o < i; o++) + c = s[o], l = c.duration, h = c.size, u = c.flags, d = c.cts, n.set([ + l >>> 24 & 255, + l >>> 16 & 255, + l >>> 8 & 255, + l & 255, + // sample_duration + h >>> 24 & 255, + h >>> 16 & 255, + h >>> 8 & 255, + h & 255, + // sample_size + u.isLeading << 2 | u.dependsOn, + u.isDependedOn << 6 | u.hasRedundancy << 4 | u.paddingValue << 1 | u.isNonSync, + u.degradPrio & 61440, + u.degradPrio & 15, + // sample_flags + d >>> 24 & 255, + d >>> 16 & 255, + d >>> 8 & 255, + d & 255 + // sample_composition_time_offset + ], 12 + 16 * o); + return I.box(I.types.trun, n); + } + static initSegment(e) { + I.types || I.init(); + const t = I.moov(e); + return be(I.FTYP, t); + } + static hvc1(e) { + const t = e.params, s = [e.vps, e.sps, e.pps], i = 4, r = new Uint8Array([1, t.general_profile_space << 6 | (t.general_tier_flag ? 32 : 0) | t.general_profile_idc, t.general_profile_compatibility_flags[0], t.general_profile_compatibility_flags[1], t.general_profile_compatibility_flags[2], t.general_profile_compatibility_flags[3], t.general_constraint_indicator_flags[0], t.general_constraint_indicator_flags[1], t.general_constraint_indicator_flags[2], t.general_constraint_indicator_flags[3], t.general_constraint_indicator_flags[4], t.general_constraint_indicator_flags[5], t.general_level_idc, 240 | t.min_spatial_segmentation_idc >> 8, 255 & t.min_spatial_segmentation_idc, 252 | t.parallelismType, 252 | t.chroma_format_idc, 248 | t.bit_depth_luma_minus8, 248 | t.bit_depth_chroma_minus8, 0, parseInt(t.frame_rate.fps), i - 1 | t.temporal_id_nested << 2 | t.num_temporal_layers << 3 | (t.frame_rate.fixed ? 64 : 0), s.length]); + let n = r.length; + for (let f = 0; f < s.length; f += 1) { + n += 3; + for (let E = 0; E < s[f].length; E += 1) + n += 2 + s[f][E].length; + } + const o = new Uint8Array(n); + o.set(r, 0), n = r.length; + const c = s.length - 1; + for (let f = 0; f < s.length; f += 1) { + o.set(new Uint8Array([32 + f | (f === c ? 128 : 0), 0, s[f].length]), n), n += 3; + for (let E = 0; E < s[f].length; E += 1) + o.set(new Uint8Array([s[f][E].length >> 8, s[f][E].length & 255]), n), n += 2, o.set(s[f][E], n), n += s[f][E].length; + } + const l = I.box(I.types.hvcC, o), h = e.width, u = e.height, d = e.pixelRatio[0], g = e.pixelRatio[1]; + return I.box( + I.types.hvc1, + new Uint8Array([ + 0, + 0, + 0, + // reserved + 0, + 0, + 0, + // reserved + 0, + 1, + // data_reference_index + 0, + 0, + // pre_defined + 0, + 0, + // reserved + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // pre_defined + h >> 8 & 255, + h & 255, + // width + u >> 8 & 255, + u & 255, + // height + 0, + 72, + 0, + 0, + // horizresolution + 0, + 72, + 0, + 0, + // vertresolution + 0, + 0, + 0, + 0, + // reserved + 0, + 1, + // frame_count + 18, + 100, + 97, + 105, + 108, + // dailymotion/hls.js + 121, + 109, + 111, + 116, + 105, + 111, + 110, + 47, + 104, + 108, + 115, + 46, + 106, + 115, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // compressorname + 0, + 24, + // depth = 24 + 17, + 17 + ]), + // pre_defined = -1 + l, + I.box(I.types.btrt, new Uint8Array([ + 0, + 28, + 156, + 128, + // bufferSizeDB + 0, + 45, + 198, + 192, + // maxBitrate + 0, + 45, + 198, + 192 + ])), + // avgBitrate + I.box(I.types.pasp, new Uint8Array([ + d >> 24, + // hSpacing + d >> 16 & 255, + d >> 8 & 255, + d & 255, + g >> 24, + // vSpacing + g >> 16 & 255, + g >> 8 & 255, + g & 255 + ])) + ); + } +} +I.types = void 0; +I.HDLR_TYPES = void 0; +I.STTS = void 0; +I.STSC = void 0; +I.STCO = void 0; +I.STSZ = void 0; +I.VMHD = void 0; +I.SMHD = void 0; +I.STSD = void 0; +I.FTYP = void 0; +I.DINF = void 0; +const fa = 9e4; +function Ci(a, e, t = 1, s = !1) { + const i = a * e * t; + return s ? Math.round(i) : i; +} +function Sc(a, e, t = 1, s = !1) { + return Ci(a, e, 1 / t, s); +} +function xt(a, e = !1) { + return Ci(a, 1e3, 1 / fa, e); +} +function vc(a, e = 1) { + return Ci(a, fa, 1 / e); +} +const xc = 10 * 1e3, Ac = 1024, Lc = 1152, Ic = 1536; +let ct = null, Bs = null; +function Fr(a, e, t, s) { + return { + duration: e, + size: t, + cts: s, + flags: { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: a ? 2 : 1, + isNonSync: a ? 0 : 1 + } + }; +} +class rs { + constructor(e, t, s, i) { + if (this.logger = void 0, this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.ISGenerated = !1, this._initPTS = null, this._initDTS = null, this.nextAvcDts = null, this.nextAudioPts = null, this.videoSampleDuration = null, this.isAudioContiguous = !1, this.isVideoContiguous = !1, this.videoTrackConfig = void 0, this.observer = e, this.config = t, this.typeSupported = s, this.logger = i, this.ISGenerated = !1, ct === null) { + const n = (navigator.userAgent || "").match(/Chrome\/(\d+)/i); + ct = n ? parseInt(n[1]) : 0; + } + if (Bs === null) { + const r = navigator.userAgent.match(/Safari\/(\d+)/i); + Bs = r ? parseInt(r[1]) : 0; + } + } + destroy() { + this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null; + } + resetTimeStamp(e) { + this.logger.log("[mp4-remuxer]: initPTS & initDTS reset"), this._initPTS = this._initDTS = e; + } + resetNextTimestamp() { + this.logger.log("[mp4-remuxer]: reset next timestamp"), this.isVideoContiguous = !1, this.isAudioContiguous = !1; + } + resetInitSegment() { + this.logger.log("[mp4-remuxer]: ISGenerated flag reset"), this.ISGenerated = !1, this.videoTrackConfig = void 0; + } + getVideoStartPts(e) { + let t = !1; + const s = e[0].pts, i = e.reduce((r, n) => { + let o = n.pts, c = o - r; + return c < -4294967296 && (t = !0, o = Ie(o, s), c = o - r), c > 0 ? r : o; + }, s); + return t && this.logger.debug("PTS rollover detected"), i; + } + remux(e, t, s, i, r, n, o, c) { + let l, h, u, d, g, f, E = r, p = r; + const y = e.pid > -1, S = t.pid > -1, T = t.samples.length, v = e.samples.length > 0, x = o && T > 0 || T > 1; + if ((!y || v) && (!S || x) || this.ISGenerated || o) { + if (this.ISGenerated) { + var A, R, D, L; + const P = this.videoTrackConfig; + (P && (t.width !== P.width || t.height !== P.height || ((A = t.pixelRatio) == null ? void 0 : A[0]) !== ((R = P.pixelRatio) == null ? void 0 : R[0]) || ((D = t.pixelRatio) == null ? void 0 : D[1]) !== ((L = P.pixelRatio) == null ? void 0 : L[1])) || !P && x || this.nextAudioPts === null && v) && this.resetInitSegment(); + } + this.ISGenerated || (u = this.generateIS(e, t, r, n)); + const k = this.isVideoContiguous; + let M = -1, V; + if (x && (M = Rc(t.samples), !k && this.config.forceKeyFrameOnDiscontinuity)) + if (f = !0, M > 0) { + this.logger.warn(`[mp4-remuxer]: Dropped ${M} out of ${T} video samples due to a missing keyframe`); + const P = this.getVideoStartPts(t.samples); + t.samples = t.samples.slice(M), t.dropped += M, p += (t.samples[0].pts - P) / t.inputTimeScale, V = p; + } else M === -1 && (this.logger.warn(`[mp4-remuxer]: No keyframe found out of ${T} video samples`), f = !1); + if (this.ISGenerated) { + if (v && x) { + const P = this.getVideoStartPts(t.samples), F = (Ie(e.samples[0].pts, P) - P) / t.inputTimeScale; + E += Math.max(0, F), p += Math.max(0, -F); + } + if (v) { + if (e.samplerate || (this.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"), u = this.generateIS(e, t, r, n)), h = this.remuxAudio(e, E, this.isAudioContiguous, n, S || x || c === $.AUDIO ? p : void 0), x) { + const P = h ? h.endPTS - h.startPTS : 0; + t.inputTimeScale || (this.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"), u = this.generateIS(e, t, r, n)), l = this.remuxVideo(t, p, k, P); + } + } else x && (l = this.remuxVideo(t, p, k, 0)); + l && (l.firstKeyFrame = M, l.independent = M !== -1, l.firstKeyFramePTS = V); + } + } + return this.ISGenerated && this._initPTS && this._initDTS && (s.samples.length && (g = ga(s, r, this._initPTS, this._initDTS)), i.samples.length && (d = ma(i, r, this._initPTS))), { + audio: h, + video: l, + initSegment: u, + independent: f, + text: d, + id3: g + }; + } + generateIS(e, t, s, i) { + const r = e.samples, n = t.samples, o = this.typeSupported, c = {}, l = this._initPTS; + let h = !l || i, u = "audio/mp4", d, g, f, E; + if (h && (d = g = 1 / 0), e.config && r.length) { + switch (e.timescale = e.samplerate, e.segmentCodec) { + case "mp3": + o.mpeg ? (u = "audio/mpeg", e.codec = "") : o.mp3 && (e.codec = "mp3"); + break; + case "ac3": + e.codec = "ac-3"; + break; + } + c.audio = { + id: "audio", + container: u, + codec: e.codec, + initSegment: e.segmentCodec === "mp3" && o.mpeg ? new Uint8Array(0) : I.initSegment([e]), + metadata: { + channelCount: e.channelCount + } + }, h && (E = e.id, f = e.inputTimeScale, !l || f !== l.timescale ? d = g = r[0].pts - Math.round(f * s) : h = !1); + } + if (t.sps && t.pps && n.length) { + if (t.timescale = t.inputTimeScale, c.video = { + id: "main", + container: "video/mp4", + codec: t.codec, + initSegment: I.initSegment([t]), + metadata: { + width: t.width, + height: t.height + } + }, h) + if (E = t.id, f = t.inputTimeScale, !l || f !== l.timescale) { + const p = this.getVideoStartPts(n), y = Math.round(f * s); + g = Math.min(g, Ie(n[0].dts, p) - y), d = Math.min(d, p - y); + } else + h = !1; + this.videoTrackConfig = { + width: t.width, + height: t.height, + pixelRatio: t.pixelRatio + }; + } + if (Object.keys(c).length) + return this.ISGenerated = !0, h ? (this._initPTS = { + baseTime: d, + timescale: f + }, this._initDTS = { + baseTime: g, + timescale: f + }) : d = f = void 0, { + tracks: c, + initPTS: d, + timescale: f, + trackId: E + }; + } + remuxVideo(e, t, s, i) { + const r = e.inputTimeScale, n = e.samples, o = [], c = n.length, l = this._initPTS; + let h = this.nextAvcDts, u = 8, d = this.videoSampleDuration, g, f, E = Number.POSITIVE_INFINITY, p = Number.NEGATIVE_INFINITY, y = !1; + if (!s || h === null) { + const w = t * r, O = n[0].pts - Ie(n[0].dts, n[0].pts); + ct && h !== null && Math.abs(w - O - h) < 15e3 ? s = !0 : h = w - O; + } + const S = l.baseTime * r / l.timescale; + for (let w = 0; w < c; w++) { + const O = n[w]; + O.pts = Ie(O.pts - S, h), O.dts = Ie(O.dts - S, h), O.dts < n[w > 0 ? w - 1 : w].dts && (y = !0); + } + y && n.sort(function(w, O) { + const W = w.dts - O.dts, Y = w.pts - O.pts; + return W || Y; + }), g = n[0].dts, f = n[n.length - 1].dts; + const T = f - g, v = T ? Math.round(T / (c - 1)) : d || e.inputTimeScale / 30; + if (s) { + const w = g - h, O = w > v, W = w < -1; + if ((O || W) && (O ? this.logger.warn(`${(e.segmentCodec || "").toUpperCase()}: ${xt(w, !0)} ms (${w}dts) hole between fragments detected at ${t.toFixed(3)}`) : this.logger.warn(`${(e.segmentCodec || "").toUpperCase()}: ${xt(-w, !0)} ms (${w}dts) overlapping between fragments detected at ${t.toFixed(3)}`), !W || h >= n[0].pts || ct)) { + g = h; + const Y = n[0].pts - w; + if (O) + n[0].dts = g, n[0].pts = Y; + else { + let X = !0; + for (let Q = 0; Q < n.length && !(n[Q].dts > Y && X); Q++) { + const ee = n[Q].pts; + if (n[Q].dts -= w, n[Q].pts -= w, Q < n.length - 1) { + const re = n[Q + 1].pts, me = n[Q].pts, pe = re <= me, He = re <= ee; + X = pe == He; + } + } + } + this.logger.log(`Video: Initial PTS/DTS adjusted: ${xt(Y, !0)}/${xt(g, !0)}, delta: ${xt(w, !0)} ms`); + } + } + g = Math.max(0, g); + let x = 0, _ = 0, A = g; + for (let w = 0; w < c; w++) { + const O = n[w], W = O.units, Y = W.length; + let X = 0; + for (let Q = 0; Q < Y; Q++) + X += W[Q].data.length; + _ += X, x += Y, O.length = X, O.dts < A ? (O.dts = A, A += v / 4 | 0 || 1) : A = O.dts, E = Math.min(O.pts, E), p = Math.max(O.pts, p); + } + f = n[c - 1].dts; + const R = _ + 4 * x + 8; + let D; + try { + D = new Uint8Array(R); + } catch (w) { + this.observer.emit(m.ERROR, m.ERROR, { + type: K.MUX_ERROR, + details: b.REMUX_ALLOC_ERROR, + fatal: !1, + error: w, + bytes: R, + reason: `fail allocating video mdat ${R}` + }); + return; + } + const L = new DataView(D.buffer); + L.setUint32(0, R), D.set(I.types.mdat, 4); + let k = !1, M = Number.POSITIVE_INFINITY, V = Number.POSITIVE_INFINITY, P = Number.NEGATIVE_INFINITY, U = Number.NEGATIVE_INFINITY; + for (let w = 0; w < c; w++) { + const O = n[w], W = O.units; + let Y = 0; + for (let ee = 0, re = W.length; ee < re; ee++) { + const me = W[ee], pe = me.data, He = me.data.byteLength; + L.setUint32(u, He), u += 4, D.set(pe, u), u += He, Y += 4 + He; + } + let X; + if (w < c - 1) + d = n[w + 1].dts - O.dts, X = n[w + 1].pts - O.pts; + else { + const ee = this.config, re = w > 0 ? O.dts - n[w - 1].dts : v; + if (X = w > 0 ? O.pts - n[w - 1].pts : v, ee.stretchShortVideoTrack && this.nextAudioPts !== null) { + const me = Math.floor(ee.maxBufferHole * r), pe = (i ? E + i * r : this.nextAudioPts) - O.pts; + pe > me ? (d = pe - re, d < 0 ? d = re : k = !0, this.logger.log(`[mp4-remuxer]: It is approximately ${pe / 90} ms to the next segment; using duration ${d / 90} ms for the last video frame.`)) : d = re; + } else + d = re; + } + const Q = Math.round(O.pts - O.dts); + M = Math.min(M, d), P = Math.max(P, d), V = Math.min(V, X), U = Math.max(U, X), o.push(Fr(O.key, d, Y, Q)); + } + if (o.length) { + if (ct) { + if (ct < 70) { + const w = o[0].flags; + w.dependsOn = 2, w.isNonSync = 0; + } + } else if (Bs && U - V < P - M && v / P < 0.025 && o[0].cts === 0) { + this.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration."); + let w = g; + for (let O = 0, W = o.length; O < W; O++) { + const Y = w + o[O].duration, X = w + o[O].cts; + if (O < W - 1) { + const Q = Y + o[O + 1].cts; + o[O].duration = Q - X; + } else + o[O].duration = O ? o[O - 1].duration : v; + o[O].cts = 0, w = Y; + } + } + } + d = k || !d ? v : d, this.nextAvcDts = h = f + d, this.videoSampleDuration = d, this.isVideoContiguous = !0; + const G = { + data1: I.moof(e.sequenceNumber++, g, ie(e, { + samples: o + })), + data2: D, + startPTS: E / r, + endPTS: (p + d) / r, + startDTS: g / r, + endDTS: h / r, + type: "video", + hasAudio: !1, + hasVideo: !0, + nb: o.length, + dropped: e.dropped + }; + return e.samples = [], e.dropped = 0, G; + } + getSamplesPerFrame(e) { + switch (e.segmentCodec) { + case "mp3": + return Lc; + case "ac3": + return Ic; + default: + return Ac; + } + } + remuxAudio(e, t, s, i, r) { + const n = e.inputTimeScale, o = e.samplerate ? e.samplerate : n, c = n / o, l = this.getSamplesPerFrame(e), h = l * c, u = this._initPTS, d = e.segmentCodec === "mp3" && this.typeSupported.mpeg, g = [], f = r !== void 0; + let E = e.samples, p = d ? 0 : 8, y = this.nextAudioPts || -1; + const S = t * n, T = u.baseTime * n / u.timescale; + if (this.isAudioContiguous = s = s || E.length && y > 0 && (i && Math.abs(S - y) < 9e3 || Math.abs(Ie(E[0].pts - T, S) - y) < 20 * h), E.forEach(function(F) { + F.pts = Ie(F.pts - T, S); + }), !s || y < 0) { + if (E = E.filter((F) => F.pts >= 0), !E.length) + return; + r === 0 ? y = 0 : i && !f ? y = Math.max(0, S) : y = E[0].pts; + } + if (e.segmentCodec === "aac") { + const F = this.config.maxAudioFramesDrift; + for (let B = 0, G = y; B < E.length; B++) { + const w = E[B], O = w.pts, W = O - G, Y = Math.abs(1e3 * W / n); + if (W <= -F * h && f) + B === 0 && (this.logger.warn(`Audio frame @ ${(O / n).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1e3 * W / n)} ms.`), this.nextAudioPts = y = G = O); + else if (W >= F * h && Y < xc && f) { + let X = Math.round(W / h); + G = O - X * h, G < 0 && (X--, G += h), B === 0 && (this.nextAudioPts = y = G), this.logger.warn(`[mp4-remuxer]: Injecting ${X} audio frame @ ${(G / n).toFixed(3)}s due to ${Math.round(1e3 * W / n)} ms gap.`); + for (let Q = 0; Q < X; Q++) { + const ee = Math.max(G, 0); + let re = Tc.getSilentFrame(e.parsedCodec || e.manifestCodec || e.codec, e.channelCount); + re || (this.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."), re = w.unit.subarray()), E.splice(B, 0, { + unit: re, + pts: ee + }), G += h, B++; + } + } + w.pts = G, G += h; + } + } + let v = null, x = null, _, A = 0, R = E.length; + for (; R--; ) + A += E[R].unit.byteLength; + for (let F = 0, B = E.length; F < B; F++) { + const G = E[F], w = G.unit; + let O = G.pts; + if (x !== null) { + const Y = g[F - 1]; + Y.duration = Math.round((O - x) / c); + } else if (s && e.segmentCodec === "aac" && (O = y), v = O, A > 0) { + A += p; + try { + _ = new Uint8Array(A); + } catch (Y) { + this.observer.emit(m.ERROR, m.ERROR, { + type: K.MUX_ERROR, + details: b.REMUX_ALLOC_ERROR, + fatal: !1, + error: Y, + bytes: A, + reason: `fail allocating audio mdat ${A}` + }); + return; + } + d || (new DataView(_.buffer).setUint32(0, A), _.set(I.types.mdat, 4)); + } else + return; + _.set(w, p); + const W = w.byteLength; + p += W, g.push(Fr(!0, l, W, 0)), x = O; + } + const D = g.length; + if (!D) + return; + const L = g[g.length - 1]; + this.nextAudioPts = y = x + c * L.duration; + const k = d ? new Uint8Array(0) : I.moof(e.sequenceNumber++, v / c, ie({}, e, { + samples: g + })); + e.samples = []; + const M = v / n, V = y / n, U = { + data1: k, + data2: _, + startPTS: M, + endPTS: V, + startDTS: M, + endDTS: V, + type: "audio", + hasAudio: !0, + hasVideo: !1, + nb: D + }; + return this.isAudioContiguous = !0, U; + } +} +function Ie(a, e) { + let t; + if (e === null) + return a; + for (e < a ? t = -8589934592 : t = 8589934592; Math.abs(a - e) > 4294967296; ) + a += t; + return a; +} +function Rc(a) { + for (let e = 0; e < a.length; e++) + if (a[e].key) + return e; + return -1; +} +function ga(a, e, t, s) { + const i = a.samples.length; + if (!i) + return; + const r = a.inputTimeScale; + for (let o = 0; o < i; o++) { + const c = a.samples[o]; + c.pts = Ie(c.pts - t.baseTime * r / t.timescale, e * r) / r, c.dts = Ie(c.dts - s.baseTime * r / s.timescale, e * r) / r; + } + const n = a.samples; + return a.samples = [], { + samples: n + }; +} +function ma(a, e, t) { + const s = a.samples.length; + if (!s) + return; + const i = a.inputTimeScale; + for (let n = 0; n < s; n++) { + const o = a.samples[n]; + o.pts = Ie(o.pts - t.baseTime * i / t.timescale, e * i) / i; + } + a.samples.sort((n, o) => n.pts - o.pts); + const r = a.samples; + return a.samples = [], { + samples: r + }; +} +class bc { + constructor(e, t, s, i) { + this.logger = void 0, this.emitInitSegment = !1, this.audioCodec = void 0, this.videoCodec = void 0, this.initData = void 0, this.initPTS = null, this.initTracks = void 0, this.lastEndTime = null, this.isVideoContiguous = !1, this.logger = i; + } + destroy() { + } + resetTimeStamp(e) { + this.initPTS = e, this.lastEndTime = null; + } + resetNextTimestamp() { + this.isVideoContiguous = !1, this.lastEndTime = null; + } + resetInitSegment(e, t, s, i) { + this.audioCodec = t, this.videoCodec = s, this.generateInitSegment(vo(e, i)), this.emitInitSegment = !0; + } + generateInitSegment(e) { + let { + audioCodec: t, + videoCodec: s + } = this; + if (!(e != null && e.byteLength)) { + this.initTracks = void 0, this.initData = void 0; + return; + } + const i = this.initData = Ln(e); + i.audio && (t = Mr(i.audio, ne.AUDIO, this.logger)), i.video && (s = Mr(i.video, ne.VIDEO, this.logger)); + const r = {}; + i.audio && i.video ? r.audiovideo = { + container: "video/mp4", + codec: t + "," + s, + supplemental: i.video.supplemental, + initSegment: e, + id: "main" + } : i.audio ? r.audio = { + container: "audio/mp4", + codec: t, + initSegment: e, + id: "audio" + } : i.video ? r.video = { + container: "video/mp4", + codec: s, + supplemental: i.video.supplemental, + initSegment: e, + id: "main" + } : this.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."), this.initTracks = r; + } + remux(e, t, s, i, r, n) { + var o, c; + let { + initPTS: l, + lastEndTime: h + } = this; + const u = { + audio: void 0, + video: void 0, + text: i, + id3: s, + initSegment: void 0 + }; + N(h) || (h = this.lastEndTime = r || 0); + const d = t.samples; + if (!(d != null && d.length)) + return u; + const g = { + initPTS: void 0, + timescale: void 0, + trackId: void 0 + }; + let f = this.initData; + if ((o = f) != null && o.length || (this.generateInitSegment(d), f = this.initData), !((c = f) != null && c.length)) + return this.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."), u; + this.emitInitSegment && (g.tracks = this.initTracks, this.emitInitSegment = !1); + const E = xo(d, f, this.logger), p = f.audio ? E[f.audio.id] : null, y = f.video ? E[f.video.id] : null, S = jt(y, 1 / 0), T = jt(p, 1 / 0), v = jt(y, 0, !0), x = jt(p, 0, !0); + let _, A = r, R = 0; + if (p && (!y || !l && T < S || l && l.trackId === f.audio.id) ? (g.trackId = f.audio.id, _ = p, R = x - T) : y && (g.trackId = f.video.id, _ = y, R = v - S), _) { + const F = _.timescale; + A = _.start / F, g.timescale = F, l || (g.initPTS = _.start - r * F, this.initPTS = l = { + baseTime: g.initPTS, + timescale: F, + trackId: g.trackId + }); + } + (n || !l) && (_c(l, A, r, R) || g.timescale !== l.timescale) && (g.initPTS = A - r, l && l.timescale === 1 && this.logger.warn(`Adjusting initPTS @${r} from ${l.baseTime / l.timescale} to ${g.initPTS}`), this.initPTS = l = { + baseTime: g.initPTS, + timescale: 1 + }); + const D = e ? A - l.baseTime / l.timescale : h; + Ao(f, d, l.baseTime / l.timescale); + const L = D + R; + R > 0 ? this.lastEndTime = L : (this.logger.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp()); + const k = !!f.audio, M = !!f.video; + let V = ""; + k && (V += "audio"), M && (V += "video"); + const P = { + data1: d, + startPTS: D, + startDTS: D, + endPTS: L, + endDTS: L, + type: V, + hasAudio: k, + hasVideo: M, + nb: 1, + dropped: 0 + }; + u.audio = k && !M ? P : void 0, u.video = M ? P : void 0; + const U = y == null ? void 0 : y.sampleCount; + if (U) { + const F = y.keyFrameIndex, B = F !== -1; + P.nb = U, P.dropped = F === 0 || this.isVideoContiguous ? 0 : B ? F : U, P.independent = B, P.firstKeyFrame = F, B && y.keyFrameStart && (P.firstKeyFramePTS = y.keyFrameStart - l.baseTime / l.timescale), this.isVideoContiguous || (u.independent = B), this.isVideoContiguous || (this.isVideoContiguous = B), P.dropped && this.logger.warn(`fmp4 does not start with IDR: firstIDR ${F}/${U} dropped: ${P.dropped} pts: ${P.firstKeyFramePTS || "NA"}`); + } + return u.initSegment = g, u.id3 = ga(s, r, l, l), i.samples.length && (u.text = ma(i, r, l)), u; + } +} +function jt(a, e, t = !1) { + return (a == null ? void 0 : a.start) !== void 0 ? (a.start + (t ? a.duration : 0)) / a.timescale : e; +} +function _c(a, e, t, s) { + if (a === null) + return !0; + const i = Math.max(s, 1), r = e - a.baseTime / a.timescale; + return Math.abs(r - t) > i; +} +function Mr(a, e, t) { + const s = a == null ? void 0 : a.codec; + return s && s.length > 4 ? s : e === ne.AUDIO ? s === "ec-3" || s === "ac-3" || s === "alac" ? s : s === "fLaC" || s === "Opus" ? us(s, !1) : (t.warn(`Unhandled audio codec "${s}" in mp4 MAP`), s || "mp4a") : (t.warn(`Unhandled video codec "${s}" in mp4 MAP`), s || "avc1"); +} +let Ge; +try { + Ge = self.performance.now.bind(self.performance); +} catch { + Ge = Date.now; +} +const ns = [{ + demux: mc, + remux: bc +}, { + demux: Xe, + remux: rs +}, { + demux: uc, + remux: rs +}, { + demux: fc, + remux: rs +}]; +ns.splice(2, 0, { + demux: dc, + remux: rs +}); +class Nr { + constructor(e, t, s, i, r, n) { + this.asyncResult = !1, this.logger = void 0, this.observer = void 0, this.typeSupported = void 0, this.config = void 0, this.id = void 0, this.demuxer = void 0, this.remuxer = void 0, this.decrypter = void 0, this.probe = void 0, this.decryptionPromise = null, this.transmuxConfig = void 0, this.currentTransmuxState = void 0, this.observer = e, this.typeSupported = t, this.config = s, this.id = r, this.logger = n; + } + configure(e) { + this.transmuxConfig = e, this.decrypter && this.decrypter.reset(); + } + push(e, t, s, i) { + const r = s.transmuxing; + r.executeStart = Ge(); + let n = new Uint8Array(e); + const { + currentTransmuxState: o, + transmuxConfig: c + } = this; + i && (this.currentTransmuxState = i); + const { + contiguous: l, + discontinuity: h, + trackSwitch: u, + accurateTimeOffset: d, + timeOffset: g, + initSegmentChange: f + } = i || o, { + audioCodec: E, + videoCodec: p, + defaultInitPts: y, + duration: S, + initSegmentData: T + } = c, v = Dc(n, t); + if (v && ft(v.method)) { + const R = this.getDecrypter(), D = vi(v.method); + if (R.isSync()) { + let L = R.softwareDecrypt(n, v.key.buffer, v.iv.buffer, D); + if (s.part > -1) { + const M = R.flush(); + L = M && M.buffer; + } + if (!L) + return r.executeEnd = Ge(), Us(s); + n = new Uint8Array(L); + } else + return this.asyncResult = !0, this.decryptionPromise = R.webCryptoDecrypt(n, v.key.buffer, v.iv.buffer, D).then((L) => { + const k = this.push(L, null, s); + return this.decryptionPromise = null, k; + }), this.decryptionPromise; + } + const x = this.needsProbing(h, u); + if (x) { + const R = this.configureTransmuxer(n); + if (R) + return this.logger.warn(`[transmuxer] ${R.message}`), this.observer.emit(m.ERROR, m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_PARSING_ERROR, + fatal: !1, + error: R, + reason: R.message + }), r.executeEnd = Ge(), Us(s); + } + (h || u || f || x) && this.resetInitSegment(T, E, p, S, t), (h || f || x) && this.resetInitialTimestamp(y), l || this.resetContiguity(); + const _ = this.transmux(n, v, g, d, s); + this.asyncResult = Ft(_); + const A = this.currentTransmuxState; + return A.contiguous = !0, A.discontinuity = !1, A.trackSwitch = !1, r.executeEnd = Ge(), _; + } + // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type) + flush(e) { + const t = e.transmuxing; + t.executeStart = Ge(); + const { + decrypter: s, + currentTransmuxState: i, + decryptionPromise: r + } = this; + if (r) + return this.asyncResult = !0, r.then(() => this.flush(e)); + const n = [], { + timeOffset: o + } = i; + if (s) { + const u = s.flush(); + u && n.push(this.push(u.buffer, null, e)); + } + const { + demuxer: c, + remuxer: l + } = this; + if (!c || !l) { + t.executeEnd = Ge(); + const u = [Us(e)]; + return this.asyncResult ? Promise.resolve(u) : u; + } + const h = c.flush(o); + return Ft(h) ? (this.asyncResult = !0, h.then((u) => (this.flushRemux(n, u, e), n))) : (this.flushRemux(n, h, e), this.asyncResult ? Promise.resolve(n) : n); + } + flushRemux(e, t, s) { + const { + audioTrack: i, + videoTrack: r, + id3Track: n, + textTrack: o + } = t, { + accurateTimeOffset: c, + timeOffset: l + } = this.currentTransmuxState; + this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${s.sn}${s.part > -1 ? " part: " + s.part : ""} of ${this.id === $.MAIN ? "level" : "track"} ${s.level}`); + const h = this.remuxer.remux(i, r, n, o, l, c, !0, this.id); + e.push({ + remuxResult: h, + chunkMeta: s + }), s.transmuxing.executeEnd = Ge(); + } + resetInitialTimestamp(e) { + const { + demuxer: t, + remuxer: s + } = this; + !t || !s || (t.resetTimeStamp(e), s.resetTimeStamp(e)); + } + resetContiguity() { + const { + demuxer: e, + remuxer: t + } = this; + !e || !t || (e.resetContiguity(), t.resetNextTimestamp()); + } + resetInitSegment(e, t, s, i, r) { + const { + demuxer: n, + remuxer: o + } = this; + !n || !o || (n.resetInitSegment(e, t, s, i), o.resetInitSegment(e, t, s, r)); + } + destroy() { + this.demuxer && (this.demuxer.destroy(), this.demuxer = void 0), this.remuxer && (this.remuxer.destroy(), this.remuxer = void 0); + } + transmux(e, t, s, i, r) { + let n; + return t && t.method === "SAMPLE-AES" ? n = this.transmuxSampleAes(e, t, s, i, r) : n = this.transmuxUnencrypted(e, s, i, r), n; + } + transmuxUnencrypted(e, t, s, i) { + const { + audioTrack: r, + videoTrack: n, + id3Track: o, + textTrack: c + } = this.demuxer.demux(e, t, !1, !this.config.progressive); + return { + remuxResult: this.remuxer.remux(r, n, o, c, t, s, !1, this.id), + chunkMeta: i + }; + } + transmuxSampleAes(e, t, s, i, r) { + return this.demuxer.demuxSampleAes(e, t, s).then((n) => ({ + remuxResult: this.remuxer.remux(n.audioTrack, n.videoTrack, n.id3Track, n.textTrack, s, i, !1, this.id), + chunkMeta: r + })); + } + configureTransmuxer(e) { + const { + config: t, + observer: s, + typeSupported: i + } = this; + let r; + for (let u = 0, d = ns.length; u < d; u++) { + var n; + if ((n = ns[u].demux) != null && n.probe(e, this.logger)) { + r = ns[u]; + break; + } + } + if (!r) + return new Error("Failed to find demuxer by probing fragment data"); + const o = this.demuxer, c = this.remuxer, l = r.remux, h = r.demux; + (!c || !(c instanceof l)) && (this.remuxer = new l(s, t, i, this.logger)), (!o || !(o instanceof h)) && (this.demuxer = new h(s, t, i, this.logger), this.probe = h.probe); + } + needsProbing(e, t) { + return !this.demuxer || !this.remuxer || e || t; + } + getDecrypter() { + let e = this.decrypter; + return e || (e = this.decrypter = new Ti(this.config)), e; + } +} +function Dc(a, e) { + let t = null; + return a.byteLength > 0 && (e == null ? void 0 : e.key) != null && e.iv !== null && e.method != null && (t = e), t; +} +const Us = (a) => ({ + remuxResult: {}, + chunkMeta: a +}); +function Ft(a) { + return "then" in a && a.then instanceof Function; +} +class Cc { + constructor(e, t, s, i, r) { + this.audioCodec = void 0, this.videoCodec = void 0, this.initSegmentData = void 0, this.duration = void 0, this.defaultInitPts = void 0, this.audioCodec = e, this.videoCodec = t, this.initSegmentData = s, this.duration = i, this.defaultInitPts = r || null; + } +} +class Pc { + constructor(e, t, s, i, r, n) { + this.discontinuity = void 0, this.contiguous = void 0, this.accurateTimeOffset = void 0, this.trackSwitch = void 0, this.timeOffset = void 0, this.initSegmentChange = void 0, this.discontinuity = e, this.contiguous = t, this.accurateTimeOffset = s, this.trackSwitch = i, this.timeOffset = r, this.initSegmentChange = n; + } +} +let Br = 0; +class pa { + constructor(e, t, s, i) { + this.error = null, this.hls = void 0, this.id = void 0, this.instanceNo = Br++, this.observer = void 0, this.frag = null, this.part = null, this.useWorker = void 0, this.workerContext = null, this.transmuxer = null, this.onTransmuxComplete = void 0, this.onFlush = void 0, this.onWorkerMessage = (c) => { + const l = c.data, h = this.hls; + if (!(!h || !(l != null && l.event) || l.instanceNo !== this.instanceNo)) + switch (l.event) { + case "init": { + var u; + const d = (u = this.workerContext) == null ? void 0 : u.objectURL; + d && self.URL.revokeObjectURL(d); + break; + } + case "transmuxComplete": { + this.handleTransmuxComplete(l.data); + break; + } + case "flush": { + this.onFlush(l.data); + break; + } + case "workerLog": { + h.logger[l.data.logType] && h.logger[l.data.logType](l.data.message); + break; + } + default: { + l.data = l.data || {}, l.data.frag = this.frag, l.data.part = this.part, l.data.id = this.id, h.trigger(l.event, l.data); + break; + } + } + }, this.onWorkerError = (c) => { + if (!this.hls) + return; + const l = new Error(`${c.message} (${c.filename}:${c.lineno})`); + this.hls.config.enableWorker = !1, this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`), this.hls.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.INTERNAL_EXCEPTION, + fatal: !1, + event: "demuxerWorker", + error: l + }); + }; + const r = e.config; + this.hls = e, this.id = t, this.useWorker = !!r.enableWorker, this.onTransmuxComplete = s, this.onFlush = i; + const n = (c, l) => { + l = l || {}, l.frag = this.frag || void 0, c === m.ERROR && (l = l, l.parent = this.id, l.part = this.part, this.error = l.error), this.hls.trigger(c, l); + }; + this.observer = new Li(), this.observer.on(m.FRAG_DECRYPTED, n), this.observer.on(m.ERROR, n); + const o = er(r.preferManagedMediaSource); + if (this.useWorker && typeof Worker < "u") { + const c = this.hls.logger; + if (r.workerPath || Nl()) { + try { + r.workerPath ? (c.log(`loading Web Worker ${r.workerPath} for "${t}"`), this.workerContext = Ul(r.workerPath)) : (c.log(`injecting Web Worker for "${t}"`), this.workerContext = Bl()); + const { + worker: h + } = this.workerContext; + h.addEventListener("message", this.onWorkerMessage), h.addEventListener("error", this.onWorkerError), h.postMessage({ + instanceNo: this.instanceNo, + cmd: "init", + typeSupported: o, + id: t, + config: ae(r) + }); + } catch (h) { + c.warn(`Error setting up "${t}" Web Worker, fallback to inline`, h), this.terminateWorker(), this.error = null, this.transmuxer = new Nr(this.observer, o, r, "", t, e.logger); + } + return; + } + } + this.transmuxer = new Nr(this.observer, o, r, "", t, e.logger); + } + reset() { + if (this.frag = null, this.part = null, this.workerContext) { + const e = this.instanceNo; + this.instanceNo = Br++; + const t = this.hls.config, s = er(t.preferManagedMediaSource); + this.workerContext.worker.postMessage({ + instanceNo: this.instanceNo, + cmd: "reset", + resetNo: e, + typeSupported: s, + id: this.id, + config: ae(t) + }); + } + } + terminateWorker() { + if (this.workerContext) { + const { + worker: e + } = this.workerContext; + this.workerContext = null, e.removeEventListener("message", this.onWorkerMessage), e.removeEventListener("error", this.onWorkerError), $l(this.hls.config.workerPath); + } + } + destroy() { + if (this.workerContext) + this.terminateWorker(), this.onWorkerMessage = this.onWorkerError = null; + else { + const t = this.transmuxer; + t && (t.destroy(), this.transmuxer = null); + } + const e = this.observer; + e && e.removeAllListeners(), this.frag = null, this.part = null, this.observer = null, this.hls = null; + } + push(e, t, s, i, r, n, o, c, l, h) { + var u, d; + l.transmuxing.start = self.performance.now(); + const { + instanceNo: g, + transmuxer: f + } = this, E = n ? n.start : r.start, p = r.decryptdata, y = this.frag, S = !(y && r.cc === y.cc), T = !(y && l.level === y.level), v = y ? l.sn - y.sn : -1, x = this.part ? l.part - this.part.index : -1, _ = v === 0 && l.id > 1 && l.id === (y == null ? void 0 : y.stats.chunkCount), A = !T && (v === 1 || v === 0 && (x === 1 || _ && x <= 0)), R = self.performance.now(); + (T || v || r.stats.parsing.start === 0) && (r.stats.parsing.start = R), n && (x || !A) && (n.stats.parsing.start = R); + const D = !(y && ((u = r.initSegment) == null ? void 0 : u.url) === ((d = y.initSegment) == null ? void 0 : d.url)), L = new Pc(S, A, c, T, E, D); + if (!A || S || D) { + this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${r.type} sn: ${l.sn}${l.part > -1 ? " part: " + l.part : ""} ${this.id === $.MAIN ? "level" : "track"}: ${l.level} id: ${l.id} + discontinuity: ${S} + trackSwitch: ${T} + contiguous: ${A} + accurateTimeOffset: ${c} + timeOffset: ${E} + initSegmentChange: ${D}`); + const k = new Cc(s, i, t, o, h); + this.configureTransmuxer(k); + } + if (this.frag = r, this.part = n, this.workerContext) + this.workerContext.worker.postMessage({ + instanceNo: g, + cmd: "demux", + data: e, + decryptdata: p, + chunkMeta: l, + state: L + }, e instanceof ArrayBuffer ? [e] : []); + else if (f) { + const k = f.push(e, p, l, L); + Ft(k) ? k.then((M) => { + this.handleTransmuxComplete(M); + }).catch((M) => { + this.transmuxerError(M, l, "transmuxer-interface push error"); + }) : this.handleTransmuxComplete(k); + } + } + flush(e) { + e.transmuxing.start = self.performance.now(); + const { + instanceNo: t, + transmuxer: s + } = this; + if (this.workerContext) + this.workerContext.worker.postMessage({ + instanceNo: t, + cmd: "flush", + chunkMeta: e + }); + else if (s) { + const i = s.flush(e); + Ft(i) ? i.then((r) => { + this.handleFlushResult(r, e); + }).catch((r) => { + this.transmuxerError(r, e, "transmuxer-interface flush error"); + }) : this.handleFlushResult(i, e); + } + } + transmuxerError(e, t, s) { + this.hls && (this.error = e, this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_PARSING_ERROR, + chunkMeta: t, + frag: this.frag || void 0, + part: this.part || void 0, + fatal: !1, + error: e, + err: e, + reason: s + })); + } + handleFlushResult(e, t) { + e.forEach((s) => { + this.handleTransmuxComplete(s); + }), this.onFlush(t); + } + configureTransmuxer(e) { + const { + instanceNo: t, + transmuxer: s + } = this; + this.workerContext ? this.workerContext.worker.postMessage({ + instanceNo: t, + cmd: "configure", + config: e + }) : s && s.configure(e); + } + handleTransmuxComplete(e) { + e.chunkMeta.transmuxing.end = self.performance.now(), this.onTransmuxComplete(e); + } +} +const Ur = 100; +class kc extends Ai { + constructor(e, t, s) { + super(e, t, s, "audio-stream-controller", $.AUDIO), this.mainAnchor = null, this.mainFragLoading = null, this.audioOnly = !1, this.bufferedTrack = null, this.switchingTrack = null, this.trackId = -1, this.waitingData = null, this.mainDetails = null, this.flushing = !1, this.bufferFlushed = !1, this.cachedTrackLoadedData = null, this.registerListeners(); + } + onHandlerDestroying() { + this.unregisterListeners(), super.onHandlerDestroying(), this.resetItem(); + } + resetItem() { + this.mainDetails = this.mainAnchor = this.mainFragLoading = this.bufferedTrack = this.switchingTrack = this.waitingData = this.cachedTrackLoadedData = null; + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(m.LEVEL_LOADED, this.onLevelLoaded, this), e.on(m.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), e.on(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(m.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.on(m.BUFFER_RESET, this.onBufferReset, this), e.on(m.BUFFER_CREATED, this.onBufferCreated, this), e.on(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(m.INIT_PTS_FOUND, this.onInitPtsFound, this), e.on(m.FRAG_LOADING, this.onFragLoading, this), e.on(m.FRAG_BUFFERED, this.onFragBuffered, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (super.unregisterListeners(), e.off(m.LEVEL_LOADED, this.onLevelLoaded, this), e.off(m.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), e.off(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(m.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.off(m.BUFFER_RESET, this.onBufferReset, this), e.off(m.BUFFER_CREATED, this.onBufferCreated, this), e.off(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(m.INIT_PTS_FOUND, this.onInitPtsFound, this), e.off(m.FRAG_LOADING, this.onFragLoading, this), e.off(m.FRAG_BUFFERED, this.onFragBuffered, this)); + } + // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value + onInitPtsFound(e, { + frag: t, + id: s, + initPTS: i, + timescale: r + }) { + if (s === $.MAIN) { + const n = t.cc, o = this.fragCurrent; + if (this.initPTS[n] = { + baseTime: i, + timescale: r + }, this.log(`InitPTS for cc: ${n} found from main: ${i}/${r}`), this.mainAnchor = t, this.state === C.WAITING_INIT_PTS) { + const c = this.waitingData; + (!c && !this.loadingParts || c && c.frag.cc !== n) && this.syncWithAnchor(t, c == null ? void 0 : c.frag); + } else !this.hls.hasEnoughToStart && o && o.cc !== n ? (o.abortRequests(), this.syncWithAnchor(t, o)) : this.state === C.IDLE && this.tick(); + } + } + getLoadPosition() { + return !this.startFragRequested && this.nextLoadPosition >= 0 ? this.nextLoadPosition : super.getLoadPosition(); + } + syncWithAnchor(e, t) { + var s; + const i = ((s = this.mainFragLoading) == null ? void 0 : s.frag) || null; + if (t && (i == null ? void 0 : i.cc) === t.cc) + return; + const r = (i || e).cc, n = this.getLevelDetails(), o = this.getLoadPosition(), c = Mn(n, r, o); + c && (this.log(`Waiting fragment cc (${t == null ? void 0 : t.cc}) cancelled because video is at cc ${e.cc}`), this.startFragRequested = !1, this.nextLoadPosition = c.start, this.resetLoadingState(), this.state === C.IDLE && this.doTickIdle()); + } + startLoad(e, t) { + if (!this.levels) { + this.startPosition = e, this.state = C.STOPPED; + return; + } + const s = this.lastCurrentTime; + this.stopLoad(), this.setInterval(Ur), s > 0 && e === -1 ? (this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`), e = s, this.state = C.IDLE) : this.state = C.WAITING_TRACK, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } + doTick() { + switch (this.state) { + case C.IDLE: + this.doTickIdle(); + break; + case C.WAITING_TRACK: { + const { + levels: t, + trackId: s + } = this, i = t == null ? void 0 : t[s], r = i == null ? void 0 : i.details; + if (r && !this.waitForLive(i)) { + if (this.waitForCdnTuneIn(r)) + break; + this.state = C.WAITING_INIT_PTS; + } + break; + } + case C.FRAG_LOADING_WAITING_RETRY: { + var e; + const t = performance.now(), s = this.retryDate; + if (!s || t >= s || (e = this.media) != null && e.seeking) { + const { + levels: i, + trackId: r + } = this; + this.log("RetryDate reached, switch back to IDLE state"), this.resetStartWhenNotLoaded((i == null ? void 0 : i[r]) || null), this.state = C.IDLE; + } + break; + } + case C.WAITING_INIT_PTS: { + const t = this.waitingData; + if (t) { + const { + frag: s, + part: i, + cache: r, + complete: n + } = t, o = this.mainAnchor; + if (this.initPTS[s.cc] !== void 0) { + this.waitingData = null, this.state = C.FRAG_LOADING; + const c = r.flush().buffer, l = { + frag: s, + part: i, + payload: c, + networkDetails: null + }; + this._handleFragmentLoadProgress(l), n && super._handleFragmentLoadComplete(l); + } else o && o.cc !== t.frag.cc && this.syncWithAnchor(o, t.frag); + } else + this.state = C.IDLE; + } + } + this.onTickEnd(); + } + resetLoadingState() { + const e = this.waitingData; + e && (this.fragmentTracker.removeFragment(e.frag), this.waitingData = null), super.resetLoadingState(); + } + onTickEnd() { + const { + media: e + } = this; + e != null && e.readyState && (this.lastCurrentTime = e.currentTime); + } + doTickIdle() { + var e; + const { + hls: t, + levels: s, + media: i, + trackId: r + } = this, n = t.config; + if (!this.buffering || !i && !this.primaryPrefetch && (this.startFragRequested || !n.startFragPrefetch) || !(s != null && s[r])) + return; + const o = s[r], c = o.details; + if (!c || this.waitForLive(o) || this.waitForCdnTuneIn(c)) { + this.state = C.WAITING_TRACK, this.startFragRequested = !1; + return; + } + const l = this.mediaBuffer ? this.mediaBuffer : this.media; + this.bufferFlushed && l && (this.bufferFlushed = !1, this.afterBufferFlushed(l, ne.AUDIO, $.AUDIO)); + const h = this.getFwdBufferInfo(l, $.AUDIO); + if (h === null) + return; + if (!this.switchingTrack && this._streamEnded(h, c)) { + t.trigger(m.BUFFER_EOS, { + type: "audio" + }), this.state = C.ENDED; + return; + } + const u = h.len, d = t.maxBufferLength, g = c.fragments, f = g[0].start, E = this.getLoadPosition(), p = this.flushing ? E : h.end; + if (this.switchingTrack && i) { + const T = E; + c.PTSKnown && T < f && (h.end > f || h.nextStart) && (this.log("Alt audio track ahead of main track, seek to start of alt audio track"), i.currentTime = f + 0.05); + } + if (u >= d && !this.switchingTrack && p < g[g.length - 1].start) + return; + let y = this.getNextFragment(p, c); + if (y && this.isLoopLoading(y, p) && (y = this.getNextFragmentLoopLoading(y, c, h, $.MAIN, d)), !y) { + this.bufferFlushed = !0; + return; + } + let S = ((e = this.mainFragLoading) == null ? void 0 : e.frag) || null; + if (!this.audioOnly && this.startFragRequested && S && ue(y) && !y.endList && (!c.live || !this.loadingParts && p < this.hls.liveSyncPosition) && (this.fragmentTracker.getState(S) === ce.OK && (this.mainFragLoading = S = null), S && ue(S))) { + if (y.start > S.end) { + const v = this.fragmentTracker.getFragAtPos(p, $.MAIN); + v && v.end > S.end && (S = v, this.mainFragLoading = { + frag: v, + targetBufferTime: null + }); + } + if (y.start > S.end) + return; + } + this.loadFragment(y, o, p); + } + onMediaDetaching(e, t) { + this.bufferFlushed = this.flushing = !1, super.onMediaDetaching(e, t); + } + onAudioTracksUpdated(e, { + audioTracks: t + }) { + this.resetTransmuxer(), this.levels = t.map((s) => new Ct(s)); + } + onAudioTrackSwitching(e, t) { + const s = !!t.url; + this.trackId = t.id; + const { + fragCurrent: i + } = this; + i && (i.abortRequests(), this.removeUnbufferedFrags(i.start)), this.resetLoadingState(), s ? (this.switchingTrack = t, this.flushAudioIfNeeded(t), this.state !== C.STOPPED && (this.setInterval(Ur), this.state = C.IDLE, this.tick())) : (this.resetTransmuxer(), this.switchingTrack = null, this.bufferedTrack = t, this.clearInterval()); + } + onManifestLoading() { + super.onManifestLoading(), this.bufferFlushed = this.flushing = this.audioOnly = !1, this.resetItem(), this.trackId = -1; + } + onLevelLoaded(e, t) { + this.mainDetails = t.details; + const s = this.cachedTrackLoadedData; + s && (this.cachedTrackLoadedData = null, this.onAudioTrackLoaded(m.AUDIO_TRACK_LOADED, s)); + } + onAudioTrackLoaded(e, t) { + var s; + const { + levels: i + } = this, { + details: r, + id: n, + groupId: o, + track: c + } = t; + if (!i) { + this.warn(`Audio tracks reset while loading track ${n} "${c.name}" of "${o}"`); + return; + } + const l = this.mainDetails; + if (!l || r.endCC > l.endCC || l.expired) { + this.cachedTrackLoadedData = t, this.state !== C.STOPPED && (this.state = C.WAITING_TRACK); + return; + } + this.cachedTrackLoadedData = null, this.log(`Audio track ${n} "${c.name}" of "${o}" loaded [${r.startSN},${r.endSN}]${r.lastPartSn ? `[part-${r.lastPartSn}-${r.lastPartIndex}]` : ""},duration:${r.totalduration}`); + const h = i[n]; + let u = 0; + if (r.live || (s = h.details) != null && s.live) { + if (this.checkLiveUpdate(r), r.deltaUpdateFailed) + return; + if (h.details) { + var d; + u = this.alignPlaylists(r, h.details, (d = this.levelLastLoaded) == null ? void 0 : d.details); + } + r.alignedSliding || (zn(r, l), r.alignedSliding || Es(r, l), u = r.fragmentStart); + } + h.details = r, this.levelLastLoaded = h, this.startFragRequested || this.setStartPosition(l, u), this.hls.trigger(m.AUDIO_TRACK_UPDATED, { + details: r, + id: n, + groupId: t.groupId + }), this.state === C.WAITING_TRACK && !this.waitForCdnTuneIn(r) && (this.state = C.IDLE), this.tick(); + } + _handleFragmentLoadProgress(e) { + var t; + const s = e.frag, { + part: i, + payload: r + } = e, { + config: n, + trackId: o, + levels: c + } = this; + if (!c) { + this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`); + return; + } + const l = c[o]; + if (!l) { + this.warn("Audio track is undefined on fragment load progress"); + return; + } + const h = l.details; + if (!h) { + this.warn("Audio track details undefined on fragment load progress"), this.removeUnbufferedFrags(s.start); + return; + } + const u = n.defaultAudioCodec || l.audioCodec || "mp4a.40.2"; + let d = this.transmuxer; + d || (d = this.transmuxer = new pa(this.hls, $.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this))); + const g = this.initPTS[s.cc], f = (t = s.initSegment) == null ? void 0 : t.data; + if (g !== void 0) { + const p = i ? i.index : -1, y = p !== -1, S = new Si(s.level, s.sn, s.stats.chunkCount, r.byteLength, p, y); + d.push(r, f, u, "", s, i, h.totalduration, !1, S, g); + } else { + this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${o}`); + const { + cache: E + } = this.waitingData = this.waitingData || { + frag: s, + part: i, + cache: new Qn(), + complete: !1 + }; + E.push(new Uint8Array(r)), this.state !== C.STOPPED && (this.state = C.WAITING_INIT_PTS); + } + } + _handleFragmentLoadComplete(e) { + if (this.waitingData) { + this.waitingData.complete = !0; + return; + } + super._handleFragmentLoadComplete(e); + } + onBufferReset() { + this.mediaBuffer = null; + } + onBufferCreated(e, t) { + this.bufferFlushed = this.flushing = !1; + const s = t.tracks.audio; + s && (this.mediaBuffer = s.buffer || null); + } + onFragLoading(e, t) { + !this.audioOnly && t.frag.type === $.MAIN && ue(t.frag) && (this.mainFragLoading = t, this.state === C.IDLE && this.tick()); + } + onFragBuffered(e, t) { + const { + frag: s, + part: i + } = t; + if (s.type !== $.AUDIO) { + !this.audioOnly && s.type === $.MAIN && !s.elementaryStreams.video && !s.elementaryStreams.audiovideo && (this.audioOnly = !0, this.mainFragLoading = null); + return; + } + if (this.fragContextChanged(s)) { + this.warn(`Fragment ${s.sn}${i ? " p: " + i.index : ""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack ? this.switchingTrack.name : "false"}`); + return; + } + if (ue(s)) { + this.fragPrevious = s; + const r = this.switchingTrack; + r && (this.bufferedTrack = r, this.switchingTrack = null, this.hls.trigger(m.AUDIO_TRACK_SWITCHED, te({}, r))); + } + this.fragBufferedComplete(s, i), this.media && this.tick(); + } + onError(e, t) { + var s; + if (t.fatal) { + this.state = C.ERROR; + return; + } + switch (t.details) { + case b.FRAG_GAP: + case b.FRAG_PARSING_ERROR: + case b.FRAG_DECRYPT_ERROR: + case b.FRAG_LOAD_ERROR: + case b.FRAG_LOAD_TIMEOUT: + case b.KEY_LOAD_ERROR: + case b.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError($.AUDIO, t); + break; + case b.AUDIO_TRACK_LOAD_ERROR: + case b.AUDIO_TRACK_LOAD_TIMEOUT: + case b.LEVEL_PARSING_ERROR: + !t.levelRetry && this.state === C.WAITING_TRACK && ((s = t.context) == null ? void 0 : s.type) === z.AUDIO_TRACK && (this.state = C.IDLE); + break; + case b.BUFFER_ADD_CODEC_ERROR: + case b.BUFFER_APPEND_ERROR: + if (t.parent !== "audio") + return; + this.resetLoadingState(); + break; + case b.BUFFER_FULL_ERROR: + if (t.parent !== "audio") + return; + this.reduceLengthAndFlushBuffer(t) && (this.bufferedTrack = null, super.flushMainBuffer(0, Number.POSITIVE_INFINITY, "audio")); + break; + case b.INTERNAL_EXCEPTION: + this.recoverWorkerError(t); + break; + } + } + onBufferFlushing(e, { + type: t + }) { + t !== ne.VIDEO && (this.flushing = !0); + } + onBufferFlushed(e, { + type: t + }) { + if (t !== ne.VIDEO) { + this.flushing = !1, this.bufferFlushed = !0, this.state === C.ENDED && (this.state = C.IDLE); + const s = this.mediaBuffer || this.media; + s && (this.afterBufferFlushed(s, t, $.AUDIO), this.tick()); + } + } + _handleTransmuxComplete(e) { + var t; + const s = "audio", { + hls: i + } = this, { + remuxResult: r, + chunkMeta: n + } = e, o = this.getCurrentContext(n); + if (!o) { + this.resetWhenMissingContext(n); + return; + } + const { + frag: c, + part: l, + level: h + } = o, { + details: u + } = h, { + audio: d, + text: g, + id3: f, + initSegment: E + } = r; + if (this.fragContextChanged(c) || !u) { + this.fragmentTracker.removeFragment(c); + return; + } + if (this.state = C.PARSING, this.switchingTrack && d && this.completeAudioSwitch(this.switchingTrack), E != null && E.tracks) { + const p = c.initSegment || c; + this._bufferInitSegment(h, E.tracks, p, n), i.trigger(m.FRAG_PARSING_INIT_SEGMENT, { + frag: p, + id: s, + tracks: E.tracks + }); + } + if (d) { + const { + startPTS: p, + endPTS: y, + startDTS: S, + endDTS: T + } = d; + l && (l.elementaryStreams[ne.AUDIO] = { + startPTS: p, + endPTS: y, + startDTS: S, + endDTS: T + }), c.setElementaryStreamInfo(ne.AUDIO, p, y, S, T), this.bufferFragmentData(d, c, l, n); + } + if (f != null && (t = f.samples) != null && t.length) { + const p = ie({ + id: s, + frag: c, + details: u + }, f); + i.trigger(m.FRAG_PARSING_METADATA, p); + } + if (g) { + const p = ie({ + id: s, + frag: c, + details: u + }, g); + i.trigger(m.FRAG_PARSING_USERDATA, p); + } + } + _bufferInitSegment(e, t, s, i) { + if (this.state !== C.PARSING || (t.video && delete t.video, t.audiovideo && delete t.audiovideo, !t.audio)) + return; + const r = t.audio; + r.id = $.AUDIO; + const n = e.audioCodec; + this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`), n && n.split(",").length === 1 && (r.levelCodec = n), this.hls.trigger(m.BUFFER_CODECS, t); + const o = r.initSegment; + if (o != null && o.byteLength) { + const c = { + type: "audio", + frag: s, + part: null, + chunkMeta: i, + parent: s.type, + data: o + }; + this.hls.trigger(m.BUFFER_APPENDING, c); + } + this.tickImmediate(); + } + loadFragment(e, t, s) { + const i = this.fragmentTracker.getState(e); + if (this.switchingTrack || i === ce.NOT_LOADED || i === ce.PARTIAL) { + var r; + if (!ue(e)) + this._loadInitSegment(e, t); + else if ((r = t.details) != null && r.live && !this.initPTS[e.cc]) { + this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`), this.state = C.WAITING_INIT_PTS; + const n = this.mainDetails; + n && n.fragmentStart !== t.details.fragmentStart && Es(t.details, n); + } else + super.loadFragment(e, t, s); + } else + this.clearTrackerIfNeeded(e); + } + flushAudioIfNeeded(e) { + if (this.media && this.bufferedTrack) { + const { + name: t, + lang: s, + assocLang: i, + characteristics: r, + audioCodec: n, + channels: o + } = this.bufferedTrack; + st({ + name: t, + lang: s, + assocLang: i, + characteristics: r, + audioCodec: n, + channels: o + }, e, tt) || (fs(e.url, this.hls) ? (this.log("Switching audio track : flushing all audio"), super.flushMainBuffer(0, Number.POSITIVE_INFINITY, "audio"), this.bufferedTrack = null) : this.bufferedTrack = e); + } + } + completeAudioSwitch(e) { + const { + hls: t + } = this; + this.flushAudioIfNeeded(e), this.bufferedTrack = e, this.switchingTrack = null, t.trigger(m.AUDIO_TRACK_SWITCHED, te({}, e)); + } +} +class Pi extends Ve { + constructor(e, t) { + super(t, e.logger), this.hls = void 0, this.canLoad = !1, this.timer = -1, this.hls = e; + } + destroy() { + this.clearTimer(), this.hls = this.log = this.warn = null; + } + clearTimer() { + this.timer !== -1 && (self.clearTimeout(this.timer), this.timer = -1); + } + startLoad() { + this.canLoad = !0, this.loadPlaylist(); + } + stopLoad() { + this.canLoad = !1, this.clearTimer(); + } + switchParams(e, t, s) { + const i = t == null ? void 0 : t.renditionReports; + if (i) { + let r = -1; + for (let n = 0; n < i.length; n++) { + const o = i[n]; + let c; + try { + c = new self.URL(o.URI, t.url).href; + } catch (l) { + this.warn(`Could not construct new URL for Rendition Report: ${l}`), c = o.URI || ""; + } + if (c === e) { + r = n; + break; + } else c === e.substring(0, c.length) && (r = n); + } + if (r !== -1) { + const n = i[r], o = parseInt(n["LAST-MSN"]) || (t == null ? void 0 : t.lastPartSn); + let c = parseInt(n["LAST-PART"]) || (t == null ? void 0 : t.lastPartIndex); + if (this.hls.config.lowLatencyMode) { + const h = Math.min(t.age - t.partTarget, t.targetduration); + c >= 0 && h > t.partTarget && (c += 1); + } + const l = s && sr(s); + return new ir(o, c >= 0 ? c : void 0, l); + } + } + } + loadPlaylist(e) { + this.clearTimer(); + } + loadingPlaylist(e, t) { + this.clearTimer(); + } + shouldLoadPlaylist(e) { + return this.canLoad && !!e && !!e.url && (!e.details || e.details.live); + } + getUrlWithDirectives(e, t) { + if (t) + try { + return t.addDirectives(e); + } catch (s) { + this.warn(`Could not construct new URL with HLS Delivery Directives: ${s}`); + } + return e; + } + playlistLoaded(e, t, s) { + const { + details: i, + stats: r + } = t, n = self.performance.now(), o = r.loading.first ? Math.max(0, n - r.loading.first) : 0; + i.advancedDateTime = Date.now() - o; + const c = this.hls.config.timelineOffset; + if (c !== i.appliedTimelineOffset) { + const h = Math.max(c || 0, 0); + i.appliedTimelineOffset = h, i.fragments.forEach((u) => { + u.start = u.playlistOffset + h; + }); + } + if (i.live || s != null && s.live) { + const h = "levelInfo" in t ? t.levelInfo : t.track; + if (i.reloaded(s), s && i.fragments.length > 0) { + bl(s, i); + const S = i.playlistParsingError; + if (S) { + this.warn(S); + const T = this.hls; + if (!T.config.ignorePlaylistParsingErrors) { + var l; + const { + networkDetails: v + } = t; + T.trigger(m.ERROR, { + type: K.NETWORK_ERROR, + details: b.LEVEL_PARSING_ERROR, + fatal: !1, + url: i.url, + error: S, + reason: S.message, + level: t.level || void 0, + parent: (l = i.fragments[0]) == null ? void 0 : l.type, + networkDetails: v, + stats: r + }); + return; + } + i.playlistParsingError = null; + } + } + i.requestScheduled === -1 && (i.requestScheduled = r.loading.start); + const u = this.hls.mainForwardBufferInfo, d = u ? u.end - u.len : 0, g = (i.edge - d) * 1e3, f = Yn(i, g); + if (i.requestScheduled + f < n ? i.requestScheduled = n : i.requestScheduled += f, this.log(`live playlist ${e} ${i.advanced ? "REFRESHED " + i.lastPartSn + "-" + i.lastPartIndex : i.updated ? "UPDATED" : "MISSED"}`), !this.canLoad || !i.live) + return; + let E, p, y; + if (i.canBlockReload && i.endSN && i.advanced) { + const S = this.hls.config.lowLatencyMode, T = i.lastPartSn, v = i.endSN, x = i.lastPartIndex, _ = x !== -1, A = T === v; + _ ? A ? (p = v + 1, y = S ? 0 : x) : (p = T, y = S ? x + 1 : i.maxPartIndex) : p = v + 1; + const R = i.age, D = R + i.ageHeader; + let L = Math.min(D - i.partTarget, i.targetduration * 1.5); + if (L > 0) { + if (D > i.targetduration * 3) + this.log(`Playlist last advanced ${R.toFixed(2)}s ago. Omitting segment and part directives.`), p = void 0, y = void 0; + else if (s != null && s.tuneInGoal && D - i.partTarget > s.tuneInGoal) + this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${L} with playlist age: ${i.age}`), L = 0; + else { + const k = Math.floor(L / i.targetduration); + if (p += k, y !== void 0) { + const M = Math.round(L % i.targetduration / i.partTarget); + y += M; + } + this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${R.toFixed(2)}s goal: ${L} skip sn ${k} to part ${y}`); + } + i.tuneInGoal = L; + } + if (E = this.getDeliveryDirectives(i, t.deliveryDirectives, p, y), S || !A) { + i.requestScheduled = n, this.loadingPlaylist(h, E); + return; + } + } else (i.canBlockReload || i.canSkipUntil) && (E = this.getDeliveryDirectives(i, t.deliveryDirectives, p, y)); + E && p !== void 0 && i.canBlockReload && (i.requestScheduled = r.loading.first + Math.max(f - o * 2, f / 2)), this.scheduleLoading(h, E, i); + } else + this.clearTimer(); + } + scheduleLoading(e, t, s) { + const i = s || e.details; + if (!i) { + this.loadingPlaylist(e, t); + return; + } + const r = self.performance.now(), n = i.requestScheduled; + if (r >= n) { + this.loadingPlaylist(e, t); + return; + } + const o = n - r; + this.log(`reload live playlist ${e.name || e.bitrate + "bps"} in ${Math.round(o)} ms`), this.clearTimer(), this.timer = self.setTimeout(() => this.loadingPlaylist(e, t), o); + } + getDeliveryDirectives(e, t, s, i) { + let r = sr(e); + return t != null && t.skip && e.deltaUpdateFailed && (s = t.msn, i = t.part, r = ss.No), new ir(s, i, r); + } + checkRetry(e) { + const t = e.details, s = gs(e), i = e.errorAction, { + action: r, + retryCount: n = 0, + retryConfig: o + } = i || {}, c = !!i && !!o && (r === ge.RetryRequest || !i.resolved && r === ge.SendAlternateToPenaltyBox); + if (c) { + var l; + if (n >= o.maxNumRetry) + return !1; + if (s && (l = e.context) != null && l.deliveryDirectives) + this.warn(`Retrying playlist loading ${n + 1}/${o.maxNumRetry} after "${t}" without delivery-directives`), this.loadPlaylist(); + else { + const h = yi(o, n); + this.clearTimer(), this.timer = self.setTimeout(() => this.loadPlaylist(), h), this.warn(`Retrying playlist loading ${n + 1}/${o.maxNumRetry} after "${t}" in ${h}ms`); + } + e.levelRetry = !0, i.resolved = !0; + } + return c; + } +} +function Ea(a, e) { + if (a.length !== e.length) + return !1; + for (let t = 0; t < a.length; t++) + if (!Mt(a[t].attrs, e[t].attrs)) + return !1; + return !0; +} +function Mt(a, e, t) { + const s = a["STABLE-RENDITION-ID"]; + return s && !t ? s === e["STABLE-RENDITION-ID"] : !(t || ["LANGUAGE", "NAME", "CHARACTERISTICS", "AUTOSELECT", "DEFAULT", "FORCED", "ASSOC-LANGUAGE"]).some((i) => a[i] !== e[i]); +} +function li(a, e) { + return e.label.toLowerCase() === a.name.toLowerCase() && (!e.language || e.language.toLowerCase() === (a.lang || "").toLowerCase()); +} +class wc extends Pi { + constructor(e) { + super(e, "audio-track-controller"), this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0, this.registerListeners(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.LEVEL_LOADING, this.onLevelLoading, this), e.on(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(m.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.LEVEL_LOADING, this.onLevelLoading, this), e.off(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(m.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), e.off(m.ERROR, this.onError, this); + } + destroy() { + this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, super.destroy(); + } + onManifestLoading() { + this.tracks = [], this.tracksInGroup = [], this.groupIds = null, this.currentTrack = null, this.trackId = -1, this.selectDefaultTrack = !0; + } + onManifestParsed(e, t) { + this.tracks = t.audioTracks || []; + } + onAudioTrackLoaded(e, t) { + const { + id: s, + groupId: i, + details: r + } = t, n = this.tracksInGroup[s]; + if (!n || n.groupId !== i) { + this.warn(`Audio track with id:${s} and group:${i} not found in active group ${n == null ? void 0 : n.groupId}`); + return; + } + const o = n.details; + n.details = t.details, this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`), s === this.trackId && this.playlistLoaded(s, t, o); + } + onLevelLoading(e, t) { + this.switchLevel(t.level); + } + onLevelSwitching(e, t) { + this.switchLevel(t.level); + } + switchLevel(e) { + const t = this.hls.levels[e]; + if (!t) + return; + const s = t.audioGroups || null, i = this.groupIds; + let r = this.currentTrack; + if (!s || (i == null ? void 0 : i.length) !== (s == null ? void 0 : s.length) || s != null && s.some((o) => (i == null ? void 0 : i.indexOf(o)) === -1)) { + this.groupIds = s, this.trackId = -1, this.currentTrack = null; + const o = this.tracks.filter((d) => !s || s.indexOf(d.groupId) !== -1); + if (o.length) + this.selectDefaultTrack && !o.some((d) => d.default) && (this.selectDefaultTrack = !1), o.forEach((d, g) => { + d.id = g; + }); + else if (!r && !this.tracksInGroup.length) + return; + this.tracksInGroup = o; + const c = this.hls.config.audioPreference; + if (!r && c) { + const d = Fe(c, o, tt); + if (d > -1) + r = o[d]; + else { + const g = Fe(c, this.tracks); + r = this.tracks[g]; + } + } + let l = this.findTrackId(r); + l === -1 && r && (l = this.findTrackId(null)); + const h = { + audioTracks: o + }; + this.log(`Updating audio tracks, ${o.length} track(s) found in group(s): ${s == null ? void 0 : s.join(",")}`), this.hls.trigger(m.AUDIO_TRACKS_UPDATED, h); + const u = this.trackId; + if (l !== -1 && u === -1) + this.setAudioTrack(l); + else if (o.length && u === -1) { + var n; + const d = new Error(`No audio track selected for current audio group-ID(s): ${(n = this.groupIds) == null ? void 0 : n.join(",")} track count: ${o.length}`); + this.warn(d.message), this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.AUDIO_TRACK_LOAD_ERROR, + fatal: !0, + error: d + }); + } + } + } + onError(e, t) { + t.fatal || !t.context || t.context.type === z.AUDIO_TRACK && t.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(t.context.groupId) !== -1) && this.checkRetry(t); + } + get allAudioTracks() { + return this.tracks; + } + get audioTracks() { + return this.tracksInGroup; + } + get audioTrack() { + return this.trackId; + } + set audioTrack(e) { + this.selectDefaultTrack = !1, this.setAudioTrack(e); + } + setAudioOption(e) { + const t = this.hls; + if (t.config.audioPreference = e, e) { + const s = this.allAudioTracks; + if (this.selectDefaultTrack = !1, s.length) { + const i = this.currentTrack; + if (i && st(e, i, tt)) + return i; + const r = Fe(e, this.tracksInGroup, tt); + if (r > -1) { + const n = this.tracksInGroup[r]; + return this.setAudioTrack(r), n; + } else if (i) { + let n = t.loadLevel; + n === -1 && (n = t.firstAutoLevel); + const o = qo(e, t.levels, s, n, tt); + if (o === -1) + return null; + t.nextLoadLevel = o; + } + if (e.channels || e.audioCodec) { + const n = Fe(e, s); + if (n > -1) + return s[n]; + } + } + } + return null; + } + setAudioTrack(e) { + const t = this.tracksInGroup; + if (e < 0 || e >= t.length) { + this.warn(`Invalid audio track id: ${e}`); + return; + } + this.selectDefaultTrack = !1; + const s = this.currentTrack, i = t[e], r = i.details && !i.details.live; + if (e === this.trackId && i === s && r || (this.log(`Switching to audio-track ${e} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`), this.trackId = e, this.currentTrack = i, this.hls.trigger(m.AUDIO_TRACK_SWITCHING, te({}, i)), r)) + return; + const n = this.switchParams(i.url, s == null ? void 0 : s.details, i.details); + this.loadPlaylist(n); + } + findTrackId(e) { + const t = this.tracksInGroup; + for (let s = 0; s < t.length; s++) { + const i = t[s]; + if (!(this.selectDefaultTrack && !i.default) && (!e || st(e, i, tt))) + return s; + } + if (e) { + const { + name: s, + lang: i, + assocLang: r, + characteristics: n, + audioCodec: o, + channels: c + } = e; + for (let l = 0; l < t.length; l++) { + const h = t[l]; + if (st({ + name: s, + lang: i, + assocLang: r, + characteristics: n, + audioCodec: o, + channels: c + }, h, tt)) + return l; + } + for (let l = 0; l < t.length; l++) { + const h = t[l]; + if (Mt(e.attrs, h.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) + return l; + } + for (let l = 0; l < t.length; l++) { + const h = t[l]; + if (Mt(e.attrs, h.attrs, ["LANGUAGE"])) + return l; + } + } + return -1; + } + loadPlaylist(e) { + super.loadPlaylist(); + const t = this.currentTrack; + this.shouldLoadPlaylist(t) && fs(t.url, this.hls) && this.scheduleLoading(t, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const s = e.id, i = e.groupId, r = this.getUrlWithDirectives(e.url, t), n = e.details, o = n == null ? void 0 : n.age; + this.log(`Loading audio-track ${s} "${e.name}" lang:${e.lang} group:${i}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${o && n.live ? " age " + o.toFixed(1) + (n.type && " " + n.type || "") : ""} ${r}`), this.hls.trigger(m.AUDIO_TRACK_LOADING, { + url: r, + id: s, + groupId: i, + deliveryDirectives: t || null, + track: e + }); + } +} +class Oc { + constructor(e) { + this.tracks = void 0, this.queues = { + video: [], + audio: [], + audiovideo: [] + }, this.tracks = e; + } + destroy() { + this.tracks = this.queues = null; + } + append(e, t, s) { + if (this.queues === null || this.tracks === null) + return; + const i = this.queues[t]; + i.push(e), i.length === 1 && !s && this.executeNext(t); + } + appendBlocker(e) { + return new Promise((t) => { + const s = { + label: "async-blocker", + execute: t, + onStart: () => { + }, + onComplete: () => { + }, + onError: () => { + } + }; + this.append(s, e); + }); + } + prependBlocker(e) { + return new Promise((t) => { + if (this.queues) { + const s = { + label: "async-blocker-prepend", + execute: t, + onStart: () => { + }, + onComplete: () => { + }, + onError: () => { + } + }; + this.queues[e].unshift(s); + } + }); + } + removeBlockers() { + this.queues !== null && [this.queues.video, this.queues.audio, this.queues.audiovideo].forEach((e) => { + var t; + const s = (t = e[0]) == null ? void 0 : t.label; + (s === "async-blocker" || s === "async-blocker-prepend") && (e[0].execute(), e.splice(0, 1)); + }); + } + unblockAudio(e) { + if (this.queues === null) + return; + this.queues.audio[0] === e && this.shiftAndExecuteNext("audio"); + } + executeNext(e) { + if (this.queues === null || this.tracks === null) + return; + const t = this.queues[e]; + if (t.length) { + const i = t[0]; + try { + i.execute(); + } catch (r) { + var s; + if (i.onError(r), this.queues === null || this.tracks === null) + return; + const n = (s = this.tracks[e]) == null ? void 0 : s.buffer; + n != null && n.updating || this.shiftAndExecuteNext(e); + } + } + } + shiftAndExecuteNext(e) { + this.queues !== null && (this.queues[e].shift(), this.executeNext(e)); + } + current(e) { + var t; + return ((t = this.queues) == null ? void 0 : t[e][0]) || null; + } + toString() { + const { + queues: e, + tracks: t + } = this; + return e === null || t === null ? "<destroyed>" : ` +${this.list("video")} +${this.list("audio")} +${this.list("audiovideo")}}`; + } + list(e) { + var t, s; + return (t = this.queues) != null && t[e] || (s = this.tracks) != null && s[e] ? `${e}: (${this.listSbInfo(e)}) ${this.listOps(e)}` : ""; + } + listSbInfo(e) { + var t; + const s = (t = this.tracks) == null ? void 0 : t[e], i = s == null ? void 0 : s.buffer; + return i ? `SourceBuffer${i.updating ? " updating" : ""}${s.ended ? " ended" : ""}${s.ending ? " ending" : ""}` : "none"; + } + listOps(e) { + var t; + return ((t = this.queues) == null ? void 0 : t[e].map((s) => s.label).join(", ")) || ""; + } +} +const $r = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/, ya = "HlsJsTrackRemovedError"; +class Fc extends Error { + constructor(e) { + super(e), this.name = ya; + } +} +class Mc extends Ve { + constructor(e, t) { + super("buffer-controller", e.logger), this.hls = void 0, this.fragmentTracker = void 0, this.details = null, this._objectUrl = null, this.operationQueue = null, this.bufferCodecEventsTotal = 0, this.media = null, this.mediaSource = null, this.lastMpegAudioChunk = null, this.blockedAudioAppend = null, this.lastVideoAppendEnd = 0, this.appendSource = void 0, this.transferData = void 0, this.overrides = void 0, this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }, this.tracks = {}, this.sourceBuffers = [[null, null], [null, null]], this._onEndStreaming = (s) => { + var i; + this.hls && ((i = this.mediaSource) == null ? void 0 : i.readyState) === "open" && this.hls.pauseBuffering(); + }, this._onStartStreaming = (s) => { + this.hls && this.hls.resumeBuffering(); + }, this._onMediaSourceOpen = (s) => { + const { + media: i, + mediaSource: r + } = this; + s && this.log("Media source opened"), !(!i || !r) && (r.removeEventListener("sourceopen", this._onMediaSourceOpen), i.removeEventListener("emptied", this._onMediaEmptied), this.updateDuration(), this.hls.trigger(m.MEDIA_ATTACHED, { + media: i, + mediaSource: r + }), this.mediaSource !== null && this.checkPendingTracks()); + }, this._onMediaSourceClose = () => { + this.log("Media source closed"); + }, this._onMediaSourceEnded = () => { + this.log("Media source ended"); + }, this._onMediaEmptied = () => { + const { + mediaSrc: s, + _objectUrl: i + } = this; + s !== i && this.error(`Media element src was set while attaching MediaSource (${i} > ${s})`); + }, this.hls = e, this.fragmentTracker = t, this.appendSource = ho(ze(e.config.preferManagedMediaSource)), this.initTracks(), this.registerListeners(); + } + hasSourceTypes() { + return Object.keys(this.tracks).length > 0; + } + destroy() { + this.unregisterListeners(), this.details = null, this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.transferData = this.overrides = void 0, this.operationQueue && (this.operationQueue.destroy(), this.operationQueue = null), this.hls = this.fragmentTracker = null, this._onMediaSourceOpen = this._onMediaSourceClose = null, this._onMediaSourceEnded = null, this._onStartStreaming = this._onEndStreaming = null; + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.BUFFER_RESET, this.onBufferReset, this), e.on(m.BUFFER_APPENDING, this.onBufferAppending, this), e.on(m.BUFFER_CODECS, this.onBufferCodecs, this), e.on(m.BUFFER_EOS, this.onBufferEos, this), e.on(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(m.FRAG_PARSED, this.onFragParsed, this), e.on(m.FRAG_CHANGED, this.onFragChanged, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.BUFFER_RESET, this.onBufferReset, this), e.off(m.BUFFER_APPENDING, this.onBufferAppending, this), e.off(m.BUFFER_CODECS, this.onBufferCodecs, this), e.off(m.BUFFER_EOS, this.onBufferEos, this), e.off(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(m.FRAG_PARSED, this.onFragParsed, this), e.off(m.FRAG_CHANGED, this.onFragChanged, this), e.off(m.ERROR, this.onError, this); + } + transferMedia() { + const { + media: e, + mediaSource: t + } = this; + if (!e) + return null; + const s = {}; + if (this.operationQueue) { + const r = this.isUpdating(); + r || this.operationQueue.removeBlockers(); + const n = this.isQueued(); + (r || n) && this.warn(`Transfering MediaSource with${n ? " operations in queue" : ""}${r ? " updating SourceBuffer(s)" : ""} ${this.operationQueue}`), this.operationQueue.destroy(); + } + const i = this.transferData; + return !this.sourceBufferCount && i && i.mediaSource === t ? ie(s, i.tracks) : this.sourceBuffers.forEach((r) => { + const [n] = r; + n && (s[n] = ie({}, this.tracks[n]), this.removeBuffer(n)), r[0] = r[1] = null; + }), { + media: e, + mediaSource: t, + tracks: s + }; + } + initTracks() { + const e = {}; + this.sourceBuffers = [[null, null], [null, null]], this.tracks = e, this.resetQueue(), this.resetAppendErrors(), this.lastMpegAudioChunk = this.blockedAudioAppend = null, this.lastVideoAppendEnd = 0; + } + onManifestLoading() { + this.bufferCodecEventsTotal = 0, this.details = null; + } + onManifestParsed(e, t) { + var s; + let i = 2; + (t.audio && !t.video || !t.altAudio) && (i = 1), this.bufferCodecEventsTotal = i, this.log(`${i} bufferCodec event(s) expected.`), (s = this.transferData) != null && s.mediaSource && this.sourceBufferCount && i && this.bufferCreated(); + } + onMediaAttaching(e, t) { + const s = this.media = t.media, i = ze(this.appendSource); + if (this.transferData = this.overrides = void 0, s && i) { + const r = !!t.mediaSource; + (r || t.overrides) && (this.transferData = t, this.overrides = t.overrides); + const n = this.mediaSource = t.mediaSource || new i(); + if (this.assignMediaSource(n), r) + this._objectUrl = s.src, this.attachTransferred(); + else { + const o = this._objectUrl = self.URL.createObjectURL(n); + if (this.appendSource) + try { + s.removeAttribute("src"); + const c = self.ManagedMediaSource; + s.disableRemotePlayback = s.disableRemotePlayback || c && n instanceof c, Gr(s), Nc(s, o), s.load(); + } catch { + s.src = o; + } + else + s.src = o; + } + s.addEventListener("emptied", this._onMediaEmptied); + } + } + assignMediaSource(e) { + var t, s; + this.log(`${((t = this.transferData) == null ? void 0 : t.mediaSource) === e ? "transferred" : "created"} media source: ${(s = e.constructor) == null ? void 0 : s.name}`), e.addEventListener("sourceopen", this._onMediaSourceOpen), e.addEventListener("sourceended", this._onMediaSourceEnded), e.addEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (e.addEventListener("startstreaming", this._onStartStreaming), e.addEventListener("endstreaming", this._onEndStreaming)); + } + attachTransferred() { + const e = this.media, t = this.transferData; + if (!t || !e) + return; + const s = this.tracks, i = t.tracks, r = i ? Object.keys(i) : null, n = r ? r.length : 0, o = () => { + this.media && this.mediaSourceOpenOrEnded && this._onMediaSourceOpen(); + }; + if (i && r && n) { + if (!this.tracksReady) { + this.hls.config.startFragPrefetch = !0, this.log("attachTransferred: waiting for SourceBuffer track info"); + return; + } + if (this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal}) +required tracks: ${ae(s, (c, l) => c === "initSegment" ? void 0 : l)}; +transfer tracks: ${ae(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !yn(i, s)) { + t.mediaSource = null, t.tracks = void 0; + const c = e.currentTime, l = this.details, h = Math.max(c, (l == null ? void 0 : l.fragments[0].start) || 0); + if (h - c > 1) { + this.log(`attachTransferred: waiting for playback to reach new tracks start time ${c} -> ${h}`); + return; + } + this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(i)}"->"${Object.keys(s)}") start time: ${h} currentTime: ${c}`), this.onMediaDetaching(m.MEDIA_DETACHING, {}), this.onMediaAttaching(m.MEDIA_ATTACHING, t), e.currentTime = h; + return; + } + this.transferData = void 0, r.forEach((c) => { + const l = c, h = i[l]; + if (h) { + const u = h.buffer; + if (u) { + const d = this.fragmentTracker, g = h.id; + if (d.hasFragments(g) || d.hasParts(g)) { + const p = q.getBuffered(u); + d.detectEvictedFragments(l, p, g, null, !0); + } + const f = $s(l), E = [l, u]; + this.sourceBuffers[f] = E, u.updating && this.operationQueue && this.operationQueue.prependBlocker(l), this.trackSourceBuffer(l, h); + } + } + }), o(), this.bufferCreated(); + } else + this.log("attachTransferred: MediaSource w/o SourceBuffers"), o(); + } + get mediaSourceOpenOrEnded() { + var e; + const t = (e = this.mediaSource) == null ? void 0 : e.readyState; + return t === "open" || t === "ended"; + } + onMediaDetaching(e, t) { + const s = !!t.transferMedia; + this.transferData = this.overrides = void 0; + const { + media: i, + mediaSource: r, + _objectUrl: n + } = this; + if (r) { + if (this.log(`media source ${s ? "transferring" : "detaching"}`), s) + this.sourceBuffers.forEach(([o]) => { + o && this.removeBuffer(o); + }), this.resetQueue(); + else { + if (this.mediaSourceOpenOrEnded) { + const o = r.readyState === "open"; + try { + const c = r.sourceBuffers; + for (let l = c.length; l--; ) + o && c[l].abort(), r.removeSourceBuffer(c[l]); + o && r.endOfStream(); + } catch (c) { + this.warn(`onMediaDetaching: ${c.message} while calling endOfStream`); + } + } + this.sourceBufferCount && this.onBufferReset(); + } + r.removeEventListener("sourceopen", this._onMediaSourceOpen), r.removeEventListener("sourceended", this._onMediaSourceEnded), r.removeEventListener("sourceclose", this._onMediaSourceClose), this.appendSource && (r.removeEventListener("startstreaming", this._onStartStreaming), r.removeEventListener("endstreaming", this._onEndStreaming)), this.mediaSource = null, this._objectUrl = null; + } + i && (i.removeEventListener("emptied", this._onMediaEmptied), s || (n && self.URL.revokeObjectURL(n), this.mediaSrc === n ? (i.removeAttribute("src"), this.appendSource && Gr(i), i.load()) : this.warn("media|source.src was changed by a third party - skip cleanup")), this.media = null), this.hls.trigger(m.MEDIA_DETACHED, t); + } + onBufferReset() { + this.sourceBuffers.forEach(([e]) => { + e && this.resetBuffer(e); + }), this.initTracks(); + } + resetBuffer(e) { + var t; + const s = (t = this.tracks[e]) == null ? void 0 : t.buffer; + if (this.removeBuffer(e), s) + try { + var i; + (i = this.mediaSource) != null && i.sourceBuffers.length && this.mediaSource.removeSourceBuffer(s); + } catch (r) { + this.warn(`onBufferReset ${e}`, r); + } + delete this.tracks[e]; + } + removeBuffer(e) { + this.removeBufferListeners(e), this.sourceBuffers[$s(e)] = [null, null]; + const t = this.tracks[e]; + t && (t.buffer = void 0); + } + resetQueue() { + this.operationQueue && this.operationQueue.destroy(), this.operationQueue = new Oc(this.tracks); + } + onBufferCodecs(e, t) { + const s = this.tracks, i = Object.keys(t); + this.log(`BUFFER_CODECS: "${i}" (current SB count ${this.sourceBufferCount})`); + const r = "audiovideo" in t && (s.audio || s.video) || s.audiovideo && ("audio" in t || "video" in t), n = !r && this.sourceBufferCount && this.media && i.some((o) => !s[o]); + if (r || n) { + this.warn(`Unsupported transition between "${Object.keys(s)}" and "${i}" SourceBuffers`); + return; + } + i.forEach((o) => { + var c, l, h; + const u = t[o], { + id: d, + codec: g, + levelCodec: f, + container: E, + metadata: p, + supplemental: y + } = u; + let S = s[o]; + const T = (c = this.transferData) == null || (l = c.tracks) == null ? void 0 : l[o], v = T != null && T.buffer ? T : S, x = (v == null ? void 0 : v.pendingCodec) || (v == null ? void 0 : v.codec), _ = v == null ? void 0 : v.levelCodec; + S || (S = s[o] = { + buffer: void 0, + listeners: [], + codec: g, + supplemental: y, + container: E, + levelCodec: f, + metadata: p, + id: d + }); + const A = ts(x, _), R = A == null ? void 0 : A.replace($r, "$1"); + let D = ts(g, f); + const L = (h = D) == null ? void 0 : h.replace($r, "$1"); + D && A && R !== L && (o.slice(0, 5) === "audio" && (D = us(D, this.appendSource)), this.log(`switching codec ${x} to ${D}`), D !== (S.pendingCodec || S.codec) && (S.pendingCodec = D), S.container = E, this.appendChangeType(o, E, D)); + }), (this.tracksReady || this.sourceBufferCount) && (t.tracks = this.sourceBufferTracks), !this.sourceBufferCount && this.mediaSourceOpenOrEnded && this.checkPendingTracks(); + } + get sourceBufferTracks() { + return Object.keys(this.tracks).reduce((e, t) => { + const s = this.tracks[t]; + return e[t] = { + id: s.id, + container: s.container, + codec: s.codec, + levelCodec: s.levelCodec + }, e; + }, {}); + } + appendChangeType(e, t, s) { + const i = `${t};codecs=${s}`, r = { + label: `change-type=${i}`, + execute: () => { + const n = this.tracks[e]; + if (n) { + const o = n.buffer; + o != null && o.changeType && (this.log(`changing ${e} sourceBuffer type to ${i}`), o.changeType(i), n.codec = s, n.container = t); + } + this.shiftAndExecuteNext(e); + }, + onStart: () => { + }, + onComplete: () => { + }, + onError: (n) => { + this.warn(`Failed to change ${e} SourceBuffer type`, n); + } + }; + this.append(r, e, this.isPending(this.tracks[e])); + } + blockAudio(e) { + var t; + const s = e.start, i = s + e.duration * 0.05; + if (((t = this.fragmentTracker.getAppendedFrag(s, $.MAIN)) == null ? void 0 : t.gap) === !0) + return; + const n = { + label: "block-audio", + execute: () => { + var o; + const c = this.tracks.video; + (this.lastVideoAppendEnd > i || c != null && c.buffer && q.isBuffered(c.buffer, i) || ((o = this.fragmentTracker.getAppendedFrag(i, $.MAIN)) == null ? void 0 : o.gap) === !0) && (this.blockedAudioAppend = null, this.shiftAndExecuteNext("audio")); + }, + onStart: () => { + }, + onComplete: () => { + }, + onError: (o) => { + this.warn("Error executing block-audio operation", o); + } + }; + this.blockedAudioAppend = { + op: n, + frag: e + }, this.append(n, "audio", !0); + } + unblockAudio() { + const { + blockedAudioAppend: e, + operationQueue: t + } = this; + e && t && (this.blockedAudioAppend = null, t.unblockAudio(e.op)); + } + onBufferAppending(e, t) { + const { + tracks: s + } = this, { + data: i, + type: r, + parent: n, + frag: o, + part: c, + chunkMeta: l + } = t, h = l.buffering[r], u = o.sn, d = self.performance.now(); + h.start = d; + const g = o.stats.buffering, f = c ? c.stats.buffering : null; + g.start === 0 && (g.start = d), f && f.start === 0 && (f.start = d); + const E = s.audio; + let p = !1; + r === "audio" && (E == null ? void 0 : E.container) === "audio/mpeg" && (p = !this.lastMpegAudioChunk || l.id === 1 || this.lastMpegAudioChunk.sn !== l.sn, this.lastMpegAudioChunk = l); + const y = this.tracks.video, S = y == null ? void 0 : y.buffer; + if (S && u !== "initSegment") { + const x = c || o, _ = this.blockedAudioAppend; + if (r === "audio" && n !== "main" && !this.blockedAudioAppend) { + const R = x.start + x.duration * 0.05, D = S.buffered, L = this.currentOp("video"); + !D.length && !L ? this.blockAudio(x) : !L && !q.isBuffered(S, R) && this.lastVideoAppendEnd < R && this.blockAudio(x); + } else if (r === "video") { + const A = x.end; + if (_) { + const R = _.frag.start; + (A > R || A < this.lastVideoAppendEnd || q.isBuffered(S, R)) && this.unblockAudio(); + } + this.lastVideoAppendEnd = A; + } + } + const T = (c || o).start, v = { + label: `append-${r}`, + execute: () => { + if (h.executeStart = self.performance.now(), p) { + const x = this.tracks[r]; + if (x) { + const _ = x.buffer; + if (_) { + const A = T - _.timestampOffset; + Math.abs(A) >= 0.1 && (this.log(`Updating audio SourceBuffer timestampOffset to ${T} (delta: ${A}) sn: ${u})`), _.timestampOffset = T); + } + } + } + this.appendExecutor(i, r); + }, + onStart: () => { + }, + onComplete: () => { + const x = self.performance.now(); + h.executeEnd = h.end = x, g.first === 0 && (g.first = x), f && f.first === 0 && (f.first = x); + const _ = {}; + this.sourceBuffers.forEach(([A, R]) => { + A && (_[A] = q.getBuffered(R)); + }), this.appendErrors[r] = 0, r === "audio" || r === "video" ? this.appendErrors.audiovideo = 0 : (this.appendErrors.audio = 0, this.appendErrors.video = 0), this.hls.trigger(m.BUFFER_APPENDED, { + type: r, + frag: o, + part: c, + chunkMeta: l, + parent: o.type, + timeRanges: _ + }); + }, + onError: (x) => { + var _; + const A = { + type: K.MEDIA_ERROR, + parent: o.type, + details: b.BUFFER_APPEND_ERROR, + sourceBufferName: r, + frag: o, + part: c, + chunkMeta: l, + error: x, + err: x, + fatal: !1 + }, R = (_ = this.media) == null ? void 0 : _.error; + if (x.code === DOMException.QUOTA_EXCEEDED_ERR) + A.details = b.BUFFER_FULL_ERROR; + else if (x.code === DOMException.INVALID_STATE_ERR && this.mediaSourceOpenOrEnded && !R) + A.errorAction = Pt(!0); + else if (x.name === ya && this.sourceBufferCount === 0) + A.errorAction = Pt(!0); + else { + const D = ++this.appendErrors[r]; + this.warn(`Failed ${D}/${this.hls.config.appendErrorMaxRetry} times to append segment in "${r}" sourceBuffer (${R || "no media error"})`), (D >= this.hls.config.appendErrorMaxRetry || R) && (A.fatal = !0); + } + this.hls.trigger(m.ERROR, A); + } + }; + this.append(v, r, this.isPending(this.tracks[r])); + } + getFlushOp(e, t, s) { + return this.log(`queuing "${e}" remove ${t}-${s}`), { + label: "remove", + execute: () => { + this.removeExecutor(e, t, s); + }, + onStart: () => { + }, + onComplete: () => { + this.hls.trigger(m.BUFFER_FLUSHED, { + type: e + }); + }, + onError: (i) => { + this.warn(`Failed to remove ${t}-${s} from "${e}" SourceBuffer`, i); + } + }; + } + onBufferFlushing(e, t) { + const { + type: s, + startOffset: i, + endOffset: r + } = t; + s ? this.append(this.getFlushOp(s, i, r), s) : this.sourceBuffers.forEach(([n]) => { + n && this.append(this.getFlushOp(n, i, r), n); + }); + } + onFragParsed(e, t) { + const { + frag: s, + part: i + } = t, r = [], n = i ? i.elementaryStreams : s.elementaryStreams; + n[ne.AUDIOVIDEO] ? r.push("audiovideo") : (n[ne.AUDIO] && r.push("audio"), n[ne.VIDEO] && r.push("video")); + const o = () => { + const c = self.performance.now(); + s.stats.buffering.end = c, i && (i.stats.buffering.end = c); + const l = i ? i.stats : s.stats; + this.hls.trigger(m.FRAG_BUFFERED, { + frag: s, + part: i, + stats: l, + id: s.type + }); + }; + r.length === 0 && this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`), this.blockBuffers(o, r).catch((c) => { + this.warn(`Fragment buffered callback ${c}`), this.stepOperationQueue(this.sourceBufferTypes); + }); + } + onFragChanged(e, t) { + this.trimBuffers(); + } + get bufferedToEnd() { + return this.sourceBufferCount > 0 && !this.sourceBuffers.some(([e]) => { + var t, s; + return e && (!((t = this.tracks[e]) != null && t.ended) || ((s = this.tracks[e]) == null ? void 0 : s.ending)); + }); + } + // on BUFFER_EOS mark matching sourcebuffer(s) as "ending" and "ended" and queue endOfStream after remaining operations(s) + // an undefined data.type will mark all buffers as EOS. + onBufferEos(e, t) { + var s; + this.sourceBuffers.forEach(([n]) => { + if (n) { + const o = this.tracks[n]; + (!t.type || t.type === n) && (o.ending = !0, o.ended || (o.ended = !0, this.log(`${n} buffer reached EOS`))); + } + }); + const i = ((s = this.overrides) == null ? void 0 : s.endOfStream) !== !1; + this.sourceBufferCount > 0 && !this.sourceBuffers.some(([n]) => { + var o; + return n && !((o = this.tracks[n]) != null && o.ended); + }) && (i ? (this.log("Queueing EOS"), this.blockUntilOpen(() => { + this.tracksEnded(); + const { + mediaSource: n + } = this; + if (!n || n.readyState !== "open") { + n && this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${n.readyState}`); + return; + } + this.log("Calling mediaSource.endOfStream()"), n.endOfStream(), this.hls.trigger(m.BUFFERED_TO_END, void 0); + })) : (this.tracksEnded(), this.hls.trigger(m.BUFFERED_TO_END, void 0))); + } + tracksEnded() { + this.sourceBuffers.forEach(([e]) => { + if (e !== null) { + const t = this.tracks[e]; + t && (t.ending = !1); + } + }); + } + onLevelUpdated(e, { + details: t + }) { + t.fragments.length && (this.details = t, this.updateDuration()); + } + updateDuration() { + const e = this.getDurationAndRange(); + e && this.blockUntilOpen(() => this.updateMediaSource(e)); + } + onError(e, t) { + if (t.details === b.BUFFER_APPEND_ERROR && t.frag) { + var s; + const i = (s = t.errorAction) == null ? void 0 : s.nextAutoLevel; + N(i) && i !== t.frag.level && this.resetAppendErrors(); + } + } + resetAppendErrors() { + this.appendErrors = { + audio: 0, + video: 0, + audiovideo: 0 + }; + } + trimBuffers() { + const { + hls: e, + details: t, + media: s + } = this; + if (!s || t === null || !this.sourceBufferCount) + return; + const i = e.config, r = s.currentTime, n = t.levelTargetDuration, o = t.live && i.liveBackBufferLength !== null ? i.liveBackBufferLength : i.backBufferLength; + if (N(o) && o >= 0) { + const c = Math.max(o, n), l = Math.floor(r / n) * n - c; + this.flushBackBuffer(r, n, l); + } + if (N(i.frontBufferFlushThreshold) && i.frontBufferFlushThreshold > 0) { + const c = Math.max(i.maxBufferLength, i.frontBufferFlushThreshold), l = Math.max(c, n), h = Math.floor(r / n) * n + l; + this.flushFrontBuffer(r, n, h); + } + } + flushBackBuffer(e, t, s) { + this.sourceBuffers.forEach(([i, r]) => { + if (r) { + const o = q.getBuffered(r); + if (o.length > 0 && s > o.start(0)) { + var n; + this.hls.trigger(m.BACK_BUFFER_REACHED, { + bufferEnd: s + }); + const c = this.tracks[i]; + if ((n = this.details) != null && n.live) + this.hls.trigger(m.LIVE_BACK_BUFFER_REACHED, { + bufferEnd: s + }); + else if (c != null && c.ended) { + this.log(`Cannot flush ${i} back buffer while SourceBuffer is in ended state`); + return; + } + this.hls.trigger(m.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: s, + type: i + }); + } + } + }); + } + flushFrontBuffer(e, t, s) { + this.sourceBuffers.forEach(([i, r]) => { + if (r) { + const n = q.getBuffered(r), o = n.length; + if (o < 2) + return; + const c = n.start(o - 1), l = n.end(o - 1); + if (s > c || e >= c && e <= l) + return; + this.hls.trigger(m.BUFFER_FLUSHING, { + startOffset: c, + endOffset: 1 / 0, + type: i + }); + } + }); + } + /** + * Update Media Source duration to current level duration or override to Infinity if configuration parameter + * 'liveDurationInfinity` is set to `true` + * More details: https://github.com/video-dev/hls.js/issues/355 + */ + getDurationAndRange() { + var e; + const { + details: t, + mediaSource: s + } = this; + if (!t || !this.media || (s == null ? void 0 : s.readyState) !== "open") + return null; + const i = t.edge; + if (t.live && this.hls.config.liveDurationInfinity) { + if (t.fragments.length && t.live && s.setLiveSeekableRange) { + const l = Math.max(0, t.fragmentStart), h = Math.max(l, i); + return { + duration: 1 / 0, + start: l, + end: h + }; + } + return { + duration: 1 / 0 + }; + } + const r = (e = this.overrides) == null ? void 0 : e.duration; + if (r) + return N(r) ? { + duration: r + } : null; + const n = this.media.duration, o = N(s.duration) ? s.duration : 0; + return i > o && i > n || !N(n) ? { + duration: i + } : null; + } + updateMediaSource({ + duration: e, + start: t, + end: s + }) { + const i = this.mediaSource; + !this.media || !i || i.readyState !== "open" || (i.duration !== e && (N(e) && this.log(`Updating MediaSource duration to ${e.toFixed(3)}`), i.duration = e), t !== void 0 && s !== void 0 && (this.log(`MediaSource duration is set to ${i.duration}. Setting seekable range to ${t}-${s}.`), i.setLiveSeekableRange(t, s))); + } + get tracksReady() { + const e = this.pendingTrackCount; + return e > 0 && (e >= this.bufferCodecEventsTotal || this.isPending(this.tracks.audiovideo)); + } + checkPendingTracks() { + const { + bufferCodecEventsTotal: e, + pendingTrackCount: t, + tracks: s + } = this; + if (this.log(`checkPendingTracks (pending: ${t} codec events expected: ${e}) ${ae(s)}`), this.tracksReady) { + var i; + const r = (i = this.transferData) == null ? void 0 : i.tracks; + r && Object.keys(r).length ? this.attachTransferred() : this.createSourceBuffers(); + } + } + bufferCreated() { + if (this.sourceBufferCount) { + const e = {}; + this.sourceBuffers.forEach(([t, s]) => { + if (t) { + const i = this.tracks[t]; + e[t] = { + buffer: s, + container: i.container, + codec: i.codec, + supplemental: i.supplemental, + levelCodec: i.levelCodec, + id: i.id, + metadata: i.metadata + }; + } + }), this.hls.trigger(m.BUFFER_CREATED, { + tracks: e + }), this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`), this.sourceBuffers.forEach(([t]) => { + this.executeNext(t); + }); + } else { + const e = new Error("could not create source buffer for media codec(s)"); + this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_INCOMPATIBLE_CODECS_ERROR, + fatal: !0, + error: e, + reason: e.message + }); + } + } + createSourceBuffers() { + const { + tracks: e, + sourceBuffers: t, + mediaSource: s + } = this; + if (!s) + throw new Error("createSourceBuffers called when mediaSource was null"); + for (const r in e) { + const n = r, o = e[n]; + if (this.isPending(o)) { + const c = this.getTrackCodec(o, n), l = `${o.container};codecs=${c}`; + o.codec = c, this.log(`creating sourceBuffer(${l})${this.currentOp(n) ? " Queued" : ""} ${ae(o)}`); + try { + const h = s.addSourceBuffer(l), u = $s(n), d = [n, h]; + t[u] = d, o.buffer = h; + } catch (h) { + var i; + this.error(`error while trying to add sourceBuffer: ${h.message}`), this.shiftAndExecuteNext(n), (i = this.operationQueue) == null || i.removeBlockers(), delete this.tracks[n], this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_ADD_CODEC_ERROR, + fatal: !1, + error: h, + sourceBufferName: n, + mimeType: l, + parent: o.id + }); + return; + } + this.trackSourceBuffer(n, o); + } + } + this.bufferCreated(); + } + getTrackCodec(e, t) { + const s = e.supplemental; + let i = e.codec; + s && (t === "video" || t === "audiovideo") && ei(s, "video") && (i = wo(i, s)); + const r = ts(i, e.levelCodec); + return r ? t.slice(0, 5) === "audio" ? us(r, this.appendSource) : r : ""; + } + trackSourceBuffer(e, t) { + const s = t.buffer; + if (!s) + return; + const i = this.getTrackCodec(t, e); + this.tracks[e] = { + buffer: s, + codec: i, + container: t.container, + levelCodec: t.levelCodec, + supplemental: t.supplemental, + metadata: t.metadata, + id: t.id, + listeners: [] + }, this.removeBufferListeners(e), this.addBufferListener(e, "updatestart", this.onSBUpdateStart), this.addBufferListener(e, "updateend", this.onSBUpdateEnd), this.addBufferListener(e, "error", this.onSBUpdateError), this.appendSource && this.addBufferListener(e, "bufferedchange", (r, n) => { + const o = n.removedRanges; + o != null && o.length && this.hls.trigger(m.BUFFER_FLUSHED, { + type: r + }); + }); + } + get mediaSrc() { + var e, t; + const s = ((e = this.media) == null || (t = e.querySelector) == null ? void 0 : t.call(e, "source")) || this.media; + return s == null ? void 0 : s.src; + } + onSBUpdateStart(e) { + const t = this.currentOp(e); + t && t.onStart(); + } + onSBUpdateEnd(e) { + var t; + if (((t = this.mediaSource) == null ? void 0 : t.readyState) === "closed") { + this.resetBuffer(e); + return; + } + const s = this.currentOp(e); + s && (s.onComplete(), this.shiftAndExecuteNext(e)); + } + onSBUpdateError(e, t) { + var s; + const i = new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s = this.mediaSource) == null ? void 0 : s.readyState}`); + this.error(`${i}`, t), this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_APPENDING_ERROR, + sourceBufferName: e, + error: i, + fatal: !1 + }); + const r = this.currentOp(e); + r && r.onError(i); + } + // This method must result in an updateend event; if remove is not called, onSBUpdateEnd must be called manually + removeExecutor(e, t, s) { + const { + media: i, + mediaSource: r + } = this, n = this.tracks[e], o = n == null ? void 0 : n.buffer; + if (!i || !r || !o) { + this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`), this.shiftAndExecuteNext(e); + return; + } + const c = N(i.duration) ? i.duration : 1 / 0, l = N(r.duration) ? r.duration : 1 / 0, h = Math.max(0, t), u = Math.min(s, c, l); + u > h && (!n.ending || n.ended) ? (n.ended = !1, this.log(`Removing [${h},${u}] from the ${e} SourceBuffer`), o.remove(h, u)) : this.shiftAndExecuteNext(e); + } + // This method must result in an updateend event; if append is not called, onSBUpdateEnd must be called manually + appendExecutor(e, t) { + const s = this.tracks[t], i = s == null ? void 0 : s.buffer; + if (!i) + throw new Fc(`Attempting to append to the ${t} SourceBuffer, but it does not exist`); + s.ending = !1, s.ended = !1, i.appendBuffer(e); + } + blockUntilOpen(e) { + if (this.isUpdating() || this.isQueued()) + this.blockBuffers(e).catch((t) => { + this.warn(`SourceBuffer blocked callback ${t}`), this.stepOperationQueue(this.sourceBufferTypes); + }); + else + try { + e(); + } catch (t) { + this.warn(`Callback run without blocking ${this.operationQueue} ${t}`); + } + } + isUpdating() { + return this.sourceBuffers.some(([e, t]) => e && t.updating); + } + isQueued() { + return this.sourceBuffers.some(([e]) => e && !!this.currentOp(e)); + } + isPending(e) { + return !!e && !e.buffer; + } + // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises + // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue + // upon completion, since we already do it here + blockBuffers(e, t = this.sourceBufferTypes) { + if (!t.length) + return this.log("Blocking operation requested, but no SourceBuffers exist"), Promise.resolve().then(e); + const { + operationQueue: s + } = this, i = t.map((n) => this.appendBlocker(n)); + return t.length > 1 && !!this.blockedAudioAppend && this.unblockAudio(), Promise.all(i).then((n) => { + s === this.operationQueue && (e(), this.stepOperationQueue(this.sourceBufferTypes)); + }); + } + stepOperationQueue(e) { + e.forEach((t) => { + var s; + const i = (s = this.tracks[t]) == null ? void 0 : s.buffer; + !i || i.updating || this.shiftAndExecuteNext(t); + }); + } + append(e, t, s) { + this.operationQueue && this.operationQueue.append(e, t, s); + } + appendBlocker(e) { + if (this.operationQueue) + return this.operationQueue.appendBlocker(e); + } + currentOp(e) { + return this.operationQueue ? this.operationQueue.current(e) : null; + } + executeNext(e) { + e && this.operationQueue && this.operationQueue.executeNext(e); + } + shiftAndExecuteNext(e) { + this.operationQueue && this.operationQueue.shiftAndExecuteNext(e); + } + get pendingTrackCount() { + return Object.keys(this.tracks).reduce((e, t) => e + (this.isPending(this.tracks[t]) ? 1 : 0), 0); + } + get sourceBufferCount() { + return this.sourceBuffers.reduce((e, [t]) => e + (t ? 1 : 0), 0); + } + get sourceBufferTypes() { + return this.sourceBuffers.map(([e]) => e).filter((e) => !!e); + } + addBufferListener(e, t, s) { + const i = this.tracks[e]; + if (!i) + return; + const r = i.buffer; + if (!r) + return; + const n = s.bind(this, e); + i.listeners.push({ + event: t, + listener: n + }), r.addEventListener(t, n); + } + removeBufferListeners(e) { + const t = this.tracks[e]; + if (!t) + return; + const s = t.buffer; + s && (t.listeners.forEach((i) => { + s.removeEventListener(i.event, i.listener); + }), t.listeners.length = 0); + } +} +function Gr(a) { + const e = a.querySelectorAll("source"); + [].slice.call(e).forEach((t) => { + a.removeChild(t); + }); +} +function Nc(a, e) { + const t = self.document.createElement("source"); + t.type = "video/mp4", t.src = e, a.appendChild(t); +} +function $s(a) { + return a === "audio" ? 1 : 0; +} +class ki { + constructor(e) { + this.hls = void 0, this.autoLevelCapping = void 0, this.firstLevel = void 0, this.media = void 0, this.restrictedLevels = void 0, this.timer = void 0, this.clientRect = void 0, this.streamController = void 0, this.hls = e, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.firstLevel = -1, this.media = null, this.restrictedLevels = [], this.timer = void 0, this.clientRect = null, this.registerListeners(); + } + setStreamController(e) { + this.streamController = e; + } + destroy() { + this.hls && this.unregisterListener(), this.timer && this.stopCapping(), this.media = null, this.clientRect = null, this.hls = this.streamController = null; + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(m.BUFFER_CODECS, this.onBufferCodecs, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this); + } + unregisterListener() { + const { + hls: e + } = this; + e.off(m.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), e.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(m.BUFFER_CODECS, this.onBufferCodecs, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this); + } + onFpsDropLevelCapping(e, t) { + const s = this.hls.levels[t.droppedLevel]; + this.isLevelAllowed(s) && this.restrictedLevels.push({ + bitrate: s.bitrate, + height: s.height, + width: s.width + }); + } + onMediaAttaching(e, t) { + this.media = t.media instanceof HTMLVideoElement ? t.media : null, this.clientRect = null, this.timer && this.hls.levels.length && this.detectPlayerSize(); + } + onManifestParsed(e, t) { + const s = this.hls; + this.restrictedLevels = [], this.firstLevel = t.firstLevel, s.config.capLevelToPlayerSize && t.video && this.startCapping(); + } + onLevelsUpdated(e, t) { + this.timer && N(this.autoLevelCapping) && this.detectPlayerSize(); + } + // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted + // to the first level + onBufferCodecs(e, t) { + this.hls.config.capLevelToPlayerSize && t.video && this.startCapping(); + } + onMediaDetaching() { + this.stopCapping(), this.media = null; + } + detectPlayerSize() { + if (this.media) { + if (this.mediaHeight <= 0 || this.mediaWidth <= 0) { + this.clientRect = null; + return; + } + const e = this.hls.levels; + if (e.length) { + const t = this.hls, s = this.getMaxLevel(e.length - 1); + s !== this.autoLevelCapping && t.logger.log(`Setting autoLevelCapping to ${s}: ${e[s].height}p@${e[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`), t.autoLevelCapping = s, t.autoLevelEnabled && t.autoLevelCapping > this.autoLevelCapping && this.streamController && this.streamController.nextLevelSwitch(), this.autoLevelCapping = t.autoLevelCapping; + } + } + } + /* + * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled) + */ + getMaxLevel(e) { + const t = this.hls.levels; + if (!t.length) + return -1; + const s = t.filter((i, r) => this.isLevelAllowed(i) && r <= e); + return this.clientRect = null, ki.getMaxLevelByMediaSize(s, this.mediaWidth, this.mediaHeight); + } + startCapping() { + this.timer || (this.autoLevelCapping = Number.POSITIVE_INFINITY, self.clearInterval(this.timer), this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3), this.detectPlayerSize()); + } + stopCapping() { + this.restrictedLevels = [], this.firstLevel = -1, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.timer && (self.clearInterval(this.timer), this.timer = void 0); + } + getDimensions() { + if (this.clientRect) + return this.clientRect; + const e = this.media, t = { + width: 0, + height: 0 + }; + if (e) { + const s = e.getBoundingClientRect(); + t.width = s.width, t.height = s.height, !t.width && !t.height && (t.width = s.right - s.left || e.width || 0, t.height = s.bottom - s.top || e.height || 0); + } + return this.clientRect = t, t; + } + get mediaWidth() { + return this.getDimensions().width * this.contentScaleFactor; + } + get mediaHeight() { + return this.getDimensions().height * this.contentScaleFactor; + } + get contentScaleFactor() { + let e = 1; + if (!this.hls.config.ignoreDevicePixelRatio) + try { + e = self.devicePixelRatio; + } catch { + } + return Math.min(e, this.hls.config.maxDevicePixelRatio); + } + isLevelAllowed(e) { + return !this.restrictedLevels.some((s) => e.bitrate === s.bitrate && e.width === s.width && e.height === s.height); + } + static getMaxLevelByMediaSize(e, t, s) { + if (!(e != null && e.length)) + return -1; + const i = (o, c) => c ? o.width !== c.width || o.height !== c.height : !0; + let r = e.length - 1; + const n = Math.max(t, s); + for (let o = 0; o < e.length; o += 1) { + const c = e[o]; + if ((c.width >= n || c.height >= n) && i(c, e[o + 1])) { + r = o; + break; + } + } + return r; + } +} +const Bc = { + /** + * text file, such as a manifest or playlist + */ + MANIFEST: "m", + /** + * audio only + */ + AUDIO: "a", + /** + * video only + */ + VIDEO: "v", + /** + * muxed audio and video + */ + MUXED: "av", + /** + * init segment + */ + INIT: "i", + /** + * caption or subtitle + */ + CAPTION: "c", + /** + * ISOBMFF timed text track + */ + TIMED_TEXT: "tt", + /** + * cryptographic key, license or certificate. + */ + KEY: "k", + /** + * other + */ + OTHER: "o" +}, Ee = Bc, Uc = { + /** + * HTTP Live Streaming (HLS) + */ + HLS: "h" +}, $c = Uc, Gc = "CMCD-Object", Kc = "CMCD-Request", Vc = "CMCD-Session", Hc = "CMCD-Status", Lt = { + /** + * keys whose values vary with the object being requested. + */ + OBJECT: Gc, + /** + * keys whose values vary with each request. + */ + REQUEST: Kc, + /** + * keys whose values are expected to be invariant over the life of the session. + */ + SESSION: Vc, + /** + * keys whose values do not vary with every request or object. + */ + STATUS: Hc +}, Yc = { + [Lt.OBJECT]: ["br", "d", "ot", "tb"], + [Lt.REQUEST]: ["bl", "dl", "mtp", "nor", "nrr", "su"], + [Lt.SESSION]: ["cid", "pr", "sf", "sid", "st", "v"], + [Lt.STATUS]: ["bs", "rtp"] +}; +class yt { + constructor(e, t) { + Array.isArray(e) && (e = e.map((s) => s instanceof yt ? s : new yt(s))), this.value = e, this.params = t; + } +} +const Wc = "Dict"; +function qc(a) { + return Array.isArray(a) ? JSON.stringify(a) : a instanceof Map ? "Map{}" : a instanceof Set ? "Set{}" : typeof a == "object" ? JSON.stringify(a) : String(a); +} +function jc(a, e, t, s) { + return new Error(`failed to ${a} "${qc(e)}" as ${t}`, { + cause: s + }); +} +function Ne(a, e, t) { + return jc("serialize", a, e, t); +} +class Ta { + constructor(e) { + this.description = e; + } +} +const Kr = "Bare Item", Xc = "Boolean"; +function zc(a) { + if (typeof a != "boolean") + throw Ne(a, Xc); + return a ? "?1" : "?0"; +} +function Qc(a) { + return btoa(String.fromCharCode(...a)); +} +const Zc = "Byte Sequence"; +function Jc(a) { + if (ArrayBuffer.isView(a) === !1) + throw Ne(a, Zc); + return `:${Qc(a)}:`; +} +const eh = "Integer"; +function th(a) { + return a < -999999999999999 || 999999999999999 < a; +} +function Sa(a) { + if (th(a)) + throw Ne(a, eh); + return a.toString(); +} +function sh(a) { + return `@${Sa(a.getTime() / 1e3)}`; +} +function va(a, e) { + if (a < 0) + return -va(-a, e); + const t = Math.pow(10, e); + if (Math.abs(a * t % 1 - 0.5) < Number.EPSILON) { + const i = Math.floor(a * t); + return (i % 2 === 0 ? i : i + 1) / t; + } else + return Math.round(a * t) / t; +} +const ih = "Decimal"; +function rh(a) { + const e = va(a, 3); + if (Math.floor(Math.abs(e)).toString().length > 12) + throw Ne(a, ih); + const t = e.toString(); + return t.includes(".") ? t : `${t}.0`; +} +const nh = "String", ah = /[\x00-\x1f\x7f]+/; +function oh(a) { + if (ah.test(a)) + throw Ne(a, nh); + return `"${a.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`; +} +function lh(a) { + return a.description || a.toString().slice(7, -1); +} +const ch = "Token"; +function Vr(a) { + const e = lh(a); + if (/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e) === !1) + throw Ne(e, ch); + return e; +} +function ci(a) { + switch (typeof a) { + case "number": + if (!N(a)) + throw Ne(a, Kr); + return Number.isInteger(a) ? Sa(a) : rh(a); + case "string": + return oh(a); + case "symbol": + return Vr(a); + case "boolean": + return zc(a); + case "object": + if (a instanceof Date) + return sh(a); + if (a instanceof Uint8Array) + return Jc(a); + if (a instanceof Ta) + return Vr(a); + default: + throw Ne(a, Kr); + } +} +const hh = "Key"; +function hi(a) { + if (/^[a-z*][a-z0-9\-_.*]*$/.test(a) === !1) + throw Ne(a, hh); + return a; +} +function wi(a) { + return a == null ? "" : Object.entries(a).map(([e, t]) => t === !0 ? `;${hi(e)}` : `;${hi(e)}=${ci(t)}`).join(""); +} +function xa(a) { + return a instanceof yt ? `${ci(a.value)}${wi(a.params)}` : ci(a); +} +function uh(a) { + return `(${a.value.map(xa).join(" ")})${wi(a.params)}`; +} +function dh(a, e = { + whitespace: !0 +}) { + if (typeof a != "object") + throw Ne(a, Wc); + const t = a instanceof Map ? a.entries() : Object.entries(a), s = e != null && e.whitespace ? " " : ""; + return Array.from(t).map(([i, r]) => { + r instanceof yt || (r = new yt(r)); + let n = hi(i); + return r.value === !0 ? n += wi(r.params) : (n += "=", Array.isArray(r.value) ? n += uh(r) : n += xa(r)), n; + }).join(`,${s}`); +} +function fh(a, e) { + return dh(a, e); +} +function gh(a) { + return a === "ot" || a === "sf" || a === "st"; +} +function mh(a) { + return typeof a == "number" ? N(a) : a != null && a !== "" && a !== !1; +} +function ph(a, e) { + const t = new URL(a), s = new URL(e); + if (t.origin !== s.origin) + return a; + const i = t.pathname.split("/").slice(1), r = s.pathname.split("/").slice(1, -1); + for (; i[0] === r[0]; ) + i.shift(), r.shift(); + for (; r.length; ) + r.shift(), i.unshift(".."); + return i.join("/"); +} +const as = (a) => Math.round(a), Eh = (a, e) => (e != null && e.baseUrl && (a = ph(a, e.baseUrl)), encodeURIComponent(a)), Xt = (a) => as(a / 100) * 100, yh = { + /** + * Bitrate (kbps) rounded integer + */ + br: as, + /** + * Duration (milliseconds) rounded integer + */ + d: as, + /** + * Buffer Length (milliseconds) rounded nearest 100ms + */ + bl: Xt, + /** + * Deadline (milliseconds) rounded nearest 100ms + */ + dl: Xt, + /** + * Measured Throughput (kbps) rounded nearest 100kbps + */ + mtp: Xt, + /** + * Next Object Request URL encoded + */ + nor: Eh, + /** + * Requested maximum throughput (kbps) rounded nearest 100kbps + */ + rtp: Xt, + /** + * Top Bitrate (kbps) rounded integer + */ + tb: as +}; +function Th(a, e) { + const t = {}; + if (a == null || typeof a != "object") + return t; + const s = Object.keys(a).sort(), i = ie({}, yh, e == null ? void 0 : e.formatters), r = e == null ? void 0 : e.filter; + return s.forEach((n) => { + if (r != null && r(n)) + return; + let o = a[n]; + const c = i[n]; + c && (o = c(o, e)), !(n === "v" && o === 1) && (n == "pr" && o === 1 || mh(o) && (gh(n) && typeof o == "string" && (o = new Ta(o)), t[n] = o)); + }), t; +} +function Aa(a, e = {}) { + return a ? fh(Th(a, e), ie({ + whitespace: !1 + }, e)) : ""; +} +function Sh(a, e = {}) { + const t = {}; + if (!a) + return t; + const s = Object.entries(a), i = Object.entries(Yc).concat(Object.entries((e == null ? void 0 : e.customHeaderMap) || {})), r = s.reduce((n, o) => { + var c, l; + const [h, u] = o, d = ((c = i.find((g) => g[1].includes(h))) === null || c === void 0 ? void 0 : c[0]) || Lt.REQUEST; + return (l = n[d]) !== null && l !== void 0 || (n[d] = {}), n[d][h] = u, n; + }, {}); + return Object.entries(r).reduce((n, [o, c]) => (n[o] = Aa(c, e), n), t); +} +function vh(a, e, t) { + return ie(a, Sh(e, t)); +} +const xh = "CMCD"; +function Ah(a, e = {}) { + if (!a) + return ""; + const t = Aa(a, e); + return `${xh}=${encodeURIComponent(t)}`; +} +const Hr = /CMCD=[^&#]+/; +function Lh(a, e, t) { + const s = Ah(e, t); + if (!s) + return a; + if (Hr.test(a)) + return a.replace(Hr, s); + const i = a.includes("?") ? "&" : "?"; + return `${a}${i}${s}`; +} +class Ih { + constructor(e) { + this.hls = void 0, this.config = void 0, this.media = void 0, this.sid = void 0, this.cid = void 0, this.useHeaders = !1, this.includeKeys = void 0, this.initialized = !1, this.starved = !1, this.buffering = !0, this.audioBuffer = void 0, this.videoBuffer = void 0, this.onWaiting = () => { + this.initialized && (this.starved = !0), this.buffering = !0; + }, this.onPlaying = () => { + this.initialized || (this.initialized = !0), this.buffering = !1; + }, this.applyPlaylistData = (i) => { + try { + this.apply(i, { + ot: Ee.MANIFEST, + su: !this.initialized + }); + } catch (r) { + this.hls.logger.warn("Could not generate manifest CMCD data.", r); + } + }, this.applyFragmentData = (i) => { + try { + const { + frag: r, + part: n + } = i, o = this.hls.levels[r.level], c = this.getObjectType(r), l = { + d: (n || r).duration * 1e3, + ot: c + }; + (c === Ee.VIDEO || c === Ee.AUDIO || c == Ee.MUXED) && (l.br = o.bitrate / 1e3, l.tb = this.getTopBandwidth(c) / 1e3, l.bl = this.getBufferLength(c)); + const h = n ? this.getNextPart(n) : this.getNextFrag(r); + h != null && h.url && h.url !== r.url && (l.nor = h.url), this.apply(i, l); + } catch (r) { + this.hls.logger.warn("Could not generate segment CMCD data.", r); + } + }, this.hls = e; + const t = this.config = e.config, { + cmcd: s + } = t; + s != null && (t.pLoader = this.createPlaylistLoader(), t.fLoader = this.createFragmentLoader(), this.sid = s.sessionId || e.sessionId, this.cid = s.contentId, this.useHeaders = s.useHeaders === !0, this.includeKeys = s.includeKeys, this.registerListeners()); + } + registerListeners() { + const e = this.hls; + e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHED, this.onMediaDetached, this), e.on(m.BUFFER_CREATED, this.onBufferCreated, this); + } + unregisterListeners() { + const e = this.hls; + e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHED, this.onMediaDetached, this), e.off(m.BUFFER_CREATED, this.onBufferCreated, this); + } + destroy() { + this.unregisterListeners(), this.onMediaDetached(), this.hls = this.config = this.audioBuffer = this.videoBuffer = null, this.onWaiting = this.onPlaying = this.media = null; + } + onMediaAttached(e, t) { + this.media = t.media, this.media.addEventListener("waiting", this.onWaiting), this.media.addEventListener("playing", this.onPlaying); + } + onMediaDetached() { + this.media && (this.media.removeEventListener("waiting", this.onWaiting), this.media.removeEventListener("playing", this.onPlaying), this.media = null); + } + onBufferCreated(e, t) { + var s, i; + this.audioBuffer = (s = t.tracks.audio) == null ? void 0 : s.buffer, this.videoBuffer = (i = t.tracks.video) == null ? void 0 : i.buffer; + } + /** + * Create baseline CMCD data + */ + createData() { + var e; + return { + v: 1, + sf: $c.HLS, + sid: this.sid, + cid: this.cid, + pr: (e = this.media) == null ? void 0 : e.playbackRate, + mtp: this.hls.bandwidthEstimate / 1e3 + }; + } + /** + * Apply CMCD data to a request. + */ + apply(e, t = {}) { + ie(t, this.createData()); + const s = t.ot === Ee.INIT || t.ot === Ee.VIDEO || t.ot === Ee.MUXED; + this.starved && s && (t.bs = !0, t.su = !0, this.starved = !1), t.su == null && (t.su = this.buffering); + const { + includeKeys: i + } = this; + i && (t = Object.keys(t).reduce((n, o) => (i.includes(o) && (n[o] = t[o]), n), {})); + const r = { + baseUrl: e.url + }; + this.useHeaders ? (e.headers || (e.headers = {}), vh(e.headers, t, r)) : e.url = Lh(e.url, t, r); + } + getNextFrag(e) { + var t; + const s = (t = this.hls.levels[e.level]) == null ? void 0 : t.details; + if (s) { + const i = e.sn - s.startSN; + return s.fragments[i + 1]; + } + } + getNextPart(e) { + var t, s; + const { + index: i, + fragment: r + } = e, n = (t = this.hls.levels[r.level]) == null || (s = t.details) == null ? void 0 : s.partList; + if (n) { + const { + sn: o + } = r; + for (let c = n.length - 1; c >= 0; c--) { + const l = n[c]; + if (l.index === i && l.fragment.sn === o) + return n[c + 1]; + } + } + } + /** + * The CMCD object type. + */ + getObjectType(e) { + const { + type: t + } = e; + if (t === "subtitle") + return Ee.TIMED_TEXT; + if (e.sn === "initSegment") + return Ee.INIT; + if (t === "audio") + return Ee.AUDIO; + if (t === "main") + return this.hls.audioTracks.length ? Ee.VIDEO : Ee.MUXED; + } + /** + * Get the highest bitrate. + */ + getTopBandwidth(e) { + let t = 0, s; + const i = this.hls; + if (e === Ee.AUDIO) + s = i.audioTracks; + else { + const r = i.maxAutoLevel, n = r > -1 ? r + 1 : i.levels.length; + s = i.levels.slice(0, n); + } + return s.forEach((r) => { + r.bitrate > t && (t = r.bitrate); + }), t > 0 ? t : NaN; + } + /** + * Get the buffer length for a media type in milliseconds + */ + getBufferLength(e) { + const t = this.media, s = e === Ee.AUDIO ? this.audioBuffer : this.videoBuffer; + return !s || !t ? NaN : q.bufferInfo(s, t.currentTime, this.config.maxBufferHole).len * 1e3; + } + /** + * Create a playlist loader + */ + createPlaylistLoader() { + const { + pLoader: e + } = this.config, t = this.applyPlaylistData, s = e || this.config.loader; + return class { + constructor(r) { + this.loader = void 0, this.loader = new s(r); + } + get stats() { + return this.loader.stats; + } + get context() { + return this.loader.context; + } + destroy() { + this.loader.destroy(); + } + abort() { + this.loader.abort(); + } + load(r, n, o) { + t(r), this.loader.load(r, n, o); + } + }; + } + /** + * Create a playlist loader + */ + createFragmentLoader() { + const { + fLoader: e + } = this.config, t = this.applyFragmentData, s = e || this.config.loader; + return class { + constructor(r) { + this.loader = void 0, this.loader = new s(r); + } + get stats() { + return this.loader.stats; + } + get context() { + return this.loader.context; + } + destroy() { + this.loader.destroy(); + } + abort() { + this.loader.abort(); + } + load(r, n, o) { + t(r), this.loader.load(r, n, o); + } + }; + } +} +const Rh = 3e5; +class bh extends Ve { + constructor(e) { + super("content-steering", e.logger), this.hls = void 0, this.loader = null, this.uri = null, this.pathwayId = ".", this._pathwayPriority = null, this.timeToLoad = 300, this.reloadTimer = -1, this.updated = 0, this.started = !1, this.enabled = !0, this.levels = null, this.audioTracks = null, this.subtitleTracks = null, this.penalizedPathways = {}, this.hls = e, this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.ERROR, this.onError, this)); + } + pathways() { + return (this.levels || []).reduce((e, t) => (e.indexOf(t.pathwayId) === -1 && e.push(t.pathwayId), e), []); + } + get pathwayPriority() { + return this._pathwayPriority; + } + set pathwayPriority(e) { + this.updatePathwayPriority(e); + } + startLoad() { + if (this.started = !0, this.clearTimeout(), this.enabled && this.uri) { + if (this.updated) { + const e = this.timeToLoad * 1e3 - (performance.now() - this.updated); + if (e > 0) { + this.scheduleRefresh(this.uri, e); + return; + } + } + this.loadSteeringManifest(this.uri); + } + } + stopLoad() { + this.started = !1, this.loader && (this.loader.destroy(), this.loader = null), this.clearTimeout(); + } + clearTimeout() { + this.reloadTimer !== -1 && (self.clearTimeout(this.reloadTimer), this.reloadTimer = -1); + } + destroy() { + this.unregisterListeners(), this.stopLoad(), this.hls = null, this.levels = this.audioTracks = this.subtitleTracks = null; + } + removeLevel(e) { + const t = this.levels; + t && (this.levels = t.filter((s) => s !== e)); + } + onManifestLoading() { + this.stopLoad(), this.enabled = !0, this.timeToLoad = 300, this.updated = 0, this.uri = null, this.pathwayId = ".", this.levels = this.audioTracks = this.subtitleTracks = null; + } + onManifestLoaded(e, t) { + const { + contentSteering: s + } = t; + s !== null && (this.pathwayId = s.pathwayId, this.uri = s.uri, this.started && this.startLoad()); + } + onManifestParsed(e, t) { + this.audioTracks = t.audioTracks, this.subtitleTracks = t.subtitleTracks; + } + onError(e, t) { + const { + errorAction: s + } = t; + if ((s == null ? void 0 : s.action) === ge.SendAlternateToPenaltyBox && s.flags === Ce.MoveAllAlternatesMatchingHost) { + const i = this.levels; + let r = this._pathwayPriority, n = this.pathwayId; + if (t.context) { + const { + groupId: o, + pathwayId: c, + type: l + } = t.context; + o && i ? n = this.getPathwayForGroupId(o, l, n) : c && (n = c); + } + n in this.penalizedPathways || (this.penalizedPathways[n] = performance.now()), !r && i && (r = this.pathways()), r && r.length > 1 && (this.updatePathwayPriority(r), s.resolved = this.pathwayId !== n), s.resolved || this.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${n} levels: ${i && i.length} priorities: ${ae(r)} penalized: ${ae(this.penalizedPathways)}`); + } + } + filterParsedLevels(e) { + this.levels = e; + let t = this.getLevelsForPathway(this.pathwayId); + if (t.length === 0) { + const s = e[0].pathwayId; + this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`), t = this.getLevelsForPathway(s), this.pathwayId = s; + } + return t.length !== e.length && this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`), t; + } + getLevelsForPathway(e) { + return this.levels === null ? [] : this.levels.filter((t) => e === t.pathwayId); + } + updatePathwayPriority(e) { + this._pathwayPriority = e; + let t; + const s = this.penalizedPathways, i = performance.now(); + Object.keys(s).forEach((r) => { + i - s[r] > Rh && delete s[r]; + }); + for (let r = 0; r < e.length; r++) { + const n = e[r]; + if (n in s) + continue; + if (n === this.pathwayId) + return; + const o = this.hls.nextLoadLevel, c = this.hls.levels[o]; + if (t = this.getLevelsForPathway(n), t.length > 0) { + this.log(`Setting Pathway to "${n}"`), this.pathwayId = n, jn(t), this.hls.trigger(m.LEVELS_UPDATED, { + levels: t + }); + const l = this.hls.levels[o]; + c && l && this.levels && (l.attrs["STABLE-VARIANT-ID"] !== c.attrs["STABLE-VARIANT-ID"] && l.bitrate !== c.bitrate && this.log(`Unstable Pathways change from bitrate ${c.bitrate} to ${l.bitrate}`), this.hls.nextLoadLevel = o); + break; + } + } + } + getPathwayForGroupId(e, t, s) { + const i = this.getLevelsForPathway(s).concat(this.levels || []); + for (let r = 0; r < i.length; r++) + if (t === z.AUDIO_TRACK && i[r].hasAudioGroup(e) || t === z.SUBTITLE_TRACK && i[r].hasSubtitleGroup(e)) + return i[r].pathwayId; + return s; + } + clonePathways(e) { + const t = this.levels; + if (!t) + return; + const s = {}, i = {}; + e.forEach((r) => { + const { + ID: n, + "BASE-ID": o, + "URI-REPLACEMENT": c + } = r; + if (t.some((h) => h.pathwayId === n)) + return; + const l = this.getLevelsForPathway(o).map((h) => { + const u = new oe(h.attrs); + u["PATHWAY-ID"] = n; + const d = u.AUDIO && `${u.AUDIO}_clone_${n}`, g = u.SUBTITLES && `${u.SUBTITLES}_clone_${n}`; + d && (s[u.AUDIO] = d, u.AUDIO = d), g && (i[u.SUBTITLES] = g, u.SUBTITLES = g); + const f = La(h.uri, u["STABLE-VARIANT-ID"], "PER-VARIANT-URIS", c), E = new Ct({ + attrs: u, + audioCodec: h.audioCodec, + bitrate: h.bitrate, + height: h.height, + name: h.name, + url: f, + videoCodec: h.videoCodec, + width: h.width + }); + if (h.audioGroups) + for (let p = 1; p < h.audioGroups.length; p++) + E.addGroupId("audio", `${h.audioGroups[p]}_clone_${n}`); + if (h.subtitleGroups) + for (let p = 1; p < h.subtitleGroups.length; p++) + E.addGroupId("text", `${h.subtitleGroups[p]}_clone_${n}`); + return E; + }); + t.push(...l), Yr(this.audioTracks, s, c, n), Yr(this.subtitleTracks, i, c, n); + }); + } + loadSteeringManifest(e) { + const t = this.hls.config, s = t.loader; + this.loader && this.loader.destroy(), this.loader = new s(t); + let i; + try { + i = new self.URL(e); + } catch { + this.enabled = !1, this.log(`Failed to parse Steering Manifest URI: ${e}`); + return; + } + if (i.protocol !== "data:") { + const h = (this.hls.bandwidthEstimate || t.abrEwmaDefaultEstimate) | 0; + i.searchParams.set("_HLS_pathway", this.pathwayId), i.searchParams.set("_HLS_throughput", "" + h); + } + const r = { + responseType: "json", + url: i.href + }, n = t.steeringManifestLoadPolicy.default, o = n.errorRetry || n.timeoutRetry || {}, c = { + loadPolicy: n, + timeout: n.maxLoadTimeMs, + maxRetry: o.maxNumRetry || 0, + retryDelay: o.retryDelayMs || 0, + maxRetryDelay: o.maxRetryDelayMs || 0 + }, l = { + onSuccess: (h, u, d, g) => { + this.log(`Loaded steering manifest: "${i}"`); + const f = h.data; + if ((f == null ? void 0 : f.VERSION) !== 1) { + this.log(`Steering VERSION ${f.VERSION} not supported!`); + return; + } + this.updated = performance.now(), this.timeToLoad = f.TTL; + const { + "RELOAD-URI": E, + "PATHWAY-CLONES": p, + "PATHWAY-PRIORITY": y + } = f; + if (E) + try { + this.uri = new self.URL(E, i).href; + } catch { + this.enabled = !1, this.log(`Failed to parse Steering Manifest RELOAD-URI: ${E}`); + return; + } + this.scheduleRefresh(this.uri || d.url), p && this.clonePathways(p); + const S = { + steeringManifest: f, + url: i.toString() + }; + this.hls.trigger(m.STEERING_MANIFEST_LOADED, S), y && this.updatePathwayPriority(y); + }, + onError: (h, u, d, g) => { + if (this.log(`Error loading steering manifest: ${h.code} ${h.text} (${u.url})`), this.stopLoad(), h.code === 410) { + this.enabled = !1, this.log(`Steering manifest ${u.url} no longer available`); + return; + } + let f = this.timeToLoad * 1e3; + if (h.code === 429) { + const E = this.loader; + if (typeof (E == null ? void 0 : E.getResponseHeader) == "function") { + const p = E.getResponseHeader("Retry-After"); + p && (f = parseFloat(p) * 1e3); + } + this.log(`Steering manifest ${u.url} rate limited`); + return; + } + this.scheduleRefresh(this.uri || u.url, f); + }, + onTimeout: (h, u, d) => { + this.log(`Timeout loading steering manifest (${u.url})`), this.scheduleRefresh(this.uri || u.url); + } + }; + this.log(`Requesting steering manifest: ${i}`), this.loader.load(r, c, l); + } + scheduleRefresh(e, t = this.timeToLoad * 1e3) { + this.clearTimeout(), this.reloadTimer = self.setTimeout(() => { + var s; + const i = (s = this.hls) == null ? void 0 : s.media; + if (i && !i.ended) { + this.loadSteeringManifest(e); + return; + } + this.scheduleRefresh(e, this.timeToLoad * 1e3); + }, t); + } +} +function Yr(a, e, t, s) { + a && Object.keys(e).forEach((i) => { + const r = a.filter((n) => n.groupId === i).map((n) => { + const o = ie({}, n); + return o.details = void 0, o.attrs = new oe(o.attrs), o.url = o.attrs.URI = La(n.url, n.attrs["STABLE-RENDITION-ID"], "PER-RENDITION-URIS", t), o.groupId = o.attrs["GROUP-ID"] = e[i], o.attrs["PATHWAY-ID"] = s, o; + }); + a.push(...r); + }); +} +function La(a, e, t, s) { + const { + HOST: i, + PARAMS: r, + [t]: n + } = s; + let o; + e && (o = n == null ? void 0 : n[e], o && (a = o)); + const c = new self.URL(a); + return i && !o && (c.host = i), r && Object.keys(r).sort().forEach((l) => { + l && c.searchParams.set(l, r[l]); + }), c.href; +} +function ve(a, e, t) { + Re(a, e, t), a.addEventListener(e, t); +} +function Re(a, e, t) { + a.removeEventListener(e, t); +} +class gt extends Ve { + constructor(e) { + super("eme", e.logger), this.hls = void 0, this.config = void 0, this.media = null, this.keyFormatPromise = null, this.keySystemAccessPromises = {}, this._requestLicenseFailureCount = 0, this.mediaKeySessions = [], this.keyIdToKeySessionPromise = {}, this.mediaKeys = null, this.setMediaKeysQueue = gt.CDMCleanupPromise ? [gt.CDMCleanupPromise] : [], this.onMediaEncrypted = (t) => { + const { + initDataType: s, + initData: i + } = t, r = `"${t.type}" event: init data type: "${s}"`; + if (this.debug(r), i !== null) { + if (!this.keyFormatPromise) { + let n = Object.keys(this.keySystemAccessPromises); + n.length || (n = At(this.config)); + const o = n.map(Ht).filter((c) => !!c); + this.keyFormatPromise = this.getKeyFormatPromise(o); + } + this.keyFormatPromise.then((n) => { + const o = is(n); + let c, l; + if (s === "sinf") { + if (o !== se.FAIRPLAY) { + this.warn(`Ignoring unexpected "${t.type}" event with init data type: "${s}" for selected key-system ${o}`); + return; + } + const f = le(new Uint8Array(i)); + try { + const E = xi(JSON.parse(f).sinf), p = In(E); + if (!p) + throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc"); + c = new Uint8Array(p.subarray(8, 24)), l = se.FAIRPLAY; + } catch (E) { + this.warn(`${r} Failed to parse sinf: ${E}`); + return; + } + } else { + if (o !== se.WIDEVINE && o !== se.PLAYREADY) { + this.warn(`Ignoring unexpected "${t.type}" event with init data type: "${s}" for selected key-system ${o}`); + return; + } + const f = Do(i), E = f.filter((y) => !!y.systemId && ks(y.systemId) === o); + E.length > 1 && this.warn(`${r} Using first of ${E.length} pssh found for selected key-system ${o}`); + const p = E[0]; + if (!p) { + f.length === 0 || f.some((y) => !y.systemId) ? this.warn(`${r} contains incomplete or invalid pssh data`) : this.log(`ignoring ${r} for ${f.map((y) => ks(y.systemId)).join(",")} pssh data in favor of playlist keys`); + return; + } + if (l = ks(p.systemId), p.version === 0 && p.data) + if (l === se.WIDEVINE) { + const y = p.data.length - 22; + c = new Uint8Array(p.data.subarray(y, y + 16)); + } else l === se.PLAYREADY && (c = Gn(p.data)); + } + if (!l || !c) + return; + const h = we.hexDump(c), { + keyIdToKeySessionPromise: u, + mediaKeySessions: d + } = this; + let g = u[h]; + for (let f = 0; f < d.length; f++) { + const E = d[f], p = E.decryptdata; + if (!p.keyId) + continue; + const y = we.hexDump(p.keyId); + if (h === y || p.uri.replace(/-/g, "").indexOf(h) !== -1) { + if (g = u[y], p.pssh) + break; + delete u[y], p.pssh = new Uint8Array(i), p.keyId = c, g = u[h] = g.then(() => this.generateRequestWithPreferredKeySession(E, s, i, "encrypted-event-key-match")), g.catch((S) => this.handleError(S)); + break; + } + } + if (!g) { + if (l !== o) { + this.log(`Ignoring "${t.type}" event with ${l} init data for selected key-system ${o}`); + return; + } + g = u[h] = this.getKeySystemSelectionPromise([l]).then(({ + keySystem: f, + mediaKeys: E + }) => { + var p; + this.throwIfDestroyed(); + const y = new kt("ISO-23001-7", h, (p = Ht(f)) != null ? p : ""); + return y.pssh = new Uint8Array(i), y.keyId = c, this.attemptSetMediaKeys(f, E).then(() => { + this.throwIfDestroyed(); + const S = this.createMediaKeySessionContext({ + decryptdata: y, + keySystem: f, + mediaKeys: E + }); + return this.generateRequestWithPreferredKeySession(S, s, i, "encrypted-event-no-match"); + }); + }), g.catch((f) => this.handleError(f)); + } + }); + } + }, this.onWaitingForKey = (t) => { + this.log(`"${t.type}" event`); + }, this.hls = e, this.config = e.config, this.registerListeners(); + } + destroy() { + this.onDestroying(), this.onMediaDetached(); + const e = this.config; + e.requestMediaKeySystemAccessFunc = null, e.licenseXhrSetup = e.licenseResponseCallback = void 0, e.drmSystems = e.drmSystemOptions = {}, this.hls = this.config = this.keyIdToKeySessionPromise = null, this.onMediaEncrypted = this.onWaitingForKey = null; + } + registerListeners() { + this.hls.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.on(m.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.on(m.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.on(m.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.on(m.DESTROYING, this.onDestroying, this); + } + unregisterListeners() { + this.hls.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.off(m.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.off(m.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.off(m.MANIFEST_LOADED, this.onManifestLoaded, this), this.hls.off(m.DESTROYING, this.onDestroying, this); + } + getLicenseServerUrl(e) { + const { + drmSystems: t, + widevineLicenseUrl: s + } = this.config, i = t[e]; + if (i) + return i.licenseUrl; + if (e === se.WIDEVINE && s) + return s; + } + getLicenseServerUrlOrThrow(e) { + const t = this.getLicenseServerUrl(e); + if (t === void 0) + throw new Error(`no license server URL configured for key-system "${e}"`); + return t; + } + getServerCertificateUrl(e) { + const { + drmSystems: t + } = this.config, s = t[e]; + if (s) + return s.serverCertificateUrl; + this.log(`No Server Certificate in config.drmSystems["${e}"]`); + } + attemptKeySystemAccess(e) { + const t = this.hls.levels, s = (n, o, c) => !!n && c.indexOf(n) === o, i = t.map((n) => n.audioCodec).filter(s), r = t.map((n) => n.videoCodec).filter(s); + return i.length + r.length === 0 && r.push("avc1.42e01e"), new Promise((n, o) => { + const c = (l) => { + const h = l.shift(); + this.getMediaKeysPromise(h, i, r).then((u) => n({ + keySystem: h, + mediaKeys: u + })).catch((u) => { + l.length ? c(l) : u instanceof Le ? o(u) : o(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_NO_ACCESS, + error: u, + fatal: !0 + }, u.message)); + }); + }; + c(e); + }); + } + requestMediaKeySystemAccess(e, t) { + const { + requestMediaKeySystemAccessFunc: s + } = this.config; + if (typeof s != "function") { + let i = `Configured requestMediaKeySystemAccess is not a function ${s}`; + return $n === null && self.location.protocol === "http:" && (i = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`), Promise.reject(new Error(i)); + } + return s(e, t); + } + getMediaKeysPromise(e, t, s) { + const i = Tl(e, t, s, this.config.drmSystemOptions), r = this.keySystemAccessPromises[e]; + let n = r == null ? void 0 : r.keySystemAccess; + if (!n) { + this.log(`Requesting encrypted media "${e}" key-system access with config: ${ae(i)}`), n = this.requestMediaKeySystemAccess(e, i); + const o = this.keySystemAccessPromises[e] = { + keySystemAccess: n + }; + return n.catch((c) => { + this.log(`Failed to obtain access to key-system "${e}": ${c}`); + }), n.then((c) => { + this.log(`Access for key-system "${c.keySystem}" obtained`); + const l = this.fetchServerCertificate(e); + return this.log(`Create media-keys for "${e}"`), o.mediaKeys = c.createMediaKeys().then((h) => (this.log(`Media-keys created for "${e}"`), o.hasMediaKeys = !0, l.then((u) => u ? this.setMediaKeysServerCertificate(h, e, u) : h))), o.mediaKeys.catch((h) => { + this.error(`Failed to create media-keys for "${e}"}: ${h}`); + }), o.mediaKeys; + }); + } + return n.then(() => r.mediaKeys); + } + createMediaKeySessionContext({ + decryptdata: e, + keySystem: t, + mediaKeys: s + }) { + this.log(`Creating key-system session "${t}" keyId: ${we.hexDump(e.keyId || [])}`); + const i = s.createSession(), r = { + decryptdata: e, + keySystem: t, + mediaKeys: s, + mediaKeysSession: i, + keyStatus: "status-pending" + }; + return this.mediaKeySessions.push(r), r; + } + renewKeySession(e) { + const t = e.decryptdata; + if (t.pssh) { + const s = this.createMediaKeySessionContext(e), i = this.getKeyIdString(t), r = "cenc"; + this.keyIdToKeySessionPromise[i] = this.generateRequestWithPreferredKeySession(s, r, t.pssh.buffer, "expired"); + } else + this.warn("Could not renew expired session. Missing pssh initData."); + this.removeSession(e); + } + getKeyIdString(e) { + if (!e) + throw new Error("Could not read keyId of undefined decryptdata"); + if (e.keyId === null) + throw new Error("keyId is null"); + return we.hexDump(e.keyId); + } + updateKeySession(e, t) { + var s; + const i = e.mediaKeysSession; + return this.log(`Updating key-session "${i.sessionId}" for keyID ${we.hexDump(((s = e.decryptdata) == null ? void 0 : s.keyId) || [])} + } (data length: ${t && t.byteLength})`), i.update(t); + } + getSelectedKeySystemFormats() { + return Object.keys(this.keySystemAccessPromises).map((e) => ({ + keySystem: e, + hasMediaKeys: this.keySystemAccessPromises[e].hasMediaKeys + })).filter(({ + hasMediaKeys: e + }) => !!e).map(({ + keySystem: e + }) => Ht(e)).filter((e) => !!e); + } + getKeySystemAccess(e) { + return this.getKeySystemSelectionPromise(e).then(({ + keySystem: t, + mediaKeys: s + }) => this.attemptSetMediaKeys(t, s)); + } + selectKeySystem(e) { + return new Promise((t, s) => this.getKeySystemSelectionPromise(e).then(({ + keySystem: i + }) => { + const r = Ht(i); + r ? t(r) : s(new Error(`Unable to find format for key-system "${i}"`)); + }).catch(s)); + } + selectKeySystemFormat(e) { + const t = Object.keys(e.levelkeys || {}); + return this.keyFormatPromise || (this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`), this.keyFormatPromise = this.getKeyFormatPromise(t)), this.keyFormatPromise; + } + getKeyFormatPromise(e) { + const t = At(this.config), s = e.map(is).filter((i) => !!i && t.indexOf(i) !== -1); + return this.selectKeySystem(s); + } + loadKey(e) { + const t = e.keyInfo.decryptdata, s = this.getKeyIdString(t), i = `(keyId: ${s} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`; + this.log(`Starting session for key ${i}`); + let r = this.keyIdToKeySessionPromise[s]; + return r || (r = this.getKeySystemForKeyPromise(t).then(({ + keySystem: o, + mediaKeys: c + }) => (this.throwIfDestroyed(), this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${i}`), this.attemptSetMediaKeys(o, c).then(() => (this.throwIfDestroyed(), this.createMediaKeySessionContext({ + keySystem: o, + mediaKeys: c, + decryptdata: t + }))))), (this.keyIdToKeySessionPromise[s] = r.then((o) => { + const c = "cenc", l = t.pssh ? t.pssh.buffer : null; + return this.generateRequestWithPreferredKeySession(o, c, l, "playlist-key"); + })).catch((o) => this.handleError(o))), r; + } + throwIfDestroyed(e = "Invalid state") { + if (!this.hls) + throw new Error("invalid state"); + } + handleError(e) { + this.hls && (this.error(e.message), e instanceof Le ? this.hls.trigger(m.ERROR, e.data) : this.hls.trigger(m.ERROR, { + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_NO_KEYS, + error: e, + fatal: !0 + })); + } + getKeySystemForKeyPromise(e) { + const t = this.getKeyIdString(e), s = this.keyIdToKeySessionPromise[t]; + if (!s) { + const i = is(e.keyFormat), r = i ? [i] : At(this.config); + return this.attemptKeySystemAccess(r); + } + return s; + } + getKeySystemSelectionPromise(e) { + if (e.length || (e = At(this.config)), e.length === 0) + throw new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_NO_CONFIGURED_LICENSE, + fatal: !0 + }, `Missing key-system license configuration options ${ae({ + drmSystems: this.config.drmSystems + })}`); + return this.attemptKeySystemAccess(e); + } + attemptSetMediaKeys(e, t) { + if (this.mediaKeys === t) + return Promise.resolve(); + const s = this.setMediaKeysQueue.slice(); + this.log(`Setting media-keys for "${e}"`); + const i = Promise.all(s).then(() => { + if (!this.media) + throw this.mediaKeys = null, new Error("Attempted to set mediaKeys without media element attached"); + return this.media.setMediaKeys(t); + }); + return this.mediaKeys = t, this.setMediaKeysQueue.push(i), i.then(() => { + this.log(`Media-keys set for "${e}"`), s.push(i), this.setMediaKeysQueue = this.setMediaKeysQueue.filter((r) => s.indexOf(r) === -1); + }); + } + generateRequestWithPreferredKeySession(e, t, s, i) { + var r, n; + const o = (r = this.config.drmSystems) == null || (n = r[e.keySystem]) == null ? void 0 : n.generateRequest; + if (o) + try { + const f = o.call(this.hls, t, s, e); + if (!f) + throw new Error("Invalid response from configured generateRequest filter"); + t = f.initDataType, s = f.initData ? f.initData : null, e.decryptdata.pssh = s ? new Uint8Array(s) : null; + } catch (f) { + var c; + if (this.warn(f.message), (c = this.hls) != null && c.config.debug) + throw f; + } + if (s === null) + return this.log(`Skipping key-session request for "${i}" (no initData)`), Promise.resolve(e); + const l = this.getKeyIdString(e.decryptdata); + this.log(`Generating key-session request for "${i}": ${l} (init data type: ${t} length: ${s ? s.byteLength : null})`); + const h = new Li(), u = e._onmessage = (f) => { + const E = e.mediaKeysSession; + if (!E) { + h.emit("error", new Error("invalid state")); + return; + } + const { + messageType: p, + message: y + } = f; + this.log(`"${p}" message event for session "${E.sessionId}" message size: ${y.byteLength}`), p === "license-request" || p === "license-renewal" ? this.renewLicense(e, y).catch((S) => { + h.eventNames().length ? h.emit("error", S) : this.handleError(S); + }) : p === "license-release" ? e.keySystem === se.FAIRPLAY && (this.updateKeySession(e, ii("acknowledged")), this.removeSession(e)) : this.warn(`unhandled media key message type "${p}"`); + }, d = e._onkeystatuseschange = (f) => { + if (!e.mediaKeysSession) { + h.emit("error", new Error("invalid state")); + return; + } + this.onKeyStatusChange(e); + const p = e.keyStatus; + h.emit("keyStatus", p), p === "expired" && (this.warn(`${e.keySystem} expired for key ${l}`), this.renewKeySession(e)); + }; + ve(e.mediaKeysSession, "message", u), ve(e.mediaKeysSession, "keystatuseschange", d); + const g = new Promise((f, E) => { + h.on("error", E), h.on("keyStatus", (p) => { + p.startsWith("usable") ? f() : p === "output-restricted" ? E(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED, + fatal: !1 + }, "HDCP level output restricted")) : p === "internal-error" ? E(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_STATUS_INTERNAL_ERROR, + fatal: !0 + }, `key status changed to "${p}"`)) : p === "expired" ? E(new Error("key expired while generating request")) : this.warn(`unhandled key status change "${p}"`); + }); + }); + return e.mediaKeysSession.generateRequest(t, s).then(() => { + var f; + this.log(`Request generated for key-session "${(f = e.mediaKeysSession) == null ? void 0 : f.sessionId}" keyId: ${l}`); + }).catch((f) => { + throw new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_NO_SESSION, + error: f, + fatal: !1 + }, `Error generating key-session request: ${f}`); + }).then(() => g).catch((f) => { + throw h.removeAllListeners(), this.removeSession(e), f; + }).then(() => (h.removeAllListeners(), e)); + } + onKeyStatusChange(e) { + e.mediaKeysSession.keyStatuses.forEach((t, s) => { + if (typeof s == "string" && typeof t == "object") { + const i = s; + s = t, t = i; + } + this.log(`key status change "${t}" for keyStatuses keyId: ${we.hexDump("buffer" in s ? new Uint8Array(s.buffer, s.byteOffset, s.byteLength) : new Uint8Array(s))} session keyId: ${we.hexDump(new Uint8Array(e.decryptdata.keyId || []))} uri: ${e.decryptdata.uri}`), e.keyStatus = t; + }); + } + fetchServerCertificate(e) { + const t = this.config, s = t.loader, i = new s(t), r = this.getServerCertificateUrl(e); + return r ? (this.log(`Fetching server certificate for "${e}"`), new Promise((n, o) => { + const c = { + responseType: "arraybuffer", + url: r + }, l = t.certLoadPolicy.default, h = { + loadPolicy: l, + timeout: l.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, u = { + onSuccess: (d, g, f, E) => { + n(d.data); + }, + onError: (d, g, f, E) => { + o(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: !0, + networkDetails: f, + response: te({ + url: c.url, + data: void 0 + }, d) + }, `"${e}" certificate request failed (${r}). Status: ${d.code} (${d.text})`)); + }, + onTimeout: (d, g, f) => { + o(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED, + fatal: !0, + networkDetails: f, + response: { + url: c.url, + data: void 0 + } + }, `"${e}" certificate request timed out (${r})`)); + }, + onAbort: (d, g, f) => { + o(new Error("aborted")); + } + }; + i.load(c, h, u); + })) : Promise.resolve(); + } + setMediaKeysServerCertificate(e, t, s) { + return new Promise((i, r) => { + e.setServerCertificate(s).then((n) => { + this.log(`setServerCertificate ${n ? "success" : "not supported by CDM"} (${s == null ? void 0 : s.byteLength}) on "${t}"`), i(e); + }).catch((n) => { + r(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED, + error: n, + fatal: !0 + }, n.message)); + }); + }); + } + renewLicense(e, t) { + return this.requestLicense(e, new Uint8Array(t)).then((s) => this.updateKeySession(e, new Uint8Array(s)).catch((i) => { + throw new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_SESSION_UPDATE_FAILED, + error: i, + fatal: !0 + }, i.message); + })); + } + unpackPlayReadyKeyMessage(e, t) { + const s = String.fromCharCode.apply(null, new Uint16Array(t.buffer)); + if (!s.includes("PlayReadyKeyMessage")) + return e.setRequestHeader("Content-Type", "text/xml; charset=utf-8"), t; + const i = new DOMParser().parseFromString(s, "application/xml"), r = i.querySelectorAll("HttpHeader"); + if (r.length > 0) { + let h; + for (let u = 0, d = r.length; u < d; u++) { + var n, o; + h = r[u]; + const g = (n = h.querySelector("name")) == null ? void 0 : n.textContent, f = (o = h.querySelector("value")) == null ? void 0 : o.textContent; + g && f && e.setRequestHeader(g, f); + } + } + const c = i.querySelector("Challenge"), l = c == null ? void 0 : c.textContent; + if (!l) + throw new Error("Cannot find <Challenge> in key message"); + return ii(atob(l)); + } + setupLicenseXHR(e, t, s, i) { + const r = this.config.licenseXhrSetup; + return r ? Promise.resolve().then(() => { + if (!s.decryptdata) + throw new Error("Key removed"); + return r.call(this.hls, e, t, s, i); + }).catch((n) => { + if (!s.decryptdata) + throw n; + return e.open("POST", t, !0), r.call(this.hls, e, t, s, i); + }).then((n) => (e.readyState || e.open("POST", t, !0), { + xhr: e, + licenseChallenge: n || i + })) : (e.open("POST", t, !0), Promise.resolve({ + xhr: e, + licenseChallenge: i + })); + } + requestLicense(e, t) { + const s = this.config.keyLoadPolicy.default; + return new Promise((i, r) => { + const n = this.getLicenseServerUrlOrThrow(e.keySystem); + this.log(`Sending license request to URL: ${n}`); + const o = new XMLHttpRequest(); + o.responseType = "arraybuffer", o.onreadystatechange = () => { + if (!this.hls || !e.mediaKeysSession) + return r(new Error("invalid state")); + if (o.readyState === 4) + if (o.status === 200) { + this._requestLicenseFailureCount = 0; + let c = o.response; + this.log(`License received ${c instanceof ArrayBuffer ? c.byteLength : c}`); + const l = this.config.licenseResponseCallback; + if (l) + try { + c = l.call(this.hls, o, n, e); + } catch (h) { + this.error(h); + } + i(c); + } else { + const c = s.errorRetry, l = c ? c.maxNumRetry : 0; + if (this._requestLicenseFailureCount++, this._requestLicenseFailureCount > l || o.status >= 400 && o.status < 500) + r(new Le({ + type: K.KEY_SYSTEM_ERROR, + details: b.KEY_SYSTEM_LICENSE_REQUEST_FAILED, + fatal: !0, + networkDetails: o, + response: { + url: n, + data: void 0, + code: o.status, + text: o.statusText + } + }, `License Request XHR failed (${n}). Status: ${o.status} (${o.statusText})`)); + else { + const h = l - this._requestLicenseFailureCount + 1; + this.warn(`Retrying license request, ${h} attempts left`), this.requestLicense(e, t).then(i, r); + } + } + }, e.licenseXhr && e.licenseXhr.readyState !== XMLHttpRequest.DONE && e.licenseXhr.abort(), e.licenseXhr = o, this.setupLicenseXHR(o, n, e, t).then(({ + xhr: c, + licenseChallenge: l + }) => { + e.keySystem == se.PLAYREADY && (l = this.unpackPlayReadyKeyMessage(c, l)), c.send(l); + }); + }); + } + onDestroying() { + this.unregisterListeners(), this._clear(); + } + onMediaAttached(e, t) { + if (!this.config.emeEnabled) + return; + const s = t.media; + this.media = s, ve(s, "encrypted", this.onMediaEncrypted), ve(s, "waitingforkey", this.onWaitingForKey); + } + onMediaDetached() { + const e = this.media; + e && (Re(e, "encrypted", this.onMediaEncrypted), Re(e, "waitingforkey", this.onWaitingForKey), this.media = null, this.mediaKeys = null); + } + _clear() { + var e; + if (this._requestLicenseFailureCount = 0, this.keyIdToKeySessionPromise = {}, !this.mediaKeys && !this.mediaKeySessions.length) + return; + const t = this.media, s = this.mediaKeySessions.slice(); + this.mediaKeySessions = [], this.mediaKeys = null, kt.clearKeyUriToKeyIdMap(); + const i = s.length; + gt.CDMCleanupPromise = Promise.all(s.map((r) => this.removeSession(r)).concat(t == null || (e = t.setMediaKeys(null)) == null ? void 0 : e.catch((r) => { + var n; + this.log(`Could not clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR, + fatal: !1, + error: new Error(`Could not clear media keys: ${r}`) + }); + }))).catch((r) => { + var n; + this.log(`Could not close sessions and clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not close sessions and clear media keys: ${r}`) + }); + }).then(() => { + i && this.log("finished closing key sessions and clearing media keys"); + }); + } + onManifestLoading() { + this.keyFormatPromise = null; + } + onManifestLoaded(e, { + sessionKeys: t + }) { + if (!(!t || !this.config.emeEnabled) && !this.keyFormatPromise) { + const s = t.reduce((i, r) => (i.indexOf(r.keyFormat) === -1 && i.push(r.keyFormat), i), []); + this.log(`Selecting key-system from session-keys ${s.join(", ")}`), this.keyFormatPromise = this.getKeyFormatPromise(s); + } + } + removeSession(e) { + const { + mediaKeysSession: t, + licenseXhr: s + } = e; + if (t) { + this.log(`Remove licenses and keys and close session ${t.sessionId}`), e._onmessage && (t.removeEventListener("message", e._onmessage), e._onmessage = void 0), e._onkeystatuseschange && (t.removeEventListener("keystatuseschange", e._onkeystatuseschange), e._onkeystatuseschange = void 0), s && s.readyState !== XMLHttpRequest.DONE && s.abort(), e.mediaKeysSession = e.decryptdata = e.licenseXhr = void 0; + const i = this.mediaKeySessions.indexOf(e); + i > -1 && this.mediaKeySessions.splice(i, 1); + const { + drmSystemOptions: r + } = this.config; + return (vl(r) ? new Promise((o, c) => { + self.setTimeout(() => c(new Error("MediaKeySession.remove() timeout")), 8e3), t.remove().then(o); + }) : Promise.resolve()).catch((o) => { + var c; + this.log(`Could not remove session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not remove session: ${o}`) + }); + }).then(() => t.close()).catch((o) => { + var c; + this.log(`Could not close session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR, + fatal: !1, + error: new Error(`Could not close session: ${o}`) + }); + }); + } + } +} +gt.CDMCleanupPromise = void 0; +class Le extends Error { + constructor(e, t) { + super(t), this.data = void 0, e.error || (e.error = new Error(t)), this.data = e, e.err = e.error; + } +} +class _h { + constructor(e) { + this.hls = void 0, this.isVideoPlaybackQualityAvailable = !1, this.timer = void 0, this.media = null, this.lastTime = void 0, this.lastDroppedFrames = 0, this.lastDecodedFrames = 0, this.streamController = void 0, this.hls = e, this.registerListeners(); + } + setStreamController(e) { + this.streamController = e; + } + registerListeners() { + this.hls.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.on(m.MEDIA_DETACHING, this.onMediaDetaching, this); + } + unregisterListeners() { + this.hls.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), this.hls.off(m.MEDIA_DETACHING, this.onMediaDetaching, this); + } + destroy() { + this.timer && clearInterval(this.timer), this.unregisterListeners(), this.isVideoPlaybackQualityAvailable = !1, this.media = null; + } + onMediaAttaching(e, t) { + const s = this.hls.config; + if (s.capLevelOnFPSDrop) { + const i = t.media instanceof self.HTMLVideoElement ? t.media : null; + this.media = i, i && typeof i.getVideoPlaybackQuality == "function" && (this.isVideoPlaybackQualityAvailable = !0), self.clearInterval(this.timer), this.timer = self.setInterval(this.checkFPSInterval.bind(this), s.fpsDroppedMonitoringPeriod); + } + } + onMediaDetaching() { + this.media = null; + } + checkFPS(e, t, s) { + const i = performance.now(); + if (t) { + if (this.lastTime) { + const r = i - this.lastTime, n = s - this.lastDroppedFrames, o = t - this.lastDecodedFrames, c = 1e3 * n / r, l = this.hls; + if (l.trigger(m.FPS_DROP, { + currentDropped: n, + currentDecoded: o, + totalDroppedFrames: s + }), c > 0 && n > l.config.fpsDroppedMonitoringThreshold * o) { + let h = l.currentLevel; + l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: " + h), h > 0 && (l.autoLevelCapping === -1 || l.autoLevelCapping >= h) && (h = h - 1, l.trigger(m.FPS_DROP_LEVEL_CAPPING, { + level: h, + droppedLevel: l.currentLevel + }), l.autoLevelCapping = h, this.streamController.nextLevelSwitch()); + } + } + this.lastTime = i, this.lastDroppedFrames = s, this.lastDecodedFrames = t; + } + } + checkFPSInterval() { + const e = this.media; + if (e) + if (this.isVideoPlaybackQualityAvailable) { + const t = e.getVideoPlaybackQuality(); + this.checkFPS(e, t.totalVideoFrames, t.droppedVideoFrames); + } else + this.checkFPS(e, e.webkitDecodedFrameCount, e.webkitDroppedFrameCount); + } +} +function Ia(a, e) { + let t; + try { + t = new Event("addtrack"); + } catch { + t = document.createEvent("Event"), t.initEvent("addtrack", !1, !1); + } + t.track = a, e.dispatchEvent(t); +} +function Ra(a, e) { + const t = a.mode; + if (t === "disabled" && (a.mode = "hidden"), a.cues && !a.cues.getCueById(e.id)) + try { + if (a.addCue(e), !a.cues.getCueById(e.id)) + throw new Error(`addCue is failed for: ${e}`); + } catch (s) { + J.debug(`[texttrack-utils]: ${s}`); + try { + const i = new self.TextTrackCue(e.startTime, e.endTime, e.text); + i.id = e.id, a.addCue(i); + } catch (i) { + J.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${i}`); + } + } + t === "disabled" && (a.mode = t); +} +function dt(a, e) { + const t = a.mode; + if (t === "disabled" && (a.mode = "hidden"), a.cues) + for (let s = a.cues.length; s--; ) + e && a.cues[s].removeEventListener("enter", e), a.removeCue(a.cues[s]); + t === "disabled" && (a.mode = t); +} +function ui(a, e, t, s) { + const i = a.mode; + if (i === "disabled" && (a.mode = "hidden"), a.cues && a.cues.length > 0) { + const r = Ch(a.cues, e, t); + for (let n = 0; n < r.length; n++) + (!s || s(r[n])) && a.removeCue(r[n]); + } + i === "disabled" && (a.mode = i); +} +function Dh(a, e) { + if (e <= a[0].startTime) + return 0; + const t = a.length - 1; + if (e > a[t].endTime) + return -1; + let s = 0, i = t, r; + for (; s <= i; ) + if (r = Math.floor((i + s) / 2), e < a[r].startTime) + i = r - 1; + else if (e > a[r].startTime && s < t) + s = r + 1; + else + return r; + return a[s].startTime - e < e - a[i].startTime ? s : i; +} +function Ch(a, e, t) { + const s = [], i = Dh(a, e); + if (i > -1) + for (let r = i, n = a.length; r < n; r++) { + const o = a[r]; + if (o.startTime >= e && o.endTime <= t) + s.push(o); + else if (o.startTime > t) + return s; + } + return s; +} +function os(a) { + const e = []; + for (let t = 0; t < a.length; t++) { + const s = a[t]; + (s.kind === "subtitles" || s.kind === "captions") && s.label && e.push(a[t]); + } + return e; +} +class Ph extends Pi { + constructor(e) { + super(e, "subtitle-track-controller"), this.media = null, this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0, this.queuedDefaultTrack = -1, this.useTextTrackPolling = !1, this.subtitlePollingInterval = -1, this._subtitleDisplay = !0, this.asyncPollTrackChange = () => this.pollTrackChange(0), this.onTextTracksChanged = () => { + if (this.useTextTrackPolling || self.clearInterval(this.subtitlePollingInterval), !this.media || !this.hls.config.renderTextTracksNatively) + return; + let t = null; + const s = os(this.media.textTracks); + for (let r = 0; r < s.length; r++) + if (s[r].mode === "hidden") + t = s[r]; + else if (s[r].mode === "showing") { + t = s[r]; + break; + } + const i = this.findTrackForTextTrack(t); + this.subtitleTrack !== i && this.setSubtitleTrack(i); + }, this.registerListeners(); + } + destroy() { + this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.currentTrack = null, this.onTextTracksChanged = this.asyncPollTrackChange = null, super.destroy(); + } + get subtitleDisplay() { + return this._subtitleDisplay; + } + set subtitleDisplay(e) { + this._subtitleDisplay = e, this.trackId > -1 && this.toggleTrackModes(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.LEVEL_LOADING, this.onLevelLoading, this), e.on(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.on(m.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(m.ERROR, this.onError, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.LEVEL_LOADING, this.onLevelLoading, this), e.off(m.LEVEL_SWITCHING, this.onLevelSwitching, this), e.off(m.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(m.ERROR, this.onError, this); + } + // Listen for subtitle track change, then extract the current track ID. + onMediaAttached(e, t) { + this.media = t.media, this.media && (this.queuedDefaultTrack > -1 && (this.subtitleTrack = this.queuedDefaultTrack, this.queuedDefaultTrack = -1), this.useTextTrackPolling = !(this.media.textTracks && "onchange" in this.media.textTracks), this.useTextTrackPolling ? this.pollTrackChange(500) : this.media.textTracks.addEventListener("change", this.asyncPollTrackChange)); + } + pollTrackChange(e) { + self.clearInterval(this.subtitlePollingInterval), this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, e); + } + onMediaDetaching(e, t) { + const s = this.media; + if (!s) + return; + const i = !!t.transferMedia; + if (self.clearInterval(this.subtitlePollingInterval), this.useTextTrackPolling || s.textTracks.removeEventListener("change", this.asyncPollTrackChange), this.trackId > -1 && (this.queuedDefaultTrack = this.trackId), this.subtitleTrack = -1, this.media = null, i) + return; + os(s.textTracks).forEach((n) => { + dt(n); + }); + } + onManifestLoading() { + this.tracks = [], this.groupIds = null, this.tracksInGroup = [], this.trackId = -1, this.currentTrack = null, this.selectDefaultTrack = !0; + } + // Fired whenever a new manifest is loaded. + onManifestParsed(e, t) { + this.tracks = t.subtitleTracks; + } + onSubtitleTrackLoaded(e, t) { + const { + id: s, + groupId: i, + details: r + } = t, n = this.tracksInGroup[s]; + if (!n || n.groupId !== i) { + this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${n == null ? void 0 : n.groupId}`); + return; + } + const o = n.details; + n.details = t.details, this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`), s === this.trackId && this.playlistLoaded(s, t, o); + } + onLevelLoading(e, t) { + this.switchLevel(t.level); + } + onLevelSwitching(e, t) { + this.switchLevel(t.level); + } + switchLevel(e) { + const t = this.hls.levels[e]; + if (!t) + return; + const s = t.subtitleGroups || null, i = this.groupIds; + let r = this.currentTrack; + if (!s || (i == null ? void 0 : i.length) !== (s == null ? void 0 : s.length) || s != null && s.some((n) => (i == null ? void 0 : i.indexOf(n)) === -1)) { + this.groupIds = s, this.trackId = -1, this.currentTrack = null; + const n = this.tracks.filter((h) => !s || s.indexOf(h.groupId) !== -1); + if (n.length) + this.selectDefaultTrack && !n.some((h) => h.default) && (this.selectDefaultTrack = !1), n.forEach((h, u) => { + h.id = u; + }); + else if (!r && !this.tracksInGroup.length) + return; + this.tracksInGroup = n; + const o = this.hls.config.subtitlePreference; + if (!r && o) { + this.selectDefaultTrack = !1; + const h = Fe(o, n); + if (h > -1) + r = n[h]; + else { + const u = Fe(o, this.tracks); + r = this.tracks[u]; + } + } + let c = this.findTrackId(r); + c === -1 && r && (c = this.findTrackId(null)); + const l = { + subtitleTracks: n + }; + this.log(`Updating subtitle tracks, ${n.length} track(s) found in "${s == null ? void 0 : s.join(",")}" group-id`), this.hls.trigger(m.SUBTITLE_TRACKS_UPDATED, l), c !== -1 && this.trackId === -1 && this.setSubtitleTrack(c); + } + } + findTrackId(e) { + const t = this.tracksInGroup, s = this.selectDefaultTrack; + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (!(s && !r.default || !s && !e) && (!e || st(r, e))) + return i; + } + if (e) { + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (Mt(e.attrs, r.attrs, ["LANGUAGE", "ASSOC-LANGUAGE", "CHARACTERISTICS"])) + return i; + } + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (Mt(e.attrs, r.attrs, ["LANGUAGE"])) + return i; + } + } + return -1; + } + findTrackForTextTrack(e) { + if (e) { + const t = this.tracksInGroup; + for (let s = 0; s < t.length; s++) { + const i = t[s]; + if (li(i, e)) + return s; + } + } + return -1; + } + onError(e, t) { + t.fatal || !t.context || t.context.type === z.SUBTITLE_TRACK && t.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(t.context.groupId) !== -1) && this.checkRetry(t); + } + get allSubtitleTracks() { + return this.tracks; + } + /** get alternate subtitle tracks list from playlist **/ + get subtitleTracks() { + return this.tracksInGroup; + } + /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/ + get subtitleTrack() { + return this.trackId; + } + set subtitleTrack(e) { + this.selectDefaultTrack = !1, this.setSubtitleTrack(e); + } + setSubtitleOption(e) { + if (this.hls.config.subtitlePreference = e, e) { + if (e.id === -1) + return this.setSubtitleTrack(-1), null; + const t = this.allSubtitleTracks; + if (this.selectDefaultTrack = !1, t.length) { + const s = this.currentTrack; + if (s && st(e, s)) + return s; + const i = Fe(e, this.tracksInGroup); + if (i > -1) { + const r = this.tracksInGroup[i]; + return this.setSubtitleTrack(i), r; + } else { + if (s) + return null; + { + const r = Fe(e, t); + if (r > -1) + return t[r]; + } + } + } + } + return null; + } + loadPlaylist(e) { + super.loadPlaylist(), this.shouldLoadPlaylist(this.currentTrack) && this.scheduleLoading(this.currentTrack, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const s = e.id, i = e.groupId, r = this.getUrlWithDirectives(e.url, t), n = e.details, o = n == null ? void 0 : n.age; + this.log(`Loading subtitle ${s} "${e.name}" lang:${e.lang} group:${i}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${o && n.live ? " age " + o.toFixed(1) + (n.type && " " + n.type || "") : ""} ${r}`), this.hls.trigger(m.SUBTITLE_TRACK_LOADING, { + url: r, + id: s, + groupId: i, + deliveryDirectives: t || null, + track: e + }); + } + /** + * Disables the old subtitleTrack and sets current mode on the next subtitleTrack. + * This operates on the DOM textTracks. + * A value of -1 will disable all subtitle tracks. + */ + toggleTrackModes() { + const { + media: e + } = this; + if (!e) + return; + const t = os(e.textTracks), s = this.currentTrack; + let i; + if (s && (i = t.filter((r) => li(s, r))[0], i || this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)), [].slice.call(t).forEach((r) => { + r.mode !== "disabled" && r !== i && (r.mode = "disabled"); + }), i) { + const r = this.subtitleDisplay ? "showing" : "hidden"; + i.mode !== r && (i.mode = r); + } + } + /** + * This method is responsible for validating the subtitle index and periodically reloading if live. + * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track. + */ + setSubtitleTrack(e) { + const t = this.tracksInGroup; + if (!this.media) { + this.queuedDefaultTrack = e; + return; + } + if (e < -1 || e >= t.length || !N(e)) { + this.warn(`Invalid subtitle track id: ${e}`); + return; + } + this.selectDefaultTrack = !1; + const s = this.currentTrack, i = t[e] || null; + if (this.trackId = e, this.currentTrack = i, this.toggleTrackModes(), !i) { + this.hls.trigger(m.SUBTITLE_TRACK_SWITCH, { + id: e + }); + return; + } + const r = !!i.details && !i.details.live; + if (e === this.trackId && i === s && r) + return; + this.log(`Switching to subtitle-track ${e}` + (i ? ` "${i.name}" lang:${i.lang} group:${i.groupId}` : "")); + const { + id: n, + groupId: o = "", + name: c, + type: l, + url: h + } = i; + this.hls.trigger(m.SUBTITLE_TRACK_SWITCH, { + id: n, + groupId: o, + name: c, + type: l, + url: h + }); + const u = this.switchParams(i.url, s == null ? void 0 : s.details, i.details); + this.loadPlaylist(u); + } +} +function kh() { + try { + return crypto.randomUUID(); + } catch { + try { + const e = URL.createObjectURL(new Blob()), t = e.toString(); + return URL.revokeObjectURL(e), t.slice(t.lastIndexOf("/") + 1); + } catch { + let t = (/* @__PURE__ */ new Date()).getTime(); + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (i) => { + const r = (t + Math.random() * 16) % 16 | 0; + return t = Math.floor(t / 16), (i == "x" ? r : r & 3 | 8).toString(16); + }); + } + } +} +function bt(a) { + let e = 5381, t = a.length; + for (; t; ) + e = e * 33 ^ a.charCodeAt(--t); + return (e >>> 0).toString(); +} +const mt = 0.025; +let Ts = /* @__PURE__ */ function(a) { + return a[a.Point = 0] = "Point", a[a.Range = 1] = "Range", a; +}({}); +function wh(a, e, t) { + return `${a.identifier}-${t + 1}-${bt(e)}`; +} +class Oh { + constructor(e, t) { + this.base = void 0, this._duration = null, this._timelineStart = null, this.appendInPlaceDisabled = void 0, this.appendInPlaceStarted = void 0, this.dateRange = void 0, this.hasPlayed = !1, this.cumulativeDuration = 0, this.resumeOffset = NaN, this.playoutLimit = NaN, this.restrictions = { + skip: !1, + jump: !1 + }, this.snapOptions = { + out: !1, + in: !1 + }, this.assetList = [], this.assetListLoader = void 0, this.assetListResponse = null, this.resumeAnchor = void 0, this.error = void 0, this.resetOnResume = void 0, this.base = t, this.dateRange = e, this.setDateRange(e); + } + setDateRange(e) { + this.dateRange = e, this.resumeOffset = e.attr.optionalFloat("X-RESUME-OFFSET", this.resumeOffset), this.playoutLimit = e.attr.optionalFloat("X-PLAYOUT-LIMIT", this.playoutLimit), this.restrictions = e.attr.enumeratedStringList("X-RESTRICT", this.restrictions), this.snapOptions = e.attr.enumeratedStringList("X-SNAP", this.snapOptions); + } + reset() { + var e; + this.appendInPlaceStarted = !1, (e = this.assetListLoader) == null || e.destroy(), this.assetListLoader = void 0, this.supplementsPrimary || (this.assetListResponse = null, this.assetList = [], this._duration = null); + } + isAssetPastPlayoutLimit(e) { + var t; + if (e > 0 && e >= this.assetList.length) + return !0; + const s = this.playoutLimit; + return e <= 0 || isNaN(s) ? !1 : s === 0 ? !0 : (((t = this.assetList[e]) == null ? void 0 : t.startOffset) || 0) > s; + } + findAssetIndex(e) { + return this.assetList.indexOf(e); + } + get identifier() { + return this.dateRange.id; + } + get startDate() { + return this.dateRange.startDate; + } + get startTime() { + const e = this.dateRange.startTime; + if (this.snapOptions.out) { + const t = this.dateRange.tagAnchor; + if (t) + return Gs(e, t); + } + return e; + } + get startOffset() { + return this.cue.pre ? 0 : this.startTime; + } + get startIsAligned() { + if (this.startTime === 0 || this.snapOptions.out) + return !0; + const e = this.dateRange.tagAnchor; + if (e) { + const t = this.dateRange.startTime, s = Gs(t, e); + return t - s < 0.1; + } + return !1; + } + get resumptionOffset() { + const e = this.resumeOffset, t = N(e) ? e : this.duration; + return this.cumulativeDuration + t; + } + get resumeTime() { + const e = this.startOffset + this.resumptionOffset; + if (this.snapOptions.in) { + const t = this.resumeAnchor; + if (t) + return Gs(e, t); + } + return e; + } + get appendInPlace() { + return this.appendInPlaceStarted ? !0 : this.appendInPlaceDisabled ? !1 : !!(!this.cue.once && !this.cue.pre && // preroll starts at startPosition before startPosition is known (live) + this.startIsAligned && (isNaN(this.playoutLimit) && isNaN(this.resumeOffset) || this.resumeOffset && this.duration && Math.abs(this.resumeOffset - this.duration) < mt)); + } + set appendInPlace(e) { + if (this.appendInPlaceStarted) { + this.resetOnResume = !e; + return; + } + this.appendInPlaceDisabled = !e; + } + // Extended timeline start time + get timelineStart() { + return this._timelineStart !== null ? this._timelineStart : this.startTime; + } + set timelineStart(e) { + this._timelineStart = e; + } + get duration() { + const e = this.playoutLimit; + let t; + return this._duration !== null ? t = this._duration : this.dateRange.duration ? t = this.dateRange.duration : t = this.dateRange.plannedDuration || 0, !isNaN(e) && e < t && (t = e), t; + } + set duration(e) { + this._duration = e; + } + get cue() { + return this.dateRange.cue; + } + get timelineOccupancy() { + return this.dateRange.attr["X-TIMELINE-OCCUPIES"] === "RANGE" ? Ts.Range : Ts.Point; + } + get supplementsPrimary() { + return this.dateRange.attr["X-TIMELINE-STYLE"] === "PRIMARY"; + } + get contentMayVary() { + return this.dateRange.attr["X-CONTENT-MAY-VARY"] !== "NO"; + } + get assetUrl() { + return this.dateRange.attr["X-ASSET-URI"]; + } + get assetListUrl() { + return this.dateRange.attr["X-ASSET-LIST"]; + } + get baseUrl() { + return this.base.url; + } + get assetListLoaded() { + return this.assetList.length > 0 || this.assetListResponse !== null; + } + toString() { + return Fh(this); + } +} +function Gs(a, e) { + return a - e.start < e.duration / 2 && !(Math.abs(a - (e.start + e.duration)) < mt) ? e.start : e.start + e.duration; +} +function ba(a, e, t) { + const s = new self.URL(a, t); + return s.protocol !== "data:" && s.searchParams.set("_HLS_primary_id", e), s; +} +function Ks(a, e) { + for (; (t = a.assetList[++e]) != null && t.error; ) + var t; + return e; +} +function Fh(a) { + return `["${a.identifier}" ${a.cue.pre ? "<pre>" : a.cue.post ? "<post>" : ""}${a.timelineStart.toFixed(2)}-${a.resumeTime.toFixed(2)}]`; +} +function ut(a) { + const e = a.timelineStart, t = a.duration || 0; + return `["${a.identifier}" ${e.toFixed(2)}-${(e + t).toFixed(2)}]`; +} +class Mh { + constructor(e, t, s, i) { + this.hls = void 0, this.interstitial = void 0, this.assetItem = void 0, this.tracks = null, this.hasDetails = !1, this.mediaAttached = null, this._currentTime = void 0, this._bufferedEosTime = void 0, this.checkPlayout = () => { + this.reachedPlayout(this.currentTime) && this.hls.trigger(m.PLAYOUT_LIMIT_REACHED, {}); + }; + const r = this.hls = new e(t); + this.interstitial = s, this.assetItem = i; + let n = i.uri; + try { + n = ba(n, t.primarySessionId).href; + } catch { + } + r.loadSource(n); + const o = () => { + this.hasDetails = !0; + }; + r.once(m.LEVEL_LOADED, o), r.once(m.AUDIO_TRACK_LOADED, o), r.once(m.SUBTITLE_TRACK_LOADED, o), r.on(m.MEDIA_ATTACHING, (c, { + media: l + }) => { + this.removeMediaListeners(), this.mediaAttached = l, this.interstitial.playoutLimit && (l.addEventListener("timeupdate", this.checkPlayout), this.appendInPlace && r.on(m.BUFFER_APPENDED, () => { + const u = this.bufferedEnd; + this.reachedPlayout(u) && (this._bufferedEosTime = u, r.trigger(m.BUFFERED_TO_END, void 0)); + })); + }); + } + get appendInPlace() { + var e; + return ((e = this.interstitial) == null ? void 0 : e.appendInPlace) || !1; + } + bufferedInPlaceToEnd(e) { + var t; + if (!this.appendInPlace) + return !1; + if ((t = this.hls) != null && t.bufferedToEnd) + return !0; + if (!e || !this._bufferedEosTime) + return !1; + const s = this.timelineOffset, i = q.bufferInfo(e, s, 0); + return this.getAssetTime(i.end) >= this._bufferedEosTime - 0.02; + } + reachedPlayout(e) { + const s = this.interstitial.playoutLimit; + return this.startOffset + e >= s; + } + get destroyed() { + var e; + return !((e = this.hls) != null && e.userConfig); + } + get assetId() { + return this.assetItem.identifier; + } + get interstitialId() { + return this.assetItem.parentIdentifier; + } + get media() { + var e; + return ((e = this.hls) == null ? void 0 : e.media) || null; + } + get bufferedEnd() { + const e = this.media || this.mediaAttached; + if (!e) + return this._bufferedEosTime ? this._bufferedEosTime : this.currentTime; + const t = q.bufferInfo(e, e.currentTime, 1e-3); + return this.getAssetTime(t.end); + } + get currentTime() { + const e = this.media || this.mediaAttached; + return e ? this.getAssetTime(e.currentTime) : this._currentTime || 0; + } + get duration() { + const e = this.assetItem.duration; + return e || 0; + } + get remaining() { + const e = this.duration; + return e ? Math.max(0, e - this.currentTime) : 0; + } + get startOffset() { + return this.assetItem.startOffset; + } + get timelineOffset() { + var e; + return ((e = this.hls) == null ? void 0 : e.config.timelineOffset) || 0; + } + set timelineOffset(e) { + const t = this.timelineOffset; + if (e !== t) { + const s = e - t; + if (Math.abs(s) > 1 / 9e4) { + if (this.hasDetails) + throw new Error("Cannot set timelineOffset after playlists are loaded"); + this.hls.config.timelineOffset = e; + } + } + } + getAssetTime(e) { + const t = this.timelineOffset, s = this.duration; + return Math.min(Math.max(0, e - t), s); + } + removeMediaListeners() { + const e = this.mediaAttached; + e && (this._currentTime = e.currentTime, this.bufferSnapShot(), e.removeEventListener("timeupdate", this.checkPlayout)); + } + bufferSnapShot() { + if (this.mediaAttached) { + var e; + (e = this.hls) != null && e.bufferedToEnd && (this._bufferedEosTime = this.bufferedEnd); + } + } + destroy() { + this.removeMediaListeners(), this.hls.destroy(), this.hls = this.interstitial = null, this.tracks = this.mediaAttached = this.checkPlayout = null; + } + attachMedia(e) { + this.hls.attachMedia(e); + } + detachMedia() { + this.removeMediaListeners(), this.mediaAttached = null, this.hls.detachMedia(); + } + resumeBuffering() { + this.hls.resumeBuffering(); + } + pauseBuffering() { + this.hls.pauseBuffering(); + } + transferMedia() { + return this.bufferSnapShot(), this.hls.transferMedia(); + } + resetDetails() { + const e = this.hls; + if (this.hasDetails) { + e.stopLoad(); + const t = (s) => delete s.details; + e.levels.forEach(t), e.allAudioTracks.forEach(t), e.allSubtitleTracks.forEach(t), this.hasDetails = !1; + } + } + on(e, t, s) { + this.hls.on(e, t); + } + once(e, t, s) { + this.hls.once(e, t); + } + off(e, t, s) { + this.hls.off(e, t); + } + toString() { + var e; + return `HlsAssetPlayer: ${ut(this.assetItem)} ${(e = this.hls) == null ? void 0 : e.sessionId} ${this.appendInPlace ? "append-in-place" : ""}`; + } +} +const Wr = 0.033; +class Nh extends Ve { + constructor(e, t) { + super("interstitials-sched", t), this.onScheduleUpdate = void 0, this.eventMap = {}, this.events = null, this.items = null, this.durations = { + primary: 0, + playout: 0, + integrated: 0 + }, this.onScheduleUpdate = e; + } + destroy() { + this.reset(), this.onScheduleUpdate = null; + } + reset() { + this.eventMap = {}, this.setDurations(0, 0, 0), this.events && this.events.forEach((e) => e.reset()), this.events = this.items = null; + } + resetErrorsInRange(e, t) { + return this.events ? this.events.reduce((s, i) => e <= i.startOffset && t > i.startOffset ? (delete i.error, s + 1) : s, 0) : 0; + } + get duration() { + const e = this.items; + return e ? e[e.length - 1].end : 0; + } + get length() { + return this.items ? this.items.length : 0; + } + getEvent(e) { + return e && this.eventMap[e] || null; + } + hasEvent(e) { + return e in this.eventMap; + } + findItemIndex(e, t) { + if (e.event) + return this.findEventIndex(e.event.identifier); + let s = -1; + e.nextEvent ? s = this.findEventIndex(e.nextEvent.identifier) - 1 : e.previousEvent && (s = this.findEventIndex(e.previousEvent.identifier) + 1); + const i = this.items; + if (i) + for (i[s] || (t === void 0 && (t = e.start), s = this.findItemIndexAtTime(t)); s >= 0 && (r = i[s]) != null && r.event; ) { + var r; + s--; + } + return s; + } + findItemIndexAtTime(e, t) { + const s = this.items; + if (s) + for (let i = 0; i < s.length; i++) { + let r = s[i]; + if (t && t !== "primary" && (r = r[t]), e === r.start || e > r.start && e < r.end) + return i; + } + return -1; + } + findJumpRestrictedIndex(e, t) { + const s = this.items; + if (s) + for (let i = e; i <= t && s[i]; i++) { + const r = s[i].event; + if (r != null && r.restrictions.jump && !r.appendInPlace) + return i; + } + return -1; + } + findEventIndex(e) { + const t = this.items; + if (t) + for (let i = t.length; i--; ) { + var s; + if (((s = t[i].event) == null ? void 0 : s.identifier) === e) + return i; + } + return -1; + } + findAssetIndex(e, t) { + const s = e.assetList, i = s.length; + if (i > 1) + for (let r = 0; r < i; r++) { + const n = s[r]; + if (!n.error) { + const o = n.timelineStart; + if (t === o || t > o && t < o + (n.duration || 0)) + return r; + } + } + return 0; + } + get assetIdAtEnd() { + var e, t; + const s = (e = this.items) == null || (t = e[this.length - 1]) == null ? void 0 : t.event; + if (s) { + const i = s.assetList, r = i[i.length - 1]; + if (r) + return r.identifier; + } + return null; + } + parseInterstitialDateRanges(e, t) { + const s = e.main.details, { + dateRanges: i + } = s, r = this.events, n = this.parseDateRanges(i, { + url: s.url + }, t), o = Object.keys(i), c = r ? r.filter((l) => !o.includes(l.identifier)) : []; + n.length && n.sort((l, h) => { + const u = l.cue.pre, d = l.cue.post, g = h.cue.pre, f = h.cue.post; + if (u && !g) + return -1; + if (g && !u || d && !f) + return 1; + if (f && !d) + return -1; + if (!u && !g && !d && !f) { + const E = l.startTime, p = h.startTime; + if (E !== p) + return E - p; + } + return l.dateRange.tagOrder - h.dateRange.tagOrder; + }), this.events = n, c.forEach((l) => { + this.removeEvent(l); + }), this.updateSchedule(e, c); + } + updateSchedule(e, t = []) { + const s = this.events || []; + if (s.length || t.length || this.length < 2) { + const i = this.items, r = this.parseSchedule(s, e); + (t.length || (i == null ? void 0 : i.length) !== r.length || r.some((o, c) => Math.abs(o.playout.start - i[c].playout.start) > 5e-3 || Math.abs(o.playout.end - i[c].playout.end) > 5e-3)) && (this.items = r, this.onScheduleUpdate(t, i)); + } + } + parseDateRanges(e, t, s) { + const i = [], r = Object.keys(e); + for (let n = 0; n < r.length; n++) { + const o = r[n], c = e[o]; + if (c.isInterstitial) { + let l = this.eventMap[o]; + l ? l.setDateRange(c) : (l = new Oh(c, t), this.eventMap[o] = l, s === !1 && (l.appendInPlace = s)), i.push(l); + } + } + return i; + } + parseSchedule(e, t) { + const s = [], i = t.main.details, r = i.live ? 1 / 0 : i.edge; + let n = 0; + if (e = e.filter((c) => !c.error && !(c.cue.once && c.hasPlayed)), e.length) { + this.resolveOffsets(e, t); + let c = 0, l = 0; + if (e.forEach((h, u) => { + const d = h.cue.pre, g = h.cue.post, f = e[u - 1] || null, E = h.appendInPlace, p = g ? r : h.startOffset, y = h.duration, S = h.timelineOccupancy === Ts.Range ? y : 0, T = h.resumptionOffset, v = (f == null ? void 0 : f.startTime) === p, x = p + h.cumulativeDuration; + let _ = E ? x + y : p + T; + if (d || !g && p <= 0) { + const R = l; + l += S, h.timelineStart = x; + const D = n; + n += y, s.push({ + event: h, + start: x, + end: _, + playout: { + start: D, + end: n + }, + integrated: { + start: R, + end: l + } + }); + } else if (p <= r) { + if (!v) { + const L = p - c; + if (L > Wr) { + const k = c, M = l; + l += L; + const V = n; + n += L; + const P = { + previousEvent: e[u - 1] || null, + nextEvent: h, + start: k, + end: k + L, + playout: { + start: V, + end: n + }, + integrated: { + start: M, + end: l + } + }; + s.push(P); + } else L > 0 && f && (f.cumulativeDuration += L, s[s.length - 1].end = p); + } + g && (_ = x), h.timelineStart = x; + const R = l; + l += S; + const D = n; + n += y, s.push({ + event: h, + start: x, + end: _, + playout: { + start: D, + end: n + }, + integrated: { + start: R, + end: l + } + }); + } else + return; + const A = h.resumeTime; + g || A > r ? c = r : c = A; + }), c < r) { + var o; + const h = c, u = l, d = r - c; + l += d; + const g = n; + n += d, s.push({ + previousEvent: ((o = s[s.length - 1]) == null ? void 0 : o.event) || null, + nextEvent: null, + start: c, + end: h + d, + playout: { + start: g, + end: n + }, + integrated: { + start: u, + end: l + } + }); + } + this.setDurations(r, n, l); + } else + s.push({ + previousEvent: null, + nextEvent: null, + start: 0, + end: r, + playout: { + start: 0, + end: r + }, + integrated: { + start: 0, + end: r + } + }), this.setDurations(r, r, r); + return s; + } + setDurations(e, t, s) { + this.durations = { + primary: e, + playout: t, + integrated: s + }; + } + resolveOffsets(e, t) { + const s = t.main.details, i = s.live ? 1 / 0 : s.edge; + let r = 0, n = -1; + e.forEach((o, c) => { + const l = o.cue.pre, h = o.cue.post, u = l ? 0 : h ? i : o.startTime; + this.updateAssetDurations(o), n === u ? o.cumulativeDuration = r : (r = 0, n = u), !h && o.snapOptions.in && (o.resumeAnchor = it(null, s.fragments, o.startOffset + o.resumptionOffset, 0, 0) || void 0), o.appendInPlace && !o.appendInPlaceStarted && (this.primaryCanResumeInPlaceAt(o, t) || (o.appendInPlace = !1)), !o.appendInPlace && c + 1 < e.length && e[c + 1].startTime - e[c].resumeTime < Wr && (e[c + 1].appendInPlace = !1, e[c + 1].appendInPlace && this.warn(`Could not change append strategy for abutting event ${o}`)); + const g = N(o.resumeOffset) ? o.resumeOffset : o.duration; + r += g; + }); + } + primaryCanResumeInPlaceAt(e, t) { + const s = e.resumeTime, i = e.startTime + e.resumptionOffset; + return Math.abs(s - i) > mt ? (this.log(`"${e.identifier}" resumption ${s} not aligned with estimated timeline end ${i}`), !1) : t ? !Object.keys(t).some((n) => { + const o = t[n].details, c = o.edge; + if (s >= c) + return this.log(`"${e.identifier}" resumption ${s} past ${n} playlist end ${c}`), !1; + const l = it(null, o.fragments, s); + if (!l) + return this.log(`"${e.identifier}" resumption ${s} does not align with any fragments in ${n} playlist (${o.fragStart}-${o.fragmentEnd})`), !0; + const h = n === "audio" ? 0.175 : 0; + return Math.abs(l.start - s) < mt + h || Math.abs(l.end - s) < mt + h ? !1 : (this.log(`"${e.identifier}" resumption ${s} not aligned with ${n} fragment bounds (${l.start}-${l.end} sn: ${l.sn} cc: ${l.cc})`), !0); + }) : (this.log(`"${e.identifier}" resumption ${s} can not be aligned with media (none selected)`), !1); + } + updateAssetDurations(e) { + if (!e.assetListLoaded) + return; + const t = e.timelineStart; + let s = 0, i = !1, r = !1; + e.assetList.forEach((n, o) => { + const c = t + s; + n.startOffset = s, n.timelineStart = c, i || (i = n.duration === null), r || (r = !!n.error); + const l = n.error ? 0 : n.duration || 0; + s += l; + }), i && !r ? e.duration = Math.max(s, e.duration) : e.duration = s; + } + removeEvent(e) { + e.reset(), delete this.eventMap[e.identifier]; + } +} +function We(a) { + return `[${a.event ? '"' + a.event.identifier + '"' : "primary"}: ${a.start.toFixed(2)}-${a.end.toFixed(2)}]`; +} +class Bh { + constructor(e) { + this.hls = void 0, this.hls = e; + } + destroy() { + this.hls = null; + } + loadAssetList(e, t) { + const s = e.assetListUrl; + let i; + try { + i = ba(s, this.hls.sessionId, e.baseUrl); + } catch (d) { + const g = this.assignAssetListError(e, b.ASSET_LIST_LOAD_ERROR, d, s); + this.hls.trigger(m.ERROR, g); + return; + } + t && i.protocol !== "data:" && i.searchParams.set("_HLS_start_offset", "" + t); + const r = this.hls.config, n = r.loader, o = new n(r), c = { + responseType: "json", + url: i.href + }, l = r.interstitialAssetListLoadPolicy.default, h = { + loadPolicy: l, + timeout: l.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, u = { + onSuccess: (d, g, f, E) => { + const p = d.data, y = p == null ? void 0 : p.ASSETS; + if (!Array.isArray(y)) { + const S = this.assignAssetListError(e, b.ASSET_LIST_PARSING_ERROR, new Error("Invalid interstitial asset list"), f.url, g, E); + this.hls.trigger(m.ERROR, S); + return; + } + e.assetListResponse = p, this.hls.trigger(m.ASSET_LIST_LOADED, { + event: e, + assetListResponse: p, + networkDetails: E + }); + }, + onError: (d, g, f, E) => { + const p = this.assignAssetListError(e, b.ASSET_LIST_LOAD_ERROR, new Error(`Error loading X-ASSET-LIST: HTTP status ${d.code} ${d.text} (${g.url})`), g.url, E, f); + this.hls.trigger(m.ERROR, p); + }, + onTimeout: (d, g, f) => { + const E = this.assignAssetListError(e, b.ASSET_LIST_LOAD_TIMEOUT, new Error(`Timeout loading X-ASSET-LIST (${g.url})`), g.url, d, f); + this.hls.trigger(m.ERROR, E); + } + }; + return o.load(c, h, u), this.hls.trigger(m.ASSET_LIST_LOADING, { + event: e + }), o; + } + assignAssetListError(e, t, s, i, r, n) { + return e.error = s, { + type: K.NETWORK_ERROR, + details: t, + fatal: !1, + interstitial: e, + url: i, + error: s, + networkDetails: n, + stats: r + }; + } +} +function qr(a) { + a == null || a.play().catch(() => { + }); +} +class Uh extends Ve { + constructor(e, t) { + super("interstitials", e.logger), this.HlsPlayerClass = void 0, this.hls = void 0, this.assetListLoader = void 0, this.mediaSelection = null, this.altSelection = null, this.media = null, this.detachedData = null, this.requiredTracks = null, this.manager = null, this.playerQueue = [], this.bufferedPos = -1, this.timelinePos = -1, this.schedule = void 0, this.playingItem = null, this.bufferingItem = null, this.waitingItem = null, this.endedItem = null, this.playingAsset = null, this.endedAsset = null, this.bufferingAsset = null, this.shouldPlay = !1, this.onPlay = () => { + this.shouldPlay = !0; + }, this.onPause = () => { + this.shouldPlay = !1; + }, this.onSeeking = () => { + const s = this.currentTime; + if (s === void 0 || this.playbackDisabled) + return; + const i = s - this.timelinePos; + if (Math.abs(i) < 1 / 7056e5) + return; + const n = i <= -0.01; + this.timelinePos = s, this.bufferedPos = s; + const o = this.playingItem; + if (!o) { + this.checkBuffer(); + return; + } + if (n && this.schedule.resetErrorsInRange(s, s - i) && this.updateSchedule(), this.checkBuffer(), n && s < o.start || s >= o.end) { + var c; + const d = this.schedule.findItemIndexAtTime(this.timelinePos); + if (!this.isInterstitial(o) && (c = this.media) != null && c.paused && (this.shouldPlay = !1), !n) { + const g = this.findItemIndex(o); + if (d > g) { + const f = this.schedule.findJumpRestrictedIndex(g + 1, d); + if (f > g) { + this.setSchedulePosition(f); + return; + } + } + } + this.setSchedulePosition(d); + return; + } + const l = this.playingAsset; + if (!l) { + if (this.playingLastItem && this.isInterstitial(o)) { + const d = o.event.assetList[0]; + d && (this.endedItem = this.playingItem, this.playingItem = null, this.setScheduleToAssetAtTime(s, d)); + } + return; + } + const h = l.timelineStart, u = l.duration || 0; + (n && s < h || s >= h + u) && this.setScheduleToAssetAtTime(s, l); + }, this.onTimeupdate = () => { + const s = this.currentTime; + if (s === void 0 || this.playbackDisabled) + return; + if (s > this.timelinePos) + this.timelinePos = s, s > this.bufferedPos && this.checkBuffer(); + else + return; + const i = this.playingItem; + if (!i || this.playingLastItem) + return; + if (s >= i.end) { + this.timelinePos = i.end; + const o = this.findItemIndex(i); + this.setSchedulePosition(o + 1); + } + const r = this.playingAsset; + if (!r) + return; + const n = r.timelineStart + (r.duration || 0); + s >= n && this.setScheduleToAssetAtTime(s, r); + }, this.onScheduleUpdate = (s, i) => { + const r = this.schedule, n = this.playingItem, o = r.events || [], c = r.items || [], l = r.durations, h = s.map((f) => f.identifier), u = !!(o.length || h.length); + (u || i) && this.log(`INTERSTITIALS_UPDATED (${o.length}): ${o} +Schedule: ${c.map((f) => We(f))} pos: ${this.timelinePos}`), h.length && this.log(`Removed events ${h}`), this.playerQueue.forEach((f) => { + if (f.interstitial.appendInPlace) { + const E = f.assetItem.timelineStart, p = f.timelineOffset - E; + if (p) + try { + f.timelineOffset = E; + } catch (y) { + Math.abs(p) > mt && this.warn(`${y} ("${f.assetId}" ${f.timelineOffset}->${E})`); + } + } + }); + let d = null; + if (n) { + const f = this.updateItem(n, this.timelinePos); + this.itemsMatch(n, f) && (this.playingItem = f, this.waitingItem = this.endedItem = null, d = () => this.trimInPlace(f, n)); + } else + this.waitingItem = this.updateItem(this.waitingItem), this.endedItem = this.updateItem(this.endedItem); + const g = this.bufferingItem; + if (g) { + const f = this.updateItem(g, this.bufferedPos); + this.itemsMatch(g, f) ? (this.bufferingItem = f, d || (d = () => this.trimInPlace(f, g))) : g.event && (this.bufferingItem = this.playingItem, this.clearInterstitial(g.event, null)); + } + if (s.forEach((f) => { + f.assetList.forEach((E) => { + this.clearAssetPlayer(E.identifier, null); + }); + }), u || i) { + if (this.hls.trigger(m.INTERSTITIALS_UPDATED, { + events: o.slice(0), + schedule: c.slice(0), + durations: l, + removedIds: h + }), this.isInterstitial(n) && h.includes(n.event.identifier)) { + this.warn(`Interstitial "${n.event.identifier}" removed while playing`), this.primaryFallback(n.event); + return; + } + d && d(), this.checkBuffer(); + } + }, this.hls = e, this.HlsPlayerClass = t, this.assetListLoader = new Bh(e), this.schedule = new Nh(this.onScheduleUpdate, e.logger), this.registerListeners(); + } + registerListeners() { + const e = this.hls; + e.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(m.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.on(m.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(m.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.on(m.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.on(m.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.on(m.BUFFER_APPENDED, this.onBufferAppended, this), e.on(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(m.BUFFERED_TO_END, this.onBufferedToEnd, this), e.on(m.MEDIA_ENDED, this.onMediaEnded, this), e.on(m.ERROR, this.onError, this), e.on(m.DESTROYING, this.onDestroying, this); + } + unregisterListeners() { + const e = this.hls; + e && (e.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(m.AUDIO_TRACK_UPDATED, this.onAudioTrackUpdated, this), e.off(m.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(m.SUBTITLE_TRACK_UPDATED, this.onSubtitleTrackUpdated, this), e.off(m.EVENT_CUE_ENTER, this.onInterstitialCueEnter, this), e.off(m.ASSET_LIST_LOADED, this.onAssetListLoaded, this), e.off(m.BUFFER_CODECS, this.onBufferCodecs, this), e.off(m.BUFFER_APPENDED, this.onBufferAppended, this), e.off(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(m.BUFFERED_TO_END, this.onBufferedToEnd, this), e.off(m.MEDIA_ENDED, this.onMediaEnded, this), e.off(m.ERROR, this.onError, this), e.off(m.DESTROYING, this.onDestroying, this)); + } + startLoad() { + this.resumeBuffering(); + } + stopLoad() { + this.pauseBuffering(); + } + resumeBuffering() { + var e; + (e = this.getBufferingPlayer()) == null || e.resumeBuffering(); + } + pauseBuffering() { + var e; + (e = this.getBufferingPlayer()) == null || e.pauseBuffering(); + } + destroy() { + this.unregisterListeners(), this.stopLoad(), this.assetListLoader && this.assetListLoader.destroy(), this.emptyPlayerQueue(), this.clearScheduleState(), this.schedule && this.schedule.destroy(), this.media = this.detachedData = this.mediaSelection = this.requiredTracks = this.altSelection = this.manager = null, this.hls = this.HlsPlayerClass = this.schedule = this.log = null, this.assetListLoader = null, this.onPlay = this.onPause = this.onSeeking = this.onTimeupdate = null, this.onScheduleUpdate = null; + } + onDestroying() { + const e = this.primaryMedia || this.media; + e && this.removeMediaListeners(e); + } + removeMediaListeners(e) { + Re(e, "play", this.onPlay), Re(e, "pause", this.onPause), Re(e, "seeking", this.onSeeking), Re(e, "timeupdate", this.onTimeupdate); + } + onMediaAttaching(e, t) { + const s = this.media = t.media; + ve(s, "seeking", this.onSeeking), ve(s, "timeupdate", this.onTimeupdate), ve(s, "play", this.onPlay), ve(s, "pause", this.onPause); + } + onMediaAttached(e, t) { + const s = this.effectivePlayingItem, i = this.detachedData; + if (this.detachedData = null, s === null) + this.checkStart(); + else if (!i) { + this.clearScheduleState(); + const r = this.findItemIndex(s); + this.setSchedulePosition(r); + } + } + clearScheduleState() { + this.playingItem = this.bufferingItem = this.waitingItem = this.endedItem = this.playingAsset = this.endedAsset = this.bufferingAsset = null; + } + onMediaDetaching(e, t) { + const s = !!t.transferMedia, i = this.media; + if (this.media = null, !s && (i && this.removeMediaListeners(i), this.detachedData)) { + const r = this.getBufferingPlayer(); + r && (this.playingAsset = this.endedAsset = this.bufferingAsset = this.bufferingItem = this.waitingItem = this.detachedData = null, r.detachMedia()), this.shouldPlay = !1; + } + } + get interstitialsManager() { + if (!this.manager) { + if (!this.hls) + return null; + const e = this, t = () => e.bufferingItem || e.waitingItem, s = (u) => u && e.getAssetPlayer(u.identifier), i = (u, d, g, f, E) => { + if (u) { + let p = u[d].start; + const y = u.event; + if (y) { + if (d === "playout" || y.timelineOccupancy !== Ts.Point) { + const S = s(g); + (S == null ? void 0 : S.interstitial) === y && (p += S.assetItem.startOffset + S[E]); + } + } else { + const S = f === "bufferedPos" ? n() : e[f]; + p += S - u.start; + } + return p; + } + return 0; + }, r = (u, d) => { + if (u !== 0 && d !== "primary" && e.schedule.length) { + var g; + const f = e.schedule.findItemIndexAtTime(u), E = (g = e.schedule.items) == null ? void 0 : g[f]; + if (E) { + const p = E[d].start - E.start; + return u + p; + } + } + return u; + }, n = () => { + const u = e.bufferedPos; + return u === Number.MAX_VALUE ? o("primary") : Math.max(u, 0); + }, o = (u) => { + var d; + return (d = e.primaryDetails) != null && d.live ? e.primaryDetails.edge : e.schedule.durations[u]; + }, c = (u, d) => { + var g, f; + const E = e.effectivePlayingItem; + if (E != null && (g = E.event) != null && g.restrictions.skip) + return; + e.log(`seek to ${u} "${d}"`); + const p = e.effectivePlayingItem, y = e.schedule.findItemIndexAtTime(u, d), S = (f = e.schedule.items) == null ? void 0 : f[y], T = e.getBufferingPlayer(), v = T == null ? void 0 : T.interstitial, x = v == null ? void 0 : v.appendInPlace, _ = p && e.itemsMatch(p, S); + if (p && (x || _)) { + const R = s(e.playingAsset), D = (R == null ? void 0 : R.media) || e.primaryMedia; + if (D) { + const L = d === "primary" ? D.currentTime : i(p, d, e.playingAsset, "timelinePos", "currentTime"), k = u - L, M = (x ? L : D.currentTime) + k; + if (M >= 0 && (!R || x || M <= R.duration)) { + D.currentTime = M; + return; + } + } + } + if (S) { + let R = u; + if (d !== "primary") { + const L = S[d].start, k = u - L; + R = S.start + k; + } + const D = !e.isInterstitial(S); + if ((!e.isInterstitial(p) || p.event.appendInPlace) && (D || S.event.appendInPlace)) { + const L = e.media || (x ? T == null ? void 0 : T.media : null); + L && (L.currentTime = R); + } else if (p) { + const L = e.findItemIndex(p); + if (y > L) { + const M = e.schedule.findJumpRestrictedIndex(L + 1, y); + if (M > L) { + e.setSchedulePosition(M); + return; + } + } + let k = 0; + if (D) + e.timelinePos = R, e.checkBuffer(); + else { + var A; + const M = S == null || (A = S.event) == null ? void 0 : A.assetList; + if (M) { + const V = u - (S[d] || S).start; + for (let P = M.length; P--; ) { + const U = M[P]; + if (U.duration && V >= U.startOffset && V < U.startOffset + U.duration) { + k = P; + break; + } + } + } + } + e.setSchedulePosition(y, k); + } + } + }, l = () => { + const u = e.effectivePlayingItem; + if (e.isInterstitial(u)) + return u; + const d = t(); + return e.isInterstitial(d) ? d : null; + }, h = { + get currentTime() { + const u = l(), d = e.effectivePlayingItem; + return d && d === u ? i(d, "playout", e.effectivePlayingAsset, "timelinePos", "currentTime") - d.playout.start : 0; + }, + set currentTime(u) { + const d = l(), g = e.effectivePlayingItem; + g && g === d && c(u + g.playout.start, "playout"); + }, + get duration() { + const u = l(); + return u ? u.playout.end - u.playout.start : 0; + }, + get assetPlayers() { + var u; + const d = (u = l()) == null ? void 0 : u.event.assetList; + return d ? d.map((g) => e.getAssetPlayer(g.identifier)) : []; + }, + get playingIndex() { + var u; + const d = (u = l()) == null ? void 0 : u.event; + return d && e.effectivePlayingAsset ? d.findAssetIndex(e.effectivePlayingAsset) : -1; + }, + get scheduleItem() { + return l(); + } + }; + this.manager = { + get events() { + var u, d; + return ((u = e.schedule) == null || (d = u.events) == null ? void 0 : d.slice(0)) || []; + }, + get schedule() { + var u, d; + return ((u = e.schedule) == null || (d = u.items) == null ? void 0 : d.slice(0)) || []; + }, + get interstitialPlayer() { + return l() ? h : null; + }, + get playerQueue() { + return e.playerQueue.slice(0); + }, + get bufferingAsset() { + return e.bufferingAsset; + }, + get bufferingItem() { + return t(); + }, + get bufferingIndex() { + const u = t(); + return e.findItemIndex(u); + }, + get playingAsset() { + return e.effectivePlayingAsset; + }, + get playingItem() { + return e.effectivePlayingItem; + }, + get playingIndex() { + const u = e.effectivePlayingItem; + return e.findItemIndex(u); + }, + primary: { + get bufferedEnd() { + return n(); + }, + get currentTime() { + const u = e.timelinePos; + return u > 0 ? u : 0; + }, + set currentTime(u) { + c(u, "primary"); + }, + get duration() { + return o("primary"); + }, + get seekableStart() { + var u; + return ((u = e.primaryDetails) == null ? void 0 : u.fragmentStart) || 0; + } + }, + integrated: { + get bufferedEnd() { + return i(t(), "integrated", e.bufferingAsset, "bufferedPos", "bufferedEnd"); + }, + get currentTime() { + return i(e.effectivePlayingItem, "integrated", e.effectivePlayingAsset, "timelinePos", "currentTime"); + }, + set currentTime(u) { + c(u, "integrated"); + }, + get duration() { + return o("integrated"); + }, + get seekableStart() { + var u; + return r(((u = e.primaryDetails) == null ? void 0 : u.fragmentStart) || 0, "integrated"); + } + }, + skip: () => { + const u = e.effectivePlayingItem, d = u == null ? void 0 : u.event; + if (d && !d.restrictions.skip) { + const g = e.findItemIndex(u); + if (d.appendInPlace) { + const f = u.playout.start + u.event.duration; + c(f + 1e-3, "playout"); + } else + e.advanceAfterAssetEnded(d, g, 1 / 0); + } + } + }; + } + return this.manager; + } + // Schedule getters + get effectivePlayingItem() { + return this.waitingItem || this.playingItem || this.endedItem; + } + get effectivePlayingAsset() { + return this.playingAsset || this.endedAsset; + } + get playingLastItem() { + var e; + const t = this.playingItem, s = (e = this.schedule) == null ? void 0 : e.items; + return !this.playbackStarted || !t || !s ? !1 : this.findItemIndex(t) === s.length - 1; + } + get playbackStarted() { + return this.effectivePlayingItem !== null; + } + // Media getters and event callbacks + get currentTime() { + var e, t, s; + if (this.mediaSelection === null) + return; + const i = this.waitingItem || this.playingItem; + if (this.isInterstitial(i) && !i.event.appendInPlace) + return; + let r = this.media; + !r && (e = this.bufferingItem) != null && (t = e.event) != null && t.appendInPlace && (r = this.primaryMedia); + const n = (s = r) == null ? void 0 : s.currentTime; + if (!(n === void 0 || !N(n))) + return n; + } + get primaryMedia() { + var e; + return this.media || ((e = this.detachedData) == null ? void 0 : e.media) || null; + } + isInterstitial(e) { + return !!(e != null && e.event); + } + retreiveMediaSource(e, t) { + const s = this.getAssetPlayer(e); + s && this.transferMediaFromPlayer(s, t); + } + transferMediaFromPlayer(e, t) { + const s = e.interstitial.appendInPlace, i = e.media; + if (s && i === this.primaryMedia) { + if (this.bufferingAsset = null, (!t || this.isInterstitial(t) && !t.event.appendInPlace) && t && i) { + this.detachedData = { + media: i + }; + return; + } + const r = e.transferMedia(); + this.log(`transfer MediaSource from ${e} ${ae(r)}`), this.detachedData = r; + } else t && i && (this.shouldPlay || (this.shouldPlay = !i.paused)); + } + transferMediaTo(e, t) { + var s, i; + if (e.media === t) + return; + let r = null; + const n = this.hls, o = e !== n, c = o && e.interstitial.appendInPlace, l = (s = this.detachedData) == null ? void 0 : s.mediaSource; + let h; + if (n.media) + c && (r = n.transferMedia(), this.detachedData = r), h = "Primary"; + else if (l) { + const g = this.getBufferingPlayer(); + g ? (r = g.transferMedia(), h = `${g}`) : h = "detached MediaSource"; + } else + h = "detached media"; + if (!r) { + if (l) + r = this.detachedData, this.log(`using detachedData: MediaSource ${ae(r)}`); + else if (!this.detachedData || n.media === t) { + const g = this.playerQueue; + g.length > 1 && g.forEach((f) => { + if (o && f.interstitial.appendInPlace !== c) { + const E = f.interstitial; + this.clearInterstitial(f.interstitial, null), E.appendInPlace = !1, E.appendInPlace && this.warn(`Could not change append strategy for queued assets ${E}`); + } + }), this.hls.detachMedia(), this.detachedData = { + media: t + }; + } + } + const u = r && "mediaSource" in r && ((i = r.mediaSource) == null ? void 0 : i.readyState) !== "closed", d = u && r ? r : t; + if (this.log(`${u ? "transfering MediaSource" : "attaching media"} to ${o ? e : "Primary"} from ${h}`), d === r) { + const g = o && e.assetId === this.schedule.assetIdAtEnd; + d.overrides = { + duration: this.schedule.duration, + endOfStream: !o || g, + cueRemoval: !o + }; + } + e.attachMedia(d); + } + onInterstitialCueEnter() { + this.onTimeupdate(); + } + // Scheduling methods + checkStart() { + const e = this.schedule, t = e.events; + if (!t || this.playbackDisabled || !this.media) + return; + this.bufferedPos === -1 && (this.bufferedPos = 0); + const s = this.timelinePos, i = this.effectivePlayingItem; + if (s === -1) { + const r = this.hls.startPosition; + if (this.timelinePos = r, t.length && t[0].cue.pre) { + const n = e.findEventIndex(t[0].identifier); + this.setSchedulePosition(n); + } else if (r >= 0 || !this.primaryLive) { + const n = this.timelinePos = r > 0 ? r : 0, o = e.findItemIndexAtTime(n); + this.setSchedulePosition(o); + } + } else if (i && !this.playingItem) { + const r = e.findItemIndex(i); + this.setSchedulePosition(r); + } + } + advanceAfterAssetEnded(e, t, s) { + const i = Ks(e, s); + if (!e.isAssetPastPlayoutLimit(i)) + this.setSchedulePosition(t, i); + else { + const r = this.schedule.items; + if (r) { + const n = t + 1, o = r.length; + if (n >= o) { + this.setSchedulePosition(-1); + return; + } + const c = e.resumeTime; + this.timelinePos < c && (this.timelinePos = c, this.checkBuffer()), this.setSchedulePosition(n); + } + } + } + setScheduleToAssetAtTime(e, t) { + const s = this.schedule, i = t.parentIdentifier, r = s.getEvent(i); + if (r) { + const n = s.findEventIndex(i), o = s.findAssetIndex(r, e); + this.advanceAfterAssetEnded(r, n, o - 1); + } + } + setSchedulePosition(e, t) { + const s = this.schedule.items; + if (!s || this.playbackDisabled) + return; + this.log(`setSchedulePosition ${e}, ${t}`); + const i = e >= 0 ? s[e] : null, r = this.playingItem, n = this.playingLastItem; + if (this.isInterstitial(r)) { + var o; + const l = r.event, h = this.playingAsset, u = h == null ? void 0 : h.identifier, d = u ? this.getAssetPlayer(u) : null; + if (d && u && (!this.eventItemsMatch(r, i) || t !== void 0 && u !== ((o = l.assetList) == null ? void 0 : o[t].identifier))) { + var c; + const g = l.findAssetIndex(h); + this.log(`INTERSTITIAL_ASSET_ENDED ${g + 1}/${l.assetList.length} ${ut(h)}`), this.endedAsset = h, this.playingAsset = null, this.hls.trigger(m.INTERSTITIAL_ASSET_ENDED, { + asset: h, + assetListIndex: g, + event: l, + schedule: s.slice(0), + scheduleIndex: e, + player: d + }), this.retreiveMediaSource(u, i), d.media && !((c = this.detachedData) != null && c.mediaSource) && d.detachMedia(); + } + if (!this.eventItemsMatch(r, i) && (this.endedItem = r, this.playingItem = null, this.log(`INTERSTITIAL_ENDED ${l} ${We(r)}`), l.hasPlayed = !0, this.hls.trigger(m.INTERSTITIAL_ENDED, { + event: l, + schedule: s.slice(0), + scheduleIndex: e + }), l.cue.once)) { + this.updateSchedule(); + const g = this.schedule.items; + if (i && g) { + const f = this.schedule.findItemIndex(i); + this.advanceSchedule(f, g, t, r, n); + } + return; + } + } + this.advanceSchedule(e, s, t, r, n); + } + advanceSchedule(e, t, s, i, r) { + const n = e >= 0 ? t[e] : null, o = this.primaryMedia, c = this.playerQueue; + if (c.length && c.forEach((l) => { + const h = l.interstitial, u = this.schedule.findEventIndex(h.identifier); + (u < e || u > e + 1) && this.clearInterstitial(h, n); + }), this.isInterstitial(n)) { + this.timelinePos = Math.min(Math.max(this.timelinePos, n.start), n.end); + const l = n.event; + if (s === void 0) { + s = this.schedule.findAssetIndex(l, this.timelinePos); + const g = Ks(l, s - 1); + if (l.isAssetPastPlayoutLimit(g)) { + this.advanceAfterAssetEnded(l, e, s); + return; + } + s = g; + } + const h = this.waitingItem; + this.assetsBuffered(n, o) || this.setBufferingItem(n); + let u = this.preloadAssets(l, s); + if (this.eventItemsMatch(n, h || i) || (this.waitingItem = n, this.log(`INTERSTITIAL_STARTED ${We(n)} ${l.appendInPlace ? "append in place" : ""}`), this.hls.trigger(m.INTERSTITIAL_STARTED, { + event: l, + schedule: t.slice(0), + scheduleIndex: e + })), !l.assetListLoaded) { + this.log(`Waiting for ASSET-LIST to complete loading ${l}`); + return; + } + if (l.assetListLoader && (l.assetListLoader.destroy(), l.assetListLoader = void 0), !o) { + this.log(`Waiting for attachMedia to start Interstitial ${l}`); + return; + } + this.waitingItem = this.endedItem = null, this.playingItem = n; + const d = l.assetList[s]; + if (!d) { + const g = t[e + 1], f = this.media; + g && f && !this.isInterstitial(g) && f.currentTime < g.start && (f.currentTime = this.timelinePos = g.start), this.advanceAfterAssetEnded(l, e, s || 0); + return; + } + if (u || (u = this.getAssetPlayer(d.identifier)), u === null || u.destroyed) { + const g = l.assetList.length; + this.warn(`asset ${s + 1}/${g} player destroyed ${l}`), u = this.createAssetPlayer(l, d, s); + } + if (!this.eventItemsMatch(n, this.bufferingItem) && l.appendInPlace && this.isAssetBuffered(d)) + return; + this.startAssetPlayer(u, s, t, e, o), this.shouldPlay && qr(u.media); + } else n !== null ? (this.resumePrimary(n, e, i), this.shouldPlay && qr(this.hls.media)) : r && this.isInterstitial(i) && (this.endedItem = null, this.playingItem = i, i.event.appendInPlace || this.attachPrimary(this.schedule.durations.primary, null)); + } + get playbackDisabled() { + return this.hls.config.enableInterstitialPlayback === !1; + } + get primaryDetails() { + var e, t; + return (e = this.mediaSelection) == null || (t = e.main) == null ? void 0 : t.details; + } + get primaryLive() { + var e; + return !!((e = this.primaryDetails) != null && e.live); + } + resumePrimary(e, t, s) { + var i; + if (this.playingItem = e, this.playingAsset = this.endedAsset = null, this.waitingItem = this.endedItem = null, this.bufferedToItem(e), this.log(`resuming ${We(e)}`), !((i = this.detachedData) != null && i.mediaSource)) { + let n = this.timelinePos; + (n < e.start || n >= e.end) && (n = this.getPrimaryResumption(e, t), this.timelinePos = n), this.attachPrimary(n, e); + } + if (!s) + return; + const r = this.schedule.items; + r && (this.log(`INTERSTITIALS_PRIMARY_RESUMED ${We(e)}`), this.hls.trigger(m.INTERSTITIALS_PRIMARY_RESUMED, { + schedule: r.slice(0), + scheduleIndex: t + }), this.checkBuffer()); + } + getPrimaryResumption(e, t) { + const s = e.start; + if (this.primaryLive) { + const i = this.primaryDetails; + if (t === 0) + return this.hls.startPosition; + if (i && (s < i.fragmentStart || s > i.edge)) + return this.hls.liveSyncPosition || -1; + } + return s; + } + isAssetBuffered(e) { + const t = this.getAssetPlayer(e.identifier); + return t != null && t.hls ? t.hls.bufferedToEnd : q.bufferInfo(this.primaryMedia, this.timelinePos, 0).end + 1 >= e.timelineStart + (e.duration || 0); + } + attachPrimary(e, t, s) { + t ? this.setBufferingItem(t) : this.bufferingItem = this.playingItem, this.bufferingAsset = null; + const i = this.primaryMedia; + if (!i) + return; + const r = this.hls; + r.media ? this.checkBuffer() : (this.transferMediaTo(r, i), s && this.startLoadingPrimaryAt(e, s)), s || (this.timelinePos = e, this.startLoadingPrimaryAt(e, s)); + } + startLoadingPrimaryAt(e, t) { + var s; + const i = this.hls; + !i.loadingEnabled || !i.media || Math.abs((((s = i.mainForwardBufferInfo) == null ? void 0 : s.start) || i.media.currentTime) - e) > 0.5 ? i.startLoad(e, t) : i.bufferingEnabled || i.resumeBuffering(); + } + // HLS.js event callbacks + onManifestLoading() { + this.stopLoad(), this.schedule.reset(), this.emptyPlayerQueue(), this.clearScheduleState(), this.shouldPlay = !1, this.bufferedPos = this.timelinePos = -1, this.mediaSelection = this.altSelection = this.manager = this.requiredTracks = null, this.hls.off(m.BUFFER_CODECS, this.onBufferCodecs, this), this.hls.on(m.BUFFER_CODECS, this.onBufferCodecs, this); + } + onLevelUpdated(e, t) { + if (t.level === -1) + return; + const s = this.hls.levels[t.level], i = te(te({}, this.mediaSelection || this.altSelection), {}, { + main: s + }); + this.mediaSelection = i, this.schedule.parseInterstitialDateRanges(i, this.hls.config.interstitialAppendInPlace), !this.effectivePlayingItem && this.schedule.items && this.checkStart(); + } + onAudioTrackUpdated(e, t) { + const s = this.hls.audioTracks[t.id], i = this.mediaSelection; + if (!i) { + this.altSelection = te(te({}, this.altSelection), {}, { + audio: s + }); + return; + } + const r = te(te({}, i), {}, { + audio: s + }); + this.mediaSelection = r; + } + onSubtitleTrackUpdated(e, t) { + const s = this.hls.subtitleTracks[t.id], i = this.mediaSelection; + if (!i) { + this.altSelection = te(te({}, this.altSelection), {}, { + subtitles: s + }); + return; + } + const r = te(te({}, i), {}, { + subtitles: s + }); + this.mediaSelection = r; + } + onAudioTrackSwitching(e, t) { + const s = nr(t); + this.playerQueue.forEach((i) => i.hls.setAudioOption(t) || i.hls.setAudioOption(s)); + } + onSubtitleTrackSwitch(e, t) { + const s = nr(t); + this.playerQueue.forEach((i) => i.hls.setSubtitleOption(t) || t.id !== -1 && i.hls.setSubtitleOption(s)); + } + onBufferCodecs(e, t) { + const s = t.tracks; + s && (this.requiredTracks = s); + } + onBufferAppended(e, t) { + this.checkBuffer(); + } + onBufferFlushed(e, t) { + const s = this.playingItem; + if (s && !this.itemsMatch(s, this.bufferingItem) && !this.isInterstitial(s)) { + const i = this.timelinePos; + this.bufferedPos = i, this.checkBuffer(); + } + } + onBufferedToEnd(e) { + const t = this.schedule.events; + if (this.bufferedPos < Number.MAX_VALUE && t) { + for (let i = 0; i < t.length; i++) { + const r = t[i]; + if (r.cue.post) { + var s; + const n = this.schedule.findEventIndex(r.identifier), o = (s = this.schedule.items) == null ? void 0 : s[n]; + this.isInterstitial(o) && this.eventItemsMatch(o, this.bufferingItem) && this.bufferedToItem(o, 0); + break; + } + } + this.bufferedPos = Number.MAX_VALUE; + } + } + onMediaEnded(e) { + const t = this.playingItem; + if (!this.playingLastItem && t) { + const s = this.findItemIndex(t); + this.setSchedulePosition(s + 1); + } else + this.shouldPlay = !1; + } + updateItem(e, t) { + const s = this.schedule.items; + if (e && s) { + const i = this.findItemIndex(e, t); + return s[i] || null; + } + return null; + } + trimInPlace(e, t) { + if (this.isInterstitial(e) && e.event.appendInPlace && t.end - e.end > 0.25) { + e.event.assetList.forEach((r, n) => { + e.event.isAssetPastPlayoutLimit(n) && this.clearAssetPlayer(r.identifier, null); + }); + const s = e.end + 0.25, i = q.bufferInfo(this.primaryMedia, s, 0); + (i.end > s || (i.nextStart || 0) > s) && (this.attachPrimary(s, null), this.flushFrontBuffer(s)); + } + } + itemsMatch(e, t) { + return !!t && (e === t || e.event && t.event && this.eventItemsMatch(e, t) || !e.event && !t.event && this.findItemIndex(e) === this.findItemIndex(t)); + } + eventItemsMatch(e, t) { + var s; + return !!t && (e === t || e.event.identifier === ((s = t.event) == null ? void 0 : s.identifier)); + } + findItemIndex(e, t) { + return e ? this.schedule.findItemIndex(e, t) : -1; + } + updateSchedule() { + const e = this.mediaSelection; + e && this.schedule.updateSchedule(e, []); + } + // Schedule buffer control + checkBuffer(e) { + const t = this.schedule.items; + if (!t) + return; + const s = q.bufferInfo(this.primaryMedia, this.timelinePos, 0); + e && (this.bufferedPos = this.timelinePos), e || (e = s.len < 1), this.updateBufferedPos(s.end, t, e); + } + updateBufferedPos(e, t, s) { + const i = this.schedule, r = this.bufferingItem; + if (this.bufferedPos > e) + return; + if (t.length === 1 && this.itemsMatch(t[0], r)) { + this.bufferedPos = e; + return; + } + const n = this.playingItem, o = this.findItemIndex(n); + let c = i.findItemIndexAtTime(e); + if (this.bufferedPos < e) { + var l, h; + const u = this.findItemIndex(r), d = Math.min(u + 1, t.length - 1), g = t[d]; + if ((c === -1 && r && e >= r.end || (l = g.event) != null && l.appendInPlace && e + 0.01 >= g.start) && (c = d), d - o > 1 && (r == null || (h = r.event) == null ? void 0 : h.appendInPlace) === !1) + return; + if (this.bufferedPos = e, c > u && c > o) + this.bufferedToItem(g); + else { + const f = this.primaryDetails; + this.primaryLive && f && e > f.edge - f.targetduration && g.start < f.edge + this.hls.config.interstitialLiveLookAhead && this.isInterstitial(g) && this.preloadAssets(g.event, 0); + } + } else s && n && !this.itemsMatch(n, r) && (c === o ? this.bufferedToItem(n) : c === o + 1 && this.bufferedToItem(t[c])); + } + assetsBuffered(e, t) { + return e.event.assetList.length === 0 ? !1 : !e.event.assetList.some((i) => { + const r = this.getAssetPlayer(i.identifier); + return !(r != null && r.bufferedInPlaceToEnd(t)); + }); + } + setBufferingItem(e) { + const t = this.bufferingItem, s = this.schedule; + if (this.itemsMatch(e, t)) + this.bufferingItem !== e && (this.bufferingItem = e); + else { + const { + items: i, + events: r + } = s; + if (!i || !r) + return t; + const n = this.isInterstitial(e), o = this.getBufferingPlayer(); + this.bufferingItem = e, this.bufferedPos = Math.max(e.start, Math.min(e.end, this.timelinePos)); + const c = o ? o.remaining : t ? t.end - this.timelinePos : 0; + this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${We(e)}` + (t ? ` (${c.toFixed(2)} remaining)` : "")), this.playbackDisabled || (n ? e.event.assetList.forEach((l) => { + const h = this.getAssetPlayer(l.identifier); + h && h.resumeBuffering(); + }) : (this.hls.resumeBuffering(), this.playerQueue.forEach((l) => l.pauseBuffering()))), this.hls.trigger(m.INTERSTITIALS_BUFFERED_TO_BOUNDARY, { + events: r.slice(0), + schedule: i.slice(0), + bufferingIndex: this.findItemIndex(e), + playingIndex: this.findItemIndex(this.playingItem) + }); + } + return t; + } + bufferedToItem(e, t = 0) { + const s = this.setBufferingItem(e); + if (!this.playbackDisabled) { + if (this.isInterstitial(e)) + this.bufferedToEvent(e, t); + else if (s !== null) { + this.bufferingAsset = null; + const i = this.detachedData; + i ? i.mediaSource ? this.attachPrimary(e.start, e, !0) : this.preloadPrimary(e) : this.preloadPrimary(e); + } + } + } + preloadPrimary(e) { + const t = this.findItemIndex(e), s = this.getPrimaryResumption(e, t); + this.startLoadingPrimaryAt(s); + } + bufferedToEvent(e, t) { + const s = e.event, i = s.assetList.length === 0 && !s.assetListLoader, r = s.cue.once; + if (i || !r) { + const n = this.preloadAssets(s, t); + if (n != null && n.interstitial.appendInPlace) { + const o = s.assetList[t], c = this.primaryMedia; + o && c && this.bufferAssetPlayer(n, c); + } + } + } + preloadAssets(e, t) { + const s = e.assetUrl, i = e.assetList.length, r = i === 0 && !e.assetListLoader, n = e.cue.once; + if (r) { + const c = e.timelineStart; + if (e.appendInPlace) { + var o; + const d = this.playingItem; + !this.isInterstitial(d) && (d == null || (o = d.nextEvent) == null ? void 0 : o.identifier) === e.identifier && this.flushFrontBuffer(c + 0.25); + } + let l, h = 0; + if (!this.playingItem && this.primaryLive && (h = this.hls.startPosition, h === -1 && (h = this.hls.liveSyncPosition || 0)), h && !(e.cue.pre || e.cue.post)) { + const d = h - c; + d > 0 && (l = Math.round(d * 1e3) / 1e3); + } + if (this.log(`Load interstitial asset ${t + 1}/${s ? 1 : i} ${e}${l ? ` live-start: ${h} start-offset: ${l}` : ""}`), s) + return this.createAsset(e, 0, 0, c, e.duration, s); + const u = this.assetListLoader.loadAssetList(e, l); + u && (e.assetListLoader = u); + } else if (!n && i) { + for (let c = t; c < i; c++) { + const l = e.assetList[c], h = this.getAssetPlayerQueueIndex(l.identifier); + (h === -1 || this.playerQueue[h].destroyed) && !l.error && this.createAssetPlayer(e, l, c); + } + return this.getAssetPlayer(e.assetList[t].identifier); + } + return null; + } + flushFrontBuffer(e) { + const t = this.requiredTracks; + if (!t) + return; + this.log(`Removing front buffer starting at ${e}`), Object.keys(t).forEach((i) => { + this.hls.trigger(m.BUFFER_FLUSHING, { + startOffset: e, + endOffset: 1 / 0, + type: i + }); + }); + } + // Interstitial Asset Player control + getAssetPlayerQueueIndex(e) { + const t = this.playerQueue; + for (let s = 0; s < t.length; s++) + if (e === t[s].assetId) + return s; + return -1; + } + getAssetPlayer(e) { + const t = this.getAssetPlayerQueueIndex(e); + return this.playerQueue[t] || null; + } + getBufferingPlayer() { + const { + playerQueue: e, + primaryMedia: t + } = this; + if (t) { + for (let s = 0; s < e.length; s++) + if (e[s].media === t) + return e[s]; + } + return null; + } + createAsset(e, t, s, i, r, n) { + const o = { + parentIdentifier: e.identifier, + identifier: wh(e, n, t), + duration: r, + startOffset: s, + timelineStart: i, + uri: n + }; + return this.createAssetPlayer(e, o, t); + } + createAssetPlayer(e, t, s) { + const i = this.hls, r = i.userConfig; + let n = r.videoPreference; + const o = i.loadLevelObj || i.levels[i.currentLevel]; + (n || o) && (n = ie({}, n), o.videoCodec && (n.videoCodec = o.videoCodec), o.videoRange && (n.allowedVideoRanges = [o.videoRange])); + const c = i.audioTracks[i.audioTrack], l = i.subtitleTracks[i.subtitleTrack]; + let h = 0; + if (this.primaryLive || e.appendInPlace) { + const T = this.timelinePos - t.timelineStart; + if (T > 1) { + const v = t.duration; + v && T < v && (h = T); + } + } + const u = t.identifier, d = te(te({}, r), {}, { + autoStartLoad: !0, + startFragPrefetch: !0, + primarySessionId: i.sessionId, + assetPlayerId: u, + abrEwmaDefaultEstimate: i.bandwidthEstimate, + interstitialsController: void 0, + startPosition: h, + liveDurationInfinity: !1, + testBandwidth: !1, + videoPreference: n, + audioPreference: c || r.audioPreference, + subtitlePreference: l || r.subtitlePreference + }); + e.appendInPlace && (e.appendInPlaceStarted = !0, t.timelineStart && (d.timelineOffset = t.timelineStart)); + const g = d.cmcd; + g != null && g.sessionId && g.contentId && (d.cmcd = ie({}, g, { + contentId: bt(t.uri) + })), this.getAssetPlayer(u) && this.warn(`Duplicate date range identifier ${e} and asset ${u}`); + const f = new Mh(this.HlsPlayerClass, d, e, t); + this.playerQueue.push(f), e.assetList[s] = t; + const E = (T) => { + if (T.live) { + const _ = new Error(`Interstitials MUST be VOD assets ${e}`), A = { + fatal: !0, + type: K.OTHER_ERROR, + details: b.INTERSTITIAL_ASSET_ITEM_ERROR, + error: _ + }; + this.handleAssetItemError(A, e, this.schedule.findEventIndex(e.identifier), s, _.message); + return; + } + const v = T.edge - T.fragmentStart, x = t.duration; + (x === null || v > x) && (this.log(`Interstitial asset "${u}" duration change ${x} > ${v}`), t.duration = v, this.updateSchedule()); + }; + f.on(m.LEVEL_UPDATED, (T, { + details: v + }) => E(v)), f.on(m.LEVEL_PTS_UPDATED, (T, { + details: v + }) => E(v)); + const p = (T, v) => { + const x = this.getAssetPlayer(u); + if (x && v.tracks) { + x.off(m.BUFFER_CODECS, p), x.tracks = v.tracks; + const _ = this.primaryMedia; + this.bufferingAsset === x.assetItem && _ && !x.media && this.bufferAssetPlayer(x, _); + } + }; + f.on(m.BUFFER_CODECS, p); + const y = () => { + var T; + const v = this.getAssetPlayer(u); + if (this.log(`buffered to end of asset ${v}`), !v) + return; + const x = this.schedule.findEventIndex(e.identifier), _ = (T = this.schedule.items) == null ? void 0 : T[x]; + if (this.isInterstitial(_)) { + const R = e.findAssetIndex(t), D = Ks(e, R); + if (!e.isAssetPastPlayoutLimit(D)) + this.bufferedToItem(_, D); + else { + var A; + const L = (A = this.schedule.items) == null ? void 0 : A[x + 1]; + L && this.bufferedToItem(L); + } + } + }; + f.on(m.BUFFERED_TO_END, y); + const S = (T) => () => { + if (!this.getAssetPlayer(u)) + return; + this.shouldPlay = !0; + const x = this.schedule.findEventIndex(e.identifier); + this.advanceAfterAssetEnded(e, x, T); + }; + return f.once(m.MEDIA_ENDED, S(s)), f.once(m.PLAYOUT_LIMIT_REACHED, S(1 / 0)), f.on(m.ERROR, (T, v) => { + const x = this.getAssetPlayer(u); + if (v.details === b.BUFFER_STALLED_ERROR) { + if (x != null && x.media) { + const _ = x.currentTime, A = x.duration - _; + _ && e.appendInPlace && A / x.media.playbackRate < 0.5 ? (this.log(`Advancing buffer past end of asset ${u} ${e} at ${x.media.currentTime}`), y()) : (this.warn(`Stalled at ${_} of ${_ + A} in asset ${u} ${e}`), this.onTimeupdate(), this.checkBuffer(!0)); + } + return; + } + this.handleAssetItemError(v, e, this.schedule.findEventIndex(e.identifier), s, `Asset player error ${v.error} ${e}`); + }), f.on(m.DESTROYING, () => { + if (!this.getAssetPlayer(u)) + return; + const v = new Error(`Asset player destroyed unexpectedly ${u}`), x = { + fatal: !0, + type: K.OTHER_ERROR, + details: b.INTERSTITIAL_ASSET_ITEM_ERROR, + error: v + }; + this.handleAssetItemError(x, e, this.schedule.findEventIndex(e.identifier), s, v.message); + }), this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${ut(t)}`), this.hls.trigger(m.INTERSTITIAL_ASSET_PLAYER_CREATED, { + asset: t, + assetListIndex: s, + event: e, + player: f + }), f; + } + clearInterstitial(e, t) { + e.assetList.forEach((s) => { + this.clearAssetPlayer(s.identifier, t); + }), e.reset(); + } + resetAssetPlayer(e) { + const t = this.getAssetPlayerQueueIndex(e); + if (t !== -1) { + this.log(`reset asset player "${e}" after error`); + const s = this.playerQueue[t]; + this.transferMediaFromPlayer(s, null), s.resetDetails(); + } + } + clearAssetPlayer(e, t) { + const s = this.getAssetPlayerQueueIndex(e); + if (s !== -1) { + this.log(`clear asset player "${e}" toSegment: ${t && We(t)}`); + const i = this.playerQueue[s]; + this.transferMediaFromPlayer(i, t), this.playerQueue.splice(s, 1), i.destroy(); + } + } + emptyPlayerQueue() { + let e; + for (; e = this.playerQueue.pop(); ) + e.destroy(); + this.playerQueue = []; + } + startAssetPlayer(e, t, s, i, r) { + const { + interstitial: n, + assetItem: o, + assetId: c + } = e, l = n.assetList.length, h = this.playingAsset; + this.endedAsset = null, this.playingAsset = o, (!h || h.identifier !== c) && (h && (this.clearAssetPlayer(h.identifier, s[i]), delete h.error), this.log(`INTERSTITIAL_ASSET_STARTED ${t + 1}/${l} ${ut(o)}`), this.hls.trigger(m.INTERSTITIAL_ASSET_STARTED, { + asset: o, + assetListIndex: t, + event: n, + schedule: s.slice(0), + scheduleIndex: i, + player: e + })), this.bufferAssetPlayer(e, r); + } + bufferAssetPlayer(e, t) { + var s, i; + const { + interstitial: r, + assetItem: n + } = e, o = this.schedule.findEventIndex(r.identifier), c = (s = this.schedule.items) == null ? void 0 : s[o]; + if (!c) + return; + this.setBufferingItem(c), this.bufferingAsset = n; + const l = this.getBufferingPlayer(); + if (l === e) + return; + const h = r.appendInPlace; + if (h && (l == null ? void 0 : l.interstitial.appendInPlace) === !1) + return; + const u = (l == null ? void 0 : l.tracks) || ((i = this.detachedData) == null ? void 0 : i.tracks) || this.requiredTracks; + if (h && n !== this.playingAsset) { + if (!e.tracks) + return; + if (u && !yn(u, e.tracks)) { + const d = new Error(`Asset ${ut(n)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(u)}')`), g = { + fatal: !0, + type: K.OTHER_ERROR, + details: b.INTERSTITIAL_ASSET_ITEM_ERROR, + error: d + }, f = r.findAssetIndex(n); + this.handleAssetItemError(g, r, o, f, d.message); + return; + } + } + this.transferMediaTo(e, t); + } + handleAssetItemError(e, t, s, i, r) { + if (e.details === b.BUFFER_STALLED_ERROR) + return; + const n = t.assetList[i]; + this.warn(`INTERSTITIAL_ASSET_ERROR ${n && ut(n)} ${e.error}`); + const o = n == null ? void 0 : n.identifier, c = this.getAssetPlayerQueueIndex(o), l = this.playerQueue[c] || null, h = this.schedule.items, u = ie({}, e, { + fatal: !1, + errorAction: Pt(!0), + asset: n, + assetListIndex: i, + event: t, + schedule: h, + scheduleIndex: s, + player: l + }); + if (this.hls.trigger(m.INTERSTITIAL_ASSET_ERROR, u), !e.fatal) + return; + const d = this.playingAsset, g = new Error(r); + if (n && (this.clearAssetPlayer(o, null), n.error = g), !t.assetList.some((f) => !f.error)) + t.error = g; + else if (t.appendInPlace) { + for (let f = i; f < t.assetList.length; f++) + this.resetAssetPlayer(t.assetList[f].identifier); + this.updateSchedule(); + } + t.error ? this.primaryFallback(t) : d && d.identifier === o && this.advanceAfterAssetEnded(t, s, i); + } + primaryFallback(e) { + const t = e.timelineStart, s = this.effectivePlayingItem; + if (this.updateSchedule(), s) { + this.log(`Fallback to primary from event "${e.identifier}" start: ${t} pos: ${this.timelinePos} playing: ${s ? We(s) : "<none>"} error: ${e.error}`); + let i = this.timelinePos; + i === -1 && (i = this.hls.startPosition); + const r = this.updateItem(s, i); + this.itemsMatch(s, r) && this.clearInterstitial(e, null), e.appendInPlace && (this.attachPrimary(t, null), this.flushFrontBuffer(t)); + const n = this.schedule.findItemIndexAtTime(i); + this.setSchedulePosition(n); + } else + this.checkStart(); + } + // Asset List loading + onAssetListLoaded(e, t) { + var s; + const i = t.event, r = i.identifier, n = t.assetListResponse.ASSETS; + if (!this.schedule.hasEvent(r)) + return; + const o = i.timelineStart, c = i.duration; + let l = 0; + n.forEach((f, E) => { + const p = parseFloat(f.DURATION); + this.createAsset(i, E, l, o + l, p, f.URI), l += p; + }), i.duration = l, this.log(`Loaded asset-list with duration: ${l} (was: ${c}) ${i}`); + const h = this.waitingItem, u = (h == null ? void 0 : h.event.identifier) === r; + this.updateSchedule(); + const d = (s = this.bufferingItem) == null ? void 0 : s.event; + if (u) { + var g; + const f = this.schedule.findEventIndex(r), E = (g = this.schedule.items) == null ? void 0 : g[f]; + if (E) { + if (!this.playingItem && this.timelinePos > E.end && this.schedule.findItemIndexAtTime(this.timelinePos) !== f) { + i.error = new Error(`Interstitial no longer within playback range ${this.timelinePos} ${i}`), this.primaryFallback(i); + return; + } + this.setBufferingItem(E); + } + this.setSchedulePosition(f); + } else if ((d == null ? void 0 : d.identifier) === r && d.appendInPlace) { + const f = i.assetList[0], E = this.getAssetPlayer(f.identifier), p = this.primaryMedia; + f && E && p && this.bufferAssetPlayer(E, p); + } + } + onError(e, t) { + switch (t.details) { + case b.ASSET_LIST_PARSING_ERROR: + case b.ASSET_LIST_LOAD_ERROR: + case b.ASSET_LIST_LOAD_TIMEOUT: { + const s = t.interstitial; + s && this.primaryFallback(s); + break; + } + case b.BUFFER_STALLED_ERROR: { + this.onTimeupdate(), this.checkBuffer(!0); + break; + } + } + } +} +const jr = 500; +class $h extends Ai { + constructor(e, t, s) { + super(e, t, s, "subtitle-stream-controller", $.SUBTITLE), this.currentTrackId = -1, this.tracksBuffered = [], this.mainDetails = null, this.registerListeners(); + } + onHandlerDestroying() { + this.unregisterListeners(), super.onHandlerDestroying(), this.mainDetails = null; + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(m.LEVEL_LOADED, this.onLevelLoaded, this), e.on(m.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(m.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(m.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(m.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.on(m.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + unregisterListeners() { + super.unregisterListeners(); + const { + hls: e + } = this; + e.off(m.LEVEL_LOADED, this.onLevelLoaded, this), e.off(m.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(m.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(m.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(m.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.off(m.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + startLoad(e, t) { + this.stopLoad(), this.state = C.IDLE, this.setInterval(jr), this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } + onManifestLoading() { + super.onManifestLoading(), this.mainDetails = null; + } + onMediaDetaching(e, t) { + this.tracksBuffered = [], super.onMediaDetaching(e, t); + } + onLevelLoaded(e, t) { + this.mainDetails = t.details; + } + onSubtitleFragProcessed(e, t) { + const { + frag: s, + success: i + } = t; + if (ue(s) && (this.fragPrevious = s), this.state = C.IDLE, !i) + return; + const r = this.tracksBuffered[this.currentTrackId]; + if (!r) + return; + let n; + const o = s.start; + for (let l = 0; l < r.length; l++) + if (o >= r[l].start && o <= r[l].end) { + n = r[l]; + break; + } + const c = s.start + s.duration; + n ? n.end = c : (n = { + start: o, + end: c + }, r.push(n)), this.fragmentTracker.fragBuffered(s), this.fragBufferedComplete(s, null), this.media && this.tick(); + } + onBufferFlushing(e, t) { + const { + startOffset: s, + endOffset: i + } = t; + if (s === 0 && i !== Number.POSITIVE_INFINITY) { + const r = i - 1; + if (r <= 0) + return; + t.endOffsetSubtitles = Math.max(0, r), this.tracksBuffered.forEach((n) => { + for (let o = 0; o < n.length; ) { + if (n[o].end <= r) { + n.shift(); + continue; + } else if (n[o].start < r) + n[o].start = r; + else + break; + o++; + } + }), this.fragmentTracker.removeFragmentsInRange(s, r, $.SUBTITLE); + } + } + // If something goes wrong, proceed to next frag, if we were processing one. + onError(e, t) { + const s = t.frag; + (s == null ? void 0 : s.type) === $.SUBTITLE && (t.details === b.FRAG_GAP && this.fragmentTracker.fragBuffered(s, !0), this.fragCurrent && this.fragCurrent.abortRequests(), this.state !== C.STOPPED && (this.state = C.IDLE)); + } + // Got all new subtitle levels. + onSubtitleTracksUpdated(e, { + subtitleTracks: t + }) { + if (this.levels && Ea(this.levels, t)) { + this.levels = t.map((s) => new Ct(s)); + return; + } + this.tracksBuffered = [], this.levels = t.map((s) => { + const i = new Ct(s); + return this.tracksBuffered[i.id] = [], i; + }), this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, $.SUBTITLE), this.fragPrevious = null, this.mediaBuffer = null; + } + onSubtitleTrackSwitch(e, t) { + var s; + if (this.currentTrackId = t.id, !((s = this.levels) != null && s.length) || this.currentTrackId === -1) { + this.clearInterval(); + return; + } + const i = this.levels[this.currentTrackId]; + i != null && i.details ? this.mediaBuffer = this.mediaBufferTimeRanges : this.mediaBuffer = null, i && this.state !== C.STOPPED && this.setInterval(jr); + } + // Got a new set of subtitle fragments. + onSubtitleTrackLoaded(e, t) { + var s; + const { + currentTrackId: i, + levels: r + } = this, { + details: n, + id: o + } = t; + if (!r) { + this.warn(`Subtitle tracks were reset while loading level ${o}`); + return; + } + const c = r[o]; + if (o >= r.length || !c) + return; + this.log(`Subtitle track ${o} loaded [${n.startSN},${n.endSN}]${n.lastPartSn ? `[part-${n.lastPartSn}-${n.lastPartIndex}]` : ""},duration:${n.totalduration}`), this.mediaBuffer = this.mediaBufferTimeRanges; + let l = 0; + if (n.live || (s = c.details) != null && s.live) { + const u = this.mainDetails; + if (n.deltaUpdateFailed || !u) + return; + const d = u.fragments[0]; + if (!c.details) + n.hasProgramDateTime && u.hasProgramDateTime ? (Es(n, u), l = n.fragmentStart) : d && (l = d.start, ni(n, l)); + else { + var h; + l = this.alignPlaylists(n, c.details, (h = this.levelLastLoaded) == null ? void 0 : h.details), l === 0 && d && (l = d.start, ni(n, l)); + } + } + c.details = n, this.levelLastLoaded = c, o === i && (this.hls.trigger(m.SUBTITLE_TRACK_UPDATED, { + details: n, + id: o, + groupId: t.groupId + }), this.tick(), n.live && !this.fragCurrent && this.media && this.state === C.IDLE && (it(null, n.fragments, this.media.currentTime, 0) || (this.warn("Subtitle playlist not aligned with playback"), c.details = void 0))); + } + _handleFragmentLoadComplete(e) { + const { + frag: t, + payload: s + } = e, i = t.decryptdata, r = this.hls; + if (!this.fragContextChanged(t) && s && s.byteLength > 0 && i != null && i.key && i.iv && ft(i.method)) { + const n = performance.now(); + this.decrypter.decrypt(new Uint8Array(s), i.key.buffer, i.iv.buffer, vi(i.method)).catch((o) => { + throw r.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.FRAG_DECRYPT_ERROR, + fatal: !1, + error: o, + reason: o.message, + frag: t + }), o; + }).then((o) => { + const c = performance.now(); + r.trigger(m.FRAG_DECRYPTED, { + frag: t, + payload: o, + stats: { + tstart: n, + tdecrypt: c + } + }); + }).catch((o) => { + this.warn(`${o.name}: ${o.message}`), this.state = C.IDLE; + }); + } + } + doTick() { + if (!this.media) { + this.state = C.IDLE; + return; + } + if (this.state === C.IDLE) { + const { + currentTrackId: e, + levels: t + } = this, s = t == null ? void 0 : t[e]; + if (!s || !t.length || !s.details || this.waitForLive(s)) + return; + const { + config: i + } = this, r = this.getLoadPosition(), n = q.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], r, i.maxBufferHole), { + end: o, + len: c + } = n, l = s.details, h = this.hls.maxBufferLength + l.levelTargetDuration; + if (c > h) + return; + const u = l.fragments, d = u.length, g = l.edge; + let f = null; + const E = this.fragPrevious; + if (o < g) { + const S = i.maxFragLookUpTolerance, T = o > g - S ? 0 : S; + f = it(E, u, Math.max(u[0].start, o), T), !f && E && E.start < u[0].start && (f = u[0]); + } else + f = u[d - 1]; + if (f = this.filterReplacedPrimary(f, s.details), !f) + return; + const p = f.sn - l.startSN, y = u[p - 1]; + if (y && y.cc === f.cc && this.fragmentTracker.getState(y) === ce.NOT_LOADED && (f = y), this.fragmentTracker.getState(f) === ce.NOT_LOADED) { + const S = this.mapToInitFragWhenRequired(f); + S && this.loadFragment(S, s, o); + } + } + } + loadFragment(e, t, s) { + ue(e) ? super.loadFragment(e, t, s) : this._loadInitSegment(e, t); + } + get mediaBufferTimeRanges() { + return new Gh(this.tracksBuffered[this.currentTrackId] || []); + } +} +class Gh { + constructor(e) { + this.buffered = void 0; + const t = (s, i, r) => { + if (i = i >>> 0, i > r - 1) + throw new DOMException(`Failed to execute '${s}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${r})`); + return e[i][s]; + }; + this.buffered = { + get length() { + return e.length; + }, + end(s) { + return t("end", s, e.length); + }, + start(s) { + return t("start", s, e.length); + } + }; + } +} +const Kh = { + 42: 225, + // lowercase a, acute accent + 92: 233, + // lowercase e, acute accent + 94: 237, + // lowercase i, acute accent + 95: 243, + // lowercase o, acute accent + 96: 250, + // lowercase u, acute accent + 123: 231, + // lowercase c with cedilla + 124: 247, + // division symbol + 125: 209, + // uppercase N tilde + 126: 241, + // lowercase n tilde + 127: 9608, + // Full block + // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F + // THIS MEANS THAT \x50 MUST BE ADDED TO THE VALUES + 128: 174, + // Registered symbol (R) + 129: 176, + // degree sign + 130: 189, + // 1/2 symbol + 131: 191, + // Inverted (open) question mark + 132: 8482, + // Trademark symbol (TM) + 133: 162, + // Cents symbol + 134: 163, + // Pounds sterling + 135: 9834, + // Music 8'th note + 136: 224, + // lowercase a, grave accent + 137: 32, + // transparent space (regular) + 138: 232, + // lowercase e, grave accent + 139: 226, + // lowercase a, circumflex accent + 140: 234, + // lowercase e, circumflex accent + 141: 238, + // lowercase i, circumflex accent + 142: 244, + // lowercase o, circumflex accent + 143: 251, + // lowercase u, circumflex accent + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F + 144: 193, + // capital letter A with acute + 145: 201, + // capital letter E with acute + 146: 211, + // capital letter O with acute + 147: 218, + // capital letter U with acute + 148: 220, + // capital letter U with diaresis + 149: 252, + // lowercase letter U with diaeresis + 150: 8216, + // opening single quote + 151: 161, + // inverted exclamation mark + 152: 42, + // asterisk + 153: 8217, + // closing single quote + 154: 9473, + // box drawings heavy horizontal + 155: 169, + // copyright sign + 156: 8480, + // Service mark + 157: 8226, + // (round) bullet + 158: 8220, + // Left double quotation mark + 159: 8221, + // Right double quotation mark + 160: 192, + // uppercase A, grave accent + 161: 194, + // uppercase A, circumflex + 162: 199, + // uppercase C with cedilla + 163: 200, + // uppercase E, grave accent + 164: 202, + // uppercase E, circumflex + 165: 203, + // capital letter E with diaresis + 166: 235, + // lowercase letter e with diaresis + 167: 206, + // uppercase I, circumflex + 168: 207, + // uppercase I, with diaresis + 169: 239, + // lowercase i, with diaresis + 170: 212, + // uppercase O, circumflex + 171: 217, + // uppercase U, grave accent + 172: 249, + // lowercase u, grave accent + 173: 219, + // uppercase U, circumflex + 174: 171, + // left-pointing double angle quotation mark + 175: 187, + // right-pointing double angle quotation mark + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F + 176: 195, + // Uppercase A, tilde + 177: 227, + // Lowercase a, tilde + 178: 205, + // Uppercase I, acute accent + 179: 204, + // Uppercase I, grave accent + 180: 236, + // Lowercase i, grave accent + 181: 210, + // Uppercase O, grave accent + 182: 242, + // Lowercase o, grave accent + 183: 213, + // Uppercase O, tilde + 184: 245, + // Lowercase o, tilde + 185: 123, + // Open curly brace + 186: 125, + // Closing curly brace + 187: 92, + // Backslash + 188: 94, + // Caret + 189: 95, + // Underscore + 190: 124, + // Pipe (vertical line) + 191: 8764, + // Tilde operator + 192: 196, + // Uppercase A, umlaut + 193: 228, + // Lowercase A, umlaut + 194: 214, + // Uppercase O, umlaut + 195: 246, + // Lowercase o, umlaut + 196: 223, + // Esszett (sharp S) + 197: 165, + // Yen symbol + 198: 164, + // Generic currency sign + 199: 9475, + // Box drawings heavy vertical + 200: 197, + // Uppercase A, ring + 201: 229, + // Lowercase A, ring + 202: 216, + // Uppercase O, stroke + 203: 248, + // Lowercase o, strok + 204: 9487, + // Box drawings heavy down and right + 205: 9491, + // Box drawings heavy down and left + 206: 9495, + // Box drawings heavy up and right + 207: 9499 + // Box drawings heavy up and left +}, _a = (a) => String.fromCharCode(Kh[a] || a), De = 15, Ue = 100, Vh = { + 17: 1, + 18: 3, + 21: 5, + 22: 7, + 23: 9, + 16: 11, + 19: 12, + 20: 14 +}, Hh = { + 17: 2, + 18: 4, + 21: 6, + 22: 8, + 23: 10, + 19: 13, + 20: 15 +}, Yh = { + 25: 1, + 26: 3, + 29: 5, + 30: 7, + 31: 9, + 24: 11, + 27: 12, + 28: 14 +}, Wh = { + 25: 2, + 26: 4, + 29: 6, + 30: 8, + 31: 10, + 27: 13, + 28: 15 +}, qh = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "black", "transparent"]; +class jh { + constructor() { + this.time = null, this.verboseLevel = 0; + } + log(e, t) { + if (this.verboseLevel >= e) { + const s = typeof t == "function" ? t() : t; + J.log(`${this.time} [${e}] ${s}`); + } + } +} +const et = function(e) { + const t = []; + for (let s = 0; s < e.length; s++) + t.push(e[s].toString(16)); + return t; +}; +class Da { + constructor() { + this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1; + } + reset() { + this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1; + } + setStyles(e) { + const t = ["foreground", "underline", "italics", "background", "flash"]; + for (let s = 0; s < t.length; s++) { + const i = t[s]; + e.hasOwnProperty(i) && (this[i] = e[i]); + } + } + isDefault() { + return this.foreground === "white" && !this.underline && !this.italics && this.background === "black" && !this.flash; + } + equals(e) { + return this.foreground === e.foreground && this.underline === e.underline && this.italics === e.italics && this.background === e.background && this.flash === e.flash; + } + copy(e) { + this.foreground = e.foreground, this.underline = e.underline, this.italics = e.italics, this.background = e.background, this.flash = e.flash; + } + toString() { + return "color=" + this.foreground + ", underline=" + this.underline + ", italics=" + this.italics + ", background=" + this.background + ", flash=" + this.flash; + } +} +class Xh { + constructor() { + this.uchar = " ", this.penState = new Da(); + } + reset() { + this.uchar = " ", this.penState.reset(); + } + setChar(e, t) { + this.uchar = e, this.penState.copy(t); + } + setPenState(e) { + this.penState.copy(e); + } + equals(e) { + return this.uchar === e.uchar && this.penState.equals(e.penState); + } + copy(e) { + this.uchar = e.uchar, this.penState.copy(e.penState); + } + isEmpty() { + return this.uchar === " " && this.penState.isDefault(); + } +} +class zh { + constructor(e) { + this.chars = [], this.pos = 0, this.currPenState = new Da(), this.cueStartTime = null, this.logger = void 0; + for (let t = 0; t < Ue; t++) + this.chars.push(new Xh()); + this.logger = e; + } + equals(e) { + for (let t = 0; t < Ue; t++) + if (!this.chars[t].equals(e.chars[t])) + return !1; + return !0; + } + copy(e) { + for (let t = 0; t < Ue; t++) + this.chars[t].copy(e.chars[t]); + } + isEmpty() { + let e = !0; + for (let t = 0; t < Ue; t++) + if (!this.chars[t].isEmpty()) { + e = !1; + break; + } + return e; + } + /** + * Set the cursor to a valid column. + */ + setCursor(e) { + this.pos !== e && (this.pos = e), this.pos < 0 ? (this.logger.log(3, "Negative cursor position " + this.pos), this.pos = 0) : this.pos > Ue && (this.logger.log(3, "Too large cursor position " + this.pos), this.pos = Ue); + } + /** + * Move the cursor relative to current position. + */ + moveCursor(e) { + const t = this.pos + e; + if (e > 1) + for (let s = this.pos + 1; s < t + 1; s++) + this.chars[s].setPenState(this.currPenState); + this.setCursor(t); + } + /** + * Backspace, move one step back and clear character. + */ + backSpace() { + this.moveCursor(-1), this.chars[this.pos].setChar(" ", this.currPenState); + } + insertChar(e) { + e >= 144 && this.backSpace(); + const t = _a(e); + if (this.pos >= Ue) { + this.logger.log(0, () => "Cannot insert " + e.toString(16) + " (" + t + ") at position " + this.pos + ". Skipping it!"); + return; + } + this.chars[this.pos].setChar(t, this.currPenState), this.moveCursor(1); + } + clearFromPos(e) { + let t; + for (t = e; t < Ue; t++) + this.chars[t].reset(); + } + clear() { + this.clearFromPos(0), this.pos = 0, this.currPenState.reset(); + } + clearToEndOfRow() { + this.clearFromPos(this.pos); + } + getTextString() { + const e = []; + let t = !0; + for (let s = 0; s < Ue; s++) { + const i = this.chars[s].uchar; + i !== " " && (t = !1), e.push(i); + } + return t ? "" : e.join(""); + } + setPenStyles(e) { + this.currPenState.setStyles(e), this.chars[this.pos].setPenState(this.currPenState); + } +} +class Vs { + constructor(e) { + this.rows = [], this.currRow = De - 1, this.nrRollUpRows = null, this.lastOutputScreen = null, this.logger = void 0; + for (let t = 0; t < De; t++) + this.rows.push(new zh(e)); + this.logger = e; + } + reset() { + for (let e = 0; e < De; e++) + this.rows[e].clear(); + this.currRow = De - 1; + } + equals(e) { + let t = !0; + for (let s = 0; s < De; s++) + if (!this.rows[s].equals(e.rows[s])) { + t = !1; + break; + } + return t; + } + copy(e) { + for (let t = 0; t < De; t++) + this.rows[t].copy(e.rows[t]); + } + isEmpty() { + let e = !0; + for (let t = 0; t < De; t++) + if (!this.rows[t].isEmpty()) { + e = !1; + break; + } + return e; + } + backSpace() { + this.rows[this.currRow].backSpace(); + } + clearToEndOfRow() { + this.rows[this.currRow].clearToEndOfRow(); + } + /** + * Insert a character (without styling) in the current row. + */ + insertChar(e) { + this.rows[this.currRow].insertChar(e); + } + setPen(e) { + this.rows[this.currRow].setPenStyles(e); + } + moveCursor(e) { + this.rows[this.currRow].moveCursor(e); + } + setCursor(e) { + this.logger.log(2, "setCursor: " + e), this.rows[this.currRow].setCursor(e); + } + setPAC(e) { + this.logger.log(2, () => "pacData = " + ae(e)); + let t = e.row - 1; + if (this.nrRollUpRows && t < this.nrRollUpRows - 1 && (t = this.nrRollUpRows - 1), this.nrRollUpRows && this.currRow !== t) { + for (let o = 0; o < De; o++) + this.rows[o].clear(); + const r = this.currRow + 1 - this.nrRollUpRows, n = this.lastOutputScreen; + if (n) { + const o = n.rows[r].cueStartTime, c = this.logger.time; + if (o !== null && c !== null && o < c) + for (let l = 0; l < this.nrRollUpRows; l++) + this.rows[t - this.nrRollUpRows + l + 1].copy(n.rows[r + l]); + } + } + this.currRow = t; + const s = this.rows[this.currRow]; + if (e.indent !== null) { + const r = e.indent, n = Math.max(r - 1, 0); + s.setCursor(e.indent), e.color = s.chars[n].penState.foreground; + } + const i = { + foreground: e.color, + underline: e.underline, + italics: e.italics, + background: "black", + flash: !1 + }; + this.setPen(i); + } + /** + * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility). + */ + setBkgData(e) { + this.logger.log(2, () => "bkgData = " + ae(e)), this.backSpace(), this.setPen(e), this.insertChar(32); + } + setRollUpRows(e) { + this.nrRollUpRows = e; + } + rollUp() { + if (this.nrRollUpRows === null) { + this.logger.log(3, "roll_up but nrRollUpRows not set yet"); + return; + } + this.logger.log(1, () => this.getDisplayText()); + const e = this.currRow + 1 - this.nrRollUpRows, t = this.rows.splice(e, 1)[0]; + t.clear(), this.rows.splice(this.currRow, 0, t), this.logger.log(2, "Rolling up"); + } + /** + * Get all non-empty rows with as unicode text. + */ + getDisplayText(e) { + e = e || !1; + const t = []; + let s = "", i = -1; + for (let r = 0; r < De; r++) { + const n = this.rows[r].getTextString(); + n && (i = r + 1, e ? t.push("Row " + i + ": '" + n + "'") : t.push(n.trim())); + } + return t.length > 0 && (e ? s = "[" + t.join(" | ") + "]" : s = t.join(` +`)), s; + } + getTextAndFormat() { + return this.rows; + } +} +class Xr { + constructor(e, t, s) { + this.chNr = void 0, this.outputFilter = void 0, this.mode = void 0, this.verbose = void 0, this.displayedMemory = void 0, this.nonDisplayedMemory = void 0, this.lastOutputScreen = void 0, this.currRollUpRow = void 0, this.writeScreen = void 0, this.cueStartTime = void 0, this.logger = void 0, this.chNr = e, this.outputFilter = t, this.mode = null, this.verbose = 0, this.displayedMemory = new Vs(s), this.nonDisplayedMemory = new Vs(s), this.lastOutputScreen = new Vs(s), this.currRollUpRow = this.displayedMemory.rows[De - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null, this.logger = s; + } + reset() { + this.mode = null, this.displayedMemory.reset(), this.nonDisplayedMemory.reset(), this.lastOutputScreen.reset(), this.outputFilter.reset(), this.currRollUpRow = this.displayedMemory.rows[De - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null; + } + getHandler() { + return this.outputFilter; + } + setHandler(e) { + this.outputFilter = e; + } + setPAC(e) { + this.writeScreen.setPAC(e); + } + setBkgData(e) { + this.writeScreen.setBkgData(e); + } + setMode(e) { + e !== this.mode && (this.mode = e, this.logger.log(2, () => "MODE=" + e), this.mode === "MODE_POP-ON" ? this.writeScreen = this.nonDisplayedMemory : (this.writeScreen = this.displayedMemory, this.writeScreen.reset()), this.mode !== "MODE_ROLL-UP" && (this.displayedMemory.nrRollUpRows = null, this.nonDisplayedMemory.nrRollUpRows = null), this.mode = e); + } + insertChars(e) { + for (let s = 0; s < e.length; s++) + this.writeScreen.insertChar(e[s]); + const t = this.writeScreen === this.displayedMemory ? "DISP" : "NON_DISP"; + this.logger.log(2, () => t + ": " + this.writeScreen.getDisplayText(!0)), (this.mode === "MODE_PAINT-ON" || this.mode === "MODE_ROLL-UP") && (this.logger.log(1, () => "DISPLAYED: " + this.displayedMemory.getDisplayText(!0)), this.outputDataUpdate()); + } + ccRCL() { + this.logger.log(2, "RCL - Resume Caption Loading"), this.setMode("MODE_POP-ON"); + } + ccBS() { + this.logger.log(2, "BS - BackSpace"), this.mode !== "MODE_TEXT" && (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate()); + } + ccAOF() { + } + ccAON() { + } + ccDER() { + this.logger.log(2, "DER- Delete to End of Row"), this.writeScreen.clearToEndOfRow(), this.outputDataUpdate(); + } + ccRU(e) { + this.logger.log(2, "RU(" + e + ") - Roll Up"), this.writeScreen = this.displayedMemory, this.setMode("MODE_ROLL-UP"), this.writeScreen.setRollUpRows(e); + } + ccFON() { + this.logger.log(2, "FON - Flash On"), this.writeScreen.setPen({ + flash: !0 + }); + } + ccRDC() { + this.logger.log(2, "RDC - Resume Direct Captioning"), this.setMode("MODE_PAINT-ON"); + } + ccTR() { + this.logger.log(2, "TR"), this.setMode("MODE_TEXT"); + } + ccRTD() { + this.logger.log(2, "RTD"), this.setMode("MODE_TEXT"); + } + ccEDM() { + this.logger.log(2, "EDM - Erase Displayed Memory"), this.displayedMemory.reset(), this.outputDataUpdate(!0); + } + ccCR() { + this.logger.log(2, "CR - Carriage Return"), this.writeScreen.rollUp(), this.outputDataUpdate(!0); + } + ccENM() { + this.logger.log(2, "ENM - Erase Non-displayed Memory"), this.nonDisplayedMemory.reset(); + } + ccEOC() { + if (this.logger.log(2, "EOC - End Of Caption"), this.mode === "MODE_POP-ON") { + const e = this.displayedMemory; + this.displayedMemory = this.nonDisplayedMemory, this.nonDisplayedMemory = e, this.writeScreen = this.nonDisplayedMemory, this.logger.log(1, () => "DISP: " + this.displayedMemory.getDisplayText()); + } + this.outputDataUpdate(!0); + } + ccTO(e) { + this.logger.log(2, "TO(" + e + ") - Tab Offset"), this.writeScreen.moveCursor(e); + } + ccMIDROW(e) { + const t = { + flash: !1 + }; + if (t.underline = e % 2 === 1, t.italics = e >= 46, t.italics) + t.foreground = "white"; + else { + const s = Math.floor(e / 2) - 16, i = ["white", "green", "blue", "cyan", "red", "yellow", "magenta"]; + t.foreground = i[s]; + } + this.logger.log(2, "MIDROW: " + ae(t)), this.writeScreen.setPen(t); + } + outputDataUpdate(e = !1) { + const t = this.logger.time; + t !== null && this.outputFilter && (this.cueStartTime === null && !this.displayedMemory.isEmpty() ? this.cueStartTime = t : this.displayedMemory.equals(this.lastOutputScreen) || (this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen), e && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(), this.cueStartTime = this.displayedMemory.isEmpty() ? null : t), this.lastOutputScreen.copy(this.displayedMemory)); + } + cueSplitAtTime(e) { + this.outputFilter && (this.displayedMemory.isEmpty() || (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, e, this.displayedMemory), this.cueStartTime = e)); + } +} +class zr { + constructor(e, t, s) { + this.channels = void 0, this.currentChannel = 0, this.cmdHistory = Zh(), this.logger = void 0; + const i = this.logger = new jh(); + this.channels = [null, new Xr(e, t, i), new Xr(e + 1, s, i)]; + } + getHandler(e) { + return this.channels[e].getHandler(); + } + setHandler(e, t) { + this.channels[e].setHandler(t); + } + /** + * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs. + */ + addData(e, t) { + this.logger.time = e; + for (let s = 0; s < t.length; s += 2) { + const i = t[s] & 127, r = t[s + 1] & 127; + let n = !1, o = null; + if (i === 0 && r === 0) + continue; + this.logger.log(3, () => "[" + et([t[s], t[s + 1]]) + "] -> (" + et([i, r]) + ")"); + const c = this.cmdHistory; + if (i >= 16 && i <= 31) { + if (Qh(i, r, c)) { + zt(null, null, c), this.logger.log(3, () => "Repeated command (" + et([i, r]) + ") is dropped"); + continue; + } + zt(i, r, this.cmdHistory), n = this.parseCmd(i, r), n || (n = this.parseMidrow(i, r)), n || (n = this.parsePAC(i, r)), n || (n = this.parseBackgroundAttributes(i, r)); + } else + zt(null, null, c); + if (!n && (o = this.parseChars(i, r), o)) { + const h = this.currentChannel; + h && h > 0 ? this.channels[h].insertChars(o) : this.logger.log(2, "No channel found yet. TEXT-MODE?"); + } + !n && !o && this.logger.log(2, () => "Couldn't parse cleaned data " + et([i, r]) + " orig: " + et([t[s], t[s + 1]])); + } + } + /** + * Parse Command. + * @returns True if a command was found + */ + parseCmd(e, t) { + const s = (e === 20 || e === 28 || e === 21 || e === 29) && t >= 32 && t <= 47, i = (e === 23 || e === 31) && t >= 33 && t <= 35; + if (!(s || i)) + return !1; + const r = e === 20 || e === 21 || e === 23 ? 1 : 2, n = this.channels[r]; + return e === 20 || e === 21 || e === 28 || e === 29 ? t === 32 ? n.ccRCL() : t === 33 ? n.ccBS() : t === 34 ? n.ccAOF() : t === 35 ? n.ccAON() : t === 36 ? n.ccDER() : t === 37 ? n.ccRU(2) : t === 38 ? n.ccRU(3) : t === 39 ? n.ccRU(4) : t === 40 ? n.ccFON() : t === 41 ? n.ccRDC() : t === 42 ? n.ccTR() : t === 43 ? n.ccRTD() : t === 44 ? n.ccEDM() : t === 45 ? n.ccCR() : t === 46 ? n.ccENM() : t === 47 && n.ccEOC() : n.ccTO(t - 32), this.currentChannel = r, !0; + } + /** + * Parse midrow styling command + */ + parseMidrow(e, t) { + let s = 0; + if ((e === 17 || e === 25) && t >= 32 && t <= 47) { + if (e === 17 ? s = 1 : s = 2, s !== this.currentChannel) + return this.logger.log(0, "Mismatch channel in midrow parsing"), !1; + const i = this.channels[s]; + return i ? (i.ccMIDROW(t), this.logger.log(3, () => "MIDROW (" + et([e, t]) + ")"), !0) : !1; + } + return !1; + } + /** + * Parse Preable Access Codes (Table 53). + * @returns {Boolean} Tells if PAC found + */ + parsePAC(e, t) { + let s; + const i = (e >= 17 && e <= 23 || e >= 25 && e <= 31) && t >= 64 && t <= 127, r = (e === 16 || e === 24) && t >= 64 && t <= 95; + if (!(i || r)) + return !1; + const n = e <= 23 ? 1 : 2; + t >= 64 && t <= 95 ? s = n === 1 ? Vh[e] : Yh[e] : s = n === 1 ? Hh[e] : Wh[e]; + const o = this.channels[n]; + return o ? (o.setPAC(this.interpretPAC(s, t)), this.currentChannel = n, !0) : !1; + } + /** + * Interpret the second byte of the pac, and return the information. + * @returns pacData with style parameters + */ + interpretPAC(e, t) { + let s; + const i = { + color: null, + italics: !1, + indent: null, + underline: !1, + row: e + }; + return t > 95 ? s = t - 96 : s = t - 64, i.underline = (s & 1) === 1, s <= 13 ? i.color = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "white"][Math.floor(s / 2)] : s <= 15 ? (i.italics = !0, i.color = "white") : i.indent = Math.floor((s - 16) / 2) * 4, i; + } + /** + * Parse characters. + * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise. + */ + parseChars(e, t) { + let s, i = null, r = null; + if (e >= 25 ? (s = 2, r = e - 8) : (s = 1, r = e), r >= 17 && r <= 19) { + let n; + r === 17 ? n = t + 80 : r === 18 ? n = t + 112 : n = t + 144, this.logger.log(2, () => "Special char '" + _a(n) + "' in channel " + s), i = [n]; + } else e >= 32 && e <= 127 && (i = t === 0 ? [e] : [e, t]); + return i && this.logger.log(3, () => "Char codes = " + et(i).join(",")), i; + } + /** + * Parse extended background attributes as well as new foreground color black. + * @returns True if background attributes are found + */ + parseBackgroundAttributes(e, t) { + const s = (e === 16 || e === 24) && t >= 32 && t <= 47, i = (e === 23 || e === 31) && t >= 45 && t <= 47; + if (!(s || i)) + return !1; + let r; + const n = {}; + e === 16 || e === 24 ? (r = Math.floor((t - 32) / 2), n.background = qh[r], t % 2 === 1 && (n.background = n.background + "_semi")) : t === 45 ? n.background = "transparent" : (n.foreground = "black", t === 47 && (n.underline = !0)); + const o = e <= 23 ? 1 : 2; + return this.channels[o].setBkgData(n), !0; + } + /** + * Reset state of parser and its channels. + */ + reset() { + for (let e = 0; e < Object.keys(this.channels).length; e++) { + const t = this.channels[e]; + t && t.reset(); + } + zt(null, null, this.cmdHistory); + } + /** + * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty. + */ + cueSplitAtTime(e) { + for (let t = 0; t < this.channels.length; t++) { + const s = this.channels[t]; + s && s.cueSplitAtTime(e); + } + } +} +function zt(a, e, t) { + t.a = a, t.b = e; +} +function Qh(a, e, t) { + return t.a === a && t.b === e; +} +function Zh() { + return { + a: null, + b: null + }; +} +var Oi = function() { + if (ps != null && ps.VTTCue) + return self.VTTCue; + const a = ["", "lr", "rl"], e = ["start", "middle", "end", "left", "right"]; + function t(o, c) { + if (typeof c != "string" || !Array.isArray(o)) + return !1; + const l = c.toLowerCase(); + return ~o.indexOf(l) ? l : !1; + } + function s(o) { + return t(a, o); + } + function i(o) { + return t(e, o); + } + function r(o, ...c) { + let l = 1; + for (; l < arguments.length; l++) { + const h = arguments[l]; + for (const u in h) + o[u] = h[u]; + } + return o; + } + function n(o, c, l) { + const h = this, u = { + enumerable: !0 + }; + h.hasBeenReset = !1; + let d = "", g = !1, f = o, E = c, p = l, y = null, S = "", T = !0, v = "auto", x = "start", _ = 50, A = "middle", R = 50, D = "middle"; + Object.defineProperty(h, "id", r({}, u, { + get: function() { + return d; + }, + set: function(L) { + d = "" + L; + } + })), Object.defineProperty(h, "pauseOnExit", r({}, u, { + get: function() { + return g; + }, + set: function(L) { + g = !!L; + } + })), Object.defineProperty(h, "startTime", r({}, u, { + get: function() { + return f; + }, + set: function(L) { + if (typeof L != "number") + throw new TypeError("Start time must be set to a number."); + f = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "endTime", r({}, u, { + get: function() { + return E; + }, + set: function(L) { + if (typeof L != "number") + throw new TypeError("End time must be set to a number."); + E = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "text", r({}, u, { + get: function() { + return p; + }, + set: function(L) { + p = "" + L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "region", r({}, u, { + get: function() { + return y; + }, + set: function(L) { + y = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "vertical", r({}, u, { + get: function() { + return S; + }, + set: function(L) { + const k = s(L); + if (k === !1) + throw new SyntaxError("An invalid or illegal string was specified."); + S = k, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "snapToLines", r({}, u, { + get: function() { + return T; + }, + set: function(L) { + T = !!L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "line", r({}, u, { + get: function() { + return v; + }, + set: function(L) { + if (typeof L != "number" && L !== "auto") + throw new SyntaxError("An invalid number or illegal string was specified."); + v = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "lineAlign", r({}, u, { + get: function() { + return x; + }, + set: function(L) { + const k = i(L); + if (!k) + throw new SyntaxError("An invalid or illegal string was specified."); + x = k, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "position", r({}, u, { + get: function() { + return _; + }, + set: function(L) { + if (L < 0 || L > 100) + throw new Error("Position must be between 0 and 100."); + _ = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "positionAlign", r({}, u, { + get: function() { + return A; + }, + set: function(L) { + const k = i(L); + if (!k) + throw new SyntaxError("An invalid or illegal string was specified."); + A = k, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "size", r({}, u, { + get: function() { + return R; + }, + set: function(L) { + if (L < 0 || L > 100) + throw new Error("Size must be between 0 and 100."); + R = L, this.hasBeenReset = !0; + } + })), Object.defineProperty(h, "align", r({}, u, { + get: function() { + return D; + }, + set: function(L) { + const k = i(L); + if (!k) + throw new SyntaxError("An invalid or illegal string was specified."); + D = k, this.hasBeenReset = !0; + } + })), h.displayState = void 0; + } + return n.prototype.getCueAsHTML = function() { + return self.WebVTT.convertCueToDOMTree(self, this.text); + }, n; +}(); +class Jh { + decode(e, t) { + if (!e) + return ""; + if (typeof e != "string") + throw new Error("Error - expected string data."); + return decodeURIComponent(encodeURIComponent(e)); + } +} +function Ca(a) { + function e(s, i, r, n) { + return (s | 0) * 3600 + (i | 0) * 60 + (r | 0) + parseFloat(n || 0); + } + const t = a.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/); + return t ? parseFloat(t[2]) > 59 ? e(t[2], t[3], 0, t[4]) : e(t[1], t[2], t[3], t[4]) : null; +} +class eu { + constructor() { + this.values = /* @__PURE__ */ Object.create(null); + } + // Only accept the first assignment to any key. + set(e, t) { + !this.get(e) && t !== "" && (this.values[e] = t); + } + // Return the value for a key, or a default value. + // If 'defaultKey' is passed then 'dflt' is assumed to be an object with + // a number of possible default values as properties where 'defaultKey' is + // the key of the property that will be chosen; otherwise it's assumed to be + // a single value. + get(e, t, s) { + return s ? this.has(e) ? this.values[e] : t[s] : this.has(e) ? this.values[e] : t; + } + // Check whether we have a value for a key. + has(e) { + return e in this.values; + } + // Accept a setting if its one of the given alternatives. + alt(e, t, s) { + for (let i = 0; i < s.length; ++i) + if (t === s[i]) { + this.set(e, t); + break; + } + } + // Accept a setting if its a valid (signed) integer. + integer(e, t) { + /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10)); + } + // Accept a setting if its a valid percentage. + percent(e, t) { + if (/^([\d]{1,3})(\.[\d]*)?%$/.test(t)) { + const s = parseFloat(t); + if (s >= 0 && s <= 100) + return this.set(e, s), !0; + } + return !1; + } +} +function Pa(a, e, t, s) { + const i = s ? a.split(s) : [a]; + for (const r in i) { + if (typeof i[r] != "string") + continue; + const n = i[r].split(t); + if (n.length !== 2) + continue; + const o = n[0], c = n[1]; + e(o, c); + } +} +const di = new Oi(0, 0, ""), Qt = di.align === "middle" ? "middle" : "center"; +function tu(a, e, t) { + const s = a; + function i() { + const o = Ca(a); + if (o === null) + throw new Error("Malformed timestamp: " + s); + return a = a.replace(/^[^\sa-zA-Z-]+/, ""), o; + } + function r(o, c) { + const l = new eu(); + Pa(o, function(d, g) { + let f; + switch (d) { + case "region": + for (let E = t.length - 1; E >= 0; E--) + if (t[E].id === g) { + l.set(d, t[E].region); + break; + } + break; + case "vertical": + l.alt(d, g, ["rl", "lr"]); + break; + case "line": + f = g.split(","), l.integer(d, f[0]), l.percent(d, f[0]) && l.set("snapToLines", !1), l.alt(d, f[0], ["auto"]), f.length === 2 && l.alt("lineAlign", f[1], ["start", Qt, "end"]); + break; + case "position": + f = g.split(","), l.percent(d, f[0]), f.length === 2 && l.alt("positionAlign", f[1], ["start", Qt, "end", "line-left", "line-right", "auto"]); + break; + case "size": + l.percent(d, g); + break; + case "align": + l.alt(d, g, ["start", Qt, "end", "left", "right"]); + break; + } + }, /:/, /\s/), c.region = l.get("region", null), c.vertical = l.get("vertical", ""); + let h = l.get("line", "auto"); + h === "auto" && di.line === -1 && (h = -1), c.line = h, c.lineAlign = l.get("lineAlign", "start"), c.snapToLines = l.get("snapToLines", !0), c.size = l.get("size", 100), c.align = l.get("align", Qt); + let u = l.get("position", "auto"); + u === "auto" && di.position === 50 && (u = c.align === "start" || c.align === "left" ? 0 : c.align === "end" || c.align === "right" ? 100 : 50), c.position = u; + } + function n() { + a = a.replace(/^\s+/, ""); + } + if (n(), e.startTime = i(), n(), a.slice(0, 3) !== "-->") + throw new Error("Malformed time stamp (time stamps must be separated by '-->'): " + s); + a = a.slice(3), n(), e.endTime = i(), n(), r(a, e); +} +function ka(a) { + return a.replace(/<br(?: \/)?>/gi, ` +`); +} +class su { + constructor() { + this.state = "INITIAL", this.buffer = "", this.decoder = new Jh(), this.regionList = [], this.cue = null, this.oncue = void 0, this.onparsingerror = void 0, this.onflush = void 0; + } + parse(e) { + const t = this; + e && (t.buffer += t.decoder.decode(e, { + stream: !0 + })); + function s() { + let r = t.buffer, n = 0; + for (r = ka(r); n < r.length && r[n] !== "\r" && r[n] !== ` +`; ) + ++n; + const o = r.slice(0, n); + return r[n] === "\r" && ++n, r[n] === ` +` && ++n, t.buffer = r.slice(n), o; + } + function i(r) { + Pa(r, function(n, o) { + }, /:/); + } + try { + let r = ""; + if (t.state === "INITIAL") { + if (!/\r\n|\n/.test(t.buffer)) + return this; + r = s(); + const o = r.match(/^()?WEBVTT([ \t].*)?$/); + if (!(o != null && o[0])) + throw new Error("Malformed WebVTT signature."); + t.state = "HEADER"; + } + let n = !1; + for (; t.buffer; ) { + if (!/\r\n|\n/.test(t.buffer)) + return this; + switch (n ? n = !1 : r = s(), t.state) { + case "HEADER": + /:/.test(r) ? i(r) : r || (t.state = "ID"); + continue; + case "NOTE": + r || (t.state = "ID"); + continue; + case "ID": + if (/^NOTE($|[ \t])/.test(r)) { + t.state = "NOTE"; + break; + } + if (!r) + continue; + if (t.cue = new Oi(0, 0, ""), t.state = "CUE", r.indexOf("-->") === -1) { + t.cue.id = r; + continue; + } + case "CUE": + if (!t.cue) { + t.state = "BADCUE"; + continue; + } + try { + tu(r, t.cue, t.regionList); + } catch { + t.cue = null, t.state = "BADCUE"; + continue; + } + t.state = "CUETEXT"; + continue; + case "CUETEXT": + { + const o = r.indexOf("-->") !== -1; + if (!r || o && (n = !0)) { + t.oncue && t.cue && t.oncue(t.cue), t.cue = null, t.state = "ID"; + continue; + } + if (t.cue === null) + continue; + t.cue.text && (t.cue.text += ` +`), t.cue.text += r; + } + continue; + case "BADCUE": + r || (t.state = "ID"); + } + } + } catch { + t.state === "CUETEXT" && t.cue && t.oncue && t.oncue(t.cue), t.cue = null, t.state = t.state === "INITIAL" ? "BADWEBVTT" : "BADCUE"; + } + return this; + } + flush() { + const e = this; + try { + if ((e.cue || e.state === "HEADER") && (e.buffer += ` + +`, e.parse()), e.state === "INITIAL" || e.state === "BADWEBVTT") + throw new Error("Malformed WebVTT signature."); + } catch (t) { + e.onparsingerror && e.onparsingerror(t); + } + return e.onflush && e.onflush(), this; + } +} +const iu = /\r\n|\n\r|\n|\r/g, Hs = function(e, t, s = 0) { + return e.slice(s, s + t.length) === t; +}, ru = function(e) { + let t = parseInt(e.slice(-3)); + const s = parseInt(e.slice(-6, -4)), i = parseInt(e.slice(-9, -7)), r = e.length > 9 ? parseInt(e.substring(0, e.indexOf(":"))) : 0; + if (!N(t) || !N(s) || !N(i) || !N(r)) + throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`); + return t += 1e3 * s, t += 60 * 1e3 * i, t += 60 * 60 * 1e3 * r, t; +}; +function Fi(a, e, t) { + return bt(a.toString()) + bt(e.toString()) + bt(t); +} +const nu = function(e, t, s) { + let i = e[t], r = e[i.prevCC]; + if (!r || !r.new && i.new) { + e.ccOffset = e.presentationOffset = i.start, i.new = !1; + return; + } + for (; (n = r) != null && n.new; ) { + var n; + e.ccOffset += i.start - r.start, i.new = !1, i = r, r = e[i.prevCC]; + } + e.presentationOffset = s; +}; +function au(a, e, t, s, i, r, n) { + const o = new su(), c = xe(new Uint8Array(a)).trim().replace(iu, ` +`).split(` +`), l = [], h = e ? vc(e.baseTime, e.timescale) : 0; + let u = "00:00.000", d = 0, g = 0, f, E = !0; + o.oncue = function(p) { + const y = t[s]; + let S = t.ccOffset; + const T = (d - h) / 9e4; + if (y != null && y.new && (g !== void 0 ? S = t.ccOffset = y.start : nu(t, s, T)), T) { + if (!e) { + f = new Error("Missing initPTS for VTT MPEGTS"); + return; + } + S = T - t.presentationOffset; + } + const v = p.endTime - p.startTime, x = Ie((p.startTime + S - g) * 9e4, i * 9e4) / 9e4; + p.startTime = Math.max(x, 0), p.endTime = Math.max(x + v, 0); + const _ = p.text.trim(); + p.text = decodeURIComponent(encodeURIComponent(_)), p.id || (p.id = Fi(p.startTime, p.endTime, _)), p.endTime > 0 && l.push(p); + }, o.onparsingerror = function(p) { + f = p; + }, o.onflush = function() { + if (f) { + n(f); + return; + } + r(l); + }, c.forEach((p) => { + if (E) + if (Hs(p, "X-TIMESTAMP-MAP=")) { + E = !1, p.slice(16).split(",").forEach((y) => { + Hs(y, "LOCAL:") ? u = y.slice(6) : Hs(y, "MPEGTS:") && (d = parseInt(y.slice(7))); + }); + try { + g = ru(u) / 1e3; + } catch (y) { + f = y; + } + return; + } else p === "" && (E = !1); + o.parse(p + ` +`); + }), o.flush(); +} +const Ys = "stpp.ttml.im1t", wa = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/, Oa = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/, ou = { + left: "start", + center: "center", + right: "end", + start: "start", + end: "end" +}; +function Qr(a, e, t, s) { + const i = j(new Uint8Array(a), ["mdat"]); + if (i.length === 0) { + s(new Error("Could not parse IMSC1 mdat")); + return; + } + const r = i.map((o) => xe(o)), n = Sc(e.baseTime, 1, e.timescale); + try { + r.forEach((o) => t(lu(o, n))); + } catch (o) { + s(o); + } +} +function lu(a, e) { + const i = new DOMParser().parseFromString(a, "text/xml").getElementsByTagName("tt")[0]; + if (!i) + throw new Error("Invalid ttml"); + const r = { + frameRate: 30, + subFrameRate: 1, + frameRateMultiplier: 0, + tickRate: 0 + }, n = Object.keys(r).reduce((u, d) => (u[d] = i.getAttribute(`ttp:${d}`) || r[d], u), {}), o = i.getAttribute("xml:space") !== "preserve", c = Zr(Ws(i, "styling", "style")), l = Zr(Ws(i, "layout", "region")), h = Ws(i, "body", "[begin]"); + return [].map.call(h, (u) => { + const d = Fa(u, o); + if (!d || !u.hasAttribute("begin")) + return null; + const g = js(u.getAttribute("begin"), n), f = js(u.getAttribute("dur"), n); + let E = js(u.getAttribute("end"), n); + if (g === null) + throw Jr(u); + if (E === null) { + if (f === null) + throw Jr(u); + E = g + f; + } + const p = new Oi(g - e, E - e, d); + p.id = Fi(p.startTime, p.endTime, p.text); + const y = l[u.getAttribute("region")], S = c[u.getAttribute("style")], T = cu(y, S, c), { + textAlign: v + } = T; + if (v) { + const x = ou[v]; + x && (p.lineAlign = x), p.align = v; + } + return ie(p, T), p; + }).filter((u) => u !== null); +} +function Ws(a, e, t) { + const s = a.getElementsByTagName(e)[0]; + return s ? [].slice.call(s.querySelectorAll(t)) : []; +} +function Zr(a) { + return a.reduce((e, t) => { + const s = t.getAttribute("xml:id"); + return s && (e[s] = t), e; + }, {}); +} +function Fa(a, e) { + return [].slice.call(a.childNodes).reduce((t, s, i) => { + var r; + return s.nodeName === "br" && i ? t + ` +` : (r = s.childNodes) != null && r.length ? Fa(s, e) : e ? t + s.textContent.trim().replace(/\s+/g, " ") : t + s.textContent; + }, ""); +} +function cu(a, e, t) { + const s = "http://www.w3.org/ns/ttml#styling"; + let i = null; + const r = [ + "displayAlign", + "textAlign", + "color", + "backgroundColor", + "fontSize", + "fontFamily" + // 'fontWeight', + // 'lineHeight', + // 'wrapOption', + // 'fontStyle', + // 'direction', + // 'writingMode' + ], n = a != null && a.hasAttribute("style") ? a.getAttribute("style") : null; + return n && t.hasOwnProperty(n) && (i = t[n]), r.reduce((o, c) => { + const l = qs(e, s, c) || qs(a, s, c) || qs(i, s, c); + return l && (o[c] = l), o; + }, {}); +} +function qs(a, e, t) { + return a && a.hasAttributeNS(e, t) ? a.getAttributeNS(e, t) : null; +} +function Jr(a) { + return new Error(`Could not parse ttml timestamp ${a}`); +} +function js(a, e) { + if (!a) + return null; + let t = Ca(a); + return t === null && (wa.test(a) ? t = hu(a, e) : Oa.test(a) && (t = uu(a, e))), t; +} +function hu(a, e) { + const t = wa.exec(a), s = (t[4] | 0) + (t[5] | 0) / e.subFrameRate; + return (t[1] | 0) * 3600 + (t[2] | 0) * 60 + (t[3] | 0) + s / e.frameRate; +} +function uu(a, e) { + const t = Oa.exec(a), s = Number(t[1]); + switch (t[2]) { + case "h": + return s * 3600; + case "m": + return s * 60; + case "ms": + return s * 1e3; + case "f": + return s / e.frameRate; + case "t": + return s / e.tickRate; + } + return s; +} +class Zt { + constructor(e, t) { + this.timelineController = void 0, this.cueRanges = [], this.trackName = void 0, this.startTime = null, this.endTime = null, this.screen = null, this.timelineController = e, this.trackName = t; + } + dispatchCue() { + this.startTime !== null && (this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges), this.startTime = null); + } + newCue(e, t, s) { + (this.startTime === null || this.startTime > e) && (this.startTime = e), this.endTime = t, this.screen = s, this.timelineController.createCaptionsTrack(this.trackName); + } + reset() { + this.cueRanges = [], this.startTime = null; + } +} +class du { + constructor(e) { + this.hls = void 0, this.media = null, this.config = void 0, this.enabled = !0, this.Cues = void 0, this.textTracks = [], this.tracks = [], this.initPTS = [], this.unparsedVttFrags = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.cea608Parser1 = void 0, this.cea608Parser2 = void 0, this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = tn(), this.captionsProperties = void 0, this.hls = e, this.config = e.config, this.Cues = e.config.cueHandler, this.captionsProperties = { + textTrack1: { + label: this.config.captionsTextTrack1Label, + languageCode: this.config.captionsTextTrack1LanguageCode + }, + textTrack2: { + label: this.config.captionsTextTrack2Label, + languageCode: this.config.captionsTextTrack2LanguageCode + }, + textTrack3: { + label: this.config.captionsTextTrack3Label, + languageCode: this.config.captionsTextTrack3LanguageCode + }, + textTrack4: { + label: this.config.captionsTextTrack4Label, + languageCode: this.config.captionsTextTrack4LanguageCode + } + }, e.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(m.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(m.FRAG_LOADING, this.onFragLoading, this), e.on(m.FRAG_LOADED, this.onFragLoaded, this), e.on(m.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.on(m.FRAG_DECRYPTED, this.onFragDecrypted, this), e.on(m.INIT_PTS_FOUND, this.onInitPtsFound, this), e.on(m.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.on(m.BUFFER_FLUSHING, this.onBufferFlushing, this); + } + destroy() { + const { + hls: e + } = this; + e.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(m.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(m.FRAG_LOADING, this.onFragLoading, this), e.off(m.FRAG_LOADED, this.onFragLoaded, this), e.off(m.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), e.off(m.FRAG_DECRYPTED, this.onFragDecrypted, this), e.off(m.INIT_PTS_FOUND, this.onInitPtsFound, this), e.off(m.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), e.off(m.BUFFER_FLUSHING, this.onBufferFlushing, this), this.hls = this.config = this.media = null, this.cea608Parser1 = this.cea608Parser2 = void 0; + } + initCea608Parsers() { + const e = new Zt(this, "textTrack1"), t = new Zt(this, "textTrack2"), s = new Zt(this, "textTrack3"), i = new Zt(this, "textTrack4"); + this.cea608Parser1 = new zr(1, e, t), this.cea608Parser2 = new zr(3, s, i); + } + addCues(e, t, s, i, r) { + let n = !1; + for (let o = r.length; o--; ) { + const c = r[o], l = fu(c[0], c[1], t, s); + if (l >= 0 && (c[0] = Math.min(c[0], t), c[1] = Math.max(c[1], s), n = !0, l / (s - t) > 0.5)) + return; + } + if (n || r.push([t, s]), this.config.renderTextTracksNatively) { + const o = this.captionsTracks[e]; + this.Cues.newCue(o, t, s, i); + } else { + const o = this.Cues.newCue(null, t, s, i); + this.hls.trigger(m.CUES_PARSED, { + type: "captions", + cues: o, + track: e + }); + } + } + // Triggered when an initial PTS is found; used for synchronisation of WebVTT. + onInitPtsFound(e, { + frag: t, + id: s, + initPTS: i, + timescale: r + }) { + const { + unparsedVttFrags: n + } = this; + s === $.MAIN && (this.initPTS[t.cc] = { + baseTime: i, + timescale: r + }), n.length && (this.unparsedVttFrags = [], n.forEach((o) => { + this.onFragLoaded(m.FRAG_LOADED, o); + })); + } + getExistingTrack(e, t) { + const { + media: s + } = this; + if (s) + for (let i = 0; i < s.textTracks.length; i++) { + const r = s.textTracks[i]; + if (en(r, { + name: e, + lang: t, + characteristics: "transcribes-spoken-dialog,describes-music-and-sound" + })) + return r; + } + return null; + } + createCaptionsTrack(e) { + this.config.renderTextTracksNatively ? this.createNativeTrack(e) : this.createNonNativeTrack(e); + } + createNativeTrack(e) { + if (this.captionsTracks[e]) + return; + const { + captionsProperties: t, + captionsTracks: s, + media: i + } = this, { + label: r, + languageCode: n + } = t[e], o = this.getExistingTrack(r, n); + if (o) + s[e] = o, dt(s[e]), Ia(s[e], i); + else { + const c = this.createTextTrack("captions", r, n); + c && (c[e] = !0, s[e] = c); + } + } + createNonNativeTrack(e) { + if (this.nonNativeCaptionsTracks[e]) + return; + const t = this.captionsProperties[e]; + if (!t) + return; + const s = t.label, i = { + _id: e, + label: s, + kind: "captions", + default: t.media ? !!t.media.default : !1, + closedCaptions: t.media + }; + this.nonNativeCaptionsTracks[e] = i, this.hls.trigger(m.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: [i] + }); + } + createTextTrack(e, t, s) { + const i = this.media; + if (i) + return i.addTextTrack(e, t, s); + } + onMediaAttaching(e, t) { + this.media = t.media, t.mediaSource || this._cleanTracks(); + } + onMediaDetaching(e, t) { + const s = !!t.transferMedia; + if (this.media = null, s) + return; + const { + captionsTracks: i + } = this; + Object.keys(i).forEach((r) => { + dt(i[r]), delete i[r]; + }), this.nonNativeCaptionsTracks = {}; + } + onManifestLoading() { + this.lastCc = -1, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = tn(), this._cleanTracks(), this.tracks = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.textTracks = [], this.unparsedVttFrags = [], this.initPTS = [], this.cea608Parser1 && this.cea608Parser2 && (this.cea608Parser1.reset(), this.cea608Parser2.reset()); + } + _cleanTracks() { + const { + media: e + } = this; + if (!e) + return; + const t = e.textTracks; + if (t) + for (let s = 0; s < t.length; s++) + dt(t[s]); + } + onSubtitleTracksUpdated(e, t) { + const s = t.subtitleTracks || [], i = s.some((r) => r.textCodec === Ys); + if (this.config.enableWebVTT || i && this.config.enableIMSC1) { + if (Ea(this.tracks, s)) { + this.tracks = s; + return; + } + if (this.textTracks = [], this.tracks = s, this.config.renderTextTracksNatively) { + const n = this.media, o = n ? os(n.textTracks) : null; + if (this.tracks.forEach((c, l) => { + let h; + if (o) { + let u = null; + for (let d = 0; d < o.length; d++) + if (o[d] && en(o[d], c)) { + u = o[d], o[d] = null; + break; + } + u && (h = u); + } + if (h) + dt(h); + else { + const u = Ma(c); + h = this.createTextTrack(u, c.name, c.lang), h && (h.mode = "disabled"); + } + h && this.textTracks.push(h); + }), o != null && o.length) { + const c = o.filter((l) => l !== null).map((l) => l.label); + c.length && this.hls.logger.warn(`Media element contains unused subtitle tracks: ${c.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`); + } + } else if (this.tracks.length) { + const n = this.tracks.map((o) => ({ + label: o.name, + kind: o.type.toLowerCase(), + default: o.default, + subtitleTrack: o + })); + this.hls.trigger(m.NON_NATIVE_TEXT_TRACKS_FOUND, { + tracks: n + }); + } + } + } + onManifestLoaded(e, t) { + this.config.enableCEA708Captions && t.captions && t.captions.forEach((s) => { + const i = /(?:CC|SERVICE)([1-4])/.exec(s.instreamId); + if (!i) + return; + const r = `textTrack${i[1]}`, n = this.captionsProperties[r]; + n && (n.label = s.name, s.lang && (n.languageCode = s.lang), n.media = s); + }); + } + closedCaptionsForLevel(e) { + const t = this.hls.levels[e.level]; + return t == null ? void 0 : t.attrs["CLOSED-CAPTIONS"]; + } + onFragLoading(e, t) { + if (this.enabled && t.frag.type === $.MAIN) { + var s, i; + const { + cea608Parser1: r, + cea608Parser2: n, + lastSn: o + } = this, { + cc: c, + sn: l + } = t.frag, h = (s = (i = t.part) == null ? void 0 : i.index) != null ? s : -1; + r && n && (l !== o + 1 || l === o && h !== this.lastPartIndex + 1 || c !== this.lastCc) && (r.reset(), n.reset()), this.lastCc = c, this.lastSn = l, this.lastPartIndex = h; + } + } + onFragLoaded(e, t) { + const { + frag: s, + payload: i + } = t; + if (s.type === $.SUBTITLE) + if (i.byteLength) { + const r = s.decryptdata, n = "stats" in t; + if (r == null || !r.encrypted || n) { + const o = this.tracks[s.level], c = this.vttCCs; + c[s.cc] || (c[s.cc] = { + start: s.start, + prevCC: this.prevCC, + new: !0 + }, this.prevCC = s.cc), o && o.textCodec === Ys ? this._parseIMSC1(s, i) : this._parseVTTs(t); + } + } else + this.hls.trigger(m.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: s, + error: new Error("Empty subtitle payload") + }); + } + _parseIMSC1(e, t) { + const s = this.hls; + Qr(t, this.initPTS[e.cc], (i) => { + this._appendCues(i, e.level), s.trigger(m.SUBTITLE_FRAG_PROCESSED, { + success: !0, + frag: e + }); + }, (i) => { + s.logger.log(`Failed to parse IMSC1: ${i}`), s.trigger(m.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: e, + error: i + }); + }); + } + _parseVTTs(e) { + var t; + const { + frag: s, + payload: i + } = e, { + initPTS: r, + unparsedVttFrags: n + } = this, o = r.length - 1; + if (!r[s.cc] && o === -1) { + n.push(e); + return; + } + const c = this.hls, l = (t = s.initSegment) != null && t.data ? be(s.initSegment.data, new Uint8Array(i)).buffer : i; + au(l, this.initPTS[s.cc], this.vttCCs, s.cc, s.start, (h) => { + this._appendCues(h, s.level), c.trigger(m.SUBTITLE_FRAG_PROCESSED, { + success: !0, + frag: s + }); + }, (h) => { + const u = h.message === "Missing initPTS for VTT MPEGTS"; + u ? n.push(e) : this._fallbackToIMSC1(s, i), c.logger.log(`Failed to parse VTT cue: ${h}`), !(u && o > s.cc) && c.trigger(m.SUBTITLE_FRAG_PROCESSED, { + success: !1, + frag: s, + error: h + }); + }); + } + _fallbackToIMSC1(e, t) { + const s = this.tracks[e.level]; + s.textCodec || Qr(t, this.initPTS[e.cc], () => { + s.textCodec = Ys, this._parseIMSC1(e, t); + }, () => { + s.textCodec = "wvtt"; + }); + } + _appendCues(e, t) { + const s = this.hls; + if (this.config.renderTextTracksNatively) { + const i = this.textTracks[t]; + if (!i || i.mode === "disabled") + return; + e.forEach((r) => Ra(i, r)); + } else { + const i = this.tracks[t]; + if (!i) + return; + const r = i.default ? "default" : "subtitles" + t; + s.trigger(m.CUES_PARSED, { + type: "subtitles", + cues: e, + track: r + }); + } + } + onFragDecrypted(e, t) { + const { + frag: s + } = t; + s.type === $.SUBTITLE && this.onFragLoaded(m.FRAG_LOADED, t); + } + onSubtitleTracksCleared() { + this.tracks = [], this.captionsTracks = {}; + } + onFragParsingUserdata(e, t) { + if (!this.enabled || !this.config.enableCEA708Captions) + return; + const { + frag: s, + samples: i + } = t; + if (!(s.type === $.MAIN && this.closedCaptionsForLevel(s) === "NONE")) + for (let r = 0; r < i.length; r++) { + const n = i[r].bytes; + if (n) { + this.cea608Parser1 || this.initCea608Parsers(); + const o = this.extractCea608Data(n); + this.cea608Parser1.addData(i[r].pts, o[0]), this.cea608Parser2.addData(i[r].pts, o[1]); + } + } + } + onBufferFlushing(e, { + startOffset: t, + endOffset: s, + endOffsetSubtitles: i, + type: r + }) { + const { + media: n + } = this; + if (!(!n || n.currentTime < s)) { + if (!r || r === "video") { + const { + captionsTracks: o + } = this; + Object.keys(o).forEach((c) => ui(o[c], t, s)); + } + if (this.config.renderTextTracksNatively && t === 0 && i !== void 0) { + const { + textTracks: o + } = this; + Object.keys(o).forEach((c) => ui(o[c], t, i)); + } + } + } + extractCea608Data(e) { + const t = [[], []], s = e[0] & 31; + let i = 2; + for (let r = 0; r < s; r++) { + const n = e[i++], o = 127 & e[i++], c = 127 & e[i++]; + if (o === 0 && c === 0) + continue; + if ((4 & n) !== 0) { + const h = 3 & n; + (h === 0 || h === 1) && (t[h].push(o), t[h].push(c)); + } + } + return t; + } +} +function Ma(a) { + return a.characteristics && /transcribes-spoken-dialog/gi.test(a.characteristics) && /describes-music-and-sound/gi.test(a.characteristics) ? "captions" : "subtitles"; +} +function en(a, e) { + return !!a && a.kind === Ma(e) && li(e, a); +} +function fu(a, e, t, s) { + return Math.min(e, s) - Math.max(a, t); +} +function tn() { + return { + ccOffset: 0, + presentationOffset: 0, + 0: { + start: 0, + prevCC: -1, + new: !0 + } + }; +} +const gu = /\s/, mu = { + newCue(a, e, t, s) { + const i = []; + let r, n, o, c, l; + const h = self.VTTCue || self.TextTrackCue; + for (let d = 0; d < s.rows.length; d++) + if (r = s.rows[d], o = !0, c = 0, l = "", !r.isEmpty()) { + var u; + for (let E = 0; E < r.chars.length; E++) + gu.test(r.chars[E].uchar) && o ? c++ : (l += r.chars[E].uchar, o = !1); + r.cueStartTime = e, e === t && (t += 1e-4), c >= 16 ? c-- : c++; + const g = ka(l.trim()), f = Fi(e, t, g); + a != null && (u = a.cues) != null && u.getCueById(f) || (n = new h(e, t, g), n.id = f, n.line = d + 1, n.align = "left", n.position = 10 + Math.min(80, Math.floor(c * 8 / 32) * 10), i.push(n)); + } + return a && i.length && (i.sort((d, g) => d.line === "auto" || g.line === "auto" ? 0 : d.line > 8 && g.line > 8 ? g.line - d.line : d.line - g.line), i.forEach((d) => Ra(a, d))), i; + } +}; +function pu() { + if ( + // @ts-ignore + self.fetch && self.AbortController && self.ReadableStream && self.Request + ) + try { + return new self.ReadableStream({}), !0; + } catch { + } + return !1; +} +const Eu = /(\d+)-(\d+)\/(\d+)/; +class sn { + constructor(e) { + this.fetchSetup = void 0, this.requestTimeout = void 0, this.request = null, this.response = null, this.controller = void 0, this.context = null, this.config = null, this.callbacks = null, this.stats = void 0, this.loader = null, this.fetchSetup = e.fetchSetup || vu, this.controller = new self.AbortController(), this.stats = new pi(); + } + destroy() { + this.loader = this.callbacks = this.context = this.config = this.request = null, this.abortInternal(), this.response = null, this.fetchSetup = this.controller = this.stats = null; + } + abortInternal() { + this.controller && !this.stats.loading.end && (this.stats.aborted = !0, this.controller.abort()); + } + abort() { + var e; + this.abortInternal(), (e = this.callbacks) != null && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.response); + } + load(e, t, s) { + const i = this.stats; + if (i.loading.start) + throw new Error("Loader can only be used once."); + i.loading.start = self.performance.now(); + const r = yu(e, this.controller.signal), n = e.responseType === "arraybuffer", o = n ? "byteLength" : "length", { + maxTimeToFirstByteMs: c, + maxLoadTimeMs: l + } = t.loadPolicy; + this.context = e, this.config = t, this.callbacks = s, this.request = this.fetchSetup(e, r), self.clearTimeout(this.requestTimeout), t.timeout = c && N(c) ? c : l, this.requestTimeout = self.setTimeout(() => { + this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(i, e, this.response)); + }, t.timeout), (Ft(this.request) ? this.request.then(self.fetch) : self.fetch(this.request)).then((u) => { + var d; + this.response = this.loader = u; + const g = Math.max(self.performance.now(), i.loading.start); + if (self.clearTimeout(this.requestTimeout), t.timeout = l, this.requestTimeout = self.setTimeout(() => { + this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(i, e, this.response)); + }, l - (g - i.loading.start)), !u.ok) { + const { + status: E, + statusText: p + } = u; + throw new xu(p || "fetch, bad network response", E, u); + } + i.loading.first = g, i.total = Su(u.headers) || i.total; + const f = (d = this.callbacks) == null ? void 0 : d.onProgress; + return f && N(t.highWaterMark) ? this.loadProgressively(u, i, e, t.highWaterMark, f) : n ? u.arrayBuffer() : e.responseType === "json" ? u.json() : u.text(); + }).then((u) => { + var d, g; + const f = this.response; + if (!f) + throw new Error("loader destroyed"); + self.clearTimeout(this.requestTimeout), i.loading.end = Math.max(self.performance.now(), i.loading.first); + const E = u[o]; + E && (i.loaded = i.total = E); + const p = { + url: f.url, + data: u, + code: f.status + }, y = (d = this.callbacks) == null ? void 0 : d.onProgress; + y && !N(t.highWaterMark) && y(i, e, u, f), (g = this.callbacks) == null || g.onSuccess(p, i, e, f); + }).catch((u) => { + var d; + if (self.clearTimeout(this.requestTimeout), i.aborted) + return; + const g = u && u.code || 0, f = u ? u.message : null; + (d = this.callbacks) == null || d.onError({ + code: g, + text: f + }, e, u ? u.details : null, i); + }); + } + getCacheAge() { + let e = null; + if (this.response) { + const t = this.response.headers.get("age"); + e = t ? parseFloat(t) : null; + } + return e; + } + getResponseHeader(e) { + return this.response ? this.response.headers.get(e) : null; + } + loadProgressively(e, t, s, i = 0, r) { + const n = new Qn(), o = e.body.getReader(), c = () => o.read().then((l) => { + if (l.done) + return n.dataLength && r(t, s, n.flush().buffer, e), Promise.resolve(new ArrayBuffer(0)); + const h = l.value, u = h.length; + return t.loaded += u, u < i || n.dataLength ? (n.push(h), n.dataLength >= i && r(t, s, n.flush().buffer, e)) : r(t, s, h.buffer, e), c(); + }).catch(() => Promise.reject()); + return c(); + } +} +function yu(a, e) { + const t = { + method: "GET", + mode: "cors", + credentials: "same-origin", + signal: e, + headers: new self.Headers(ie({}, a.headers)) + }; + return a.rangeEnd && t.headers.set("Range", "bytes=" + a.rangeStart + "-" + String(a.rangeEnd - 1)), t; +} +function Tu(a) { + const e = Eu.exec(a); + if (e) + return parseInt(e[2]) - parseInt(e[1]) + 1; +} +function Su(a) { + const e = a.get("Content-Range"); + if (e) { + const s = Tu(e); + if (N(s)) + return s; + } + const t = a.get("Content-Length"); + if (t) + return parseInt(t); +} +function vu(a, e) { + return new self.Request(a.url, e); +} +class xu extends Error { + constructor(e, t, s) { + super(e), this.code = void 0, this.details = void 0, this.code = t, this.details = s; + } +} +const Au = /^age:\s*[\d.]+\s*$/im; +class Na { + constructor(e) { + this.xhrSetup = void 0, this.requestTimeout = void 0, this.retryTimeout = void 0, this.retryDelay = void 0, this.config = null, this.callbacks = null, this.context = null, this.loader = null, this.stats = void 0, this.xhrSetup = e && e.xhrSetup || null, this.stats = new pi(), this.retryDelay = 0; + } + destroy() { + this.callbacks = null, this.abortInternal(), this.loader = null, this.config = null, this.context = null, this.xhrSetup = null; + } + abortInternal() { + const e = this.loader; + self.clearTimeout(this.requestTimeout), self.clearTimeout(this.retryTimeout), e && (e.onreadystatechange = null, e.onprogress = null, e.readyState !== 4 && (this.stats.aborted = !0, e.abort())); + } + abort() { + var e; + this.abortInternal(), (e = this.callbacks) != null && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.loader); + } + load(e, t, s) { + if (this.stats.loading.start) + throw new Error("Loader can only be used once."); + this.stats.loading.start = self.performance.now(), this.context = e, this.config = t, this.callbacks = s, this.loadInternal(); + } + loadInternal() { + const { + config: e, + context: t + } = this; + if (!e || !t) + return; + const s = this.loader = new self.XMLHttpRequest(), i = this.stats; + i.loading.first = 0, i.loaded = 0, i.aborted = !1; + const r = this.xhrSetup; + r ? Promise.resolve().then(() => { + if (!(this.loader !== s || this.stats.aborted)) + return r(s, t.url); + }).catch((n) => { + if (!(this.loader !== s || this.stats.aborted)) + return s.open("GET", t.url, !0), r(s, t.url); + }).then(() => { + this.loader !== s || this.stats.aborted || this.openAndSendXhr(s, t, e); + }).catch((n) => { + var o; + (o = this.callbacks) == null || o.onError({ + code: s.status, + text: n.message + }, t, s, i); + }) : this.openAndSendXhr(s, t, e); + } + openAndSendXhr(e, t, s) { + e.readyState || e.open("GET", t.url, !0); + const i = t.headers, { + maxTimeToFirstByteMs: r, + maxLoadTimeMs: n + } = s.loadPolicy; + if (i) + for (const o in i) + e.setRequestHeader(o, i[o]); + t.rangeEnd && e.setRequestHeader("Range", "bytes=" + t.rangeStart + "-" + (t.rangeEnd - 1)), e.onreadystatechange = this.readystatechange.bind(this), e.onprogress = this.loadprogress.bind(this), e.responseType = t.responseType, self.clearTimeout(this.requestTimeout), s.timeout = r && N(r) ? r : n, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), s.timeout), e.send(); + } + readystatechange() { + const { + context: e, + loader: t, + stats: s + } = this; + if (!e || !t) + return; + const i = t.readyState, r = this.config; + if (!s.aborted && i >= 2 && (s.loading.first === 0 && (s.loading.first = Math.max(self.performance.now(), s.loading.start), r.timeout !== r.loadPolicy.maxLoadTimeMs && (self.clearTimeout(this.requestTimeout), r.timeout = r.loadPolicy.maxLoadTimeMs, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), r.loadPolicy.maxLoadTimeMs - (s.loading.first - s.loading.start)))), i === 4)) { + self.clearTimeout(this.requestTimeout), t.onreadystatechange = null, t.onprogress = null; + const l = t.status, h = t.responseType === "text" ? t.responseText : null; + if (l >= 200 && l < 300) { + const f = h ?? t.response; + if (f != null) { + var n, o; + s.loading.end = Math.max(self.performance.now(), s.loading.first); + const E = t.responseType === "arraybuffer" ? f.byteLength : f.length; + s.loaded = s.total = E, s.bwEstimate = s.total * 8e3 / (s.loading.end - s.loading.first); + const p = (n = this.callbacks) == null ? void 0 : n.onProgress; + p && p(s, e, f, t); + const y = { + url: t.responseURL, + data: f, + code: l + }; + (o = this.callbacks) == null || o.onSuccess(y, s, e, t); + return; + } + } + const u = r.loadPolicy.errorRetry, d = s.retry, g = { + url: e.url, + data: void 0, + code: l + }; + if (ms(u, d, !1, g)) + this.retry(u); + else { + var c; + J.error(`${l} while loading ${e.url}`), (c = this.callbacks) == null || c.onError({ + code: l, + text: t.statusText + }, e, t, s); + } + } + } + loadtimeout() { + if (!this.config) return; + const e = this.config.loadPolicy.timeoutRetry, t = this.stats.retry; + if (ms(e, t, !0)) + this.retry(e); + else { + var s; + J.warn(`timeout while loading ${(s = this.context) == null ? void 0 : s.url}`); + const i = this.callbacks; + i && (this.abortInternal(), i.onTimeout(this.stats, this.context, this.loader)); + } + } + retry(e) { + const { + context: t, + stats: s + } = this; + this.retryDelay = yi(e, s.retry), s.retry++, J.warn(`${status ? "HTTP Status " + status : "Timeout"} while loading ${t == null ? void 0 : t.url}, retrying ${s.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`), this.abortInternal(), this.loader = null, self.clearTimeout(this.retryTimeout), this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); + } + loadprogress(e) { + const t = this.stats; + t.loaded = e.loaded, e.lengthComputable && (t.total = e.total); + } + getCacheAge() { + let e = null; + if (this.loader && Au.test(this.loader.getAllResponseHeaders())) { + const t = this.loader.getResponseHeader("age"); + e = t ? parseFloat(t) : null; + } + return e; + } + getResponseHeader(e) { + return this.loader && new RegExp(`^${e}:\\s*[\\d.]+\\s*$`, "im").test(this.loader.getAllResponseHeaders()) ? this.loader.getResponseHeader(e) : null; + } +} +const Lu = { + maxTimeToFirstByteMs: 8e3, + maxLoadTimeMs: 2e4, + timeoutRetry: null, + errorRetry: null +}, Iu = te(te({ + autoStartLoad: !0, + // used by stream-controller + startPosition: -1, + // used by stream-controller + defaultAudioCodec: void 0, + // used by stream-controller + debug: !1, + // used by logger + capLevelOnFPSDrop: !1, + // used by fps-controller + capLevelToPlayerSize: !1, + // used by cap-level-controller + ignoreDevicePixelRatio: !1, + // used by cap-level-controller + maxDevicePixelRatio: Number.POSITIVE_INFINITY, + // used by cap-level-controller + preferManagedMediaSource: !0, + initialLiveManifestSize: 1, + // used by stream-controller + maxBufferLength: 30, + // used by stream-controller + backBufferLength: 1 / 0, + // used by buffer-controller + frontBufferFlushThreshold: 1 / 0, + startOnSegmentBoundary: !1, + // used by stream-controller + maxBufferSize: 60 * 1e3 * 1e3, + // used by stream-controller + maxFragLookUpTolerance: 0.25, + // used by stream-controller + maxBufferHole: 0.1, + // used by stream-controller and gap-controller + detectStallWithCurrentTimeMs: 1250, + // used by gap-controller + highBufferWatchdogPeriod: 2, + // used by gap-controller + nudgeOffset: 0.1, + // used by gap-controller + nudgeMaxRetry: 3, + // used by gap-controller + nudgeOnVideoHole: !0, + // used by gap-controller + liveSyncMode: "edge", + // used by stream-controller + liveSyncDurationCount: 3, + // used by latency-controller + liveSyncOnStallIncrease: 1, + // used by latency-controller + liveMaxLatencyDurationCount: 1 / 0, + // used by latency-controller + liveSyncDuration: void 0, + // used by latency-controller + liveMaxLatencyDuration: void 0, + // used by latency-controller + maxLiveSyncPlaybackRate: 1, + // used by latency-controller + liveDurationInfinity: !1, + // used by buffer-controller + /** + * @deprecated use backBufferLength + */ + liveBackBufferLength: null, + // used by buffer-controller + maxMaxBufferLength: 600, + // used by stream-controller + enableWorker: !0, + // used by transmuxer + workerPath: null, + // used by transmuxer + enableSoftwareAES: !0, + // used by decrypter + startLevel: void 0, + // used by level-controller + startFragPrefetch: !1, + // used by stream-controller + fpsDroppedMonitoringPeriod: 5e3, + // used by fps-controller + fpsDroppedMonitoringThreshold: 0.2, + // used by fps-controller + appendErrorMaxRetry: 3, + // used by buffer-controller + ignorePlaylistParsingErrors: !1, + loader: Na, + // loader: FetchLoader, + fLoader: void 0, + // used by fragment-loader + pLoader: void 0, + // used by playlist-loader + xhrSetup: void 0, + // used by xhr-loader + licenseXhrSetup: void 0, + // used by eme-controller + licenseResponseCallback: void 0, + // used by eme-controller + abrController: jo, + bufferController: Mc, + capLevelController: ki, + errorController: Jo, + fpsController: _h, + stretchShortVideoTrack: !1, + // used by mp4-remuxer + maxAudioFramesDrift: 1, + // used by mp4-remuxer + forceKeyFrameOnDiscontinuity: !0, + // used by ts-demuxer + abrEwmaFastLive: 3, + // used by abr-controller + abrEwmaSlowLive: 9, + // used by abr-controller + abrEwmaFastVoD: 3, + // used by abr-controller + abrEwmaSlowVoD: 9, + // used by abr-controller + abrEwmaDefaultEstimate: 5e5, + // 500 kbps // used by abr-controller + abrEwmaDefaultEstimateMax: 5e6, + // 5 mbps + abrBandWidthFactor: 0.95, + // used by abr-controller + abrBandWidthUpFactor: 0.7, + // used by abr-controller + abrMaxWithRealBitrate: !1, + // used by abr-controller + maxStarvationDelay: 4, + // used by abr-controller + maxLoadingDelay: 4, + // used by abr-controller + minAutoBitrate: 0, + // used by hls + emeEnabled: !1, + // used by eme-controller + widevineLicenseUrl: void 0, + // used by eme-controller + drmSystems: {}, + // used by eme-controller + drmSystemOptions: {}, + // used by eme-controller + requestMediaKeySystemAccessFunc: $n, + // used by eme-controller + requireKeySystemAccessOnStart: !1, + // used by eme-controller + testBandwidth: !0, + progressive: !1, + lowLatencyMode: !0, + cmcd: void 0, + enableDateRangeMetadataCues: !0, + enableEmsgMetadataCues: !0, + enableEmsgKLVMetadata: !1, + enableID3MetadataCues: !0, + enableInterstitialPlayback: !0, + interstitialAppendInPlace: !0, + interstitialLiveLookAhead: 10, + useMediaCapabilities: !0, + preserveManualLevelOnError: !1, + certLoadPolicy: { + default: Lu + }, + keyLoadPolicy: { + default: { + maxTimeToFirstByteMs: 8e3, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 2e4, + backoff: "linear" + }, + errorRetry: { + maxNumRetry: 8, + retryDelayMs: 1e3, + maxRetryDelayMs: 2e4, + backoff: "linear" + } + } + }, + manifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1 / 0, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + playlistLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 2, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + fragLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 12e4, + timeoutRetry: { + maxNumRetry: 4, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 6, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + steeringManifestLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 2e4, + timeoutRetry: { + maxNumRetry: 2, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 1, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + interstitialAssetListLoadPolicy: { + default: { + maxTimeToFirstByteMs: 1e4, + maxLoadTimeMs: 3e4, + timeoutRetry: { + maxNumRetry: 0, + retryDelayMs: 0, + maxRetryDelayMs: 0 + }, + errorRetry: { + maxNumRetry: 0, + retryDelayMs: 1e3, + maxRetryDelayMs: 8e3 + } + } + }, + // These default settings are deprecated in favor of the above policies + // and are maintained for backwards compatibility + manifestLoadingTimeOut: 1e4, + manifestLoadingMaxRetry: 1, + manifestLoadingRetryDelay: 1e3, + manifestLoadingMaxRetryTimeout: 64e3, + levelLoadingTimeOut: 1e4, + levelLoadingMaxRetry: 4, + levelLoadingRetryDelay: 1e3, + levelLoadingMaxRetryTimeout: 64e3, + fragLoadingTimeOut: 2e4, + fragLoadingMaxRetry: 6, + fragLoadingRetryDelay: 1e3, + fragLoadingMaxRetryTimeout: 64e3 +}, Ru()), {}, { + subtitleStreamController: $h, + subtitleTrackController: Ph, + timelineController: du, + audioStreamController: kc, + audioTrackController: wc, + emeController: gt, + cmcdController: Ih, + contentSteeringController: bh, + interstitialsController: Uh +}); +function Ru() { + return { + cueHandler: mu, + // used by timeline-controller + enableWebVTT: !0, + // used by timeline-controller + enableIMSC1: !0, + // used by timeline-controller + enableCEA708Captions: !0, + // used by timeline-controller + captionsTextTrack1Label: "English", + // used by timeline-controller + captionsTextTrack1LanguageCode: "en", + // used by timeline-controller + captionsTextTrack2Label: "Spanish", + // used by timeline-controller + captionsTextTrack2LanguageCode: "es", + // used by timeline-controller + captionsTextTrack3Label: "Unknown CC", + // used by timeline-controller + captionsTextTrack3LanguageCode: "", + // used by timeline-controller + captionsTextTrack4Label: "Unknown CC", + // used by timeline-controller + captionsTextTrack4LanguageCode: "", + // used by timeline-controller + renderTextTracksNatively: !0 + }; +} +function bu(a, e, t) { + if ((e.liveSyncDurationCount || e.liveMaxLatencyDurationCount) && (e.liveSyncDuration || e.liveMaxLatencyDuration)) + throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration"); + if (e.liveMaxLatencyDurationCount !== void 0 && (e.liveSyncDurationCount === void 0 || e.liveMaxLatencyDurationCount <= e.liveSyncDurationCount)) + throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"'); + if (e.liveMaxLatencyDuration !== void 0 && (e.liveSyncDuration === void 0 || e.liveMaxLatencyDuration <= e.liveSyncDuration)) + throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"'); + const s = fi(a), i = ["manifest", "level", "frag"], r = ["TimeOut", "MaxRetry", "RetryDelay", "MaxRetryTimeout"]; + return i.forEach((n) => { + const o = `${n === "level" ? "playlist" : n}LoadPolicy`, c = e[o] === void 0, l = []; + r.forEach((h) => { + const u = `${n}Loading${h}`, d = e[u]; + if (d !== void 0 && c) { + l.push(u); + const g = s[o].default; + switch (e[o] = { + default: g + }, h) { + case "TimeOut": + g.maxLoadTimeMs = d, g.maxTimeToFirstByteMs = d; + break; + case "MaxRetry": + g.errorRetry.maxNumRetry = d, g.timeoutRetry.maxNumRetry = d; + break; + case "RetryDelay": + g.errorRetry.retryDelayMs = d, g.timeoutRetry.retryDelayMs = d; + break; + case "MaxRetryTimeout": + g.errorRetry.maxRetryDelayMs = d, g.timeoutRetry.maxRetryDelayMs = d; + break; + } + } + }), l.length && t.warn(`hls.js config: "${l.join('", "')}" setting(s) are deprecated, use "${o}": ${ae(e[o])}`); + }), te(te({}, s), e); +} +function fi(a) { + return a && typeof a == "object" ? Array.isArray(a) ? a.map(fi) : Object.keys(a).reduce((e, t) => (e[t] = fi(a[t]), e), {}) : a; +} +function _u(a, e) { + const t = a.loader; + t !== sn && t !== Na ? (e.log("[config]: Custom loader detected, cannot enable progressive streaming"), a.progressive = !1) : pu() && (a.loader = sn, a.progressive = !0, a.enableSoftwareAES = !0, e.log("[config]: Progressive streaming enabled, using FetchLoader")); +} +const ls = 2, Du = 0.1, Cu = 0.05, Pu = 100; +class ku extends Nn { + constructor(e, t) { + super("gap-controller", e.logger), this.hls = null, this.fragmentTracker = null, this.media = null, this.mediaSource = void 0, this.nudgeRetry = 0, this.stallReported = !1, this.stalled = null, this.moved = !1, this.seeking = !1, this.buffered = {}, this.lastCurrentTime = 0, this.ended = 0, this.waiting = 0, this.onMediaPlaying = () => { + this.ended = 0, this.waiting = 0; + }, this.onMediaWaiting = () => { + var s; + (s = this.media) != null && s.seeking || (this.waiting = self.performance.now(), this.tick()); + }, this.onMediaEnded = () => { + if (this.hls) { + var s; + this.ended = ((s = this.media) == null ? void 0 : s.currentTime) || 1, this.hls.trigger(m.MEDIA_ENDED, { + stalled: !1 + }); + } + }, this.hls = e, this.fragmentTracker = t, this.registerListeners(); + } + registerListeners() { + const { + hls: e + } = this; + e && (e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.BUFFER_APPENDED, this.onBufferAppended, this)); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.BUFFER_APPENDED, this.onBufferAppended, this)); + } + destroy() { + super.destroy(), this.unregisterListeners(), this.media = this.hls = this.fragmentTracker = null, this.mediaSource = void 0; + } + onMediaAttached(e, t) { + this.setInterval(Pu), this.mediaSource = t.mediaSource; + const s = this.media = t.media; + ve(s, "playing", this.onMediaPlaying), ve(s, "waiting", this.onMediaWaiting), ve(s, "ended", this.onMediaEnded); + } + onMediaDetaching(e, t) { + this.clearInterval(); + const { + media: s + } = this; + s && (Re(s, "playing", this.onMediaPlaying), Re(s, "waiting", this.onMediaWaiting), Re(s, "ended", this.onMediaEnded), this.media = null), this.mediaSource = void 0; + } + onBufferAppended(e, t) { + this.buffered = t.timeRanges; + } + get hasBuffered() { + return Object.keys(this.buffered).length > 0; + } + tick() { + var e; + if (!((e = this.media) != null && e.readyState) || !this.hasBuffered) + return; + const t = this.media.currentTime; + this.poll(t, this.lastCurrentTime), this.lastCurrentTime = t; + } + /** + * Checks if the playhead is stuck within a gap, and if so, attempts to free it. + * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range). + * + * @param lastCurrentTime - Previously read playhead position + */ + poll(e, t) { + var s, i; + const r = (s = this.hls) == null ? void 0 : s.config; + if (!r) + return; + const n = this.media; + if (!n) + return; + const { + seeking: o + } = n, c = this.seeking && !o, l = !this.seeking && o, h = n.paused && !o || n.ended || n.playbackRate === 0; + if (this.seeking = o, e !== t) { + t && (this.ended = 0), this.moved = !0, o || (this.nudgeRetry = 0, r.nudgeOnVideoHole && !h && e > t && this.nudgeOnVideoHole(e, t)), this.waiting === 0 && this.stallResolved(e); + return; + } + if (l || c) { + c && this.stallResolved(e); + return; + } + if (h) { + this.nudgeRetry = 0, this.stallResolved(e), !this.ended && n.ended && this.hls && (this.ended = e || 1, this.hls.trigger(m.MEDIA_ENDED, { + stalled: !1 + })); + return; + } + if (!q.getBuffered(n).length) { + this.nudgeRetry = 0; + return; + } + const u = q.bufferInfo(n, e, 0), d = u.nextStart || 0, g = this.fragmentTracker; + if (o && g && this.hls) { + const _ = rn(this.hls.inFlightFragments, e), A = u.len > ls, R = !d || _ || d - e > ls && !g.getPartialFragment(e); + if (A || R) + return; + this.moved = !1; + } + const f = (i = this.hls) == null ? void 0 : i.latestLevelDetails; + if (!this.moved && this.stalled !== null && g) { + if (!(u.len > 0) && !d) + return; + const A = Math.max(d, u.start || 0) - e, D = !!(f != null && f.live) ? f.targetduration * 2 : ls, L = g.getPartialFragment(e); + if (A > 0 && (A <= D || L)) { + n.paused || this._trySkipBufferHole(L); + return; + } + } + const E = r.detectStallWithCurrentTimeMs, p = self.performance.now(), y = this.waiting; + let S = this.stalled; + if (S === null) + if (y > 0 && p - y < E) + S = this.stalled = y; + else { + this.stalled = p; + return; + } + const T = p - S; + if (!o && (T >= E || y) && this.hls) { + var v; + if (((v = this.mediaSource) == null ? void 0 : v.readyState) === "ended" && !(f != null && f.live) && Math.abs(e - ((f == null ? void 0 : f.edge) || 0)) < 1) { + if (this.ended) + return; + this.ended = e || 1, this.hls.trigger(m.MEDIA_ENDED, { + stalled: !0 + }); + return; + } + if (this._reportStall(u), !this.media || !this.hls) + return; + } + const x = q.bufferInfo(n, e, r.maxBufferHole); + this._tryFixBufferStall(x, T, e); + } + stallResolved(e) { + const t = this.stalled; + if (t && this.hls && (this.stalled = null, this.stallReported)) { + const s = self.performance.now() - t; + this.log(`playback not stuck anymore @${e}, after ${Math.round(s)}ms`), this.stallReported = !1, this.waiting = 0, this.hls.trigger(m.STALL_RESOLVED, {}); + } + } + nudgeOnVideoHole(e, t) { + var s; + const i = this.buffered.video; + if (this.hls && this.media && this.fragmentTracker && (s = this.buffered.audio) != null && s.length && i && i.length > 1 && e > i.end(0)) { + const r = q.bufferedInfo(q.timeRangesToArray(this.buffered.audio), e, 0); + if (r.len > 1 && t >= r.start) { + const n = q.timeRangesToArray(i), o = q.bufferedInfo(n, t, 0).bufferedIndex; + if (o > -1 && o < n.length - 1) { + const c = q.bufferedInfo(n, e, 0).bufferedIndex, l = n[o].end, h = n[o + 1].start; + if ((c === -1 || c > o) && h - l < 1 && // `maxBufferHole` may be too small and setting it to 0 should not disable this feature + e - l < 2) { + const u = new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${e} hole: ${l} -> ${h} buffered index: ${c}`); + this.warn(u.message), this.media.currentTime += 1e-6; + const d = this.fragmentTracker.getPartialFragment(e) || void 0, g = q.bufferInfo(this.media, e, 0); + this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_SEEK_OVER_HOLE, + fatal: !1, + error: u, + reason: u.message, + frag: d, + buffer: g.len, + bufferInfo: g + }); + } + } + } + } + } + /** + * Detects and attempts to fix known buffer stalling issues. + * @param bufferInfo - The properties of the current buffer. + * @param stalledDurationMs - The amount of time Hls.js has been stalling for. + * @private + */ + _tryFixBufferStall(e, t, s) { + var i, r; + const { + fragmentTracker: n, + media: o + } = this, c = (i = this.hls) == null ? void 0 : i.config; + if (!o || !n || !c) + return; + const l = (r = this.hls) == null ? void 0 : r.latestLevelDetails, h = n.getPartialFragment(s); + if ((h || l != null && l.live && s < l.fragmentStart) && (this._trySkipBufferHole(h) || !this.media)) + return; + const u = e.buffered, d = this.adjacentTraversal(e, s); + (u && u.length > 1 && e.len > c.maxBufferHole || e.nextStart && (e.nextStart - s < c.maxBufferHole || d)) && (t > c.highBufferWatchdogPeriod * 1e3 || this.waiting) && (this.warn("Trying to nudge playhead over buffer-hole"), this._tryNudgeBuffer(e)); + } + adjacentTraversal(e, t) { + const s = this.fragmentTracker, i = e.nextStart; + if (s && i) { + const r = s.getFragAtPos(t, $.MAIN), n = s.getFragAtPos(i, $.MAIN); + if (r && n) + return n.sn - r.sn < 2; + } + return !1; + } + /** + * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period. + * @param bufferLen - The playhead distance from the end of the current buffer segment. + * @private + */ + _reportStall(e) { + const { + hls: t, + media: s, + stallReported: i, + stalled: r + } = this; + if (!i && r !== null && s && t) { + this.stallReported = !0; + const n = new Error(`Playback stalling at @${s.currentTime} due to low buffer (${ae(e)})`); + this.warn(n.message), t.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_STALLED_ERROR, + fatal: !1, + error: n, + buffer: e.len, + bufferInfo: e, + stalled: { + start: r + } + }); + } + } + /** + * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments + * @param partial - The partial fragment found at the current time (where playback is stalling). + * @private + */ + _trySkipBufferHole(e) { + var t; + const { + fragmentTracker: s, + media: i + } = this, r = (t = this.hls) == null ? void 0 : t.config; + if (!i || !s || !r) + return 0; + const n = i.currentTime, o = q.bufferInfo(i, n, 0), c = n < o.start ? o.start : o.nextStart; + if (c && this.hls) { + const h = o.len <= r.maxBufferHole, u = o.len > 0 && o.len < 1 && i.readyState < 3, d = c - n; + if (d > 0 && (h || u)) { + if (d > r.maxBufferHole) { + let f = !1; + if (n === 0) { + const E = s.getAppendedFrag(0, $.MAIN); + E && c < E.end && (f = !0); + } + if (!f) { + const E = e || s.getAppendedFrag(n, $.MAIN); + if (E) { + var l; + if (!((l = this.hls.loadLevelObj) != null && l.details) || rn(this.hls.inFlightFragments, c)) + return 0; + let y = !1, S = E.end; + for (; S < c; ) { + const T = s.getPartialFragment(S); + if (T) + S += T.duration; + else { + y = !0; + break; + } + } + if (y) + return 0; + } + } + } + const g = Math.max(c + Cu, n + Du); + if (this.warn(`skipping hole, adjusting currentTime from ${n} to ${g}`), this.moved = !0, i.currentTime = g, !(e != null && e.gap)) { + const f = new Error(`fragment loaded with buffer holes, seeking from ${n} to ${g}`); + this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_SEEK_OVER_HOLE, + fatal: !1, + error: f, + reason: f.message, + frag: e || void 0, + buffer: o.len, + bufferInfo: o + }); + } + return g; + } + } + return 0; + } + /** + * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount. + * @private + */ + _tryNudgeBuffer(e) { + const { + hls: t, + media: s, + nudgeRetry: i + } = this, r = t == null ? void 0 : t.config; + if (!s || !r) + return 0; + const n = s.currentTime; + if (this.nudgeRetry++, i < r.nudgeMaxRetry) { + const o = n + (i + 1) * r.nudgeOffset, c = new Error(`Nudging 'currentTime' from ${n} to ${o}`); + this.warn(c.message), s.currentTime = o, t.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_NUDGE_ON_STALL, + error: c, + fatal: !1, + buffer: e.len, + bufferInfo: e + }); + } else { + const o = new Error(`Playhead still not moving while enough data buffered @${n} after ${r.nudgeMaxRetry} nudges`); + this.error(o.message), t.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.BUFFER_STALLED_ERROR, + error: o, + fatal: !0, + buffer: e.len, + bufferInfo: e + }); + } + } +} +function rn(a, e) { + const t = nn(a.main); + if (t && t.start <= e) + return t; + const s = nn(a.audio); + return s && s.start <= e ? s : null; +} +function nn(a) { + if (!a) + return null; + switch (a.state) { + case C.IDLE: + case C.STOPPED: + case C.ENDED: + case C.ERROR: + return null; + } + return a.frag; +} +const wu = 0.25; +function gi() { + if (!(typeof self > "u")) + return self.VTTCue || self.TextTrackCue; +} +function an(a, e, t, s, i) { + let r = new a(e, t, ""); + try { + r.value = s, i && (r.type = i); + } catch { + r = new a(e, t, ae(i ? te({ + type: i + }, s) : s)); + } + return r; +} +const Jt = (() => { + const a = gi(); + try { + a && new a(0, Number.POSITIVE_INFINITY, ""); + } catch { + return Number.MAX_VALUE; + } + return Number.POSITIVE_INFINITY; +})(); +function Ou(a) { + return Uint8Array.from(a.replace(/^0x/, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")).buffer; +} +class Fu { + constructor(e) { + this.hls = void 0, this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.removeCues = !0, this.onEventCueEnter = () => { + this.hls && this.hls.trigger(m.EVENT_CUE_ENTER, {}); + }, this.hls = e, this._registerListeners(); + } + destroy() { + this._unregisterListeners(), this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.hls = this.onEventCueEnter = null; + } + _registerListeners() { + const { + hls: e + } = this; + e.on(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.on(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.on(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(m.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MEDIA_ATTACHING, this.onMediaAttaching, this), e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), e.off(m.BUFFER_FLUSHING, this.onBufferFlushing, this), e.off(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(m.LEVEL_PTS_UPDATED, this.onLevelPtsUpdated, this); + } + // Add ID3 metatadata text track. + onMediaAttaching(e, t) { + var s; + this.media = t.media, ((s = t.overrides) == null ? void 0 : s.cueRemoval) === !1 && (this.removeCues = !1); + } + onMediaAttached() { + const e = this.hls.latestLevelDetails; + e && this.updateDateRangeCues(e); + } + onMediaDetaching(e, t) { + this.media = null, !t.transferMedia && (this.id3Track && (this.removeCues && dt(this.id3Track, this.onEventCueEnter), this.id3Track = null), this.dateRangeCuesAppended = {}); + } + onManifestLoading() { + this.dateRangeCuesAppended = {}; + } + createTrack(e) { + const t = this.getID3Track(e.textTracks); + return t.mode = "hidden", t; + } + getID3Track(e) { + if (this.media) { + for (let t = 0; t < e.length; t++) { + const s = e[t]; + if (s.kind === "metadata" && s.label === "id3") + return Ia(s, this.media), s; + } + return this.media.addTextTrack("metadata", "id3"); + } + } + onFragParsingMetadata(e, t) { + if (!this.media) + return; + const { + hls: { + config: { + enableEmsgMetadataCues: s, + enableID3MetadataCues: i + } + } + } = this; + if (!s && !i) + return; + const { + samples: r + } = t; + this.id3Track || (this.id3Track = this.createTrack(this.media)); + const n = gi(); + if (n) + for (let o = 0; o < r.length; o++) { + const c = r[o].type; + if (c === Te.emsg && !s || !i) + continue; + const l = ra(r[o].data); + if (l) { + const h = r[o].pts; + let u = h + r[o].duration; + u > Jt && (u = Jt), u - h <= 0 && (u = h + wu); + for (let g = 0; g < l.length; g++) { + const f = l[g]; + if (!na(f)) { + this.updateId3CueEnds(h, c); + const E = an(n, h, u, f, c); + E && this.id3Track.addCue(E); + } + } + } + } + } + updateId3CueEnds(e, t) { + var s; + const i = (s = this.id3Track) == null ? void 0 : s.cues; + if (i) + for (let r = i.length; r--; ) { + const n = i[r]; + n.type === t && n.startTime < e && n.endTime === Jt && (n.endTime = e); + } + } + onBufferFlushing(e, { + startOffset: t, + endOffset: s, + type: i + }) { + const { + id3Track: r, + hls: n + } = this; + if (!n) + return; + const { + config: { + enableEmsgMetadataCues: o, + enableID3MetadataCues: c + } + } = n; + if (r && (o || c)) { + let l; + i === "audio" ? l = (h) => h.type === Te.audioId3 && c : i === "video" ? l = (h) => h.type === Te.emsg && o : l = (h) => h.type === Te.audioId3 && c || h.type === Te.emsg && o, ui(r, t, s, l); + } + } + onLevelUpdated(e, { + details: t + }) { + this.updateDateRangeCues(t, !0); + } + onLevelPtsUpdated(e, t) { + Math.abs(t.drift) > 0.01 && this.updateDateRangeCues(t.details); + } + updateDateRangeCues(e, t) { + if (!this.media || !e.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) + return; + const { + id3Track: s + } = this, { + dateRanges: i + } = e, r = Object.keys(i); + let n = this.dateRangeCuesAppended; + if (s && t) { + var o; + if ((o = s.cues) != null && o.length) { + const h = Object.keys(n).filter((u) => !r.includes(u)); + for (let u = h.length; u--; ) { + const d = h[u], g = n[d].cues; + delete n[d], Object.keys(g).forEach((f) => { + try { + const E = g[f]; + E.removeEventListener("enter", this.onEventCueEnter), s.removeCue(E); + } catch { + } + }); + } + } else + n = this.dateRangeCuesAppended = {}; + } + const c = e.fragments[e.fragments.length - 1]; + if (r.length === 0 || !N(c == null ? void 0 : c.programDateTime)) + return; + this.id3Track || (this.id3Track = this.createTrack(this.media)); + const l = gi(); + for (let h = 0; h < r.length; h++) { + const u = r[h], d = i[u], g = d.startTime, f = n[u], E = (f == null ? void 0 : f.cues) || {}; + let p = (f == null ? void 0 : f.durationKnown) || !1, y = Jt; + const { + duration: S, + endDate: T + } = d; + if (T && S !== null) + y = g + S, p = !0; + else if (d.endOnNext && !p) { + const x = r.reduce((_, A) => { + if (A !== d.id) { + const R = i[A]; + if (R.class === d.class && R.startDate > d.startDate && (!_ || d.startDate < _.startDate)) + return R; + } + return _; + }, null); + x && (y = x.startTime, p = !0); + } + const v = Object.keys(d.attr); + for (let x = 0; x < v.length; x++) { + const _ = v[x]; + if (!dl(_)) + continue; + const A = E[_]; + if (A) + p && !f.durationKnown ? A.endTime = y : Math.abs(A.startTime - g) > 0.01 && (A.startTime = g, A.endTime = y); + else if (l) { + let R = d.attr[_]; + fl(_) && (R = Ou(R)); + const L = an(l, g, y, { + key: _, + data: R + }, Te.dateRange); + L && (L.id = u, this.id3Track.addCue(L), E[_] = L, this.hls.config.interstitialsController && (_ === "X-ASSET-LIST" || _ === "X-ASSET-URL") && L.addEventListener("enter", this.onEventCueEnter)); + } + } + n[u] = { + cues: E, + dateRange: d, + durationKnown: p + }; + } + } +} +class Mu { + constructor(e) { + this.hls = void 0, this.config = void 0, this.media = null, this.currentTime = 0, this.stallCount = 0, this._latency = null, this._targetLatencyUpdated = !1, this.onTimeupdate = () => { + const { + media: t + } = this, s = this.levelDetails; + if (!t || !s) + return; + this.currentTime = t.currentTime; + const i = this.computeLatency(); + if (i === null) + return; + this._latency = i; + const { + lowLatencyMode: r, + maxLiveSyncPlaybackRate: n + } = this.config; + if (!r || n === 1 || !s.live) + return; + const o = this.targetLatency; + if (o === null) + return; + const c = i - o, l = Math.min(this.maxLatency, o + s.targetduration); + if (c < l && c > 0.05 && this.forwardBufferLength > 1) { + const u = Math.min(2, Math.max(1, n)), d = Math.round(2 / (1 + Math.exp(-0.75 * c - this.edgeStalled)) * 20) / 20, g = Math.min(u, Math.max(1, d)); + this.changeMediaPlaybackRate(t, g); + } else t.playbackRate !== 1 && t.playbackRate !== 0 && this.changeMediaPlaybackRate(t, 1); + }, this.hls = e, this.config = e.config, this.registerListeners(); + } + get levelDetails() { + var e; + return ((e = this.hls) == null ? void 0 : e.latestLevelDetails) || null; + } + get latency() { + return this._latency || 0; + } + get maxLatency() { + const { + config: e + } = this; + if (e.liveMaxLatencyDuration !== void 0) + return e.liveMaxLatencyDuration; + const t = this.levelDetails; + return t ? e.liveMaxLatencyDurationCount * t.targetduration : 0; + } + get targetLatency() { + const e = this.levelDetails; + if (e === null || this.hls === null) + return null; + const { + holdBack: t, + partHoldBack: s, + targetduration: i + } = e, { + liveSyncDuration: r, + liveSyncDurationCount: n, + lowLatencyMode: o + } = this.config, c = this.hls.userConfig; + let l = o && s || t; + (this._targetLatencyUpdated || c.liveSyncDuration || c.liveSyncDurationCount || l === 0) && (l = r !== void 0 ? r : n * i); + const h = i; + return l + Math.min(this.stallCount * this.config.liveSyncOnStallIncrease, h); + } + set targetLatency(e) { + this.stallCount = 0, this.config.liveSyncDuration = e, this._targetLatencyUpdated = !0; + } + get liveSyncPosition() { + const e = this.estimateLiveEdge(), t = this.targetLatency; + if (e === null || t === null) + return null; + const s = this.levelDetails; + if (s === null) + return null; + const i = s.edge, r = e - t - this.edgeStalled, n = i - s.totalduration, o = i - (this.config.lowLatencyMode && s.partTarget || s.targetduration); + return Math.min(Math.max(n, r), o); + } + get drift() { + const e = this.levelDetails; + return e === null ? 1 : e.drift; + } + get edgeStalled() { + const e = this.levelDetails; + if (e === null) + return 0; + const t = (this.config.lowLatencyMode && e.partTarget || e.targetduration) * 3; + return Math.max(e.age - t, 0); + } + get forwardBufferLength() { + const { + media: e + } = this, t = this.levelDetails; + if (!e || !t) + return 0; + const s = e.buffered.length; + return (s ? e.buffered.end(s - 1) : t.edge) - this.currentTime; + } + destroy() { + this.unregisterListeners(), this.onMediaDetaching(), this.hls = null; + } + registerListeners() { + const { + hls: e + } = this; + e && (e.on(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.on(m.ERROR, this.onError, this)); + } + unregisterListeners() { + const { + hls: e + } = this; + e && (e.off(m.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(m.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.LEVEL_UPDATED, this.onLevelUpdated, this), e.off(m.ERROR, this.onError, this)); + } + onMediaAttached(e, t) { + this.media = t.media, this.media.addEventListener("timeupdate", this.onTimeupdate); + } + onMediaDetaching() { + this.media && (this.media.removeEventListener("timeupdate", this.onTimeupdate), this.media = null); + } + onManifestLoading() { + this._latency = null, this.stallCount = 0; + } + onLevelUpdated(e, { + details: t + }) { + t.advanced && this.onTimeupdate(), !t.live && this.media && this.media.removeEventListener("timeupdate", this.onTimeupdate); + } + onError(e, t) { + var s; + t.details === b.BUFFER_STALLED_ERROR && (this.stallCount++, this.hls && (s = this.levelDetails) != null && s.live && this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency")); + } + changeMediaPlaybackRate(e, t) { + var s, i; + e.playbackRate !== t && ((s = this.hls) == null || s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(i = this.targetLatency) == null ? void 0 : i.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${e.playbackRate} to ${t}`), e.playbackRate = t); + } + estimateLiveEdge() { + const e = this.levelDetails; + return e === null ? null : e.edge + e.age; + } + computeLatency() { + const e = this.estimateLiveEdge(); + return e === null ? null : e - this.currentTime; + } +} +class Nu extends Pi { + constructor(e, t) { + super(e, "level-controller"), this._levels = [], this._firstLevel = -1, this._maxAutoLevel = -1, this._startLevel = void 0, this.currentLevel = null, this.currentLevelIndex = -1, this.manualLevelIndex = -1, this.steering = void 0, this.onParsedComplete = void 0, this.steering = t, this._registerListeners(); + } + _registerListeners() { + const { + hls: e + } = this; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.on(m.LEVEL_LOADED, this.onLevelLoaded, this), e.on(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(m.FRAG_BUFFERED, this.onFragBuffered, this), e.on(m.ERROR, this.onError, this); + } + _unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.MANIFEST_LOADED, this.onManifestLoaded, this), e.off(m.LEVEL_LOADED, this.onLevelLoaded, this), e.off(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(m.FRAG_BUFFERED, this.onFragBuffered, this), e.off(m.ERROR, this.onError, this); + } + destroy() { + this._unregisterListeners(), this.steering = null, this.resetLevels(), super.destroy(); + } + stopLoad() { + this._levels.forEach((t) => { + t.loadError = 0, t.fragmentError = 0; + }), super.stopLoad(); + } + resetLevels() { + this._startLevel = void 0, this.manualLevelIndex = -1, this.currentLevelIndex = -1, this.currentLevel = null, this._levels = [], this._maxAutoLevel = -1; + } + onManifestLoading(e, t) { + this.resetLevels(); + } + onManifestLoaded(e, t) { + const s = this.hls.config.preferManagedMediaSource, i = [], r = {}, n = {}; + let o = !1, c = !1, l = !1; + t.levels.forEach((h) => { + const u = h.attrs; + let { + audioCodec: d, + videoCodec: g + } = h; + d && (h.audioCodec = d = us(d, s) || void 0), g && (g = h.videoCodec = Oo(g)); + const { + width: f, + height: E, + unknownCodecs: p + } = h; + let y = p ? p.length : 0; + if (p) + for (let L = y; L--; ) { + const k = p[L]; + this.isAudioSupported(k) ? (h.audioCodec = d = d ? `${d},${k}` : k, y--, pt.audio[d.substring(0, 4)] = 2) : this.isVideoSupported(k) && (h.videoCodec = g = g ? `${g},${k}` : k, y--, pt.video[g.substring(0, 4)] = 2); + } + if (o || (o = !!(f && E)), c || (c = !!g), l || (l = !!d), y || d && !this.isAudioSupported(d) || g && !this.isVideoSupported(g)) { + this.log(`Some or all CODECS not supported "${u.CODECS}"`); + return; + } + const { + CODECS: S, + "FRAME-RATE": T, + "HDCP-LEVEL": v, + "PATHWAY-ID": x, + RESOLUTION: _, + "VIDEO-RANGE": A + } = u, D = `${`${x || "."}-`}${h.bitrate}-${_}-${T}-${S}-${A}-${v}`; + if (r[D]) + if (r[D].uri !== h.url && !h.attrs["PATHWAY-ID"]) { + const L = n[D] += 1; + h.attrs["PATHWAY-ID"] = new Array(L + 1).join("."); + const k = this.createLevel(h); + r[D] = k, i.push(k); + } else + r[D].addGroupId("audio", u.AUDIO), r[D].addGroupId("text", u.SUBTITLES); + else { + const L = this.createLevel(h); + r[D] = L, n[D] = 1, i.push(L); + } + }), this.filterAndSortMediaOptions(i, t, o, c, l); + } + createLevel(e) { + const t = new Ct(e), s = e.supplemental; + if (s != null && s.videoCodec && !this.isVideoSupported(s.videoCodec)) { + const i = new Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`); + this.log(i.message), t.supportedResult = kn(i, []); + } + return t; + } + isAudioSupported(e) { + return ei(e, "audio", this.hls.config.preferManagedMediaSource); + } + isVideoSupported(e) { + return ei(e, "video", this.hls.config.preferManagedMediaSource); + } + filterAndSortMediaOptions(e, t, s, i, r) { + let n = [], o = [], c = e; + if ((s || i) && r && (c = c.filter(({ + videoCodec: p, + videoRange: y, + width: S, + height: T + }) => (!!p || !!(S && T)) && Uo(y))), c.length === 0) { + Promise.resolve().then(() => { + if (this.hls) { + let p = "no level with compatible codecs found in manifest", y = p; + t.levels.length && (y = `one or more CODECS in variant not supported: ${ae(t.levels.map((T) => T.attrs.CODECS).filter((T, v, x) => x.indexOf(T) === v))}`, this.warn(y), p += ` (${y})`); + const S = new Error(p); + this.hls.trigger(m.ERROR, { + type: K.MEDIA_ERROR, + details: b.MANIFEST_INCOMPATIBLE_CODECS_ERROR, + fatal: !0, + url: t.url, + error: S, + reason: y + }); + } + }); + return; + } + t.audioTracks && (n = t.audioTracks.filter((p) => !p.audioCodec || this.isAudioSupported(p.audioCodec)), on(n)), t.subtitles && (o = t.subtitles, on(o)); + const l = c.slice(0); + c.sort((p, y) => { + if (p.attrs["HDCP-LEVEL"] !== y.attrs["HDCP-LEVEL"]) + return (p.attrs["HDCP-LEVEL"] || "") > (y.attrs["HDCP-LEVEL"] || "") ? 1 : -1; + if (s && p.height !== y.height) + return p.height - y.height; + if (p.frameRate !== y.frameRate) + return p.frameRate - y.frameRate; + if (p.videoRange !== y.videoRange) + return ds.indexOf(p.videoRange) - ds.indexOf(y.videoRange); + if (p.videoCodec !== y.videoCodec) { + const S = Ji(p.videoCodec), T = Ji(y.videoCodec); + if (S !== T) + return T - S; + } + if (p.uri === y.uri && p.codecSet !== y.codecSet) { + const S = hs(p.codecSet), T = hs(y.codecSet); + if (S !== T) + return T - S; + } + return p.averageBitrate !== y.averageBitrate ? p.averageBitrate - y.averageBitrate : 0; + }); + let h = l[0]; + if (this.steering && (c = this.steering.filterParsedLevels(c), c.length !== l.length)) { + for (let p = 0; p < l.length; p++) + if (l[p].pathwayId === c[0].pathwayId) { + h = l[p]; + break; + } + } + this._levels = c; + for (let p = 0; p < c.length; p++) + if (c[p] === h) { + var u; + this._firstLevel = p; + const y = h.bitrate, S = this.hls.bandwidthEstimate; + if (this.log(`manifest loaded, ${c.length} level(s) found, first bitrate: ${y}`), ((u = this.hls.userConfig) == null ? void 0 : u.abrEwmaDefaultEstimate) === void 0) { + const T = Math.min(y, this.hls.config.abrEwmaDefaultEstimateMax); + T > S && S === this.hls.abrEwmaDefaultEstimate && (this.hls.bandwidthEstimate = T); + } + break; + } + const d = r && !i, g = this.hls.config, f = !!(g.audioStreamController && g.audioTrackController), E = { + levels: c, + audioTracks: n, + subtitleTracks: o, + sessionData: t.sessionData, + sessionKeys: t.sessionKeys, + firstLevel: this._firstLevel, + stats: t.stats, + audio: r, + video: i, + altAudio: f && !d && n.some((p) => !!p.url) + }; + this.hls.trigger(m.MANIFEST_PARSED, E); + } + get levels() { + return this._levels.length === 0 ? null : this._levels; + } + get loadLevelObj() { + return this.currentLevel; + } + get level() { + return this.currentLevelIndex; + } + set level(e) { + const t = this._levels; + if (t.length === 0) + return; + if (e < 0 || e >= t.length) { + const h = new Error("invalid level idx"), u = e < 0; + if (this.hls.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.LEVEL_SWITCH_ERROR, + level: e, + fatal: u, + error: h, + reason: h.message + }), u) + return; + e = Math.min(e, t.length - 1); + } + const s = this.currentLevelIndex, i = this.currentLevel, r = i ? i.attrs["PATHWAY-ID"] : void 0, n = t[e], o = n.attrs["PATHWAY-ID"]; + if (this.currentLevelIndex = e, this.currentLevel = n, s === e && i && r === o) + return; + this.log(`Switching to level ${e} (${n.height ? n.height + "p " : ""}${n.videoRange ? n.videoRange + " " : ""}${n.codecSet ? n.codecSet + " " : ""}@${n.bitrate})${o ? " with Pathway " + o : ""} from level ${s}${r ? " with Pathway " + r : ""}`); + const c = { + level: e, + attrs: n.attrs, + details: n.details, + bitrate: n.bitrate, + averageBitrate: n.averageBitrate, + maxBitrate: n.maxBitrate, + realBitrate: n.realBitrate, + width: n.width, + height: n.height, + codecSet: n.codecSet, + audioCodec: n.audioCodec, + videoCodec: n.videoCodec, + audioGroups: n.audioGroups, + subtitleGroups: n.subtitleGroups, + loaded: n.loaded, + loadError: n.loadError, + fragmentError: n.fragmentError, + name: n.name, + id: n.id, + uri: n.uri, + url: n.url, + urlId: 0, + audioGroupIds: n.audioGroupIds, + textGroupIds: n.textGroupIds + }; + this.hls.trigger(m.LEVEL_SWITCHING, c); + const l = n.details; + if (!l || l.live) { + const h = this.switchParams(n.uri, i == null ? void 0 : i.details, l); + this.loadPlaylist(h); + } + } + get manualLevel() { + return this.manualLevelIndex; + } + set manualLevel(e) { + this.manualLevelIndex = e, this._startLevel === void 0 && (this._startLevel = e), e !== -1 && (this.level = e); + } + get firstLevel() { + return this._firstLevel; + } + set firstLevel(e) { + this._firstLevel = e; + } + get startLevel() { + if (this._startLevel === void 0) { + const e = this.hls.config.startLevel; + return e !== void 0 ? e : this.hls.firstAutoLevel; + } + return this._startLevel; + } + set startLevel(e) { + this._startLevel = e; + } + get pathways() { + return this.steering ? this.steering.pathways() : []; + } + get pathwayPriority() { + return this.steering ? this.steering.pathwayPriority : null; + } + set pathwayPriority(e) { + if (this.steering) { + const t = this.steering.pathways(), s = e.filter((i) => t.indexOf(i) !== -1); + if (e.length < 1) { + this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`); + return; + } + this.steering.pathwayPriority = s; + } + } + onError(e, t) { + t.fatal || !t.context || t.context.type === z.LEVEL && t.context.level === this.level && this.checkRetry(t); + } + // reset errors on the successful load of a fragment + onFragBuffered(e, { + frag: t + }) { + if (t !== void 0 && t.type === $.MAIN) { + const s = t.elementaryStreams; + if (!Object.keys(s).some((r) => !!s[r])) + return; + const i = this._levels[t.level]; + i != null && i.loadError && (this.log(`Resetting level error count of ${i.loadError} on frag buffered`), i.loadError = 0); + } + } + onLevelLoaded(e, t) { + var s; + const { + level: i, + details: r + } = t, n = t.levelInfo; + if (!n) { + var o; + this.warn(`Invalid level index ${i}`), (o = t.deliveryDirectives) != null && o.skip && (r.deltaUpdateFailed = !0); + return; + } + if (n === this.currentLevel || t.withoutMultiVariant) { + n.fragmentError === 0 && (n.loadError = 0); + let c = n.details; + c === t.details && c.advanced && (c = void 0), this.playlistLoaded(i, t, c); + } else (s = t.deliveryDirectives) != null && s.skip && (r.deltaUpdateFailed = !0); + } + loadPlaylist(e) { + super.loadPlaylist(), this.shouldLoadPlaylist(this.currentLevel) && this.scheduleLoading(this.currentLevel, e); + } + loadingPlaylist(e, t) { + super.loadingPlaylist(e, t); + const s = this.getUrlWithDirectives(e.uri, t), i = this.currentLevelIndex, r = e.attrs["PATHWAY-ID"], n = e.details, o = n == null ? void 0 : n.age; + this.log(`Loading level index ${i}${(t == null ? void 0 : t.msn) !== void 0 ? " at sn " + t.msn + " part " + t.part : ""}${r ? " Pathway " + r : ""}${o && n.live ? " age " + o.toFixed(1) + (n.type && " " + n.type || "") : ""} ${s}`), this.hls.trigger(m.LEVEL_LOADING, { + url: s, + level: i, + levelInfo: e, + pathwayId: e.attrs["PATHWAY-ID"], + id: 0, + // Deprecated Level urlId + deliveryDirectives: t || null + }); + } + get nextLoadLevel() { + return this.manualLevelIndex !== -1 ? this.manualLevelIndex : this.hls.nextAutoLevel; + } + set nextLoadLevel(e) { + this.level = e, this.manualLevelIndex === -1 && (this.hls.nextAutoLevel = e); + } + removeLevel(e) { + var t; + if (this._levels.length === 1) + return; + const s = this._levels.filter((r, n) => n !== e ? !0 : (this.steering && this.steering.removeLevel(r), r === this.currentLevel && (this.currentLevel = null, this.currentLevelIndex = -1, r.details && r.details.fragments.forEach((o) => o.level = -1)), !1)); + jn(s), this._levels = s, this.currentLevelIndex > -1 && (t = this.currentLevel) != null && t.details && (this.currentLevelIndex = this.currentLevel.details.fragments[0].level), this.manualLevelIndex > -1 && (this.manualLevelIndex = this.currentLevelIndex); + const i = s.length - 1; + this._firstLevel = Math.min(this._firstLevel, i), this._startLevel && (this._startLevel = Math.min(this._startLevel, i)), this.hls.trigger(m.LEVELS_UPDATED, { + levels: s + }); + } + onLevelsUpdated(e, { + levels: t + }) { + this._levels = t; + } + checkMaxAutoUpdated() { + const { + autoLevelCapping: e, + maxAutoLevel: t, + maxHdcpLevel: s + } = this.hls; + this._maxAutoLevel !== t && (this._maxAutoLevel = t, this.hls.trigger(m.MAX_AUTO_LEVEL_UPDATED, { + autoLevelCapping: e, + levels: this.levels, + maxAutoLevel: t, + minAutoLevel: this.hls.minAutoLevel, + maxHdcpLevel: s + })); + } +} +function on(a) { + const e = {}; + a.forEach((t) => { + const s = t.groupId || ""; + t.id = e[s] = e[s] || 0, e[s]++; + }); +} +function Ba() { + return self.SourceBuffer || self.WebKitSourceBuffer; +} +function Ua() { + if (!ze()) + return !1; + const e = Ba(); + return !e || e.prototype && typeof e.prototype.appendBuffer == "function" && typeof e.prototype.remove == "function"; +} +function Bu() { + if (!Ua()) + return !1; + const a = ze(); + return typeof (a == null ? void 0 : a.isTypeSupported) == "function" && (["avc1.42E01E,mp4a.40.2", "av01.0.01M.08", "vp09.00.50.08"].some((e) => a.isTypeSupported(Dt(e, "video"))) || ["mp4a.40.2", "fLaC"].some((e) => a.isTypeSupported(Dt(e, "audio")))); +} +function Uu() { + var a; + const e = Ba(); + return typeof (e == null || (a = e.prototype) == null ? void 0 : a.changeType) == "function"; +} +const $u = 100; +class Gu extends Ai { + constructor(e, t, s) { + super(e, t, s, "stream-controller", $.MAIN), this.audioCodecSwap = !1, this.level = -1, this._forceStartLoad = !1, this._hasEnoughToStart = !1, this.altAudio = 0, this.audioOnly = !1, this.fragPlaying = null, this.fragLastKbps = 0, this.couldBacktrack = !1, this.backtrackFragment = null, this.audioCodecSwitch = !1, this.videoBuffer = null, this.onMediaPlaying = () => { + this.tick(); + }, this.onMediaSeeked = () => { + const i = this.media, r = i ? i.currentTime : null; + if (r === null || !N(r) || (this.log(`Media seeked to ${r.toFixed(3)}`), !this.getBufferedFrag(r))) + return; + const n = this.getFwdBufferInfoAtPos(i, r, $.MAIN, 0); + if (n === null || n.len === 0) { + this.warn(`Main forward buffer length at ${r} on "seeked" event ${n ? n.len : "empty"})`); + return; + } + this.tick(); + }, this.registerListeners(); + } + registerListeners() { + super.registerListeners(); + const { + hls: e + } = this; + e.on(m.MANIFEST_PARSED, this.onManifestParsed, this), e.on(m.LEVEL_LOADING, this.onLevelLoading, this), e.on(m.LEVEL_LOADED, this.onLevelLoaded, this), e.on(m.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), e.on(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.on(m.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), e.on(m.BUFFER_CREATED, this.onBufferCreated, this), e.on(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.on(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.on(m.FRAG_BUFFERED, this.onFragBuffered, this); + } + unregisterListeners() { + super.unregisterListeners(); + const { + hls: e + } = this; + e.off(m.MANIFEST_PARSED, this.onManifestParsed, this), e.off(m.LEVEL_LOADED, this.onLevelLoaded, this), e.off(m.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), e.off(m.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), e.off(m.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), e.off(m.BUFFER_CREATED, this.onBufferCreated, this), e.off(m.BUFFER_FLUSHED, this.onBufferFlushed, this), e.off(m.LEVELS_UPDATED, this.onLevelsUpdated, this), e.off(m.FRAG_BUFFERED, this.onFragBuffered, this); + } + onHandlerDestroying() { + this.onMediaPlaying = this.onMediaSeeked = null, this.unregisterListeners(), super.onHandlerDestroying(); + } + startLoad(e, t) { + if (this.levels) { + const { + lastCurrentTime: s, + hls: i + } = this; + if (this.stopLoad(), this.setInterval($u), this.level = -1, !this.startFragRequested) { + let r = i.startLevel; + r === -1 && (i.config.testBandwidth && this.levels.length > 1 ? (r = 0, this.bitrateTest = !0) : r = i.firstAutoLevel), i.nextLoadLevel = r, this.level = i.loadLevel, this._hasEnoughToStart = !!t; + } + s > 0 && e === -1 && !t && (this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`), e = s), this.state = C.IDLE, this.nextLoadPosition = this.lastCurrentTime = e + this.timelineOffset, this.startPosition = t ? -1 : e, this.tick(); + } else + this._forceStartLoad = !0, this.state = C.STOPPED; + } + stopLoad() { + this._forceStartLoad = !1, super.stopLoad(); + } + doTick() { + switch (this.state) { + case C.WAITING_LEVEL: { + const { + levels: t, + level: s + } = this, i = t == null ? void 0 : t[s], r = i == null ? void 0 : i.details; + if (r && (!r.live || this.levelLastLoaded === i && !this.waitForLive(i))) { + if (this.waitForCdnTuneIn(r)) + break; + this.state = C.IDLE; + break; + } else if (this.hls.nextLoadLevel !== this.level) { + this.state = C.IDLE; + break; + } + break; + } + case C.FRAG_LOADING_WAITING_RETRY: + { + var e; + const t = self.performance.now(), s = this.retryDate; + if (!s || t >= s || (e = this.media) != null && e.seeking) { + const { + levels: i, + level: r + } = this, n = i == null ? void 0 : i[r]; + this.resetStartWhenNotLoaded(n || null), this.state = C.IDLE; + } + } + break; + } + this.state === C.IDLE && this.doTickIdle(), this.onTickEnd(); + } + onTickEnd() { + var e; + super.onTickEnd(), (e = this.media) != null && e.readyState && this.media.seeking === !1 && (this.lastCurrentTime = this.media.currentTime), this.checkFragmentChanged(); + } + doTickIdle() { + const { + hls: e, + levelLastLoaded: t, + levels: s, + media: i + } = this; + if (t === null || !i && !this.primaryPrefetch && (this.startFragRequested || !e.config.startFragPrefetch) || this.altAudio && this.audioOnly) + return; + const r = this.buffering ? e.nextLoadLevel : e.loadLevel; + if (!(s != null && s[r])) + return; + const n = s[r], o = this.getMainFwdBufferInfo(); + if (o === null) + return; + const c = this.getLevelDetails(); + if (c && this._streamEnded(o, c)) { + const E = {}; + this.altAudio === 2 && (E.type = "video"), this.hls.trigger(m.BUFFER_EOS, E), this.state = C.ENDED; + return; + } + if (!this.buffering) + return; + e.loadLevel !== r && e.manualLevel === -1 && this.log(`Adapting to level ${r} from level ${this.level}`), this.level = e.nextLoadLevel = r; + const l = n.details; + if (!l || this.state === C.WAITING_LEVEL || this.waitForLive(n)) { + this.level = r, this.state = C.WAITING_LEVEL, this.startFragRequested = !1; + return; + } + const h = o.len, u = this.getMaxBufferLength(n.maxBitrate); + if (h >= u) + return; + this.backtrackFragment && this.backtrackFragment.start > o.end && (this.backtrackFragment = null); + const d = this.backtrackFragment ? this.backtrackFragment.start : o.end; + let g = this.getNextFragment(d, l); + if (this.couldBacktrack && !this.fragPrevious && g && ue(g) && this.fragmentTracker.getState(g) !== ce.OK) { + var f; + const p = ((f = this.backtrackFragment) != null ? f : g).sn - l.startSN, y = l.fragments[p - 1]; + y && g.cc === y.cc && (g = y, this.fragmentTracker.removeFragment(y)); + } else this.backtrackFragment && o.len && (this.backtrackFragment = null); + if (g && this.isLoopLoading(g, d)) { + if (!g.gap) { + const p = this.audioOnly && !this.altAudio ? ne.AUDIO : ne.VIDEO, y = (p === ne.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + y && this.afterBufferFlushed(y, p, $.MAIN); + } + g = this.getNextFragmentLoopLoading(g, l, o, $.MAIN, u); + } + g && (g.initSegment && !g.initSegment.data && !this.bitrateTest && (g = g.initSegment), this.loadFragment(g, n, d)); + } + loadFragment(e, t, s) { + const i = this.fragmentTracker.getState(e); + i === ce.NOT_LOADED || i === ce.PARTIAL ? ue(e) ? this.bitrateTest ? (this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`), this._loadBitrateTestFrag(e, t)) : super.loadFragment(e, t, s) : this._loadInitSegment(e, t) : this.clearTrackerIfNeeded(e); + } + getBufferedFrag(e) { + return this.fragmentTracker.getBufferedFrag(e, $.MAIN); + } + followingBufferedFrag(e) { + return e ? this.getBufferedFrag(e.end + 0.5) : null; + } + /* + on immediate level switch : + - pause playback if playing + - cancel any pending load request + - and trigger a buffer flush + */ + immediateLevelSwitch() { + this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + /** + * try to switch ASAP without breaking video playback: + * in order to ensure smooth but quick level switching, + * we need to find the next flushable buffer range + * we should take into account new segment fetch time + */ + nextLevelSwitch() { + const { + levels: e, + media: t + } = this; + if (t != null && t.readyState) { + let s; + const i = this.getAppendedFrag(t.currentTime); + i && i.start > 1 && this.flushMainBuffer(0, i.start - 1); + const r = this.getLevelDetails(); + if (r != null && r.live) { + const o = this.getMainFwdBufferInfo(); + if (!o || o.len < r.targetduration * 2) + return; + } + if (!t.paused && e) { + const o = this.hls.nextLoadLevel, c = e[o], l = this.fragLastKbps; + l && this.fragCurrent ? s = this.fragCurrent.duration * c.maxBitrate / (1e3 * l) + 1 : s = 0; + } else + s = 0; + const n = this.getBufferedFrag(t.currentTime + s); + if (n) { + const o = this.followingBufferedFrag(n); + if (o) { + this.abortCurrentFrag(); + const c = o.maxStartPTS ? o.maxStartPTS : o.start, l = o.duration, h = Math.max(n.end, c + Math.min(Math.max(l - this.config.maxFragLookUpTolerance, l * (this.couldBacktrack ? 0.5 : 0.125)), l * (this.couldBacktrack ? 0.75 : 0.25))); + this.flushMainBuffer(h, Number.POSITIVE_INFINITY); + } + } + } + } + abortCurrentFrag() { + const e = this.fragCurrent; + switch (this.fragCurrent = null, this.backtrackFragment = null, e && (e.abortRequests(), this.fragmentTracker.removeFragment(e)), this.state) { + case C.KEY_LOADING: + case C.FRAG_LOADING: + case C.FRAG_LOADING_WAITING_RETRY: + case C.PARSING: + case C.PARSED: + this.state = C.IDLE; + break; + } + this.nextLoadPosition = this.getLoadPosition(); + } + flushMainBuffer(e, t) { + super.flushMainBuffer(e, t, this.altAudio === 2 ? "video" : null); + } + onMediaAttached(e, t) { + super.onMediaAttached(e, t); + const s = t.media; + ve(s, "playing", this.onMediaPlaying), ve(s, "seeked", this.onMediaSeeked); + } + onMediaDetaching(e, t) { + const { + media: s + } = this; + s && (Re(s, "playing", this.onMediaPlaying), Re(s, "seeked", this.onMediaSeeked)), this.videoBuffer = null, this.fragPlaying = null, super.onMediaDetaching(e, t), !t.transferMedia && (this._hasEnoughToStart = !1); + } + onManifestLoading() { + super.onManifestLoading(), this.log("Trigger BUFFER_RESET"), this.hls.trigger(m.BUFFER_RESET, void 0), this.couldBacktrack = !1, this.fragLastKbps = 0, this.fragPlaying = this.backtrackFragment = null, this.altAudio = 0, this.audioOnly = !1; + } + onManifestParsed(e, t) { + let s = !1, i = !1; + t.levels.forEach((r) => { + const n = r.audioCodec; + n && (s = s || n.indexOf("mp4a.40.2") !== -1, i = i || n.indexOf("mp4a.40.5") !== -1); + }), this.audioCodecSwitch = s && i && !Uu(), this.audioCodecSwitch && this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"), this.levels = t.levels, this.startFragRequested = !1; + } + onLevelLoading(e, t) { + const { + levels: s + } = this; + if (!s || this.state !== C.IDLE) + return; + const i = t.levelInfo; + (!i.details || i.details.live && (this.levelLastLoaded !== i || i.details.expired) || this.waitForCdnTuneIn(i.details)) && (this.state = C.WAITING_LEVEL); + } + onLevelLoaded(e, t) { + var s; + const { + levels: i, + startFragRequested: r + } = this, n = t.level, o = t.details, c = o.totalduration; + if (!i) { + this.warn(`Levels were reset while loading level ${n}`); + return; + } + this.log(`Level ${n} loaded [${o.startSN},${o.endSN}]${o.lastPartSn ? `[part-${o.lastPartSn}-${o.lastPartIndex}]` : ""}, cc [${o.startCC}, ${o.endCC}] duration:${c}`); + const l = t.levelInfo, h = this.fragCurrent; + h && (this.state === C.FRAG_LOADING || this.state === C.FRAG_LOADING_WAITING_RETRY) && h.level !== t.level && h.loader && this.abortCurrentFrag(); + let u = 0; + if (o.live || (s = l.details) != null && s.live) { + var d; + if (this.checkLiveUpdate(o), o.deltaUpdateFailed) + return; + u = this.alignPlaylists(o, l.details, (d = this.levelLastLoaded) == null ? void 0 : d.details); + } + if (l.details = o, this.levelLastLoaded = l, r || this.setStartPosition(o, u), this.hls.trigger(m.LEVEL_UPDATED, { + details: o, + level: n + }), this.state === C.WAITING_LEVEL) { + if (this.waitForCdnTuneIn(o)) + return; + this.state = C.IDLE; + } + r && o.live && this.synchronizeToLiveEdge(o), this.tick(); + } + synchronizeToLiveEdge(e) { + const { + config: t, + media: s + } = this; + if (!s) + return; + const i = this.hls.liveSyncPosition, r = this.getLoadPosition(), n = e.fragmentStart, o = e.edge, c = r >= n - t.maxFragLookUpTolerance && r <= o; + if (i !== null && s.duration > i && (r < i || !c)) { + const h = t.liveMaxLatencyDuration !== void 0 ? t.liveMaxLatencyDuration : t.liveMaxLatencyDurationCount * e.targetduration; + if ((!c && s.readyState < 4 || r < o - h) && (this._hasEnoughToStart || (this.nextLoadPosition = i), s.readyState)) + if (this.warn(`Playback: ${r.toFixed(3)} is located too far from the end of live sliding playlist: ${o}, reset currentTime to : ${i.toFixed(3)}`), this.config.liveSyncMode === "buffered") { + var l; + const u = q.bufferInfo(s, i, 0); + if (!(u != null && (l = u.buffered) != null && l.length)) { + s.currentTime = i; + return; + } + if (u.start <= r) { + s.currentTime = i; + return; + } + const { + nextStart: g + } = q.bufferedInfo(u.buffered, r, 0); + g && (s.currentTime = g); + } else + s.currentTime = i; + } + } + _handleFragmentLoadProgress(e) { + var t; + const s = e.frag, { + part: i, + payload: r + } = e, { + levels: n + } = this; + if (!n) { + this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`); + return; + } + const o = n[s.level]; + if (!o) { + this.warn(`Level ${s.level} not found on progress`); + return; + } + const c = o.details; + if (!c) { + this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`), this.fragmentTracker.removeFragment(s); + return; + } + const l = o.videoCodec, h = c.PTSKnown || !c.live, u = (t = s.initSegment) == null ? void 0 : t.data, d = this._getAudioCodec(o), g = this.transmuxer = this.transmuxer || new pa(this.hls, $.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)), f = i ? i.index : -1, E = f !== -1, p = new Si(s.level, s.sn, s.stats.chunkCount, r.byteLength, f, E), y = this.initPTS[s.cc]; + g.push(r, u, d, l, s, i, c.totalduration, h, p, y); + } + onAudioTrackSwitching(e, t) { + const s = this.hls, i = this.altAudio === 2; + if (fs(t.url, s)) + this.altAudio = 1; + else { + if (this.mediaBuffer !== this.media) { + this.log("Switching on main audio, use media.buffered to schedule main fragment loading"), this.mediaBuffer = this.media; + const n = this.fragCurrent; + n && (this.log("Switching to main audio track, cancel main fragment load"), n.abortRequests(), this.fragmentTracker.removeFragment(n)), this.resetTransmuxer(), this.resetLoadingState(); + } else this.audioOnly && this.resetTransmuxer(); + if (i) { + this.fragmentTracker.removeAllFragments(), s.once(m.BUFFER_FLUSHED, () => { + var n; + (n = this.hls) == null || n.trigger(m.AUDIO_TRACK_SWITCHED, t); + }), s.trigger(m.BUFFER_FLUSHING, { + startOffset: 0, + endOffset: Number.POSITIVE_INFINITY, + type: null + }); + return; + } + s.trigger(m.AUDIO_TRACK_SWITCHED, t); + } + } + onAudioTrackSwitched(e, t) { + const s = fs(t.url, this.hls); + if (s) { + const i = this.videoBuffer; + i && this.mediaBuffer !== i && (this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"), this.mediaBuffer = i); + } + this.altAudio = s ? 2 : 0, this.tick(); + } + onBufferCreated(e, t) { + const s = t.tracks; + let i, r, n = !1; + for (const o in s) { + const c = s[o]; + if (c.id === "main") { + if (r = o, i = c, o === "video") { + const l = s[o]; + l && (this.videoBuffer = l.buffer); + } + } else + n = !0; + } + n && i ? (this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`), this.mediaBuffer = i.buffer) : this.mediaBuffer = this.media; + } + onFragBuffered(e, t) { + const { + frag: s, + part: i + } = t, r = s.type === $.MAIN; + if (r) { + if (this.fragContextChanged(s)) { + this.warn(`Fragment ${s.sn}${i ? " p: " + i.index : ""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`), this.state === C.PARSED && (this.state = C.IDLE); + return; + } + const o = i ? i.stats : s.stats; + this.fragLastKbps = Math.round(8 * o.total / (o.buffering.end - o.loading.first)), ue(s) && (this.fragPrevious = s), this.fragBufferedComplete(s, i); + } + const n = this.media; + n && (!this._hasEnoughToStart && q.getBuffered(n).length && (this._hasEnoughToStart = !0, this.seekToStartPos()), r && this.tick()); + } + get hasEnoughToStart() { + return this._hasEnoughToStart; + } + onError(e, t) { + var s; + if (t.fatal) { + this.state = C.ERROR; + return; + } + switch (t.details) { + case b.FRAG_GAP: + case b.FRAG_PARSING_ERROR: + case b.FRAG_DECRYPT_ERROR: + case b.FRAG_LOAD_ERROR: + case b.FRAG_LOAD_TIMEOUT: + case b.KEY_LOAD_ERROR: + case b.KEY_LOAD_TIMEOUT: + this.onFragmentOrKeyLoadError($.MAIN, t); + break; + case b.LEVEL_LOAD_ERROR: + case b.LEVEL_LOAD_TIMEOUT: + case b.LEVEL_PARSING_ERROR: + !t.levelRetry && this.state === C.WAITING_LEVEL && ((s = t.context) == null ? void 0 : s.type) === z.LEVEL && (this.state = C.IDLE); + break; + case b.BUFFER_ADD_CODEC_ERROR: + case b.BUFFER_APPEND_ERROR: + if (t.parent !== "main") + return; + this.resetLoadingState(); + break; + case b.BUFFER_FULL_ERROR: + if (t.parent !== "main") + return; + this.reduceLengthAndFlushBuffer(t) && this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + break; + case b.INTERNAL_EXCEPTION: + this.recoverWorkerError(t); + break; + } + } + onFragLoadEmergencyAborted() { + this.state = C.IDLE, this._hasEnoughToStart || (this.startFragRequested = !1, this.nextLoadPosition = this.lastCurrentTime), this.tickImmediate(); + } + onBufferFlushed(e, { + type: t + }) { + if (t !== ne.AUDIO || !this.altAudio) { + const s = (t === ne.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media; + s && (this.afterBufferFlushed(s, t, $.MAIN), this.tick()); + } + } + onLevelsUpdated(e, t) { + this.level > -1 && this.fragCurrent && (this.level = this.fragCurrent.level, this.level === -1 && this.resetWhenMissingContext(this.fragCurrent)), this.levels = t.levels; + } + swapAudioCodec() { + this.audioCodecSwap = !this.audioCodecSwap; + } + /** + * Seeks to the set startPosition if not equal to the mediaElement's current time. + */ + seekToStartPos() { + const { + media: e + } = this; + if (!e) + return; + const t = e.currentTime; + let s = this.startPosition; + if (s >= 0 && t < s) { + if (e.seeking) { + this.log(`could not seek to ${s}, already seeking at ${t}`); + return; + } + const i = this.timelineOffset; + i && s && (s += i); + const r = this.getLevelDetails(), n = q.getBuffered(e), o = n.length ? n.start(0) : 0, c = o - s, l = Math.max(this.config.maxBufferHole, this.config.maxFragLookUpTolerance); + (this.config.startOnSegmentBoundary || c > 0 && (c < l || this.loadingParts && c < 2 * ((r == null ? void 0 : r.partTarget) || 0))) && (this.log(`adjusting start position by ${c} to match buffer start`), s += c, this.startPosition = s), t < s && (this.log(`seek to target start position ${s} from current time ${t} buffer start ${o}`), e.currentTime = s); + } + } + _getAudioCodec(e) { + let t = this.config.defaultAudioCodec || e.audioCodec; + return this.audioCodecSwap && t && (this.log("Swapping audio codec"), t.indexOf("mp4a.40.5") !== -1 ? t = "mp4a.40.2" : t = "mp4a.40.5"), t; + } + _loadBitrateTestFrag(e, t) { + e.bitrateTest = !0, this._doFragLoad(e, t).then((s) => { + const { + hls: i + } = this, r = s == null ? void 0 : s.frag; + if (!r || this.fragContextChanged(r)) + return; + t.fragmentError = 0, this.state = C.IDLE, this.startFragRequested = !1, this.bitrateTest = !1; + const n = r.stats; + n.parsing.start = n.parsing.end = n.buffering.start = n.buffering.end = self.performance.now(), i.trigger(m.FRAG_LOADED, s), r.bitrateTest = !1; + }); + } + _handleTransmuxComplete(e) { + var t; + const s = this.playlistType, { + hls: i + } = this, { + remuxResult: r, + chunkMeta: n + } = e, o = this.getCurrentContext(n); + if (!o) { + this.resetWhenMissingContext(n); + return; + } + const { + frag: c, + part: l, + level: h + } = o, { + video: u, + text: d, + id3: g, + initSegment: f + } = r, { + details: E + } = h, p = this.altAudio ? void 0 : r.audio; + if (this.fragContextChanged(c)) { + this.fragmentTracker.removeFragment(c); + return; + } + if (this.state = C.PARSING, f) { + if (f != null && f.tracks) { + const T = c.initSegment || c; + this._bufferInitSegment(h, f.tracks, T, n), i.trigger(m.FRAG_PARSING_INIT_SEGMENT, { + frag: T, + id: s, + tracks: f.tracks + }); + } + const y = f.initPTS, S = f.timescale; + N(y) && (this.initPTS[c.cc] = { + baseTime: y, + timescale: S + }, i.trigger(m.INIT_PTS_FOUND, { + frag: c, + id: s, + initPTS: y, + timescale: S + })); + } + if (u && E) { + p && u.type === "audiovideo" && this.logMuxedErr(c); + const y = E.fragments[c.sn - 1 - E.startSN], S = c.sn === E.startSN, T = !y || c.cc > y.cc; + if (r.independent !== !1) { + const { + startPTS: v, + endPTS: x, + startDTS: _, + endDTS: A + } = u; + if (l) + l.elementaryStreams[u.type] = { + startPTS: v, + endPTS: x, + startDTS: _, + endDTS: A + }; + else if (u.firstKeyFrame && u.independent && n.id === 1 && !T && (this.couldBacktrack = !0), u.dropped && u.independent) { + const R = this.getMainFwdBufferInfo(), D = (R ? R.end : this.getLoadPosition()) + this.config.maxBufferHole, L = u.firstKeyFramePTS ? u.firstKeyFramePTS : v; + if (!S && D < L - this.config.maxBufferHole && !T) { + this.backtrack(c); + return; + } else T && (c.gap = !0); + c.setElementaryStreamInfo(u.type, c.start, x, c.start, A, !0); + } else S && v - (E.appliedTimelineOffset || 0) > ls && (c.gap = !0); + c.setElementaryStreamInfo(u.type, v, x, _, A), this.backtrackFragment && (this.backtrackFragment = c), this.bufferFragmentData(u, c, l, n, S || T); + } else if (S || T) + c.gap = !0; + else { + this.backtrack(c); + return; + } + } + if (p) { + const { + startPTS: y, + endPTS: S, + startDTS: T, + endDTS: v + } = p; + l && (l.elementaryStreams[ne.AUDIO] = { + startPTS: y, + endPTS: S, + startDTS: T, + endDTS: v + }), c.setElementaryStreamInfo(ne.AUDIO, y, S, T, v), this.bufferFragmentData(p, c, l, n); + } + if (E && g != null && (t = g.samples) != null && t.length) { + const y = { + id: s, + frag: c, + details: E, + samples: g.samples + }; + i.trigger(m.FRAG_PARSING_METADATA, y); + } + if (E && d) { + const y = { + id: s, + frag: c, + details: E, + samples: d.samples + }; + i.trigger(m.FRAG_PARSING_USERDATA, y); + } + } + logMuxedErr(e) { + this.warn(`${ue(e) ? "Media" : "Init"} segment with muxed audiovideo where only video expected: ${e.url}`); + } + _bufferInitSegment(e, t, s, i) { + if (this.state !== C.PARSING) + return; + this.audioOnly = !!t.audio && !t.video, this.altAudio && !this.audioOnly && (delete t.audio, t.audiovideo && this.logMuxedErr(s)); + const { + audio: r, + video: n, + audiovideo: o + } = t; + if (r) { + let l = ts(r.codec, e.audioCodec); + l === "mp4a" && (l = "mp4a.40.5"); + const h = navigator.userAgent.toLowerCase(); + if (this.audioCodecSwitch) { + l && (l.indexOf("mp4a.40.5") !== -1 ? l = "mp4a.40.2" : l = "mp4a.40.5"); + const u = r.metadata; + u && "channelCount" in u && (u.channelCount || 1) !== 1 && h.indexOf("firefox") === -1 && (l = "mp4a.40.5"); + } + l && l.indexOf("mp4a.40.5") !== -1 && h.indexOf("android") !== -1 && r.container !== "audio/mpeg" && (l = "mp4a.40.2", this.log(`Android: force audio codec to ${l}`)), e.audioCodec && e.audioCodec !== l && this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${l}"`), r.levelCodec = l, r.id = $.MAIN, this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${l || ""}/${e.audioCodec || ""}/${r.codec}]`), delete t.audiovideo; + } + if (n) { + n.levelCodec = e.videoCodec, n.id = $.MAIN; + const l = n.codec; + if ((l == null ? void 0 : l.length) === 4) + switch (l) { + case "hvc1": + case "hev1": + n.codec = "hvc1.1.6.L120.90"; + break; + case "av01": + n.codec = "av01.0.04M.08"; + break; + case "avc1": + n.codec = "avc1.42e01e"; + break; + } + this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec || ""}/${l}]${n.codec !== l ? " parsed-corrected=" + n.codec : ""}${n.supplemental ? " supplemental=" + n.supplemental : ""}`), delete t.audiovideo; + } + o && (this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`), delete t.video, delete t.audio); + const c = Object.keys(t); + if (c.length) { + if (this.hls.trigger(m.BUFFER_CODECS, t), !this.hls) + return; + c.forEach((l) => { + const u = t[l].initSegment; + u != null && u.byteLength && this.hls.trigger(m.BUFFER_APPENDING, { + type: l, + data: u, + frag: s, + part: null, + chunkMeta: i, + parent: s.type + }); + }); + } + this.tickImmediate(); + } + getMainFwdBufferInfo() { + const e = this.mediaBuffer && this.altAudio === 2 ? this.mediaBuffer : this.media; + return this.getFwdBufferInfo(e, $.MAIN); + } + get maxBufferLength() { + const { + levels: e, + level: t + } = this, s = e == null ? void 0 : e[t]; + return s ? this.getMaxBufferLength(s.maxBitrate) : this.config.maxBufferLength; + } + backtrack(e) { + this.couldBacktrack = !0, this.backtrackFragment = e, this.resetTransmuxer(), this.flushBufferGap(e), this.fragmentTracker.removeFragment(e), this.fragPrevious = null, this.nextLoadPosition = e.start, this.state = C.IDLE; + } + checkFragmentChanged() { + const e = this.media; + let t = null; + if (e && e.readyState > 1 && e.seeking === !1) { + const s = e.currentTime; + if (q.isBuffered(e, s) ? t = this.getAppendedFrag(s) : q.isBuffered(e, s + 0.1) && (t = this.getAppendedFrag(s + 0.1)), t) { + this.backtrackFragment = null; + const i = this.fragPlaying, r = t.level; + (!i || t.sn !== i.sn || i.level !== r) && (this.fragPlaying = t, this.hls.trigger(m.FRAG_CHANGED, { + frag: t + }), (!i || i.level !== r) && this.hls.trigger(m.LEVEL_SWITCHED, { + level: r + })); + } + } + } + get nextLevel() { + const e = this.nextBufferedFrag; + return e ? e.level : -1; + } + get currentFrag() { + var e; + if (this.fragPlaying) + return this.fragPlaying; + const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime; + return N(t) ? this.getAppendedFrag(t) : null; + } + get currentProgramDateTime() { + var e; + const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime; + if (N(t)) { + const s = this.getLevelDetails(), i = this.currentFrag || (s ? it(null, s.fragments, t) : null); + if (i) { + const r = i.programDateTime; + if (r !== null) { + const n = r + (t - i.start) * 1e3; + return new Date(n); + } + } + } + return null; + } + get currentLevel() { + const e = this.currentFrag; + return e ? e.level : -1; + } + get nextBufferedFrag() { + const e = this.currentFrag; + return e ? this.followingBufferedFrag(e) : null; + } + get forceStartLoad() { + return this._forceStartLoad; + } +} +class Ku { + constructor(e) { + this.config = void 0, this.keyUriToKeyInfo = {}, this.emeController = null, this.config = e; + } + abort(e) { + for (const s in this.keyUriToKeyInfo) { + const i = this.keyUriToKeyInfo[s].loader; + if (i) { + var t; + if (e && e !== ((t = i.context) == null ? void 0 : t.frag.type)) + return; + i.abort(); + } + } + } + detach() { + for (const e in this.keyUriToKeyInfo) { + const t = this.keyUriToKeyInfo[e]; + (t.mediaKeySessionContext || t.decryptdata.isCommonEncryption) && delete this.keyUriToKeyInfo[e]; + } + } + destroy() { + this.detach(); + for (const e in this.keyUriToKeyInfo) { + const t = this.keyUriToKeyInfo[e].loader; + t && t.destroy(); + } + this.keyUriToKeyInfo = {}; + } + createKeyLoadError(e, t = b.KEY_LOAD_ERROR, s, i, r) { + return new $e({ + type: K.NETWORK_ERROR, + details: t, + fatal: !1, + frag: e, + response: r, + error: s, + networkDetails: i + }); + } + loadClear(e, t) { + if (this.emeController && this.config.emeEnabled && !this.emeController.getSelectedKeySystemFormats().length) { + if (t.length) { + const { + sn: s, + cc: i + } = e; + for (let r = 0; r < t.length; r++) { + const n = t[r]; + if (i <= n.cc && (s === "initSegment" || n.sn === "initSegment" || s < n.sn)) + return this.emeController.selectKeySystemFormat(n).then((o) => { + if (n.setKeyFormat(o), this.emeController && this.config.requireKeySystemAccessOnStart) { + const c = is(o); + if (c) + return this.emeController.getKeySystemAccess([c]); + } + }); + } + } else if (this.config.requireKeySystemAccessOnStart) { + const s = At(this.config); + if (s.length) + return this.emeController.getKeySystemAccess(s); + } + } + return null; + } + load(e) { + return !e.decryptdata && e.encrypted && this.emeController && this.config.emeEnabled ? this.emeController.selectKeySystemFormat(e).then((t) => this.loadInternal(e, t)) : this.loadInternal(e); + } + loadInternal(e, t) { + var s, i; + t && e.setKeyFormat(t); + const r = e.decryptdata; + if (!r) { + const l = new Error(t ? `Expected frag.decryptdata to be defined after setting format ${t}` : "Missing decryption data on fragment in onKeyLoading"); + return Promise.reject(this.createKeyLoadError(e, b.KEY_LOAD_ERROR, l)); + } + const n = r.uri; + if (!n) + return Promise.reject(this.createKeyLoadError(e, b.KEY_LOAD_ERROR, new Error(`Invalid key URI: "${n}"`))); + let o = this.keyUriToKeyInfo[n]; + if ((s = o) != null && s.decryptdata.key) + return r.key = o.decryptdata.key, Promise.resolve({ + frag: e, + keyInfo: o + }); + if ((i = o) != null && i.keyLoadPromise) { + var c; + switch ((c = o.mediaKeySessionContext) == null ? void 0 : c.keyStatus) { + case void 0: + case "status-pending": + case "usable": + case "usable-in-future": + return o.keyLoadPromise.then((l) => (r.key = l.keyInfo.decryptdata.key, { + frag: e, + keyInfo: o + })); + } + } + switch (o = this.keyUriToKeyInfo[n] = { + decryptdata: r, + keyLoadPromise: null, + loader: null, + mediaKeySessionContext: null + }, r.method) { + case "ISO-23001-7": + case "SAMPLE-AES": + case "SAMPLE-AES-CENC": + case "SAMPLE-AES-CTR": + return r.keyFormat === "identity" ? this.loadKeyHTTP(o, e) : this.loadKeyEME(o, e); + case "AES-128": + case "AES-256": + case "AES-256-CTR": + return this.loadKeyHTTP(o, e); + default: + return Promise.reject(this.createKeyLoadError(e, b.KEY_LOAD_ERROR, new Error(`Key supplied with unsupported METHOD: "${r.method}"`))); + } + } + loadKeyEME(e, t) { + const s = { + frag: t, + keyInfo: e + }; + if (this.emeController && this.config.emeEnabled) { + const i = this.emeController.loadKey(s); + if (i) + return (e.keyLoadPromise = i.then((r) => (e.mediaKeySessionContext = r, s))).catch((r) => { + throw e.keyLoadPromise = null, r; + }); + } + return Promise.resolve(s); + } + loadKeyHTTP(e, t) { + const s = this.config, i = s.loader, r = new i(s); + return t.keyLoader = e.loader = r, e.keyLoadPromise = new Promise((n, o) => { + const c = { + keyInfo: e, + frag: t, + responseType: "arraybuffer", + url: e.decryptdata.uri + }, l = s.keyLoadPolicy.default, h = { + loadPolicy: l, + timeout: l.maxLoadTimeMs, + maxRetry: 0, + retryDelay: 0, + maxRetryDelay: 0 + }, u = { + onSuccess: (d, g, f, E) => { + const { + frag: p, + keyInfo: y, + url: S + } = f; + if (!p.decryptdata || y !== this.keyUriToKeyInfo[S]) + return o(this.createKeyLoadError(p, b.KEY_LOAD_ERROR, new Error("after key load, decryptdata unset or changed"), E)); + y.decryptdata.key = p.decryptdata.key = new Uint8Array(d.data), p.keyLoader = null, y.loader = null, n({ + frag: p, + keyInfo: y + }); + }, + onError: (d, g, f, E) => { + this.resetLoader(g), o(this.createKeyLoadError(t, b.KEY_LOAD_ERROR, new Error(`HTTP Error ${d.code} loading key ${d.text}`), f, te({ + url: c.url, + data: void 0 + }, d))); + }, + onTimeout: (d, g, f) => { + this.resetLoader(g), o(this.createKeyLoadError(t, b.KEY_LOAD_TIMEOUT, new Error("key loading timed out"), f)); + }, + onAbort: (d, g, f) => { + this.resetLoader(g), o(this.createKeyLoadError(t, b.INTERNAL_ABORTED, new Error("key loading aborted"), f)); + } + }; + r.load(c, h, u); + }); + } + resetLoader(e) { + const { + frag: t, + keyInfo: s, + url: i + } = e, r = s.loader; + t.keyLoader === r && (t.keyLoader = null, s.loader = null), delete this.keyUriToKeyInfo[i], r && r.destroy(); + } +} +function ln(a) { + const { + type: e + } = a; + switch (e) { + case z.AUDIO_TRACK: + return $.AUDIO; + case z.SUBTITLE_TRACK: + return $.SUBTITLE; + default: + return $.MAIN; + } +} +function Xs(a, e) { + let t = a.url; + return (t === void 0 || t.indexOf("data:") === 0) && (t = e.url), t; +} +class Vu { + constructor(e) { + this.hls = void 0, this.loaders = /* @__PURE__ */ Object.create(null), this.variableList = null, this.onManifestLoaded = this.checkAutostartLoad, this.hls = e, this.registerListeners(); + } + startLoad(e) { + } + stopLoad() { + this.destroyInternalLoaders(); + } + registerListeners() { + const { + hls: e + } = this; + e.on(m.MANIFEST_LOADING, this.onManifestLoading, this), e.on(m.LEVEL_LOADING, this.onLevelLoading, this), e.on(m.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.on(m.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.on(m.LEVELS_UPDATED, this.onLevelsUpdated, this); + } + unregisterListeners() { + const { + hls: e + } = this; + e.off(m.MANIFEST_LOADING, this.onManifestLoading, this), e.off(m.LEVEL_LOADING, this.onLevelLoading, this), e.off(m.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), e.off(m.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this), e.off(m.LEVELS_UPDATED, this.onLevelsUpdated, this); + } + /** + * Returns defaults or configured loader-type overloads (pLoader and loader config params) + */ + createInternalLoader(e) { + const t = this.hls.config, s = t.pLoader, i = t.loader, r = s || i, n = new r(t); + return this.loaders[e.type] = n, n; + } + getInternalLoader(e) { + return this.loaders[e.type]; + } + resetInternalLoader(e) { + this.loaders[e] && delete this.loaders[e]; + } + /** + * Call `destroy` on all internal loader instances mapped (one per context type) + */ + destroyInternalLoaders() { + for (const e in this.loaders) { + const t = this.loaders[e]; + t && t.destroy(), this.resetInternalLoader(e); + } + } + destroy() { + this.variableList = null, this.unregisterListeners(), this.destroyInternalLoaders(); + } + onManifestLoading(e, t) { + const { + url: s + } = t; + this.variableList = null, this.load({ + id: null, + level: 0, + responseType: "text", + type: z.MANIFEST, + url: s, + deliveryDirectives: null, + levelOrTrack: null + }); + } + onLevelLoading(e, t) { + const { + id: s, + level: i, + pathwayId: r, + url: n, + deliveryDirectives: o, + levelInfo: c + } = t; + this.load({ + id: s, + level: i, + pathwayId: r, + responseType: "text", + type: z.LEVEL, + url: n, + deliveryDirectives: o, + levelOrTrack: c + }); + } + onAudioTrackLoading(e, t) { + const { + id: s, + groupId: i, + url: r, + deliveryDirectives: n, + track: o + } = t; + this.load({ + id: s, + groupId: i, + level: null, + responseType: "text", + type: z.AUDIO_TRACK, + url: r, + deliveryDirectives: n, + levelOrTrack: o + }); + } + onSubtitleTrackLoading(e, t) { + const { + id: s, + groupId: i, + url: r, + deliveryDirectives: n, + track: o + } = t; + this.load({ + id: s, + groupId: i, + level: null, + responseType: "text", + type: z.SUBTITLE_TRACK, + url: r, + deliveryDirectives: n, + levelOrTrack: o + }); + } + onLevelsUpdated(e, t) { + const s = this.loaders[z.LEVEL]; + if (s) { + const i = s.context; + i && !t.levels.some((r) => r === i.levelOrTrack) && (s.abort(), delete this.loaders[z.LEVEL]); + } + } + load(e) { + var t; + const s = this.hls.config; + let i = this.getInternalLoader(e); + if (i) { + const l = this.hls.logger, h = i.context; + if (h && h.levelOrTrack === e.levelOrTrack && (h.url === e.url || h.deliveryDirectives && !e.deliveryDirectives)) { + h.url === e.url ? l.log(`[playlist-loader]: ignore ${e.url} ongoing request`) : l.log(`[playlist-loader]: ignore ${e.url} in favor of ${h.url}`); + return; + } + l.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`), i.abort(); + } + let r; + if (e.type === z.MANIFEST ? r = s.manifestLoadPolicy.default : r = ie({}, s.playlistLoadPolicy.default, { + timeoutRetry: null, + errorRetry: null + }), i = this.createInternalLoader(e), N((t = e.deliveryDirectives) == null ? void 0 : t.part)) { + let l; + if (e.type === z.LEVEL && e.level !== null ? l = this.hls.levels[e.level].details : e.type === z.AUDIO_TRACK && e.id !== null ? l = this.hls.audioTracks[e.id].details : e.type === z.SUBTITLE_TRACK && e.id !== null && (l = this.hls.subtitleTracks[e.id].details), l) { + const h = l.partTarget, u = l.targetduration; + if (h && u) { + const d = Math.max(h * 3, u * 0.8) * 1e3; + r = ie({}, r, { + maxTimeToFirstByteMs: Math.min(d, r.maxTimeToFirstByteMs), + maxLoadTimeMs: Math.min(d, r.maxTimeToFirstByteMs) + }); + } + } + } + const n = r.errorRetry || r.timeoutRetry || {}, o = { + loadPolicy: r, + timeout: r.maxLoadTimeMs, + maxRetry: n.maxNumRetry || 0, + retryDelay: n.retryDelayMs || 0, + maxRetryDelay: n.maxRetryDelayMs || 0 + }, c = { + onSuccess: (l, h, u, d) => { + const g = this.getInternalLoader(u); + this.resetInternalLoader(u.type); + const f = l.data; + if (f.indexOf("#EXTM3U") !== 0) { + this.handleManifestParsingError(l, u, new Error("no EXTM3U delimiter"), d || null, h); + return; + } + h.parsing.start = performance.now(), Me.isMediaPlaylist(f) || u.type !== z.MANIFEST ? this.handleTrackOrLevelPlaylist(l, h, u, d || null, g) : this.handleMasterPlaylist(l, h, u, d); + }, + onError: (l, h, u, d) => { + this.handleNetworkError(h, u, !1, l, d); + }, + onTimeout: (l, h, u) => { + this.handleNetworkError(h, u, !0, void 0, l); + } + }; + i.load(e, o, c); + } + checkAutostartLoad() { + if (!this.hls) + return; + const { + config: { + autoStartLoad: e, + startPosition: t + }, + forceStartLoad: s + } = this.hls; + (e || s) && (this.hls.logger.log(`${e ? "auto" : "force"} startLoad with configured startPosition ${t}`), this.hls.startLoad(t)); + } + handleMasterPlaylist(e, t, s, i) { + const r = this.hls, n = e.data, o = Xs(e, s), c = Me.parseMasterPlaylist(n, o); + if (c.playlistParsingError) { + this.handleManifestParsingError(e, s, c.playlistParsingError, i, t); + return; + } + const { + contentSteering: l, + levels: h, + sessionData: u, + sessionKeys: d, + startTimeOffset: g, + variableList: f + } = c; + this.variableList = f; + const { + AUDIO: E = [], + SUBTITLES: p, + "CLOSED-CAPTIONS": y + } = Me.parseMasterPlaylistMedia(n, o, c); + E.length && !E.some((T) => !T.url) && h[0].audioCodec && !h[0].attrs.AUDIO && (this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"), E.unshift({ + type: "main", + name: "main", + groupId: "main", + default: !1, + autoselect: !1, + forced: !1, + id: -1, + attrs: new oe({}), + bitrate: 0, + url: "" + })), r.trigger(m.MANIFEST_LOADED, { + levels: h, + audioTracks: E, + subtitles: p, + captions: y, + contentSteering: l, + url: o, + stats: t, + networkDetails: i, + sessionData: u, + sessionKeys: d, + startTimeOffset: g, + variableList: f + }); + } + handleTrackOrLevelPlaylist(e, t, s, i, r) { + const n = this.hls, { + id: o, + level: c, + type: l + } = s, h = Xs(e, s), u = N(c) ? c : N(o) ? o : 0, d = ln(s), g = Me.parseLevelPlaylist(e.data, h, u, d, 0, this.variableList); + if (l === z.MANIFEST) { + const f = { + attrs: new oe({}), + bitrate: 0, + details: g, + name: "", + url: h + }; + g.requestScheduled = t.loading.start + Yn(g, 0), n.trigger(m.MANIFEST_LOADED, { + levels: [f], + audioTracks: [], + url: h, + stats: t, + networkDetails: i, + sessionData: null, + sessionKeys: null, + contentSteering: null, + startTimeOffset: null, + variableList: null + }); + } + t.parsing.end = performance.now(), s.levelDetails = g, this.handlePlaylistLoaded(g, e, t, s, i, r); + } + handleManifestParsingError(e, t, s, i, r) { + this.hls.trigger(m.ERROR, { + type: K.NETWORK_ERROR, + details: b.MANIFEST_PARSING_ERROR, + fatal: t.type === z.MANIFEST, + url: e.url, + err: s, + error: s, + reason: s.message, + response: e, + context: t, + networkDetails: i, + stats: r + }); + } + handleNetworkError(e, t, s = !1, i, r) { + let n = `A network ${s ? "timeout" : "error" + (i ? " (status " + i.code + ")" : "")} occurred while loading ${e.type}`; + e.type === z.LEVEL ? n += `: ${e.level} id: ${e.id}` : (e.type === z.AUDIO_TRACK || e.type === z.SUBTITLE_TRACK) && (n += ` id: ${e.id} group-id: "${e.groupId}"`); + const o = new Error(n); + this.hls.logger.warn(`[playlist-loader]: ${n}`); + let c = b.UNKNOWN, l = !1; + const h = this.getInternalLoader(e); + switch (e.type) { + case z.MANIFEST: + c = s ? b.MANIFEST_LOAD_TIMEOUT : b.MANIFEST_LOAD_ERROR, l = !0; + break; + case z.LEVEL: + c = s ? b.LEVEL_LOAD_TIMEOUT : b.LEVEL_LOAD_ERROR, l = !1; + break; + case z.AUDIO_TRACK: + c = s ? b.AUDIO_TRACK_LOAD_TIMEOUT : b.AUDIO_TRACK_LOAD_ERROR, l = !1; + break; + case z.SUBTITLE_TRACK: + c = s ? b.SUBTITLE_TRACK_LOAD_TIMEOUT : b.SUBTITLE_LOAD_ERROR, l = !1; + break; + } + h && this.resetInternalLoader(e.type); + const u = { + type: K.NETWORK_ERROR, + details: c, + fatal: l, + url: e.url, + loader: h, + context: e, + error: o, + networkDetails: t, + stats: r + }; + if (i) { + const d = (t == null ? void 0 : t.url) || e.url; + u.response = te({ + url: d, + data: void 0 + }, i); + } + this.hls.trigger(m.ERROR, u); + } + handlePlaylistLoaded(e, t, s, i, r, n) { + const o = this.hls, { + type: c, + level: l, + id: h, + groupId: u, + deliveryDirectives: d + } = i, g = Xs(t, i), f = ln(i), E = typeof i.level == "number" && f === $.MAIN ? l : void 0; + if (!e.fragments.length) { + const y = e.playlistParsingError = new Error("No Segments found in Playlist"); + o.trigger(m.ERROR, { + type: K.NETWORK_ERROR, + details: b.LEVEL_EMPTY_ERROR, + fatal: !1, + url: g, + error: y, + reason: y.message, + response: t, + context: i, + level: E, + parent: f, + networkDetails: r, + stats: s + }); + return; + } + e.targetduration || (e.playlistParsingError = new Error("Missing Target Duration")); + const p = e.playlistParsingError; + if (p) { + if (this.hls.logger.warn(p), !o.config.ignorePlaylistParsingErrors) { + o.trigger(m.ERROR, { + type: K.NETWORK_ERROR, + details: b.LEVEL_PARSING_ERROR, + fatal: !1, + url: g, + error: p, + reason: p.message, + response: t, + context: i, + level: E, + parent: f, + networkDetails: r, + stats: s + }); + return; + } + e.playlistParsingError = null; + } + switch (e.live && n && (n.getCacheAge && (e.ageHeader = n.getCacheAge() || 0), (!n.getCacheAge || isNaN(e.ageHeader)) && (e.ageHeader = 0)), c) { + case z.MANIFEST: + case z.LEVEL: + o.trigger(m.LEVEL_LOADED, { + details: e, + levelInfo: i.levelOrTrack || o.levels[0], + level: E || 0, + id: h || 0, + stats: s, + networkDetails: r, + deliveryDirectives: d, + withoutMultiVariant: c === z.MANIFEST + }); + break; + case z.AUDIO_TRACK: + o.trigger(m.AUDIO_TRACK_LOADED, { + details: e, + track: i.levelOrTrack, + id: h || 0, + groupId: u || "", + stats: s, + networkDetails: r, + deliveryDirectives: d + }); + break; + case z.SUBTITLE_TRACK: + o.trigger(m.SUBTITLE_TRACK_LOADED, { + details: e, + track: i.levelOrTrack, + id: h || 0, + groupId: u || "", + stats: s, + networkDetails: r, + deliveryDirectives: d + }); + break; + } + } +} +class Se { + /** + * Get the video-dev/hls.js package version. + */ + static get version() { + return wt; + } + /** + * Check if the required MediaSource Extensions are available. + */ + static isMSESupported() { + return Ua(); + } + /** + * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs. + */ + static isSupported() { + return Bu(); + } + /** + * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource). + */ + static getMediaSource() { + return ze(); + } + static get Events() { + return m; + } + static get MetadataSchema() { + return Te; + } + static get ErrorTypes() { + return K; + } + static get ErrorDetails() { + return b; + } + /** + * Get the default configuration applied to new instances. + */ + static get DefaultConfig() { + return Se.defaultConfig ? Se.defaultConfig : Iu; + } + /** + * Replace the default configuration applied to new instances. + */ + static set DefaultConfig(e) { + Se.defaultConfig = e; + } + /** + * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`. + * @param userConfig - Configuration options applied over `Hls.DefaultConfig` + */ + constructor(e = {}) { + this.config = void 0, this.userConfig = void 0, this.logger = void 0, this.coreComponents = void 0, this.networkControllers = void 0, this._emitter = new Li(), this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.abrController = void 0, this.bufferController = void 0, this.capLevelController = void 0, this.latencyController = void 0, this.levelController = void 0, this.streamController = void 0, this.audioStreamController = void 0, this.subtititleStreamController = void 0, this.audioTrackController = void 0, this.subtitleTrackController = void 0, this.interstitialsController = void 0, this.gapController = void 0, this.emeController = void 0, this.cmcdController = void 0, this._media = null, this._url = null, this._sessionId = void 0, this.triggeringException = void 0, this.started = !1; + const t = this.logger = co(e.debug || !1, "Hls instance", e.assetPlayerId), s = this.config = bu(Se.DefaultConfig, e, t); + this.userConfig = e, s.progressive && _u(s, t); + const { + abrController: i, + bufferController: r, + capLevelController: n, + errorController: o, + fpsController: c + } = s, l = new o(this), h = this.abrController = new i(this), u = new el(this), d = s.interstitialsController, g = d ? this.interstitialsController = new d(this, Se) : null, f = this.bufferController = new r(this, u), E = this.capLevelController = new n(this), p = new c(this), y = new Vu(this), S = s.contentSteeringController, T = S ? new S(this) : null, v = this.levelController = new Nu(this, T), x = new Fu(this), _ = new Ku(this.config), A = this.streamController = new Gu(this, u, _), R = this.gapController = new ku(this, u); + E.setStreamController(A), p.setStreamController(A); + const D = [y, v, A]; + g && D.splice(1, 0, g), T && D.splice(1, 0, T), this.networkControllers = D; + const L = [h, f, R, E, p, x, u]; + this.audioTrackController = this.createController(s.audioTrackController, D); + const k = s.audioStreamController; + k && D.push(this.audioStreamController = new k(this, u, _)), this.subtitleTrackController = this.createController(s.subtitleTrackController, D); + const M = s.subtitleStreamController; + M && D.push(this.subtititleStreamController = new M(this, u, _)), this.createController(s.timelineController, L), _.emeController = this.emeController = this.createController(s.emeController, L), this.cmcdController = this.createController(s.cmcdController, L), this.latencyController = this.createController(Mu, L), this.coreComponents = L, D.push(l); + const V = l.onErrorOut; + typeof V == "function" && this.on(m.ERROR, V, l), this.on(m.MANIFEST_LOADED, y.onManifestLoaded, y); + } + createController(e, t) { + if (e) { + const s = new e(this); + return t && t.push(s), s; + } + return null; + } + // Delegate the EventEmitter through the public API of Hls.js + on(e, t, s = this) { + this._emitter.on(e, t, s); + } + once(e, t, s = this) { + this._emitter.once(e, t, s); + } + removeAllListeners(e) { + this._emitter.removeAllListeners(e); + } + off(e, t, s = this, i) { + this._emitter.off(e, t, s, i); + } + listeners(e) { + return this._emitter.listeners(e); + } + emit(e, t, s) { + return this._emitter.emit(e, t, s); + } + trigger(e, t) { + if (this.config.debug) + return this.emit(e, e, t); + try { + return this.emit(e, e, t); + } catch (s) { + if (this.logger.error("An internal error happened while handling event " + e + '. Error message: "' + s.message + '". Here is a stacktrace:', s), !this.triggeringException) { + this.triggeringException = !0; + const i = e === m.ERROR; + this.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.INTERNAL_EXCEPTION, + fatal: i, + event: e, + error: s + }), this.triggeringException = !1; + } + } + return !1; + } + listenerCount(e) { + return this._emitter.listenerCount(e); + } + /** + * Dispose of the instance + */ + destroy() { + this.logger.log("destroy"), this.trigger(m.DESTROYING, void 0), this.detachMedia(), this.removeAllListeners(), this._autoLevelCapping = -1, this._url = null, this.networkControllers.forEach((t) => t.destroy()), this.networkControllers.length = 0, this.coreComponents.forEach((t) => t.destroy()), this.coreComponents.length = 0; + const e = this.config; + e.xhrSetup = e.fetchSetup = void 0, this.userConfig = null; + } + /** + * Attaches Hls.js to a media element + */ + attachMedia(e) { + if (!e || "media" in e && !e.media) { + const r = new Error(`attachMedia failed: invalid argument (${e})`); + this.trigger(m.ERROR, { + type: K.OTHER_ERROR, + details: b.ATTACH_MEDIA_ERROR, + fatal: !0, + error: r + }); + return; + } + this.logger.log("attachMedia"), this._media && (this.logger.warn("media must be detached before attaching"), this.detachMedia()); + const t = "media" in e, s = t ? e.media : e, i = t ? e : { + media: s + }; + this._media = s, this.trigger(m.MEDIA_ATTACHING, i); + } + /** + * Detach Hls.js from the media + */ + detachMedia() { + this.logger.log("detachMedia"), this.trigger(m.MEDIA_DETACHING, {}), this._media = null; + } + /** + * Detach HTMLMediaElement, MediaSource, and SourceBuffers without reset, for attaching to another instance + */ + transferMedia() { + this._media = null; + const e = this.bufferController.transferMedia(); + return this.trigger(m.MEDIA_DETACHING, { + transferMedia: e + }), e; + } + /** + * Set the source URL. Can be relative or absolute. + */ + loadSource(e) { + this.stopLoad(); + const t = this.media, s = this._url, i = this._url = mi.buildAbsoluteURL(self.location.href, e, { + alwaysNormalize: !0 + }); + this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.logger.log(`loadSource:${i}`), t && s && (s !== i || this.bufferController.hasSourceTypes()) && (this.detachMedia(), this.attachMedia(t)), this.trigger(m.MANIFEST_LOADING, { + url: e + }); + } + /** + * Gets the currently loaded URL + */ + get url() { + return this._url; + } + /** + * Whether or not enough has been buffered to seek to start position or use `media.currentTime` to determine next load position + */ + get hasEnoughToStart() { + return this.streamController.hasEnoughToStart; + } + /** + * Get the startPosition set on startLoad(position) or on autostart with config.startPosition + */ + get startPosition() { + return this.streamController.startPositionValue; + } + /** + * Start loading data from the stream source. + * Depending on default config, client starts loading automatically when a source is set. + * + * @param startPosition - Set the start position to stream from. + * Defaults to -1 (None: starts from earliest point) + */ + startLoad(e = -1, t) { + this.logger.log(`startLoad(${e + (t ? ", <skip seek to start>" : "")})`), this.started = !0, this.resumeBuffering(); + for (let s = 0; s < this.networkControllers.length && (this.networkControllers[s].startLoad(e, t), !(!this.started || !this.networkControllers)); s++) + ; + } + /** + * Stop loading of any stream data. + */ + stopLoad() { + this.logger.log("stopLoad"), this.started = !1; + for (let e = 0; e < this.networkControllers.length && (this.networkControllers[e].stopLoad(), !(this.started || !this.networkControllers)); e++) + ; + } + /** + * Returns whether loading, toggled with `startLoad()` and `stopLoad()`, is active or not`. + */ + get loadingEnabled() { + return this.started; + } + /** + * Returns state of fragment loading toggled by calling `pauseBuffering()` and `resumeBuffering()`. + */ + get bufferingEnabled() { + return this.streamController.bufferingEnabled; + } + /** + * Resumes stream controller segment loading after `pauseBuffering` has been called. + */ + resumeBuffering() { + this.bufferingEnabled || (this.logger.log("resume buffering"), this.networkControllers.forEach((e) => { + e.resumeBuffering && e.resumeBuffering(); + })); + } + /** + * Prevents stream controller from loading new segments until `resumeBuffering` is called. + * This allows for media buffering to be paused without interupting playlist loading. + */ + pauseBuffering() { + this.bufferingEnabled && (this.logger.log("pause buffering"), this.networkControllers.forEach((e) => { + e.pauseBuffering && e.pauseBuffering(); + })); + } + get inFlightFragments() { + const e = { + [$.MAIN]: this.streamController.inFlightFrag + }; + return this.audioStreamController && (e[$.AUDIO] = this.audioStreamController.inFlightFrag), this.subtititleStreamController && (e[$.SUBTITLE] = this.subtititleStreamController.inFlightFrag), e; + } + /** + * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1) + */ + swapAudioCodec() { + this.logger.log("swapAudioCodec"), this.streamController.swapAudioCodec(); + } + /** + * When the media-element fails, this allows to detach and then re-attach it + * as one call (convenience method). + * + * Automatic recovery of media-errors by this process is configurable. + */ + recoverMediaError() { + this.logger.log("recoverMediaError"); + const e = this._media, t = e == null ? void 0 : e.currentTime; + this.detachMedia(), e && (this.attachMedia(e), t && this.startLoad(t)); + } + removeLevel(e) { + this.levelController.removeLevel(e); + } + /** + * @returns a UUID for this player instance + */ + get sessionId() { + let e = this._sessionId; + return e || (e = this._sessionId = kh()), e; + } + /** + * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH + */ + get levels() { + const e = this.levelController.levels; + return e || []; + } + /** + * @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist. + */ + get latestLevelDetails() { + return this.streamController.getLevelDetails() || null; + } + /** + * @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed. + */ + get loadLevelObj() { + return this.levelController.loadLevelObj; + } + /** + * Index of quality level (variant) currently played + */ + get currentLevel() { + return this.streamController.currentLevel; + } + /** + * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection. + */ + set currentLevel(e) { + this.logger.log(`set currentLevel:${e}`), this.levelController.manualLevel = e, this.streamController.immediateLevelSwitch(); + } + /** + * Index of next quality level loaded as scheduled by stream controller. + */ + get nextLevel() { + return this.streamController.nextLevel; + } + /** + * Set quality level index for next loaded data. + * This will switch the video quality asap, without interrupting playback. + * May abort current loading of data, and flush parts of buffer (outside currently played fragment region). + * @param newLevel - Pass -1 for automatic level selection + */ + set nextLevel(e) { + this.logger.log(`set nextLevel:${e}`), this.levelController.manualLevel = e, this.streamController.nextLevelSwitch(); + } + /** + * Return the quality level of the currently or last (of none is loaded currently) segment + */ + get loadLevel() { + return this.levelController.level; + } + /** + * Set quality level index for next loaded data in a conservative way. + * This will switch the quality without flushing, but interrupt current loading. + * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer. + * @param newLevel - Pass -1 for automatic level selection + */ + set loadLevel(e) { + this.logger.log(`set loadLevel:${e}`), this.levelController.manualLevel = e; + } + /** + * get next quality level loaded + */ + get nextLoadLevel() { + return this.levelController.nextLoadLevel; + } + /** + * Set quality level of next loaded segment in a fully "non-destructive" way. + * Same as `loadLevel` but will wait for next switch (until current loading is done). + */ + set nextLoadLevel(e) { + this.levelController.nextLoadLevel = e; + } + /** + * Return "first level": like a default level, if not set, + * falls back to index of first level referenced in manifest + */ + get firstLevel() { + return Math.max(this.levelController.firstLevel, this.minAutoLevel); + } + /** + * Sets "first-level", see getter. + */ + set firstLevel(e) { + this.logger.log(`set firstLevel:${e}`), this.levelController.firstLevel = e; + } + /** + * Return the desired start level for the first fragment that will be loaded. + * The default value of -1 indicates automatic start level selection. + * Setting hls.nextAutoLevel without setting a startLevel will result in + * the nextAutoLevel value being used for one fragment load. + */ + get startLevel() { + const e = this.levelController.startLevel; + return e === -1 && this.abrController.forcedAutoLevel > -1 ? this.abrController.forcedAutoLevel : e; + } + /** + * set start level (level of first fragment that will be played back) + * if not overrided by user, first level appearing in manifest will be used as start level + * if -1 : automatic start level selection, playback will start from level matching download bandwidth + * (determined from download of first segment) + */ + set startLevel(e) { + this.logger.log(`set startLevel:${e}`), e !== -1 && (e = Math.max(e, this.minAutoLevel)), this.levelController.startLevel = e; + } + /** + * Whether level capping is enabled. + * Default value is set via `config.capLevelToPlayerSize`. + */ + get capLevelToPlayerSize() { + return this.config.capLevelToPlayerSize; + } + /** + * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called. + */ + set capLevelToPlayerSize(e) { + const t = !!e; + t !== this.config.capLevelToPlayerSize && (t ? this.capLevelController.startCapping() : (this.capLevelController.stopCapping(), this.autoLevelCapping = -1, this.streamController.nextLevelSwitch()), this.config.capLevelToPlayerSize = t); + } + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + get autoLevelCapping() { + return this._autoLevelCapping; + } + /** + * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned. + */ + get bandwidthEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.getEstimate() : NaN; + } + set bandwidthEstimate(e) { + this.abrController.resetEstimator(e); + } + get abrEwmaDefaultEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.defaultEstimate : NaN; + } + /** + * get time to first byte estimate + * @type {number} + */ + get ttfbEstimate() { + const { + bwEstimator: e + } = this.abrController; + return e ? e.getEstimateTTFB() : NaN; + } + /** + * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`) + */ + set autoLevelCapping(e) { + this._autoLevelCapping !== e && (this.logger.log(`set autoLevelCapping:${e}`), this._autoLevelCapping = e, this.levelController.checkMaxAutoUpdated()); + } + get maxHdcpLevel() { + return this._maxHdcpLevel; + } + set maxHdcpLevel(e) { + Bo(e) && this._maxHdcpLevel !== e && (this._maxHdcpLevel = e, this.levelController.checkMaxAutoUpdated()); + } + /** + * True when automatic level selection enabled + */ + get autoLevelEnabled() { + return this.levelController.manualLevel === -1; + } + /** + * Level set manually (if any) + */ + get manualLevel() { + return this.levelController.manualLevel; + } + /** + * min level selectable in auto mode according to config.minAutoBitrate + */ + get minAutoLevel() { + const { + levels: e, + config: { + minAutoBitrate: t + } + } = this; + if (!e) return 0; + const s = e.length; + for (let i = 0; i < s; i++) + if (e[i].maxBitrate >= t) + return i; + return 0; + } + /** + * max level selectable in auto mode according to autoLevelCapping + */ + get maxAutoLevel() { + const { + levels: e, + autoLevelCapping: t, + maxHdcpLevel: s + } = this; + let i; + if (t === -1 && e != null && e.length ? i = e.length - 1 : i = t, s) + for (let r = i; r--; ) { + const n = e[r].attrs["HDCP-LEVEL"]; + if (n && n <= s) + return r; + } + return i; + } + get firstAutoLevel() { + return this.abrController.firstAutoLevel; + } + /** + * next automatically selected quality level + */ + get nextAutoLevel() { + return this.abrController.nextAutoLevel; + } + /** + * this setter is used to force next auto level. + * this is useful to force a switch down in auto mode: + * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example) + * forced value is valid for one fragment. upon successful frag loading at forced level, + * this value will be resetted to -1 by ABR controller. + */ + set nextAutoLevel(e) { + this.abrController.nextAutoLevel = e; + } + /** + * get the datetime value relative to media.currentTime for the active level Program Date Time if present + */ + get playingDate() { + return this.streamController.currentProgramDateTime; + } + get mainForwardBufferInfo() { + return this.streamController.getMainFwdBufferInfo(); + } + get maxBufferLength() { + return this.streamController.maxBufferLength; + } + /** + * Find and select the best matching audio track, making a level switch when a Group change is necessary. + * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found. + */ + setAudioOption(e) { + var t; + return ((t = this.audioTrackController) == null ? void 0 : t.setAudioOption(e)) || null; + } + /** + * Find and select the best matching subtitle track, making a level switch when a Group change is necessary. + * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found. + */ + setSubtitleOption(e) { + var t; + return ((t = this.subtitleTrackController) == null ? void 0 : t.setSubtitleOption(e)) || null; + } + /** + * Get the complete list of audio tracks across all media groups + */ + get allAudioTracks() { + const e = this.audioTrackController; + return e ? e.allAudioTracks : []; + } + /** + * Get the list of selectable audio tracks + */ + get audioTracks() { + const e = this.audioTrackController; + return e ? e.audioTracks : []; + } + /** + * index of the selected audio track (index in audio track lists) + */ + get audioTrack() { + const e = this.audioTrackController; + return e ? e.audioTrack : -1; + } + /** + * selects an audio track, based on its index in audio track lists + */ + set audioTrack(e) { + const t = this.audioTrackController; + t && (t.audioTrack = e); + } + /** + * get the complete list of subtitle tracks across all media groups + */ + get allSubtitleTracks() { + const e = this.subtitleTrackController; + return e ? e.allSubtitleTracks : []; + } + /** + * get alternate subtitle tracks list from playlist + */ + get subtitleTracks() { + const e = this.subtitleTrackController; + return e ? e.subtitleTracks : []; + } + /** + * index of the selected subtitle track (index in subtitle track lists) + */ + get subtitleTrack() { + const e = this.subtitleTrackController; + return e ? e.subtitleTrack : -1; + } + get media() { + return this._media; + } + /** + * select an subtitle track, based on its index in subtitle track lists + */ + set subtitleTrack(e) { + const t = this.subtitleTrackController; + t && (t.subtitleTrack = e); + } + /** + * Whether subtitle display is enabled or not + */ + get subtitleDisplay() { + const e = this.subtitleTrackController; + return e ? e.subtitleDisplay : !1; + } + /** + * Enable/disable subtitle display rendering + */ + set subtitleDisplay(e) { + const t = this.subtitleTrackController; + t && (t.subtitleDisplay = e); + } + /** + * get mode for Low-Latency HLS loading + */ + get lowLatencyMode() { + return this.config.lowLatencyMode; + } + /** + * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK. + */ + set lowLatencyMode(e) { + this.config.lowLatencyMode = e; + } + /** + * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```) + * @returns null prior to loading live Playlist + */ + get liveSyncPosition() { + return this.latencyController.liveSyncPosition; + } + /** + * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced) + * @returns 0 before first playlist is loaded + */ + get latency() { + return this.latencyController.latency; + } + /** + * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition``` + * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration``` + * @returns 0 before first playlist is loaded + */ + get maxLatency() { + return this.latencyController.maxLatency; + } + /** + * target distance from the edge as calculated by the latency controller + */ + get targetLatency() { + return this.latencyController.targetLatency; + } + set targetLatency(e) { + this.latencyController.targetLatency = e; + } + /** + * the rate at which the edge of the current live playlist is advancing or 1 if there is none + */ + get drift() { + return this.latencyController.drift; + } + /** + * set to true when startLoad is called before MANIFEST_PARSED event + */ + get forceStartLoad() { + return this.streamController.forceStartLoad; + } + /** + * ContentSteering pathways getter + */ + get pathways() { + return this.levelController.pathways; + } + /** + * ContentSteering pathwayPriority getter/setter + */ + get pathwayPriority() { + return this.levelController.pathwayPriority; + } + set pathwayPriority(e) { + this.levelController.pathwayPriority = e; + } + /** + * returns true when all SourceBuffers are buffered to the end + */ + get bufferedToEnd() { + var e; + return !!((e = this.bufferController) != null && e.bufferedToEnd); + } + /** + * returns Interstitials Program Manager + */ + get interstitialsManager() { + var e; + return ((e = this.interstitialsController) == null ? void 0 : e.interstitialsManager) || null; + } + /** + * returns mediaCapabilities.decodingInfo for a variant/rendition + */ + getMediaDecodingInfo(e, t = this.allAudioTracks) { + const s = On(t); + return wn(e, s, navigator.mediaCapabilities); + } +} +Se.defaultConfig = void 0; +const { + SvelteComponent: Hu, + action_destroyer: Yu, + add_render_callback: Wu, + assign: cn, + attr: qe, + binding_callbacks: qu, + bubble: zs, + children: ju, + claim_element: hn, + claim_space: Xu, + create_slot: zu, + detach: es, + element: un, + exclude_internal_props: dn, + get_all_dirty_from_scope: Qu, + get_slot_changes: Zu, + get_svelte_dataset: Ju, + init: ed, + insert_hydration: Qs, + is_function: td, + listen: de, + raf: sd, + run_all: id, + safe_not_equal: rd, + space: nd, + src_url_equal: fn, + toggle_class: gn, + transition_in: ad, + transition_out: od, + update_slot_base: ld +} = window.__gradio__svelte__internal, { createEventDispatcher: cd } = window.__gradio__svelte__internal; +function hd(a) { + let e, t = '<span class="load-wrap svelte-1pwzuub"><span class="loader svelte-1pwzuub"></span></span>', s, i, r, n, o = !1, c, l = !0, h, u, d, g; + const f = ( + /*#slots*/ + a[18].default + ), E = zu( + f, + a, + /*$$scope*/ + a[17], + null + ); + function p() { + cancelAnimationFrame(c), i.paused || (c = sd(p), o = !0), a[22].call(i); + } + return { + c() { + e = un("div"), e.innerHTML = t, s = nd(), i = un("video"), E && E.c(), this.h(); + }, + l(y) { + e = hn(y, "DIV", { class: !0, "data-svelte-h": !0 }), Ju(e) !== "svelte-mez4j5" && (e.innerHTML = t), s = Xu(y), i = hn(y, "VIDEO", { + src: !0, + preload: !0, + "data-testid": !0, + crossorigin: !0 + }); + var S = ju(i); + E && E.l(S), S.forEach(es), this.h(); + }, + h() { + qe(e, "class", "overlay svelte-1pwzuub"), gn(e, "hidden", !/*processingVideo*/ + a[10]), fn(i.src, r = /*resolved_src*/ + a[11]) || qe(i, "src", r), i.muted = /*muted*/ + a[4], i.playsInline = /*playsinline*/ + a[5], qe( + i, + "preload", + /*preload*/ + a[6] + ), i.autoplay = /*autoplay*/ + a[7], i.controls = /*controls*/ + a[8], i.loop = /*loop*/ + a[9], qe(i, "data-testid", n = /*$$props*/ + a[13]["data-testid"]), qe(i, "crossorigin", "anonymous"), /*duration*/ + a[2] === void 0 && Wu(() => ( + /*video_durationchange_handler*/ + a[23].call(i) + )); + }, + m(y, S) { + Qs(y, e, S), Qs(y, s, S), Qs(y, i, S), E && E.m(i, null), a[25](i), u = !0, d || (g = [ + de( + i, + "loadeddata", + /*dispatch*/ + a[12].bind(null, "loadeddata") + ), + de( + i, + "click", + /*dispatch*/ + a[12].bind(null, "click") + ), + de( + i, + "play", + /*dispatch*/ + a[12].bind(null, "play") + ), + de( + i, + "pause", + /*dispatch*/ + a[12].bind(null, "pause") + ), + de( + i, + "ended", + /*dispatch*/ + a[12].bind(null, "ended") + ), + de( + i, + "mouseover", + /*dispatch*/ + a[12].bind(null, "mouseover") + ), + de( + i, + "mouseout", + /*dispatch*/ + a[12].bind(null, "mouseout") + ), + de( + i, + "focus", + /*dispatch*/ + a[12].bind(null, "focus") + ), + de( + i, + "blur", + /*dispatch*/ + a[12].bind(null, "blur") + ), + de( + i, + "error", + /*dispatch*/ + a[12].bind(null, "error", "Video not playable") + ), + de( + i, + "loadstart", + /*loadstart_handler*/ + a[19] + ), + de( + i, + "loadeddata", + /*loadeddata_handler*/ + a[20] + ), + de( + i, + "loadedmetadata", + /*loadedmetadata_handler*/ + a[21] + ), + de(i, "timeupdate", p), + de( + i, + "durationchange", + /*video_durationchange_handler*/ + a[23] + ), + de( + i, + "play", + /*video_play_pause_handler*/ + a[24] + ), + de( + i, + "pause", + /*video_play_pause_handler*/ + a[24] + ), + Yu(h = Wa.call(null, i, { autoplay: ( + /*autoplay*/ + a[7] ?? !1 + ) })) + ], d = !0); + }, + p(y, [S]) { + (!u || S & /*processingVideo*/ + 1024) && gn(e, "hidden", !/*processingVideo*/ + y[10]), E && E.p && (!u || S & /*$$scope*/ + 131072) && ld( + E, + f, + y, + /*$$scope*/ + y[17], + u ? Zu( + f, + /*$$scope*/ + y[17], + S, + null + ) : Qu( + /*$$scope*/ + y[17] + ), + null + ), (!u || S & /*resolved_src*/ + 2048 && !fn(i.src, r = /*resolved_src*/ + y[11])) && qe(i, "src", r), (!u || S & /*muted*/ + 16) && (i.muted = /*muted*/ + y[4]), (!u || S & /*playsinline*/ + 32) && (i.playsInline = /*playsinline*/ + y[5]), (!u || S & /*preload*/ + 64) && qe( + i, + "preload", + /*preload*/ + y[6] + ), (!u || S & /*autoplay*/ + 128) && (i.autoplay = /*autoplay*/ + y[7]), (!u || S & /*controls*/ + 256) && (i.controls = /*controls*/ + y[8]), (!u || S & /*loop*/ + 512) && (i.loop = /*loop*/ + y[9]), (!u || S & /*$$props*/ + 8192 && n !== (n = /*$$props*/ + y[13]["data-testid"])) && qe(i, "data-testid", n), !o && S & /*currentTime*/ + 2 && !isNaN( + /*currentTime*/ + y[1] + ) && (i.currentTime = /*currentTime*/ + y[1]), o = !1, S & /*paused*/ + 8 && l !== (l = /*paused*/ + y[3]) && i[l ? "pause" : "play"](), h && td(h.update) && S & /*autoplay*/ + 128 && h.update.call(null, { autoplay: ( + /*autoplay*/ + y[7] ?? !1 + ) }); + }, + i(y) { + u || (ad(E, y), u = !0); + }, + o(y) { + od(E, y), u = !1; + }, + d(y) { + y && (es(e), es(s), es(i)), E && E.d(y), a[25](null), d = !1, id(g); + } + }; +} +function ud(a, e, t) { + let { $$slots: s = {}, $$scope: i } = e, { src: r = void 0 } = e, { muted: n = void 0 } = e, { playsinline: o = void 0 } = e, { preload: c = void 0 } = e, { autoplay: l = void 0 } = e, { controls: h = void 0 } = e, { currentTime: u = void 0 } = e, { duration: d = void 0 } = e, { paused: g = void 0 } = e, { node: f = void 0 } = e, { loop: E } = e, { is_stream: p } = e, { processingVideo: y = !1 } = e, S, T = !1, v; + const x = cd(); + function _(P, U, F) { + if (!(!P || !U) && Se.isSupported() && !T) { + const B = new Se({ + maxBufferLength: 1, + // 0.5 seconds (500 ms) + maxMaxBufferLength: 1, + // Maximum max buffer length in seconds + lowLatencyMode: !0 + // Enable low latency mode + }); + B.loadSource(P), B.attachMedia(F), B.on(Se.Events.MANIFEST_PARSED, function() { + F.play(); + }), B.on(Se.Events.ERROR, function(G, w) { + if (console.error("HLS error:", G, w), w.fatal) + switch (w.type) { + case Se.ErrorTypes.NETWORK_ERROR: + console.error("Fatal network error encountered, trying to recover"), B.startLoad(); + break; + case Se.ErrorTypes.MEDIA_ERROR: + console.error("Fatal media error encountered, trying to recover"), B.recoverMediaError(); + break; + default: + console.error("Fatal error, cannot recover"), B.destroy(); + break; + } + }), T = !0; + } + } + function A(P) { + zs.call(this, a, P); + } + function R(P) { + zs.call(this, a, P); + } + function D(P) { + zs.call(this, a, P); + } + function L() { + u = this.currentTime, t(1, u); + } + function k() { + d = this.duration, t(2, d); + } + function M() { + g = this.paused, t(3, g); + } + function V(P) { + qu[P ? "unshift" : "push"](() => { + f = P, t(0, f); + }); + } + return a.$$set = (P) => { + t(13, e = cn(cn({}, e), dn(P))), "src" in P && t(14, r = P.src), "muted" in P && t(4, n = P.muted), "playsinline" in P && t(5, o = P.playsinline), "preload" in P && t(6, c = P.preload), "autoplay" in P && t(7, l = P.autoplay), "controls" in P && t(8, h = P.controls), "currentTime" in P && t(1, u = P.currentTime), "duration" in P && t(2, d = P.duration), "paused" in P && t(3, g = P.paused), "node" in P && t(0, f = P.node), "loop" in P && t(9, E = P.loop), "is_stream" in P && t(15, p = P.is_stream), "processingVideo" in P && t(10, y = P.processingVideo), "$$scope" in P && t(17, i = P.$$scope); + }, a.$$.update = () => { + if (a.$$.dirty & /*src, latest_src*/ + 81920) { + t(11, S = r), t(16, v = r); + const P = r; + eo(P).then((U) => { + v === P && t(11, S = U); + }); + } + a.$$.dirty & /*src*/ + 16384 && (T = !1), a.$$.dirty & /*node, src, is_stream*/ + 49153 && f && r && p && _(r, p, f); + }, e = dn(e), [ + f, + u, + d, + g, + n, + o, + c, + l, + h, + E, + y, + S, + x, + e, + r, + p, + v, + i, + s, + A, + R, + D, + L, + k, + M, + V + ]; +} +class dd extends Hu { + constructor(e) { + super(), ed(this, e, ud, hd, rd, { + src: 14, + muted: 4, + playsinline: 5, + preload: 6, + autoplay: 7, + controls: 8, + currentTime: 1, + duration: 2, + paused: 3, + node: 0, + loop: 9, + is_stream: 15, + processingVideo: 10 + }); + } +} +new Intl.Collator(0, { numeric: 1 }).compare; +typeof process < "u" && process.versions && process.versions.node; +var Ke; +class gf extends TransformStream { + /** Constructs a new instance. */ + constructor(t = { allowCR: !1 }) { + super({ + transform: (s, i) => { + for (s = nt(this, Ke) + s; ; ) { + const r = s.indexOf(` +`), n = t.allowCR ? s.indexOf("\r") : -1; + if (n !== -1 && n !== s.length - 1 && (r === -1 || r - 1 > n)) { + i.enqueue(s.slice(0, n)), s = s.slice(n + 1); + continue; + } + if (r === -1) + break; + const o = s[r - 1] === "\r" ? r - 1 : r; + i.enqueue(s.slice(0, o)), s = s.slice(r + 1); + } + Yi(this, Ke, s); + }, + flush: (s) => { + if (nt(this, Ke) === "") + return; + const i = t.allowCR && nt(this, Ke).endsWith("\r") ? nt(this, Ke).slice(0, -1) : nt(this, Ke); + s.enqueue(i); + } + }); + Hi(this, Ke, ""); + } +} +Ke = new WeakMap(); +const { + SvelteComponent: fd, + add_flush_callback: gd, + append_hydration: md, + attr: pd, + bind: Ed, + binding_callbacks: yd, + check_outros: Td, + children: $a, + claim_component: Sd, + claim_element: Ga, + claim_text: vd, + create_component: xd, + destroy_component: Ad, + detach: Tt, + element: Ka, + empty: Ss, + group_outros: Ld, + init: Id, + insert_hydration: Ls, + is_function: mn, + mount_component: Rd, + noop: pn, + safe_not_equal: bd, + set_data: _d, + text: Dd, + toggle_class: ht, + transition_in: _t, + transition_out: vs +} = window.__gradio__svelte__internal; +function En(a) { + let e, t, s, i; + const r = [Pd, Cd], n = []; + function o(c, l) { + return 0; + } + return e = o(), t = n[e] = r[e](a), { + c() { + t.c(), s = Ss(); + }, + l(c) { + t.l(c), s = Ss(); + }, + m(c, l) { + n[e].m(c, l), Ls(c, s, l), i = !0; + }, + p(c, l) { + t.p(c, l); + }, + i(c) { + i || (_t(t), i = !0); + }, + o(c) { + vs(t), i = !1; + }, + d(c) { + c && Tt(s), n[e].d(c); + } + }; +} +function Cd(a) { + let e, t; + return { + c() { + e = Ka("div"), t = Dd( + /*value*/ + a[2] + ); + }, + l(s) { + e = Ga(s, "DIV", {}); + var i = $a(e); + t = vd( + i, + /*value*/ + a[2] + ), i.forEach(Tt); + }, + m(s, i) { + Ls(s, e, i), md(e, t); + }, + p(s, i) { + i & /*value*/ + 4 && _d( + t, + /*value*/ + s[2] + ); + }, + i: pn, + o: pn, + d(s) { + s && Tt(e); + } + }; +} +function Pd(a) { + var o; + let e, t, s, i; + function r(c) { + a[6](c); + } + let n = { + muted: !0, + playsinline: !0, + src: ( + /*value*/ + (o = a[2]) == null ? void 0 : o.video.url + ), + is_stream: !1, + loop: ( + /*loop*/ + a[3] + ) + }; + return ( + /*video*/ + a[4] !== void 0 && (n.node = /*video*/ + a[4]), t = new dd({ props: n }), yd.push(() => Ed(t, "node", r)), t.$on( + "loadeddata", + /*init*/ + a[5] + ), t.$on("mouseover", function() { + mn( + /*video*/ + a[4].play.bind( + /*video*/ + a[4] + ) + ) && a[4].play.bind( + /*video*/ + a[4] + ).apply(this, arguments); + }), t.$on("mouseout", function() { + mn( + /*video*/ + a[4].pause.bind( + /*video*/ + a[4] + ) + ) && a[4].pause.bind( + /*video*/ + a[4] + ).apply(this, arguments); + }), { + c() { + e = Ka("div"), xd(t.$$.fragment), this.h(); + }, + l(c) { + e = Ga(c, "DIV", { class: !0 }); + var l = $a(e); + Sd(t.$$.fragment, l), l.forEach(Tt), this.h(); + }, + h() { + pd(e, "class", "container svelte-13u05e4"), ht( + e, + "table", + /*type*/ + a[0] === "table" + ), ht( + e, + "gallery", + /*type*/ + a[0] === "gallery" + ), ht( + e, + "selected", + /*selected*/ + a[1] + ); + }, + m(c, l) { + Ls(c, e, l), Rd(t, e, null), i = !0; + }, + p(c, l) { + var u; + a = c; + const h = {}; + l & /*value*/ + 4 && (h.src = /*value*/ + (u = a[2]) == null ? void 0 : u.video.url), l & /*loop*/ + 8 && (h.loop = /*loop*/ + a[3]), !s && l & /*video*/ + 16 && (s = !0, h.node = /*video*/ + a[4], gd(() => s = !1)), t.$set(h), (!i || l & /*type*/ + 1) && ht( + e, + "table", + /*type*/ + a[0] === "table" + ), (!i || l & /*type*/ + 1) && ht( + e, + "gallery", + /*type*/ + a[0] === "gallery" + ), (!i || l & /*selected*/ + 2) && ht( + e, + "selected", + /*selected*/ + a[1] + ); + }, + i(c) { + i || (_t(t.$$.fragment, c), i = !0); + }, + o(c) { + vs(t.$$.fragment, c), i = !1; + }, + d(c) { + c && Tt(e), Ad(t); + } + } + ); +} +function kd(a) { + let e, t, s = ( + /*value*/ + a[2] && En(a) + ); + return { + c() { + s && s.c(), e = Ss(); + }, + l(i) { + s && s.l(i), e = Ss(); + }, + m(i, r) { + s && s.m(i, r), Ls(i, e, r), t = !0; + }, + p(i, [r]) { + /*value*/ + i[2] ? s ? (s.p(i, r), r & /*value*/ + 4 && _t(s, 1)) : (s = En(i), s.c(), _t(s, 1), s.m(e.parentNode, e)) : s && (Ld(), vs(s, 1, 1, () => { + s = null; + }), Td()); + }, + i(i) { + t || (_t(s), t = !0); + }, + o(i) { + vs(s), t = !1; + }, + d(i) { + i && Tt(e), s && s.d(i); + } + }; +} +function wd(a, e, t) { + var s = this && this.__awaiter || function(u, d, g, f) { + function E(p) { + return p instanceof g ? p : new g(function(y) { + y(p); + }); + } + return new (g || (g = Promise))(function(p, y) { + function S(x) { + try { + v(f.next(x)); + } catch (_) { + y(_); + } + } + function T(x) { + try { + v(f.throw(x)); + } catch (_) { + y(_); + } + } + function v(x) { + x.done ? p(x.value) : E(x.value).then(S, T); + } + v((f = f.apply(u, d || [])).next()); + }); + }; + let { type: i } = e, { selected: r = !1 } = e, { value: n } = e, { loop: o } = e, c; + function l() { + return s(this, void 0, void 0, function* () { + t(4, c.muted = !0, c), t(4, c.playsInline = !0, c), t(4, c.controls = !1, c), c.setAttribute("muted", ""), yield c.play(), c.pause(); + }); + } + function h(u) { + c = u, t(4, c); + } + return a.$$set = (u) => { + "type" in u && t(0, i = u.type), "selected" in u && t(1, r = u.selected), "value" in u && t(2, n = u.value), "loop" in u && t(3, o = u.loop); + }, [i, r, n, o, c, l, h]; +} +class mf extends fd { + constructor(e) { + super(), Id(this, e, wd, kd, bd, { type: 0, selected: 1, value: 2, loop: 3 }); + } +} +export { + mf as default +}; diff --git a/src/backend/gradio_overlay_video/templates/example/style.css b/src/backend/gradio_overlay_video/templates/example/style.css new file mode 100644 index 0000000000000000000000000000000000000000..b5ae5a0c8e45cb9d719960f1973a17bc3c3672e2 --- /dev/null +++ b/src/backend/gradio_overlay_video/templates/example/style.css @@ -0,0 +1 @@ +.unstyled-link.svelte-151nsdd{all:unset;cursor:pointer}.overlay.svelte-1pwzuub{position:absolute;background-color:#0006;width:100%;height:100%}.hidden.svelte-1pwzuub{display:none}.load-wrap.svelte-1pwzuub{display:flex;justify-content:center;align-items:center;height:100%}.loader.svelte-1pwzuub{display:flex;position:relative;background-color:var(--border-color-accent-subdued);animation:svelte-1pwzuub-shadowPulse 2s linear infinite;box-shadow:-24px 0 var(--border-color-accent-subdued),24px 0 var(--border-color-accent-subdued);margin:var(--spacing-md);border-radius:50%;width:10px;height:10px;scale:.5}@keyframes svelte-1pwzuub-shadowPulse{33%{box-shadow:-24px 0 var(--border-color-accent-subdued),24px 0 #fff;background:#fff}66%{box-shadow:-24px 0 #fff,24px 0 #fff;background:var(--border-color-accent-subdued)}to{box-shadow:-24px 0 #fff,24px 0 var(--border-color-accent-subdued);background:#fff}}.container.svelte-13u05e4{flex:none;max-width:none}.container.svelte-13u05e4 video{width:var(--size-full);height:var(--size-full);object-fit:cover}.container.svelte-13u05e4:hover,.container.selected.svelte-13u05e4{border-color:var(--border-color-accent)}.container.table.svelte-13u05e4{margin:0 auto;border:2px solid var(--border-color-primary);border-radius:var(--radius-lg);overflow:hidden;width:var(--size-20);height:var(--size-20);object-fit:cover}.container.gallery.svelte-13u05e4{height:var(--size-20);max-height:var(--size-20);object-fit:cover} diff --git a/src/backend/gradio_overlay_video/visualization_processors.py b/src/backend/gradio_overlay_video/visualization_processors.py new file mode 100644 index 0000000000000000000000000000000000000000..75db2a2449da426cd2c1a66643a7cd0950796bc1 --- /dev/null +++ b/src/backend/gradio_overlay_video/visualization_processors.py @@ -0,0 +1,502 @@ +""" +Visualization processors for different overlay types. +Each processor extracts and prepares specific visualization data from JSON. +Supports multiple keypoint formats: MediaPipe, COCO, COCO-WholeBody, Sociopticon. +""" + +from typing import Dict, List, Any, Optional, Tuple +import math +from dataclasses import dataclass +from .keypoint_formats import KeypointFormat, SkeletonDefinitions, KeypointFormatDetector, YOLOv11DataConverter + + +@dataclass +class VisualizationFrame: + """Unified frame data structure for all visualization types.""" + timestamp: float + joints: Optional[List[Dict]] = None + bones: Optional[List[Dict]] = None + direction_arrow: Optional[Dict] = None + motion_trail: Optional[List[Dict]] = None + laban_metrics: Optional[Dict] = None + + +class JointsProcessor: + """Processes joint/keypoint data for circle visualization.""" + + def process_frame(self, frame_data: Dict) -> Optional[List[Dict]]: + """Extract joint positions from frame data.""" + keypoints_data = frame_data.get('keypoints', []) + if not keypoints_data or not keypoints_data[0].get('points'): + return None + + joints = [] + points = keypoints_data[0]['points'] + + for point in points: + x = point.get('x', 0) + y = point.get('y', 0) + confidence = point.get('confidence', 0) + + # Filter out low confidence points and 0,0 coordinates (invalid detections) + if confidence > 0.3 and not (x == 0 and y == 0): + joints.append({ + 'x': x, + 'y': y, + 'confidence': confidence, + 'name': point.get('name', '') + }) + + return joints if joints else None + + +class BonesProcessor: + """Processes skeleton/bone connections for line visualization.""" + + # MediaPipe pose skeleton connections (33 keypoints) + MEDIAPIPE_SKELETON = [ + # Face connections + (0, 1), (1, 2), (2, 3), (3, 7), # left eye region + (0, 4), (4, 5), (5, 6), (6, 8), # right eye region + (9, 10), # mouth + # Upper body + (11, 12), # shoulders + (11, 13), (13, 15), # left arm + (12, 14), (14, 16), # right arm + (11, 23), (12, 24), # shoulders to hips + (23, 24), # hips + # Lower body + (23, 25), (25, 27), (27, 29), (27, 31), # left leg + (24, 26), (26, 28), (28, 30), (28, 32), # right leg + # Hands + (15, 17), (15, 19), (15, 21), # left hand + (16, 18), (16, 20), (16, 22), # right hand + ] + + # COCO keypoint skeleton connections (17 keypoints) + # Order: nose, eyes, ears, shoulders, elbows, wrists, hips, knees, ankles + COCO_SKELETON = [ + # Head connections + (0, 1), (0, 2), # nose to eyes + (1, 3), (2, 4), # eyes to ears + # Upper body + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + # Lower body + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + ] + + # COCO-WholeBody skeleton connections (133 keypoints total) + # Body (17) + Face (68) + Left Hand (21) + Right Hand (21) + Feet (6) + COCO_WHOLEBODY_SKELETON = [ + # Body connections (same as COCO) + (0, 1), (0, 2), (1, 3), (2, 4), # head + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + + # Face outline (simplified from 68 points) + (17, 18), (18, 19), (19, 20), (20, 21), # jaw line (partial) + (22, 23), (23, 24), (24, 25), (25, 26), # eyebrow left + (27, 28), (28, 29), (29, 30), (30, 31), # eyebrow right + (36, 37), (37, 38), (38, 39), (39, 40), (40, 41), (41, 36), # left eye + (42, 43), (43, 44), (44, 45), (45, 46), (46, 47), (47, 42), # right eye + (48, 49), (49, 50), (50, 51), (51, 52), (52, 53), # mouth outline (partial) + + # Left hand connections (21 points starting at index 91) + (91, 92), (92, 93), (93, 94), (94, 95), # thumb + (91, 96), (96, 97), (97, 98), (98, 99), # index finger + (91, 100), (100, 101), (101, 102), (102, 103), # middle finger + (91, 104), (104, 105), (105, 106), (106, 107), # ring finger + (91, 108), (108, 109), (109, 110), (110, 111), # pinky + + # Right hand connections (21 points starting at index 112) + (112, 113), (113, 114), (114, 115), (115, 116), # thumb + (112, 117), (117, 118), (118, 119), (119, 120), # index finger + (112, 121), (121, 122), (122, 123), (123, 124), # middle finger + (112, 125), (125, 126), (126, 127), (127, 128), # ring finger + (112, 129), (129, 130), (130, 131), (131, 132), # pinky + ] + + # Sociopticon skeleton connections (custom format) + # Assuming similar to COCO but with additional torso detail + SOCIOPTICON_SKELETON = [ + # Head connections + (0, 1), (0, 2), (1, 3), (2, 4), # head structure + # Upper body with more detail + (5, 6), # shoulders + (5, 7), (7, 9), # left arm + (6, 8), (8, 10), # right arm + (5, 11), (6, 12), # shoulders to hips + (11, 12), # hips + # Torso detail (if available) + (5, 17), (6, 18), # shoulder to mid-torso + (17, 18), (17, 11), (18, 12), # torso connections + # Lower body + (11, 13), (13, 15), # left leg + (12, 14), (14, 16), # right leg + ] + + def __init__(self): + self.detected_format: Optional[KeypointFormat] = None + + def detect_keypoint_format(self, points: List[Dict]) -> KeypointFormat: + """Detect the keypoint format based on number of points and structure.""" + return KeypointFormatDetector.detect_format(points) + + def get_skeleton_connections(self, format_type: KeypointFormat) -> List[Tuple[int, int]]: + """Get skeleton connections for the specified format.""" + return SkeletonDefinitions.get_skeleton(format_type) + + def process_frame(self, frame_data: Dict) -> Optional[List[Dict]]: + """Extract bone connections from frame data with auto-format detection.""" + keypoints_data = frame_data.get('keypoints', []) + if not keypoints_data or not keypoints_data[0].get('points'): + return None + + points = keypoints_data[0]['points'] + + # Auto-detect keypoint format if not already detected + if not self.detected_format: + self.detected_format = self.detect_keypoint_format(points) + format_info = KeypointFormatDetector.format_info(self.detected_format) + print(f"Detected keypoint format: {format_info['name']} ({len(points)} points)") + + # Get appropriate skeleton connections + skeleton_connections = self.get_skeleton_connections(self.detected_format) + + # Try index-based approach first (more reliable for standard formats) + bones = self._process_by_index(points, skeleton_connections) + + # Fallback to name-based approach if index-based fails + if not bones: + bones = self._process_by_name(points, skeleton_connections) + + return bones if bones else None + + def _process_by_index(self, points: List[Dict], skeleton_connections: List[Tuple[int, int]]) -> List[Dict]: + """Process skeleton connections using point indices.""" + bones = [] + + for connection in skeleton_connections: + idx1, idx2 = connection + + # Check if indices are valid + if idx1 < len(points) and idx2 < len(points): + p1 = points[idx1] + p2 = points[idx2] + + p1_x, p1_y = p1.get('x', 0), p1.get('y', 0) + p2_x, p2_y = p2.get('x', 0), p2.get('y', 0) + p1_conf, p2_conf = p1.get('confidence', 0), p2.get('confidence', 0) + + # Check confidence, validity, and filter out 0,0 coordinates + if (p1_conf > 0.3 and p2_conf > 0.3 and + not math.isnan(p1_x) and not math.isnan(p1_y) and + not math.isnan(p2_x) and not math.isnan(p2_y) and + not (p1_x == 0 and p1_y == 0) and + not (p2_x == 0 and p2_y == 0)): + + bones.append({ + 'start': {'x': p1_x, 'y': p1_y}, + 'end': {'x': p2_x, 'y': p2_y}, + 'confidence': min(p1_conf, p2_conf), + 'connection': f"{idx1}-{idx2}", + 'format': self.detected_format.value + }) + + return bones + + def _process_by_name(self, points: List[Dict], skeleton_connections: List[Tuple[int, int]]) -> List[Dict]: + """Fallback: Process skeleton connections using point names (MediaPipe style).""" + # Create lookup dict by keypoint name + points_by_name = {p.get('name', ''): p for p in points} + + # Get keypoint names in order + keypoint_names = [p.get('name', '') for p in points] + + bones = [] + + for connection in skeleton_connections: + idx1, idx2 = connection + + if idx1 < len(keypoint_names) and idx2 < len(keypoint_names): + name1 = keypoint_names[idx1] + name2 = keypoint_names[idx2] + + if name1 in points_by_name and name2 in points_by_name: + p1 = points_by_name[name1] + p2 = points_by_name[name2] + + p1_x, p1_y = p1.get('x', 0), p1.get('y', 0) + p2_x, p2_y = p2.get('x', 0), p2.get('y', 0) + p1_conf, p2_conf = p1.get('confidence', 0), p2.get('confidence', 0) + + # Check confidence, validity, and filter out 0,0 coordinates + if (p1_conf > 0.3 and p2_conf > 0.3 and + not math.isnan(p1_x) and not math.isnan(p1_y) and + not math.isnan(p2_x) and not math.isnan(p2_y) and + not (p1_x == 0 and p1_y == 0) and + not (p2_x == 0 and p2_y == 0)): + + bones.append({ + 'start': {'x': p1_x, 'y': p1_y}, + 'end': {'x': p2_x, 'y': p2_y}, + 'confidence': min(p1_conf, p2_conf), + 'connection': f"{name1}-{name2}", + 'format': self.detected_format.value + }) + + return bones + + +class DirectionArrowProcessor: + """Processes movement direction data for arrow visualization.""" + + def process_frame(self, frame_data: Dict) -> Optional[Dict]: + """Extract direction arrow data from frame metrics.""" + metrics = frame_data.get('metrics', {}) + keypoints_data = frame_data.get('keypoints', []) + + direction = metrics.get('direction', 'stationary') + if direction == 'stationary': + return None + + # Calculate body center from keypoints + if keypoints_data and keypoints_data[0].get('points'): + points = keypoints_data[0]['points'] + valid_points = [p for p in points + if p.get('confidence', 0) > 0.3 and + not math.isnan(p.get('x', 0)) and + not math.isnan(p.get('y', 0)) and + not (p.get('x', 0) == 0 and p.get('y', 0) == 0)] + + if valid_points: + center_x = sum(p['x'] for p in valid_points) / len(valid_points) + center_y = sum(p['y'] for p in valid_points) / len(valid_points) + + # Direction vectors (normalized coordinates) + direction_vectors = { + 'up': (0, -0.1), + 'down': (0, 0.1), + 'left': (-0.1, 0), + 'right': (0.1, 0), + } + + if direction in direction_vectors: + dx, dy = direction_vectors[direction] + + return { + 'start': {'x': center_x, 'y': center_y}, + 'end': {'x': center_x + dx, 'y': center_y + dy}, + 'direction': direction, + 'intensity': metrics.get('intensity', 'medium'), + 'speed': metrics.get('speed', 'medium'), + 'velocity': metrics.get('velocity', 0) + } + + return None + + +class MotionTrailProcessor: + """Processes motion trail data for path visualization.""" + + def __init__(self, trail_length: int = 10): + self.trail_length = trail_length + self.trails = {} # Store trails for each keypoint + + def process_frame(self, frame_data: Dict, frame_index: int) -> Optional[List[Dict]]: + """Extract and update motion trail data.""" + keypoints_data = frame_data.get('keypoints', []) + if not keypoints_data or not keypoints_data[0].get('points'): + return None + + points = keypoints_data[0]['points'] + + # Update trails for each keypoint + for point in points: + x, y = point.get('x', 0), point.get('y', 0) + confidence = point.get('confidence', 0) + + # Filter out low confidence and 0,0 coordinates + if confidence > 0.3 and not (x == 0 and y == 0): + name = point.get('name', '') + if name not in self.trails: + self.trails[name] = [] + + # Add current position to trail + self.trails[name].append({ + 'x': x, + 'y': y, + 'frame': frame_index + }) + + # Keep only recent positions + if len(self.trails[name]) > self.trail_length: + self.trails[name] = self.trails[name][-self.trail_length:] + + # Create trail segments for drawing + trail_segments = [] + for joint_name, trail in self.trails.items(): + if len(trail) >= 2: + for i in range(1, len(trail)): + p1 = trail[i-1] + p2 = trail[i] + + # Calculate alpha based on age + alpha = i / len(trail) + + trail_segments.append({ + 'start': {'x': p1['x'], 'y': p1['y']}, + 'end': {'x': p2['x'], 'y': p2['y']}, + 'alpha': alpha, + 'joint': joint_name + }) + + return trail_segments if trail_segments else None + + +class LabanProcessor: + """Processes Laban Movement Analysis data for text and visual overlays.""" + + def process_frame(self, frame_data: Dict) -> Optional[Dict]: + """Extract Laban notation metrics from frame data.""" + metrics = frame_data.get('metrics', {}) + if not metrics: + return None + + # Extract and clean metrics + def safe_value(val, default=0): + if isinstance(val, (int, float)) and not math.isnan(val): + return val + return default + + laban_data = { + 'direction': metrics.get('direction', 'stationary'), + 'intensity': metrics.get('intensity', 'low'), + 'speed': metrics.get('speed', 'slow'), + 'velocity': safe_value(metrics.get('velocity'), 0), + 'acceleration': safe_value(metrics.get('acceleration'), 0), + 'fluidity': safe_value(metrics.get('fluidity'), 0), + 'expansion': safe_value(metrics.get('expansion'), 0), + 'total_displacement': safe_value(metrics.get('total_displacement'), 0) + } + + # Add center displacement if available + center_displacement = metrics.get('center_displacement') + if center_displacement: + laban_data['center_displacement'] = { + 'x': safe_value(center_displacement.get('x'), 0), + 'y': safe_value(center_displacement.get('y'), 0) + } + + return laban_data + + +class VisualizationProcessor: + """Main processor that coordinates all visualization types.""" + + def __init__(self, + enable_joints: bool = True, + enable_bones: bool = True, + enable_direction_arrows: bool = True, + enable_motion_trails: bool = True, + enable_laban: bool = True, + trail_length: int = 10): + + self.enable_joints = enable_joints + self.enable_bones = enable_bones + self.enable_direction_arrows = enable_direction_arrows + self.enable_motion_trails = enable_motion_trails + self.enable_laban = enable_laban + self.detected_format = None + + # Initialize processors + self.joints_processor = JointsProcessor() if enable_joints else None + self.bones_processor = BonesProcessor() if enable_bones else None + self.direction_processor = DirectionArrowProcessor() if enable_direction_arrows else None + self.trail_processor = MotionTrailProcessor(trail_length) if enable_motion_trails else None + self.laban_processor = LabanProcessor() if enable_laban else None + + def process_json_data(self, json_data: Dict) -> Dict: + """Process full JSON data and return streamlined visualization instructions.""" + # Check if this is YOLOv11 format and convert if needed + if KeypointFormatDetector.detect_yolo11_format(json_data): + print("Detected YOLOv11 pose format - converting to standard format...") + + # Estimate video dimensions from keypoints + if 'keypoints' in json_data and json_data['keypoints']: + first_frame_keypoints = json_data['keypoints'][0] + video_width, video_height = YOLOv11DataConverter.estimate_video_dimensions(first_frame_keypoints) + print(f"Estimated video dimensions: {video_width}x{video_height}") + else: + video_width, video_height = 1920, 1080 # Default + + # Convert YOLOv11 to standard format + json_data = YOLOv11DataConverter.convert_to_standard_format( + json_data, video_width, video_height + ) + print("YOLOv11 data converted successfully") + + video_info = json_data.get('video_info', {}) + source_frames = json_data.get('movement_analysis', {}).get('frames', []) + + processed_frames = [] + + for frame_index, frame in enumerate(source_frames): + viz_frame = VisualizationFrame( + timestamp=frame.get('timestamp', 0) + ) + + # Process each visualization type + if self.joints_processor: + viz_frame.joints = self.joints_processor.process_frame(frame) + + if self.bones_processor: + viz_frame.bones = self.bones_processor.process_frame(frame) + + if self.direction_processor: + viz_frame.direction_arrow = self.direction_processor.process_frame(frame) + + if self.trail_processor: + viz_frame.motion_trail = self.trail_processor.process_frame(frame, frame_index) + + if self.laban_processor: + viz_frame.laban_metrics = self.laban_processor.process_frame(frame) + + # Convert to dict for JSON serialization + processed_frames.append({ + 'timestamp': viz_frame.timestamp, + 'joints': viz_frame.joints, + 'bones': viz_frame.bones, + 'direction_arrow': viz_frame.direction_arrow, + 'motion_trail': viz_frame.motion_trail, + 'laban_metrics': viz_frame.laban_metrics + }) + + # Get detected format from bones processor + detected_format = None + if self.bones_processor and hasattr(self.bones_processor, 'detected_format'): + detected_format = self.bones_processor.detected_format + + return { + 'video_info': video_info, + 'fps': video_info.get('fps', 30), # Extract FPS for frontend + 'frames': processed_frames, + 'keypoint_format': detected_format.value if detected_format else None, # Add detected format info + 'capabilities': { + 'has_joints': self.enable_joints, + 'has_bones': self.enable_bones, + 'has_direction_arrows': self.enable_direction_arrows, + 'has_motion_trails': self.enable_motion_trails, + 'has_laban': self.enable_laban + } + } \ No newline at end of file diff --git a/src/demo/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 b/src/demo/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/src/demo/.gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/src/demo/.gradio/cached_examples/9/log.csv b/src/demo/.gradio/cached_examples/9/log.csv new file mode 100644 index 0000000000000000000000000000000000000000..1c4d913937bb478d953dbf50536792c532dbb0cd --- /dev/null +++ b/src/demo/.gradio/cached_examples/9/log.csv @@ -0,0 +1,2 @@ +Output,timestamp +"{""video"": {""path"": "".gradio/cached_examples/9/Output/b558f74ed1913fbba573/balette.mp4"", ""url"": ""/gradio_api/file=/private/var/folders/wz/v3427jc170563frpfjc2z0240000gn/T/gradio/d1815483c8302d65adbf0fcd64bf7a30390181dc1a4a8175ce9b53bd3aa91971/balette.mp4"", ""size"": null, ""orig_name"": ""balette.mp4"", ""mime_type"": null, ""is_stream"": false, ""meta"": {""_type"": ""gradio.FileData""}}, ""json_data"": ""{\""video_info\"": {\""fps\"": 60, \""duration_seconds\"": 3.1166666666666667, \""width\"": 1280, \""height\"": 688, \""frame_count\"": 187}, \""fps\"": 60, \""frames\"": [{\""timestamp\"": 0, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0, \""acceleration\"": 0, \""fluidity\"": 0, \""expansion\"": 0.142, \""total_displacement\"": 0}}, {\""timestamp\"": 0.016666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""left\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 1.051, \""acceleration\"": 63.0628, \""fluidity\"": 0, \""expansion\"": 0.15, \""total_displacement\"": 0.0175, \""center_displacement\"": {\""x\"": -0.0175, \""y\"": 0.0004}}}, {\""timestamp\"": 0.03333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0654, \""acceleration\"": 59.1406, \""fluidity\"": 0, \""expansion\"": 0.149, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0011, \""y\"": -0.0002}}}, {\""timestamp\"": 0.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2949, \""acceleration\"": 30.5825, \""fluidity\"": 0.092, \""expansion\"": 0.15, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.001, \""y\"": -0.0002}}}, {\""timestamp\"": 0.06666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.36, \""acceleration\"": 38.7168, \""fluidity\"": 0.023, \""expansion\"": 0.149, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0002}}}, {\""timestamp\"": 0.08333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2096, \""acceleration\"": 33.4529, \""fluidity\"": 0.029, \""expansion\"": 0.151, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": 0.0017, \""y\"": -0.0011}}}, {\""timestamp\"": 0.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2213, \""acceleration\"": 27.1474, \""fluidity\"": 0.036, \""expansion\"": 0.152, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": -0.0003}}}, {\""timestamp\"": 0.11666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.2033, \""acceleration\"": 24.8517, \""fluidity\"": 0.16, \""expansion\"": 0.155, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0004}}}, {\""timestamp\"": 0.13333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1729, \""acceleration\"": 21.8885, \""fluidity\"": 0.056, \""expansion\"": 0.156, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": -0.0009, \""y\"": 0.0001}}}, {\""timestamp\"": 0.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1527, \""acceleration\"": 19.1312, \""fluidity\"": 0.063, \""expansion\"": 0.156, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.16666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1571, \""acceleration\"": 17.7603, \""fluidity\"": 0.07, \""expansion\"": 0.159, \""total_displacement\"": 0.0017, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0017}}}, {\""timestamp\"": 0.18333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1276, \""acceleration\"": 15.7758, \""fluidity\"": 0.047, \""expansion\"": 0.16, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0003}}}, {\""timestamp\"": 0.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1568, \""acceleration\"": 15.6038, \""fluidity\"": 0.045, \""expansion\"": 0.171, \""total_displacement\"": 0.0032, \""center_displacement\"": {\""x\"": -0.0032, \""y\"": -0.0001}}}, {\""timestamp\"": 0.21666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1198, \""acceleration\"": 14.5715, \""fluidity\"": 0.041, \""expansion\"": 0.173, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0005}}}, {\""timestamp\"": 0.23333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1172, \""acceleration\"": 11.8933, \""fluidity\"": 0.033, \""expansion\"": 0.173, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0007, \""y\"": 0.0008}}}, {\""timestamp\"": 0.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1102, \""acceleration\"": 10.778, \""fluidity\"": 0.03, \""expansion\"": 0.172, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": -0.0008, \""y\"": 0.0002}}}, {\""timestamp\"": 0.26666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0949, \""acceleration\"": 9.5334, \""fluidity\"": 0.026, \""expansion\"": 0.172, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0005}}}, {\""timestamp\"": 0.2833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0866, \""acceleration\"": 8.1758, \""fluidity\"": 0.022, \""expansion\"": 0.174, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0}}}, {\""timestamp\"": 0.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0767, \""acceleration\"": 7.2556, \""fluidity\"": 0.019, \""expansion\"": 0.175, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 0.31666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0817, \""acceleration\"": 7.042, \""fluidity\"": 0.017, \""expansion\"": 0.177, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0011, \""y\"": 0}}}, {\""timestamp\"": 0.3333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0676, \""acceleration\"": 6.2615, \""fluidity\"": 0.015, \""expansion\"": 0.179, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0003}}}, {\""timestamp\"": 0.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0607, \""acceleration\"": 5.2741, \""fluidity\"": 0.013, \""expansion\"": 0.179, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0}}}, {\""timestamp\"": 0.36666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0578, \""acceleration\"": 4.7129, \""fluidity\"": 0.011, \""expansion\"": 0.183, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0003}}}, {\""timestamp\"": 0.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0493, \""acceleration\"": 4.2135, \""fluidity\"": 0.01, \""expansion\"": 0.183, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 0.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0724, \""acceleration\"": 5.2104, \""fluidity\"": 0.008, \""expansion\"": 0.191, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": -0.0018, \""y\"": 0.0009}}}, {\""timestamp\"": 0.4166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0467, \""acceleration\"": 5.2539, \""fluidity\"": 0.007, \""expansion\"": 0.191, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 0.43333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0614, \""acceleration\"": 4.7211, \""fluidity\"": 0.006, \""expansion\"": 0.192, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": -0.0013, \""y\"": -0.0001}}}, {\""timestamp\"": 0.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0493, \""acceleration\"": 4.7025, \""fluidity\"": 0.005, \""expansion\"": 0.191, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": -0.0001}}}, {\""timestamp\"": 0.4666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0441, \""acceleration\"": 3.7031, \""fluidity\"": 0.086, \""expansion\"": 0.191, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.48333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0545, \""acceleration\"": 3.9435, \""fluidity\"": 0.024, \""expansion\"": 0.192, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": -0.0008, \""y\"": 0.0007}}}, {\""timestamp\"": 0.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0412, \""acceleration\"": 3.7837, \""fluidity\"": 0.029, \""expansion\"": 0.192, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0436, \""acceleration\"": 3.1217, \""fluidity\"": 0.035, \""expansion\"": 0.192, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0006}}}, {\""timestamp\"": 0.5333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0395, \""acceleration\"": 2.9474, \""fluidity\"": 0.022, \""expansion\"": 0.192, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 2.5603, \""fluidity\"": 0.022, \""expansion\"": 0.192, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0001}}}, {\""timestamp\"": 0.5666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 2.2634, \""fluidity\"": 0.02, \""expansion\"": 0.193, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.5833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0316, \""acceleration\"": 1.9529, \""fluidity\"": 0.215, \""expansion\"": 0.194, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0003}}}, {\""timestamp\"": 0.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0364, \""acceleration\"": 2.1029, \""fluidity\"": 0.064, \""expansion\"": 0.196, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": -0.0006, \""y\"": -0.0004}}}, {\""timestamp\"": 0.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.028, \""acceleration\"": 2.1194, \""fluidity\"": 0.075, \""expansion\"": 0.197, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0}}}, {\""timestamp\"": 0.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0276, \""acceleration\"": 1.6102, \""fluidity\"": 0.088, \""expansion\"": 0.2, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0241, \""acceleration\"": 1.6084, \""fluidity\"": 0.057, \""expansion\"": 0.201, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 0.6666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0211, \""acceleration\"": 1.3391, \""fluidity\"": 0.282, \""expansion\"": 0.201, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 0.6833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0365, \""acceleration\"": 2.1662, \""fluidity\"": 0.107, \""expansion\"": 0.205, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0011}}}, {\""timestamp\"": 0.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0301, \""acceleration\"": 1.7959, \""fluidity\"": 0.111, \""expansion\"": 0.206, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0005}}}, {\""timestamp\"": 0.7166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0458, \""acceleration\"": 2.1795, \""fluidity\"": 0.125, \""expansion\"": 0.21, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0015}}}, {\""timestamp\"": 0.7333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0477, \""acceleration\"": 1.79, \""fluidity\"": 0.086, \""expansion\"": 0.211, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": -0.0004, \""y\"": 0.0012}}}, {\""timestamp\"": 0.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.034, \""acceleration\"": 2.4349, \""fluidity\"": 0.081, \""expansion\"": 0.211, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 0.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0353, \""acceleration\"": 1.6237, \""fluidity\"": 0.21, \""expansion\"": 0.213, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 0.7833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0329, \""acceleration\"": 1.47, \""fluidity\"": 0.305, \""expansion\"": 0.214, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 0.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0299, \""acceleration\"": 1.4263, \""fluidity\"": 0.178, \""expansion\"": 0.215, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0}}}, {\""timestamp\"": 0.8166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0277, \""acceleration\"": 1.1971, \""fluidity\"": 0.173, \""expansion\"": 0.215, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0001}}}, {\""timestamp\"": 0.8333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0376, \""acceleration\"": 1.7321, \""fluidity\"": 0.164, \""expansion\"": 0.215, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0008}}}, {\""timestamp\"": 0.85, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0346, \""acceleration\"": 1.3423, \""fluidity\"": 0.129, \""expansion\"": 0.215, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0006}}}, {\""timestamp\"": 0.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0332, \""acceleration\"": 1.2208, \""fluidity\"": 0.117, \""expansion\"": 0.215, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0005}}}, {\""timestamp\"": 0.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0281, \""acceleration\"": 1.4679, \""fluidity\"": 0.102, \""expansion\"": 0.215, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0256, \""acceleration\"": 1.01, \""fluidity\"": 0.326, \""expansion\"": 0.215, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0329, \""acceleration\"": 1.495, \""fluidity\"": 0.136, \""expansion\"": 0.216, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": 0}}}, {\""timestamp\"": 0.9333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0308, \""acceleration\"": 1.1118, \""fluidity\"": 0.141, \""expansion\"": 0.217, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": 0.0001}}}, {\""timestamp\"": 0.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0273, \""acceleration\"": 1.1554, \""fluidity\"": 0.151, \""expansion\"": 0.218, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 0.9666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0794, \""acceleration\"": 4.0386, \""fluidity\"": 0.107, \""expansion\"": 0.22, \""total_displacement\"": 0.0038, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0038}}}, {\""timestamp\"": 0.9833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0663, \""acceleration\"": 3.06, \""fluidity\"": 0.1, \""expansion\"": 0.221, \""total_displacement\"": 0.0021, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0021}}}, {\""timestamp\"": 1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.274, \""acceleration\"": 13.9959, \""fluidity\"": 0.089, \""expansion\"": 0.223, \""total_displacement\"": 0.0154, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0154}}}, {\""timestamp\"": 1.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.141, \""acceleration\"": 16.9543, \""fluidity\"": 0.074, \""expansion\"": 0.224, \""total_displacement\"": 0.0024, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0024}}}, {\""timestamp\"": 1.0333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3349, \""acceleration\"": 19.2106, \""fluidity\"": 0.066, \""expansion\"": 0.227, \""total_displacement\"": 0.0143, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": 0.0143}}}, {\""timestamp\"": 1.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2284, \""acceleration\"": 22.9589, \""fluidity\"": 0.057, \""expansion\"": 0.227, \""total_displacement\"": 0.0027, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0027}}}, {\""timestamp\"": 1.0666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1805, \""acceleration\"": 16.9712, \""fluidity\"": 0.049, \""expansion\"": 0.227, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 1.0833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3465, \""acceleration\"": 24.1562, \""fluidity\"": 0.043, \""expansion\"": 0.231, \""total_displacement\"": 0.0107, \""center_displacement\"": {\""x\"": 0.0016, \""y\"": 0.0106}}}, {\""timestamp\"": 1.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.206, \""acceleration\"": 24.6307, \""fluidity\"": 0.037, \""expansion\"": 0.231, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0.0005}}}, {\""timestamp\"": 1.1166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2545, \""acceleration\"": 19.6865, \""fluidity\"": 0.032, \""expansion\"": 0.235, \""total_displacement\"": 0.0047, \""center_displacement\"": {\""x\"": 0.0022, \""y\"": 0.0042}}}, {\""timestamp\"": 1.1333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2361, \""acceleration\"": 19.3326, \""fluidity\"": 0.028, \""expansion\"": 0.237, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0014, \""y\"": 0.0018}}}, {\""timestamp\"": 1.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1866, \""acceleration\"": 17.2203, \""fluidity\"": 0.025, \""expansion\"": 0.237, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0007}}}, {\""timestamp\"": 1.1666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2468, \""acceleration\"": 17.9569, \""fluidity\"": 0.021, \""expansion\"": 0.242, \""total_displacement\"": 0.0052, \""center_displacement\"": {\""x\"": 0.0044, \""y\"": -0.0028}}}, {\""timestamp\"": 1.1833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1892, \""acceleration\"": 16.9628, \""fluidity\"": 0.019, \""expansion\"": 0.242, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0009}}}, {\""timestamp\"": 1.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3082, \""acceleration\"": 20.8769, \""fluidity\"": 0.016, \""expansion\"": 0.248, \""total_displacement\"": 0.0102, \""center_displacement\"": {\""x\"": 0.0062, \""y\"": -0.0081}}}, {\""timestamp\"": 1.2166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.258, \""acceleration\"": 18.7894, \""fluidity\"": 0.014, \""expansion\"": 0.249, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0047}}}, {\""timestamp\"": 1.2333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4267, \""acceleration\"": 24.1119, \""fluidity\"": 0.012, \""expansion\"": 0.252, \""total_displacement\"": 0.0159, \""center_displacement\"": {\""x\"": 0.0049, \""y\"": -0.0151}}}, {\""timestamp\"": 1.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3443, \""acceleration\"": 24.447, \""fluidity\"": 0.011, \""expansion\"": 0.252, \""total_displacement\"": 0.0064, \""center_displacement\"": {\""x\"": 0.0025, \""y\"": -0.0059}}}, {\""timestamp\"": 1.2666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2922, \""acceleration\"": 20.5096, \""fluidity\"": 0.009, \""expansion\"": 0.252, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0023}}}, {\""timestamp\"": 1.2833333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4392, \""acceleration\"": 25.5796, \""fluidity\"": 0.008, \""expansion\"": 0.251, \""total_displacement\"": 0.0116, \""center_displacement\"": {\""x\"": 0.0045, \""y\"": -0.0107}}}, {\""timestamp\"": 1.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.312, \""acceleration\"": 25.454, \""fluidity\"": 0.007, \""expansion\"": 0.252, \""total_displacement\"": 0.0029, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0027}}}, {\""timestamp\"": 1.3166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""right\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.374, \""acceleration\"": 22.0903, \""fluidity\"": 0.006, \""expansion\"": 0.25, \""total_displacement\"": 0.0075, \""center_displacement\"": {\""x\"": 0.0059, \""y\"": -0.0048}}}, {\""timestamp\"": 1.3333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3019, \""acceleration\"": 23.8408, \""fluidity\"": 0.005, \""expansion\"": 0.25, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": -0.0004}}}, {\""timestamp\"": 1.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2638, \""acceleration\"": 18.0714, \""fluidity\"": 0.005, \""expansion\"": 0.248, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0011}}}, {\""timestamp\"": 1.3666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3077, \""acceleration\"": 19.3583, \""fluidity\"": 0.004, \""expansion\"": 0.246, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0047, \""y\"": -0.0013}}}, {\""timestamp\"": 1.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2445, \""acceleration\"": 18.1099, \""fluidity\"": 0.003, \""expansion\"": 0.246, \""total_displacement\"": 0.0017, \""center_displacement\"": {\""x\"": 0.0014, \""y\"": -0.0011}}}, {\""timestamp\"": 1.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""right\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2896, \""acceleration\"": 17.4501, \""fluidity\"": 0.003, \""expansion\"": 0.245, \""total_displacement\"": 0.0057, \""center_displacement\"": {\""x\"": 0.0057, \""y\"": -0.0007}}}, {\""timestamp\"": 1.4166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2406, \""acceleration\"": 17.0553, \""fluidity\"": 0.003, \""expansion\"": 0.245, \""total_displacement\"": 0.002, \""center_displacement\"": {\""x\"": 0.002, \""y\"": 0.0004}}}, {\""timestamp\"": 1.4333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2684, \""acceleration\"": 15.824, \""fluidity\"": 0.002, \""expansion\"": 0.244, \""total_displacement\"": 0.005, \""center_displacement\"": {\""x\"": 0.005, \""y\"": 0.0005}}}, {\""timestamp\"": 1.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.22, \""acceleration\"": 15.8399, \""fluidity\"": 0.002, \""expansion\"": 0.245, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": 0.0004}}}, {\""timestamp\"": 1.4666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1953, \""acceleration\"": 12.62, \""fluidity\"": 0.002, \""expansion\"": 0.245, \""total_displacement\"": 0.0009, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": 0.0001}}}, {\""timestamp\"": 1.4833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.23, \""acceleration\"": 13.8316, \""fluidity\"": 0.001, \""expansion\"": 0.243, \""total_displacement\"": 0.0039, \""center_displacement\"": {\""x\"": 0.0038, \""y\"": -0.0009}}}, {\""timestamp\"": 1.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1693, \""acceleration\"": 13.6376, \""fluidity\"": 0.001, \""expansion\"": 0.242, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0001}}}, {\""timestamp\"": 1.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1981, \""acceleration\"": 12.5103, \""fluidity\"": 0.001, \""expansion\"": 0.24, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0012}}}, {\""timestamp\"": 1.5333333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1657, \""acceleration\"": 11.9829, \""fluidity\"": 0.001, \""expansion\"": 0.237, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.001}}}, {\""timestamp\"": 1.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1546, \""acceleration\"": 9.8336, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0014}}}, {\""timestamp\"": 1.5666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1733, \""acceleration\"": 9.925, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.0029, \""center_displacement\"": {\""x\"": 0.0027, \""y\"": -0.001}}}, {\""timestamp\"": 1.5833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.138, \""acceleration\"": 9.6841, \""fluidity\"": 0.001, \""expansion\"": 0.236, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0}}}, {\""timestamp\"": 1.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1584, \""acceleration\"": 8.9992, \""fluidity\"": 0.001, \""expansion\"": 0.238, \""total_displacement\"": 0.0028, \""center_displacement\"": {\""x\"": 0.0028, \""y\"": -0.0004}}}, {\""timestamp\"": 1.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.125, \""acceleration\"": 9.2114, \""fluidity\"": 0, \""expansion\"": 0.239, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0}}}, {\""timestamp\"": 1.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1201, \""acceleration\"": 7.4065, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0003}}}, {\""timestamp\"": 1.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1079, \""acceleration\"": 6.8687, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0004}}}, {\""timestamp\"": 1.6666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0935, \""acceleration\"": 5.9798, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0003}}}, {\""timestamp\"": 1.6833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0962, \""acceleration\"": 5.6971, \""fluidity\"": 0, \""expansion\"": 0.245, \""total_displacement\"": 0.0011, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0003}}}, {\""timestamp\"": 1.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0824, \""acceleration\"": 5.1041, \""fluidity\"": 0, \""expansion\"": 0.245, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0003}}}, {\""timestamp\"": 1.7166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0836, \""acceleration\"": 4.649, \""fluidity\"": 0, \""expansion\"": 0.244, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.001, \""y\"": 0.0002}}}, {\""timestamp\"": 1.7333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0755, \""acceleration\"": 4.1983, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": 0}}}, {\""timestamp\"": 1.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0641, \""acceleration\"": 3.8633, \""fluidity\"": 0, \""expansion\"": 0.243, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0}}}, {\""timestamp\"": 1.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0622, \""acceleration\"": 3.3395, \""fluidity\"": 0, \""expansion\"": 0.242, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": 0}}}, {\""timestamp\"": 1.7833333333333332, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0511, \""acceleration\"": 3.1939, \""fluidity\"": 0, \""expansion\"": 0.242, \""total_displacement\"": 0, \""center_displacement\"": {\""x\"": 0, \""y\"": 0}}}, {\""timestamp\"": 1.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0471, \""acceleration\"": 2.7221, \""fluidity\"": 0, \""expansion\"": 0.241, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": -0.0001}}}, {\""timestamp\"": 1.8166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0422, \""acceleration\"": 2.3512, \""fluidity\"": 0.063, \""expansion\"": 0.241, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 1.8333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0424, \""acceleration\"": 2.3805, \""fluidity\"": 0.016, \""expansion\"": 0.24, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0001}}}, {\""timestamp\"": 1.8499999999999999, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.037, \""acceleration\"": 2.0613, \""fluidity\"": 0.02, \""expansion\"": 0.24, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0001}}}, {\""timestamp\"": 1.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0325, \""acceleration\"": 1.8143, \""fluidity\"": 0.025, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 1.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0341, \""acceleration\"": 1.8024, \""fluidity\"": 0.015, \""expansion\"": 0.239, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0002}}}, {\""timestamp\"": 1.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0295, \""acceleration\"": 1.5649, \""fluidity\"": 0.015, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 1.9166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0265, \""acceleration\"": 1.3648, \""fluidity\"": 0.014, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0239, \""acceleration\"": 1.2534, \""fluidity\"": 0.011, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 1.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""low\"", \""speed\"": \""slow\"", \""velocity\"": 0.0214, \""acceleration\"": 1.0506, \""fluidity\"": 0.236, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0214, \""acceleration\"": 1.0392, \""fluidity\"": 0.065, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0001}}}, {\""timestamp\"": 1.9833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0182, \""acceleration\"": 0.9469, \""fluidity\"": 0.078, \""expansion\"": 0.239, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0}}}, {\""timestamp\"": 2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0189, \""acceleration\"": 0.8829, \""fluidity\"": 0.095, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0002}}}, {\""timestamp\"": 2.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0177, \""acceleration\"": 0.7531, \""fluidity\"": 0.13, \""expansion\"": 0.239, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0002}}}, {\""timestamp\"": 2.033333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0176, \""acceleration\"": 0.6967, \""fluidity\"": 0.076, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 2.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0157, \""acceleration\"": 0.6898, \""fluidity\"": 0.075, \""expansion\"": 0.238, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 2.0666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0142, \""acceleration\"": 0.5736, \""fluidity\"": 0.127, \""expansion\"": 0.238, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0001}}}, {\""timestamp\"": 2.0833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0189, \""acceleration\"": 0.8216, \""fluidity\"": 0.07, \""expansion\"": 0.238, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0004}}}, {\""timestamp\"": 2.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.017, \""acceleration\"": 0.6557, \""fluidity\"": 0.068, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 2.1166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0224, \""acceleration\"": 0.8202, \""fluidity\"": 0.066, \""expansion\"": 0.238, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0006}}}, {\""timestamp\"": 2.1333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0225, \""acceleration\"": 0.6904, \""fluidity\"": 0.051, \""expansion\"": 0.238, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0005}}}, {\""timestamp\"": 2.15, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0205, \""acceleration\"": 0.7196, \""fluidity\"": 0.046, \""expansion\"": 0.238, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0003}}}, {\""timestamp\"": 2.1666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0175, \""acceleration\"": 0.7882, \""fluidity\"": 0.041, \""expansion\"": 0.237, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 2.183333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""slow\"", \""velocity\"": 0.016, \""acceleration\"": 0.5634, \""fluidity\"": 0.215, \""expansion\"": 0.236, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": 0}}}, {\""timestamp\"": 2.2, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0173, \""acceleration\"": 0.689, \""fluidity\"": 0.076, \""expansion\"": 0.234, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0002}}}, {\""timestamp\"": 2.216666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0143, \""acceleration\"": 0.6405, \""fluidity\"": 0.083, \""expansion\"": 0.234, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0001}}}, {\""timestamp\"": 2.2333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0686, \""acceleration\"": 3.7773, \""fluidity\"": 0.093, \""expansion\"": 0.23, \""total_displacement\"": 0.0038, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0038}}}, {\""timestamp\"": 2.25, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0536, \""acceleration\"": 2.9603, \""fluidity\"": 0.063, \""expansion\"": 0.229, \""total_displacement\"": 0.0019, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0.0019}}}, {\""timestamp\"": 2.2666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0569, \""acceleration\"": 2.1957, \""fluidity\"": 0.06, \""expansion\"": 0.229, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0015}}}, {\""timestamp\"": 2.283333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2019, \""acceleration\"": 10.2968, \""fluidity\"": 0.054, \""expansion\"": 0.227, \""total_displacement\"": 0.0105, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0105}}}, {\""timestamp\"": 2.3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1156, \""acceleration\"": 11.0428, \""fluidity\"": 0.044, \""expansion\"": 0.226, \""total_displacement\"": 0.0025, \""center_displacement\"": {\""x\"": -0.0002, \""y\"": 0.0025}}}, {\""timestamp\"": 2.3166666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2797, \""acceleration\"": 14.8018, \""fluidity\"": 0.04, \""expansion\"": 0.221, \""total_displacement\"": 0.0124, \""center_displacement\"": {\""x\"": -0.0003, \""y\"": 0.0124}}}, {\""timestamp\"": 2.3333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2214, \""acceleration\"": 15.8765, \""fluidity\"": 0.034, \""expansion\"": 0.221, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0048}}}, {\""timestamp\"": 2.35, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.1555, \""acceleration\"": 14.678, \""fluidity\"": 0.03, \""expansion\"": 0.22, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": 0, \""y\"": -0.0001}}}, {\""timestamp\"": 2.3666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3565, \""acceleration\"": 22.8035, \""fluidity\"": 0.026, \""expansion\"": 0.218, \""total_displacement\"": 0.0128, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0128}}}, {\""timestamp\"": 2.3833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2303, \""acceleration\"": 22.0639, \""fluidity\"": 0.022, \""expansion\"": 0.218, \""total_displacement\"": 0.0031, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0031}}}, {\""timestamp\"": 2.4, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""down\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3683, \""acceleration\"": 23.0341, \""fluidity\"": 0.019, \""expansion\"": 0.214, \""total_displacement\"": 0.0122, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": 0.0122}}}, {\""timestamp\"": 2.4166666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2725, \""acceleration\"": 25.916, \""fluidity\"": 0.017, \""expansion\"": 0.214, \""total_displacement\"": 0.0023, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0022}}}, {\""timestamp\"": 2.433333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2323, \""acceleration\"": 18.9078, \""fluidity\"": 0.015, \""expansion\"": 0.213, \""total_displacement\"": 0.001, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0003}}}, {\""timestamp\"": 2.45, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2271, \""acceleration\"": 17.3051, \""fluidity\"": 0.013, \""expansion\"": 0.213, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": 0.0004}}}, {\""timestamp\"": 2.466666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1935, \""acceleration\"": 15.6304, \""fluidity\"": 0.011, \""expansion\"": 0.213, \""total_displacement\"": 0.0007, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": -0.0003}}}, {\""timestamp\"": 2.4833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2306, \""acceleration\"": 16.3765, \""fluidity\"": 0.01, \""expansion\"": 0.212, \""total_displacement\"": 0.0045, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0033}}}, {\""timestamp\"": 2.5, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2042, \""acceleration\"": 13.8859, \""fluidity\"": 0.008, \""expansion\"": 0.211, \""total_displacement\"": 0.0028, \""center_displacement\"": {\""x\"": 0.0009, \""y\"": -0.0026}}}, {\""timestamp\"": 2.5166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3447, \""acceleration\"": 20.2457, \""fluidity\"": 0.007, \""expansion\"": 0.21, \""total_displacement\"": 0.0125, \""center_displacement\"": {\""x\"": 0.003, \""y\"": -0.0121}}}, {\""timestamp\"": 2.533333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2624, \""acceleration\"": 19.8363, \""fluidity\"": 0.006, \""expansion\"": 0.21, \""total_displacement\"": 0.0045, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0044}}}, {\""timestamp\"": 2.55, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2262, \""acceleration\"": 16.141, \""fluidity\"": 0.006, \""expansion\"": 0.211, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0014}}}, {\""timestamp\"": 2.5666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.4216, \""acceleration\"": 25.4549, \""fluidity\"": 0.005, \""expansion\"": 0.206, \""total_displacement\"": 0.0142, \""center_displacement\"": {\""x\"": 0.0032, \""y\"": -0.0139}}}, {\""timestamp\"": 2.5833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2673, \""acceleration\"": 25.7738, \""fluidity\"": 0.004, \""expansion\"": 0.206, \""total_displacement\"": 0.0026, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0024}}}, {\""timestamp\"": 2.6, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""up\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3323, \""acceleration\"": 20.6687, \""fluidity\"": 0.004, \""expansion\"": 0.201, \""total_displacement\"": 0.0069, \""center_displacement\"": {\""x\"": 0.0023, \""y\"": -0.0065}}}, {\""timestamp\"": 2.6166666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.3073, \""acceleration\"": 21.0621, \""fluidity\"": 0.003, \""expansion\"": 0.2, \""total_displacement\"": 0.0035, \""center_displacement\"": {\""x\"": 0.001, \""y\"": -0.0033}}}, {\""timestamp\"": 2.6333333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2991, \""acceleration\"": 18.0948, \""fluidity\"": 0.003, \""expansion\"": 0.195, \""total_displacement\"": 0.0048, \""center_displacement\"": {\""x\"": 0.0034, \""y\"": -0.0034}}}, {\""timestamp\"": 2.65, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2577, \""acceleration\"": 17.9181, \""fluidity\"": 0.002, \""expansion\"": 0.194, \""total_displacement\"": 0.0015, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0014}}}, {\""timestamp\"": 2.6666666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2337, \""acceleration\"": 14.5879, \""fluidity\"": 0.002, \""expansion\"": 0.194, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0005, \""y\"": -0.0011}}}, {\""timestamp\"": 2.683333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2467, \""acceleration\"": 14.5353, \""fluidity\"": 0.002, \""expansion\"": 0.191, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0031, \""y\"": -0.0009}}}, {\""timestamp\"": 2.7, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2213, \""acceleration\"": 12.4955, \""fluidity\"": 0.002, \""expansion\"": 0.191, \""total_displacement\"": 0.0025, \""center_displacement\"": {\""x\"": 0.0011, \""y\"": -0.0022}}}, {\""timestamp\"": 2.716666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2164, \""acceleration\"": 10.6537, \""fluidity\"": 0.001, \""expansion\"": 0.187, \""total_displacement\"": 0.0027, \""center_displacement\"": {\""x\"": 0.0027, \""y\"": -0.0006}}}, {\""timestamp\"": 2.7333333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1839, \""acceleration\"": 11.1152, \""fluidity\"": 0.001, \""expansion\"": 0.186, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0005}}}, {\""timestamp\"": 2.75, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1742, \""acceleration\"": 8.9315, \""fluidity\"": 0.001, \""expansion\"": 0.185, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": -0.001}}}, {\""timestamp\"": 2.7666666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.2067, \""acceleration\"": 10.3295, \""fluidity\"": 0.001, \""expansion\"": 0.18, \""total_displacement\"": 0.0042, \""center_displacement\"": {\""x\"": 0.0028, \""y\"": -0.0032}}}, {\""timestamp\"": 2.783333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1622, \""acceleration\"": 10.1212, \""fluidity\"": 0.001, \""expansion\"": 0.178, \""total_displacement\"": 0.0014, \""center_displacement\"": {\""x\"": 0.0012, \""y\"": -0.0007}}}, {\""timestamp\"": 2.8, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1856, \""acceleration\"": 9.0748, \""fluidity\"": 0.001, \""expansion\"": 0.177, \""total_displacement\"": 0.0033, \""center_displacement\"": {\""x\"": 0.0007, \""y\"": -0.0032}}}, {\""timestamp\"": 2.8166666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.156, \""acceleration\"": 9.3265, \""fluidity\"": 0.001, \""expansion\"": 0.176, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0006, \""y\"": -0.001}}}, {\""timestamp\"": 2.8333333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1451, \""acceleration\"": 7.2397, \""fluidity\"": 0.001, \""expansion\"": 0.172, \""total_displacement\"": 0.0013, \""center_displacement\"": {\""x\"": 0.0013, \""y\"": -0.0002}}}, {\""timestamp\"": 2.85, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1303, \""acceleration\"": 7.0422, \""fluidity\"": 0, \""expansion\"": 0.171, \""total_displacement\"": 0.0006, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": -0.0004}}}, {\""timestamp\"": 2.8666666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1148, \""acceleration\"": 6.0024, \""fluidity\"": 0, \""expansion\"": 0.17, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": -0.0005}}}, {\""timestamp\"": 2.8833333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.131, \""acceleration\"": 6.6612, \""fluidity\"": 0, \""expansion\"": 0.171, \""total_displacement\"": 0.0022, \""center_displacement\"": {\""x\"": 0.0022, \""y\"": 0.0003}}}, {\""timestamp\"": 2.9, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1066, \""acceleration\"": 6.179, \""fluidity\"": 0, \""expansion\"": 0.17, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0008, \""y\"": 0.0002}}}, {\""timestamp\"": 2.9166666666666665, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.1063, \""acceleration\"": 5.0441, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0012, \""center_displacement\"": {\""x\"": 0.0012, \""y\"": 0.0001}}}, {\""timestamp\"": 2.933333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0941, \""acceleration\"": 5.0755, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0005, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": -0.0005}}}, {\""timestamp\"": 2.95, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.082, \""acceleration\"": 4.2463, \""fluidity\"": 0, \""expansion\"": 0.168, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": -0.0001}}}, {\""timestamp\"": 2.966666666666667, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0747, \""acceleration\"": 3.6591, \""fluidity\"": 0, \""expansion\"": 0.167, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0003}}}, {\""timestamp\"": 2.9833333333333334, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""medium\"", \""speed\"": \""fast\"", \""velocity\"": 0.0671, \""acceleration\"": 3.2635, \""fluidity\"": 0.159, \""expansion\"": 0.166, \""total_displacement\"": 0.0003, \""center_displacement\"": {\""x\"": 0.0002, \""y\"": 0.0002}}}, {\""timestamp\"": 3, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0591, \""acceleration\"": 2.8652, \""fluidity\"": 0.04, \""expansion\"": 0.165, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0002}}}, {\""timestamp\"": 3.0166666666666666, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""slow\"", \""velocity\"": 0.0517, \""acceleration\"": 2.5477, \""fluidity\"": 0.05, \""expansion\"": 0.164, \""total_displacement\"": 0.0001, \""center_displacement\"": {\""x\"": -0.0001, \""y\"": 0}}}, {\""timestamp\"": 3.033333333333333, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0687, \""acceleration\"": 3.5291, \""fluidity\"": 0.062, \""expansion\"": 0.164, \""total_displacement\"": 0.0016, \""center_displacement\"": {\""x\"": 0.0004, \""y\"": 0.0016}}}, {\""timestamp\"": 3.05, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0566, \""acceleration\"": 2.9811, \""fluidity\"": 0.038, \""expansion\"": 0.164, \""total_displacement\"": 0.0008, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0008}}}, {\""timestamp\"": 3.0666666666666664, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0508, \""acceleration\"": 2.5782, \""fluidity\"": 0.037, \""expansion\"": 0.164, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0, \""y\"": 0.0004}}}, {\""timestamp\"": 3.0833333333333335, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.0475, \""acceleration\"": 2.4533, \""fluidity\"": 0.034, \""expansion\"": 0.16, \""total_displacement\"": 0.0002, \""center_displacement\"": {\""x\"": 0.0001, \""y\"": 0.0002}}}, {\""timestamp\"": 3.1, \""joints\"": null, \""bones\"": null, \""direction_arrow\"": null, \""motion_trail\"": null, \""laban_metrics\"": {\""direction\"": \""stationary\"", \""intensity\"": \""high\"", \""speed\"": \""fast\"", \""velocity\"": 0.044, \""acceleration\"": 2.1114, \""fluidity\"": 0.027, \""expansion\"": 0.159, \""total_displacement\"": 0.0004, \""center_displacement\"": {\""x\"": 0.0003, \""y\"": 0.0002}}}], \""capabilities\"": {\""has_joints\"": true, \""has_bones\"": true, \""has_direction_arrows\"": true, \""has_motion_trails\"": true, \""has_laban\"": true}}""}",2025-06-09 16:49:29.087331 diff --git a/src/demo/__init__.py b/src/demo/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/demo/app.py b/src/demo/app.py new file mode 100644 index 0000000000000000000000000000000000000000..2abb3154c3ff3b0f8779f955d7dadaab24436bfd --- /dev/null +++ b/src/demo/app.py @@ -0,0 +1,81 @@ + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + """ + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + """ + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) \ No newline at end of file diff --git a/src/demo/css.css b/src/demo/css.css new file mode 100644 index 0000000000000000000000000000000000000000..f7256be42f9884d89b499b0f5a6cfcbed3d54c80 --- /dev/null +++ b/src/demo/css.css @@ -0,0 +1,157 @@ +html { + font-family: Inter; + font-size: 16px; + font-weight: 400; + line-height: 1.5; + -webkit-text-size-adjust: 100%; + background: #fff; + color: #323232; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +:root { + --space: 1; + --vspace: calc(var(--space) * 1rem); + --vspace-0: calc(3 * var(--space) * 1rem); + --vspace-1: calc(2 * var(--space) * 1rem); + --vspace-2: calc(1.5 * var(--space) * 1rem); + --vspace-3: calc(0.5 * var(--space) * 1rem); +} + +.app { + max-width: 748px !important; +} + +.prose p { + margin: var(--vspace) 0; + line-height: var(--vspace * 2); + font-size: 1rem; +} + +code { + font-family: "Inconsolata", sans-serif; + font-size: 16px; +} + +h1, +h1 code { + font-weight: 400; + line-height: calc(2.5 / var(--space) * var(--vspace)); +} + +h1 code { + background: none; + border: none; + letter-spacing: 0.05em; + padding-bottom: 5px; + position: relative; + padding: 0; +} + +h2 { + margin: var(--vspace-1) 0 var(--vspace-2) 0; + line-height: 1em; +} + +h3, +h3 code { + margin: var(--vspace-1) 0 var(--vspace-2) 0; + line-height: 1em; +} + +h4, +h5, +h6 { + margin: var(--vspace-3) 0 var(--vspace-3) 0; + line-height: var(--vspace); +} + +.bigtitle, +h1, +h1 code { + font-size: calc(8px * 4.5); + word-break: break-word; +} + +.title, +h2, +h2 code { + font-size: calc(8px * 3.375); + font-weight: lighter; + word-break: break-word; + border: none; + background: none; +} + +.subheading1, +h3, +h3 code { + font-size: calc(8px * 1.8); + font-weight: 600; + border: none; + background: none; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +h2 code { + padding: 0; + position: relative; + letter-spacing: 0.05em; +} + +blockquote { + font-size: calc(8px * 1.1667); + font-style: italic; + line-height: calc(1.1667 * var(--vspace)); + margin: var(--vspace-2) var(--vspace-2); +} + +.subheading2, +h4 { + font-size: calc(8px * 1.4292); + text-transform: uppercase; + font-weight: 600; +} + +.subheading3, +h5 { + font-size: calc(8px * 1.2917); + line-height: calc(1.2917 * var(--vspace)); + + font-weight: lighter; + text-transform: uppercase; + letter-spacing: 0.15em; +} + +h6 { + font-size: calc(8px * 1.1667); + font-size: 1.1667em; + font-weight: normal; + font-style: italic; + font-family: "le-monde-livre-classic-byol", serif !important; + letter-spacing: 0px !important; +} + +#start .md > *:first-child { + margin-top: 0; +} + +h2 + h3 { + margin-top: 0; +} + +.md hr { + border: none; + border-top: 1px solid var(--block-border-color); + margin: var(--vspace-2) 0 var(--vspace-2) 0; +} +.prose ul { + margin: var(--vspace-2) 0 var(--vspace-1) 0; +} + +.gap { + gap: 0; +} diff --git a/src/demo/requirements.txt b/src/demo/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..9287d1a398f383773d3ce7638c466c975498c173 --- /dev/null +++ b/src/demo/requirements.txt @@ -0,0 +1 @@ +gradio_overlay_video \ No newline at end of file diff --git a/src/demo/space.py b/src/demo/space.py new file mode 100644 index 0000000000000000000000000000000000000000..2c9b53e85e54c6676603d6d66555b5a8042ee13f --- /dev/null +++ b/src/demo/space.py @@ -0,0 +1,206 @@ + +import gradio as gr +from app import demo as app +import os + +_docs = {'OverlayVideo': {'description': 'An output component that plays a video with an interactive, toggleable overlay of pose data.', 'members': {'__init__': {'value': {'type': 'typing.Any', 'default': 'None', 'description': None}, 'label': {'type': 'str | None', 'default': 'None', 'description': None}, 'interactive': {'type': 'bool | None', 'default': 'None', 'description': None}, 'autoplay': {'type': 'bool', 'default': 'False', 'description': None}, 'loop': {'type': 'bool', 'default': 'False', 'description': None}, 'mode': {'type': 'str', 'default': '"overlay"', 'description': None}}, 'postprocess': {'value': {'type': 'typing.Optional[typing.Tuple[str | None, str | None]][\n typing.Tuple[str | None, str | None][\n str | None, str | None\n ],\n None,\n]', 'description': None}}, 'preprocess': {'return': {'type': 'str | None', 'description': None}, 'value': None}}, 'events': {'change': {'type': None, 'default': None, 'description': 'Triggered when the value of the OverlayVideo changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input.'}, 'clear': {'type': None, 'default': None, 'description': 'This listener is triggered when the user clears the OverlayVideo using the clear button for the component.'}, 'play': {'type': None, 'default': None, 'description': 'This listener is triggered when the user plays the media in the OverlayVideo.'}, 'pause': {'type': None, 'default': None, 'description': 'This listener is triggered when the media in the OverlayVideo stops for any reason.'}, 'end': {'type': None, 'default': None, 'description': 'This listener is triggered when the user reaches the end of the media playing in the OverlayVideo.'}}}, '__meta__': {'additional_interfaces': {}, 'user_fn_refs': {'OverlayVideo': []}}} + +abs_path = os.path.join(os.path.dirname(__file__), "css.css") + +with gr.Blocks( + css=abs_path, + theme=gr.themes.Default( + font_mono=[ + gr.themes.GoogleFont("Inconsolata"), + "monospace", + ], + ), +) as demo: + gr.Markdown( +""" +# `gradio_overlay_video` + +<div style="display: flex; gap: 7px;"> +<img alt="Static Badge" src="https://img.shields.io/badge/version%20-%200.0.8%20-%20orange"> +</div> + +overlayed video controller +""", elem_classes=["md-custom"], header_links=True) + app.render() + gr.Markdown( +""" +## Installation + +```bash +pip install gradio_overlay_video +``` + +## Usage + +```python + +import gradio as gr +from gradio_overlay_video import OverlayVideo +from pathlib import Path + +DEMO_DIR = Path(__file__).parent.parent +sample_video_path = DEMO_DIR / "files/balette.mp4" +sample_json_path = DEMO_DIR / "files/mediapipe_full_kp_balette.json" +mediapipe_json_path = DEMO_DIR / "files/mediapipe_heavy_kp_parkour.json" +movenet_json_path = DEMO_DIR / "files/movenet_thunder_kp_skate.json" +yolo8_json_path = DEMO_DIR / "files/yolov8_kp_dance.json" +yolo11_json_path = DEMO_DIR / "files/yolov11.json" + +def prepare_visualization_data(json_path, video_path): + \"\"\" + This function simply validates the inputs and passes them to the + custom OverlayVideo component for frontend processing. + \"\"\" + if not json_path: + raise gr.Error("A JSON file is required to generate a visualization.") + + print(f"✅ Preparing visualization with JSON: {json_path}") + if video_path: + print(f"✅ Video background provided: {video_path}") + else: + print("ℹ️ No video background provided. Visualization will be on a black background.") + + # The backend's job is just to pass the filepaths to the frontend. + # The return format (video_path, json_path) must match what postprocess expects. + return (video_path, json_path) + + +with gr.Blocks(theme=gr.themes.Default(primary_hue="rose", secondary_hue="pink")) as demo: + gr.Markdown( + "# 🩰 Interactive Pose Visualization\n" + "1. **Upload a JSON file** with pose data.\n" + "2. **(Optional) Upload a video** to use as the background.\n" + "3. Click 'Display Visualization' to see the interactive result." + ) + + with gr.Row(): + with gr.Column(scale=1): + # Use standard gr.File for robust input handling + json_upload = gr.File( + label="Upload Required JSON File", + file_types=[".json"], + type="filepath" + ) + video_upload = gr.File( + label="Upload Optional Video File", + file_types=["video"], + type="filepath", + value=None + ) + btn = gr.Button("Display Visualization", variant="primary") + + with gr.Column(scale=1): + output_ov = OverlayVideo(label="Output", interactive=False, autoplay=True) + + btn.click( + fn=prepare_visualization_data, + inputs=[json_upload, video_upload], + outputs=[output_ov] + ) + + gr.Examples( + examples=[ + [str(mediapipe_json_path), None], + [str(movenet_json_path), None], + [str(yolo8_json_path), None], + [str(sample_json_path), str(sample_video_path)], + [str(yolo11_json_path), None] + ], + inputs=[json_upload, video_upload], + outputs=output_ov, + fn=prepare_visualization_data, + cache_examples=True + ) + +if __name__ == "__main__": + demo.launch(allowed_paths=["/Users/csabi/Develop/overlay_video/files"]) +``` +""", elem_classes=["md-custom"], header_links=True) + + + gr.Markdown(""" +## `OverlayVideo` + +### Initialization +""", elem_classes=["md-custom"], header_links=True) + + gr.ParamViewer(value=_docs["OverlayVideo"]["members"]["__init__"], linkify=[]) + + + gr.Markdown("### Events") + gr.ParamViewer(value=_docs["OverlayVideo"]["events"], linkify=['Event']) + + + + + gr.Markdown(""" + +### User function + +The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). + +- When used as an Input, the component only impacts the input signature of the user function. +- When used as an output, the component only impacts the return signature of the user function. + +The code snippet below is accurate in cases where the component is used as both an input and an output. + + + + ```python +def predict( + value: str | None +) -> typing.Optional[typing.Tuple[str | None, str | None]][ + typing.Tuple[str | None, str | None][ + str | None, str | None + ], + None, +]: + return value +``` +""", elem_classes=["md-custom", "OverlayVideo-user-fn"], header_links=True) + + + + + demo.load(None, js=r"""function() { + const refs = {}; + const user_fn_refs = { + OverlayVideo: [], }; + requestAnimationFrame(() => { + + Object.entries(user_fn_refs).forEach(([key, refs]) => { + if (refs.length > 0) { + const el = document.querySelector(`.${key}-user-fn`); + if (!el) return; + refs.forEach(ref => { + el.innerHTML = el.innerHTML.replace( + new RegExp("\\b"+ref+"\\b", "g"), + `<a href="#h-${ref.toLowerCase()}">${ref}</a>` + ); + }) + } + }) + + Object.entries(refs).forEach(([key, refs]) => { + if (refs.length > 0) { + const el = document.querySelector(`.${key}`); + if (!el) return; + refs.forEach(ref => { + el.innerHTML = el.innerHTML.replace( + new RegExp("\\b"+ref+"\\b", "g"), + `<a href="#h-${ref.toLowerCase()}">${ref}</a>` + ); + }) + } + }) + }) +} + +""") + +demo.launch() diff --git a/src/files/balette.mp4 b/src/files/balette.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c8964d924b7f92d8c63be0022af5f7cb465eb856 --- /dev/null +++ b/src/files/balette.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e5ff7c8e5eb31b54686b0250a1ebc739ea1128bb18f116f8f0215159e0979b +size 621415 diff --git a/src/files/mediapipe_full_kp_balette.json b/src/files/mediapipe_full_kp_balette.json new file mode 100644 index 0000000000000000000000000000000000000000..44478487c56b1758c70a6ec0f1af2b7298713ea0 --- /dev/null +++ b/src/files/mediapipe_full_kp_balette.json @@ -0,0 +1,41813 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-08T15:20:23.476225", + "version": "1.0.0", + "model_info": { + "name": "mediapipe-full", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 60, + "duration_seconds": 3.1166666666666667, + "width": 1280, + "height": 688, + "frame_count": 187 + }, + "movement_analysis": { + "frame_count": 187, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0.142, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5227, + "y": 0.2897, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5289, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5321, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5352, + "y": 0.271, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5224, + "y": 0.2745, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5206, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5188, + "y": 0.274, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5422, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5208, + "y": 0.2781, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5269, + "y": 0.3024, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5203, + "y": 0.3033, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5428, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5193, + "y": 0.3646, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5219, + "y": 0.4627, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.5051, + "y": 0.4587, + "confidence": 0.907 + }, + { + "name": "left_wrist", + "x": 0.4661, + "y": 0.5082, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.4719, + "y": 0.493, + "confidence": 0.934 + }, + { + "name": "left_pinky", + "x": 0.4563, + "y": 0.5283, + "confidence": 0.963 + }, + { + "name": "right_pinky", + "x": 0.4575, + "y": 0.5017, + "confidence": 0.91 + }, + { + "name": "left_index", + "x": 0.4519, + "y": 0.5125, + "confidence": 0.966 + }, + { + "name": "right_index", + "x": 0.4533, + "y": 0.4996, + "confidence": 0.916 + }, + { + "name": "left_thumb", + "x": 0.4561, + "y": 0.504, + "confidence": 0.959 + }, + { + "name": "right_thumb", + "x": 0.4576, + "y": 0.4974, + "confidence": 0.912 + }, + { + "name": "left_hip", + "x": 0.5586, + "y": 0.5478, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5467, + "y": 0.5534, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5414, + "y": 0.7163, + "confidence": 0.95 + }, + { + "name": "right_knee", + "x": 0.526, + "y": 0.6993, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.5427, + "y": 0.8832, + "confidence": 0.956 + }, + { + "name": "right_ankle", + "x": 0.5378, + "y": 0.8711, + "confidence": 0.909 + }, + { + "name": "left_heel", + "x": 0.543, + "y": 0.9045, + "confidence": 0.751 + }, + { + "name": "right_heel", + "x": 0.5404, + "y": 0.8889, + "confidence": 0.7 + }, + { + "name": "left_foot_index", + "x": 0.5319, + "y": 0.9408, + "confidence": 0.937 + }, + { + "name": "right_foot_index", + "x": 0.5273, + "y": 0.9188, + "confidence": 0.897 + } + ] + } + ] + }, + { + "frame_index": 1, + "timestamp": 0.016666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.0074, + "acceleration": 60.4416, + "fluidity": 0, + "expansion": 0.151, + "total_displacement": 0.0168, + "center_displacement": { + "x": -0.0167, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5171, + "y": 0.2881, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5237, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5269, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5301, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5156, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5131, + "y": 0.2721, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.511, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5363, + "y": 0.2745, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5134, + "y": 0.2759, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5227, + "y": 0.3014, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5133, + "y": 0.3014, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5347, + "y": 0.3618, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5107, + "y": 0.3608, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5123, + "y": 0.471, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.499, + "y": 0.4578, + "confidence": 0.822 + }, + { + "name": "left_wrist", + "x": 0.4595, + "y": 0.5011, + "confidence": 0.965 + }, + { + "name": "right_wrist", + "x": 0.4724, + "y": 0.4809, + "confidence": 0.854 + }, + { + "name": "left_pinky", + "x": 0.4462, + "y": 0.5211, + "confidence": 0.942 + }, + { + "name": "right_pinky", + "x": 0.4567, + "y": 0.4886, + "confidence": 0.836 + }, + { + "name": "left_index", + "x": 0.4418, + "y": 0.5056, + "confidence": 0.945 + }, + { + "name": "right_index", + "x": 0.4513, + "y": 0.4827, + "confidence": 0.843 + }, + { + "name": "left_thumb", + "x": 0.4486, + "y": 0.4987, + "confidence": 0.93 + }, + { + "name": "right_thumb", + "x": 0.4552, + "y": 0.4805, + "confidence": 0.839 + }, + { + "name": "left_hip", + "x": 0.5414, + "y": 0.5528, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5138, + "y": 0.5577, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5436, + "y": 0.7245, + "confidence": 0.952 + }, + { + "name": "right_knee", + "x": 0.5201, + "y": 0.7215, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.5446, + "y": 0.8898, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.5314, + "y": 0.886, + "confidence": 0.915 + }, + { + "name": "left_heel", + "x": 0.545, + "y": 0.9088, + "confidence": 0.764 + }, + { + "name": "right_heel", + "x": 0.536, + "y": 0.902, + "confidence": 0.718 + }, + { + "name": "left_foot_index", + "x": 0.5416, + "y": 0.9531, + "confidence": 0.941 + }, + { + "name": "right_foot_index", + "x": 0.5251, + "y": 0.9462, + "confidence": 0.904 + } + ] + } + ] + }, + { + "frame_index": 2, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0726, + "acceleration": 56.0881, + "fluidity": 0, + "expansion": 0.15, + "total_displacement": 0.0012, + "center_displacement": { + "x": -0.0012, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5181, + "y": 0.2879, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5239, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5271, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5304, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5157, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5135, + "y": 0.2722, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5115, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5357, + "y": 0.2748, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5126, + "y": 0.2761, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5239, + "y": 0.3015, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5148, + "y": 0.3016, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5409, + "y": 0.3621, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5064, + "y": 0.3605, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5249, + "y": 0.4725, + "confidence": 0.979 + }, + { + "name": "right_elbow", + "x": 0.488, + "y": 0.4572, + "confidence": 0.765 + }, + { + "name": "left_wrist", + "x": 0.4771, + "y": 0.4984, + "confidence": 0.956 + }, + { + "name": "right_wrist", + "x": 0.4557, + "y": 0.4872, + "confidence": 0.81 + }, + { + "name": "left_pinky", + "x": 0.4609, + "y": 0.5184, + "confidence": 0.932 + }, + { + "name": "right_pinky", + "x": 0.4417, + "y": 0.4992, + "confidence": 0.794 + }, + { + "name": "left_index", + "x": 0.4575, + "y": 0.5017, + "confidence": 0.935 + }, + { + "name": "right_index", + "x": 0.4394, + "y": 0.4943, + "confidence": 0.803 + }, + { + "name": "left_thumb", + "x": 0.4639, + "y": 0.4948, + "confidence": 0.915 + }, + { + "name": "right_thumb", + "x": 0.4452, + "y": 0.4915, + "confidence": 0.799 + }, + { + "name": "left_hip", + "x": 0.5388, + "y": 0.5526, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5098, + "y": 0.5567, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5415, + "y": 0.7252, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5192, + "y": 0.719, + "confidence": 0.961 + }, + { + "name": "left_ankle", + "x": 0.5417, + "y": 0.89, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.5296, + "y": 0.8822, + "confidence": 0.917 + }, + { + "name": "left_heel", + "x": 0.5414, + "y": 0.9088, + "confidence": 0.768 + }, + { + "name": "right_heel", + "x": 0.5326, + "y": 0.8983, + "confidence": 0.723 + }, + { + "name": "left_foot_index", + "x": 0.5404, + "y": 0.9526, + "confidence": 0.941 + }, + { + "name": "right_foot_index", + "x": 0.5235, + "y": 0.9321, + "confidence": 0.904 + } + ] + } + ] + }, + { + "frame_index": 3, + "timestamp": 0.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2889, + "acceleration": 29.1794, + "fluidity": 0.015, + "expansion": 0.15, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0011, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5166, + "y": 0.2879, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.523, + "y": 0.2736, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5261, + "y": 0.273, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5294, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5148, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5128, + "y": 0.2723, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5108, + "y": 0.2717, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5358, + "y": 0.276, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5127, + "y": 0.2761, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5224, + "y": 0.302, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5133, + "y": 0.3017, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5409, + "y": 0.3624, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5058, + "y": 0.3585, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5232, + "y": 0.47, + "confidence": 0.978 + }, + { + "name": "right_elbow", + "x": 0.4852, + "y": 0.4543, + "confidence": 0.718 + }, + { + "name": "left_wrist", + "x": 0.4773, + "y": 0.5006, + "confidence": 0.955 + }, + { + "name": "right_wrist", + "x": 0.4514, + "y": 0.4876, + "confidence": 0.777 + }, + { + "name": "left_pinky", + "x": 0.4632, + "y": 0.52, + "confidence": 0.928 + }, + { + "name": "right_pinky", + "x": 0.4384, + "y": 0.5013, + "confidence": 0.762 + }, + { + "name": "left_index", + "x": 0.4605, + "y": 0.5066, + "confidence": 0.931 + }, + { + "name": "right_index", + "x": 0.4374, + "y": 0.496, + "confidence": 0.773 + }, + { + "name": "left_thumb", + "x": 0.4651, + "y": 0.5011, + "confidence": 0.91 + }, + { + "name": "right_thumb", + "x": 0.4431, + "y": 0.4928, + "confidence": 0.769 + }, + { + "name": "left_hip", + "x": 0.5359, + "y": 0.5523, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5087, + "y": 0.5564, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.54, + "y": 0.7245, + "confidence": 0.954 + }, + { + "name": "right_knee", + "x": 0.5169, + "y": 0.7167, + "confidence": 0.96 + }, + { + "name": "left_ankle", + "x": 0.5429, + "y": 0.8895, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.528, + "y": 0.878, + "confidence": 0.92 + }, + { + "name": "left_heel", + "x": 0.543, + "y": 0.9068, + "confidence": 0.772 + }, + { + "name": "right_heel", + "x": 0.5319, + "y": 0.8925, + "confidence": 0.729 + }, + { + "name": "left_foot_index", + "x": 0.5419, + "y": 0.9508, + "confidence": 0.942 + }, + { + "name": "right_foot_index", + "x": 0.5243, + "y": 0.9325, + "confidence": 0.905 + } + ] + } + ] + }, + { + "frame_index": 4, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3436, + "acceleration": 37.4803, + "fluidity": 0.004, + "expansion": 0.15, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5176, + "y": 0.288, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.524, + "y": 0.2738, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5271, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.53, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5157, + "y": 0.273, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5135, + "y": 0.2724, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5116, + "y": 0.2717, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5362, + "y": 0.2762, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5135, + "y": 0.2762, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5235, + "y": 0.3023, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5144, + "y": 0.3018, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5438, + "y": 0.3625, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.506, + "y": 0.3589, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5259, + "y": 0.4698, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.4846, + "y": 0.4541, + "confidence": 0.678 + }, + { + "name": "left_wrist", + "x": 0.4745, + "y": 0.4994, + "confidence": 0.952 + }, + { + "name": "right_wrist", + "x": 0.4474, + "y": 0.4892, + "confidence": 0.748 + }, + { + "name": "left_pinky", + "x": 0.4621, + "y": 0.5166, + "confidence": 0.924 + }, + { + "name": "right_pinky", + "x": 0.4336, + "y": 0.5038, + "confidence": 0.737 + }, + { + "name": "left_index", + "x": 0.4588, + "y": 0.5042, + "confidence": 0.926 + }, + { + "name": "right_index", + "x": 0.4327, + "y": 0.4987, + "confidence": 0.748 + }, + { + "name": "left_thumb", + "x": 0.463, + "y": 0.4996, + "confidence": 0.903 + }, + { + "name": "right_thumb", + "x": 0.4383, + "y": 0.4952, + "confidence": 0.744 + }, + { + "name": "left_hip", + "x": 0.5334, + "y": 0.5519, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5083, + "y": 0.5561, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5387, + "y": 0.724, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5205, + "y": 0.7138, + "confidence": 0.957 + }, + { + "name": "left_ankle", + "x": 0.5419, + "y": 0.8892, + "confidence": 0.957 + }, + { + "name": "right_ankle", + "x": 0.5281, + "y": 0.8776, + "confidence": 0.921 + }, + { + "name": "left_heel", + "x": 0.5424, + "y": 0.9065, + "confidence": 0.771 + }, + { + "name": "right_heel", + "x": 0.5321, + "y": 0.8934, + "confidence": 0.731 + }, + { + "name": "left_foot_index", + "x": 0.542, + "y": 0.9497, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.528, + "y": 0.9349, + "confidence": 0.902 + } + ] + } + ] + }, + { + "frame_index": 5, + "timestamp": 0.08333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2099, + "acceleration": 32.6232, + "fluidity": 0.005, + "expansion": 0.151, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0022, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5192, + "y": 0.2876, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5258, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5292, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.532, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5168, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5144, + "y": 0.2723, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5123, + "y": 0.2717, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.538, + "y": 0.2762, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.513, + "y": 0.2758, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5256, + "y": 0.3022, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5153, + "y": 0.3019, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.549, + "y": 0.3642, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5037, + "y": 0.3589, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5337, + "y": 0.4713, + "confidence": 0.974 + }, + { + "name": "right_elbow", + "x": 0.4792, + "y": 0.4497, + "confidence": 0.649 + }, + { + "name": "left_wrist", + "x": 0.4778, + "y": 0.4944, + "confidence": 0.952 + }, + { + "name": "right_wrist", + "x": 0.4528, + "y": 0.4886, + "confidence": 0.731 + }, + { + "name": "left_pinky", + "x": 0.464, + "y": 0.505, + "confidence": 0.923 + }, + { + "name": "right_pinky", + "x": 0.4386, + "y": 0.5044, + "confidence": 0.723 + }, + { + "name": "left_index", + "x": 0.4596, + "y": 0.4931, + "confidence": 0.925 + }, + { + "name": "right_index", + "x": 0.4381, + "y": 0.5006, + "confidence": 0.735 + }, + { + "name": "left_thumb", + "x": 0.4654, + "y": 0.4896, + "confidence": 0.901 + }, + { + "name": "right_thumb", + "x": 0.445, + "y": 0.4974, + "confidence": 0.73 + }, + { + "name": "left_hip", + "x": 0.5373, + "y": 0.5517, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5104, + "y": 0.5558, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5393, + "y": 0.7236, + "confidence": 0.956 + }, + { + "name": "right_knee", + "x": 0.5182, + "y": 0.7156, + "confidence": 0.954 + }, + { + "name": "left_ankle", + "x": 0.5463, + "y": 0.8894, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.5237, + "y": 0.8791, + "confidence": 0.922 + }, + { + "name": "left_heel", + "x": 0.5466, + "y": 0.9063, + "confidence": 0.764 + }, + { + "name": "right_heel", + "x": 0.5299, + "y": 0.8924, + "confidence": 0.727 + }, + { + "name": "left_foot_index", + "x": 0.5424, + "y": 0.9491, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.522, + "y": 0.9361, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 6, + "timestamp": 0.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2271, + "acceleration": 25.8512, + "fluidity": 0.006, + "expansion": 0.152, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0001, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5197, + "y": 0.2865, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5265, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5299, + "y": 0.2728, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.5326, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5174, + "y": 0.2725, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.5148, + "y": 0.272, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5128, + "y": 0.2716, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5385, + "y": 0.2761, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.513, + "y": 0.2754, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.526, + "y": 0.3015, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5158, + "y": 0.3014, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.55, + "y": 0.3657, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5023, + "y": 0.3588, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5349, + "y": 0.471, + "confidence": 0.973 + }, + { + "name": "right_elbow", + "x": 0.4785, + "y": 0.4473, + "confidence": 0.636 + }, + { + "name": "left_wrist", + "x": 0.4781, + "y": 0.4943, + "confidence": 0.952 + }, + { + "name": "right_wrist", + "x": 0.4516, + "y": 0.4901, + "confidence": 0.719 + }, + { + "name": "left_pinky", + "x": 0.4642, + "y": 0.5033, + "confidence": 0.922 + }, + { + "name": "right_pinky", + "x": 0.4394, + "y": 0.5052, + "confidence": 0.712 + }, + { + "name": "left_index", + "x": 0.4598, + "y": 0.4906, + "confidence": 0.924 + }, + { + "name": "right_index", + "x": 0.4385, + "y": 0.5018, + "confidence": 0.725 + }, + { + "name": "left_thumb", + "x": 0.4656, + "y": 0.4876, + "confidence": 0.899 + }, + { + "name": "right_thumb", + "x": 0.4452, + "y": 0.4986, + "confidence": 0.719 + }, + { + "name": "left_hip", + "x": 0.538, + "y": 0.5485, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5095, + "y": 0.5531, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5373, + "y": 0.7194, + "confidence": 0.958 + }, + { + "name": "right_knee", + "x": 0.5174, + "y": 0.7126, + "confidence": 0.953 + }, + { + "name": "left_ankle", + "x": 0.5483, + "y": 0.8891, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.5229, + "y": 0.8777, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.5472, + "y": 0.9039, + "confidence": 0.756 + }, + { + "name": "right_heel", + "x": 0.5288, + "y": 0.8907, + "confidence": 0.723 + }, + { + "name": "left_foot_index", + "x": 0.5458, + "y": 0.949, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.5206, + "y": 0.9309, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 7, + "timestamp": 0.11666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.199, + "acceleration": 24.7462, + "fluidity": 0.004, + "expansion": 0.156, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5206, + "y": 0.2824, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5277, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.531, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5338, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5181, + "y": 0.2697, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.5152, + "y": 0.2693, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.513, + "y": 0.2691, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.539, + "y": 0.2758, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5123, + "y": 0.2741, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5267, + "y": 0.2993, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5156, + "y": 0.299, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5513, + "y": 0.3668, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4977, + "y": 0.3589, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5484, + "y": 0.4708, + "confidence": 0.972 + }, + { + "name": "right_elbow", + "x": 0.4705, + "y": 0.443, + "confidence": 0.65 + }, + { + "name": "left_wrist", + "x": 0.4925, + "y": 0.4958, + "confidence": 0.952 + }, + { + "name": "right_wrist", + "x": 0.4503, + "y": 0.481, + "confidence": 0.733 + }, + { + "name": "left_pinky", + "x": 0.4789, + "y": 0.5061, + "confidence": 0.922 + }, + { + "name": "right_pinky", + "x": 0.4395, + "y": 0.5018, + "confidence": 0.726 + }, + { + "name": "left_index", + "x": 0.4768, + "y": 0.4941, + "confidence": 0.924 + }, + { + "name": "right_index", + "x": 0.442, + "y": 0.5005, + "confidence": 0.738 + }, + { + "name": "left_thumb", + "x": 0.4809, + "y": 0.4911, + "confidence": 0.899 + }, + { + "name": "right_thumb", + "x": 0.4479, + "y": 0.4959, + "confidence": 0.732 + }, + { + "name": "left_hip", + "x": 0.5403, + "y": 0.5466, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.51, + "y": 0.5529, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5342, + "y": 0.7194, + "confidence": 0.961 + }, + { + "name": "right_knee", + "x": 0.5187, + "y": 0.7135, + "confidence": 0.951 + }, + { + "name": "left_ankle", + "x": 0.5445, + "y": 0.8892, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.5227, + "y": 0.8826, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.544, + "y": 0.904, + "confidence": 0.744 + }, + { + "name": "right_heel", + "x": 0.5267, + "y": 0.8966, + "confidence": 0.714 + }, + { + "name": "left_foot_index", + "x": 0.5417, + "y": 0.9502, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.521, + "y": 0.9379, + "confidence": 0.9 + } + ] + } + ] + }, + { + "frame_index": 8, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1709, + "acceleration": 21.2874, + "fluidity": 0.004, + "expansion": 0.156, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0005, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5201, + "y": 0.281, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5273, + "y": 0.2695, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5307, + "y": 0.2698, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5335, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5176, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5147, + "y": 0.268, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5125, + "y": 0.2678, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5387, + "y": 0.2756, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5116, + "y": 0.2734, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5263, + "y": 0.2986, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5149, + "y": 0.2983, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5512, + "y": 0.3671, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4965, + "y": 0.359, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5514, + "y": 0.4706, + "confidence": 0.969 + }, + { + "name": "right_elbow", + "x": 0.4695, + "y": 0.4405, + "confidence": 0.659 + }, + { + "name": "left_wrist", + "x": 0.4951, + "y": 0.4965, + "confidence": 0.948 + }, + { + "name": "right_wrist", + "x": 0.4493, + "y": 0.4797, + "confidence": 0.743 + }, + { + "name": "left_pinky", + "x": 0.481, + "y": 0.5121, + "confidence": 0.917 + }, + { + "name": "right_pinky", + "x": 0.4388, + "y": 0.5017, + "confidence": 0.736 + }, + { + "name": "left_index", + "x": 0.4795, + "y": 0.4946, + "confidence": 0.92 + }, + { + "name": "right_index", + "x": 0.4418, + "y": 0.5007, + "confidence": 0.748 + }, + { + "name": "left_thumb", + "x": 0.4834, + "y": 0.4933, + "confidence": 0.893 + }, + { + "name": "right_thumb", + "x": 0.4474, + "y": 0.4958, + "confidence": 0.741 + }, + { + "name": "left_hip", + "x": 0.5402, + "y": 0.5447, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5095, + "y": 0.5519, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5329, + "y": 0.7189, + "confidence": 0.963 + }, + { + "name": "right_knee", + "x": 0.5184, + "y": 0.7127, + "confidence": 0.948 + }, + { + "name": "left_ankle", + "x": 0.543, + "y": 0.889, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.5233, + "y": 0.8832, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.5429, + "y": 0.9041, + "confidence": 0.733 + }, + { + "name": "right_heel", + "x": 0.5268, + "y": 0.8979, + "confidence": 0.704 + }, + { + "name": "left_foot_index", + "x": 0.5391, + "y": 0.9503, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.521, + "y": 0.9387, + "confidence": 0.898 + } + ] + } + ] + }, + { + "frame_index": 9, + "timestamp": 0.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1539, + "acceleration": 18.4016, + "fluidity": 0.003, + "expansion": 0.157, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0002, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5205, + "y": 0.2806, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5276, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5309, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5338, + "y": 0.2699, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.518, + "y": 0.268, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5149, + "y": 0.2677, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5127, + "y": 0.2676, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5389, + "y": 0.2755, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5114, + "y": 0.2731, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5267, + "y": 0.2983, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5153, + "y": 0.2982, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5517, + "y": 0.3678, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.496, + "y": 0.3595, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5525, + "y": 0.4709, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.4691, + "y": 0.4399, + "confidence": 0.665 + }, + { + "name": "left_wrist", + "x": 0.4959, + "y": 0.4969, + "confidence": 0.946 + }, + { + "name": "right_wrist", + "x": 0.4494, + "y": 0.4791, + "confidence": 0.752 + }, + { + "name": "left_pinky", + "x": 0.4807, + "y": 0.5159, + "confidence": 0.915 + }, + { + "name": "right_pinky", + "x": 0.4391, + "y": 0.5016, + "confidence": 0.745 + }, + { + "name": "left_index", + "x": 0.4791, + "y": 0.4951, + "confidence": 0.917 + }, + { + "name": "right_index", + "x": 0.4421, + "y": 0.5007, + "confidence": 0.757 + }, + { + "name": "left_thumb", + "x": 0.4836, + "y": 0.4946, + "confidence": 0.889 + }, + { + "name": "right_thumb", + "x": 0.4476, + "y": 0.4957, + "confidence": 0.749 + }, + { + "name": "left_hip", + "x": 0.5402, + "y": 0.5447, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5088, + "y": 0.5518, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5325, + "y": 0.7189, + "confidence": 0.964 + }, + { + "name": "right_knee", + "x": 0.5185, + "y": 0.7124, + "confidence": 0.945 + }, + { + "name": "left_ankle", + "x": 0.5426, + "y": 0.8892, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.5238, + "y": 0.8845, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.5421, + "y": 0.9054, + "confidence": 0.724 + }, + { + "name": "right_heel", + "x": 0.527, + "y": 0.8992, + "confidence": 0.695 + }, + { + "name": "left_foot_index", + "x": 0.5391, + "y": 0.951, + "confidence": 0.939 + }, + { + "name": "right_foot_index", + "x": 0.5218, + "y": 0.9391, + "confidence": 0.897 + } + ] + } + ] + }, + { + "frame_index": 10, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1461, + "acceleration": 16.7338, + "fluidity": 0.003, + "expansion": 0.161, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.0003, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5222, + "y": 0.277, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5285, + "y": 0.2655, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5314, + "y": 0.2661, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5343, + "y": 0.2669, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5191, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5158, + "y": 0.2645, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.5131, + "y": 0.2645, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.5385, + "y": 0.274, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5107, + "y": 0.2716, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5281, + "y": 0.2942, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5165, + "y": 0.2931, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5524, + "y": 0.367, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4926, + "y": 0.3594, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5576, + "y": 0.4683, + "confidence": 0.961 + }, + { + "name": "right_elbow", + "x": 0.4599, + "y": 0.4293, + "confidence": 0.694 + }, + { + "name": "left_wrist", + "x": 0.521, + "y": 0.4973, + "confidence": 0.942 + }, + { + "name": "right_wrist", + "x": 0.4431, + "y": 0.4757, + "confidence": 0.771 + }, + { + "name": "left_pinky", + "x": 0.5135, + "y": 0.5208, + "confidence": 0.909 + }, + { + "name": "right_pinky", + "x": 0.435, + "y": 0.5021, + "confidence": 0.762 + }, + { + "name": "left_index", + "x": 0.509, + "y": 0.5046, + "confidence": 0.912 + }, + { + "name": "right_index", + "x": 0.4404, + "y": 0.501, + "confidence": 0.773 + }, + { + "name": "left_thumb", + "x": 0.4908, + "y": 0.496, + "confidence": 0.883 + }, + { + "name": "right_thumb", + "x": 0.4454, + "y": 0.4948, + "confidence": 0.765 + }, + { + "name": "left_hip", + "x": 0.5419, + "y": 0.5433, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5087, + "y": 0.5504, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5315, + "y": 0.7161, + "confidence": 0.962 + }, + { + "name": "right_knee", + "x": 0.5201, + "y": 0.7171, + "confidence": 0.938 + }, + { + "name": "left_ankle", + "x": 0.5327, + "y": 0.8889, + "confidence": 0.954 + }, + { + "name": "right_ankle", + "x": 0.5248, + "y": 0.8858, + "confidence": 0.919 + }, + { + "name": "left_heel", + "x": 0.5323, + "y": 0.9053, + "confidence": 0.705 + }, + { + "name": "right_heel", + "x": 0.5267, + "y": 0.9053, + "confidence": 0.679 + }, + { + "name": "left_foot_index", + "x": 0.532, + "y": 0.9487, + "confidence": 0.93 + }, + { + "name": "right_foot_index", + "x": 0.5228, + "y": 0.9391, + "confidence": 0.889 + } + ] + } + ] + }, + { + "frame_index": 11, + "timestamp": 0.18333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1305, + "acceleration": 14.2444, + "fluidity": 0.002, + "expansion": 0.162, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0002, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5231, + "y": 0.2748, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5291, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.532, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.535, + "y": 0.265, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5199, + "y": 0.2622, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5166, + "y": 0.2622, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5136, + "y": 0.2624, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5387, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5108, + "y": 0.2702, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5285, + "y": 0.2915, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.517, + "y": 0.2899, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5522, + "y": 0.3667, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4925, + "y": 0.3592, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5607, + "y": 0.467, + "confidence": 0.952 + }, + { + "name": "right_elbow", + "x": 0.4597, + "y": 0.4256, + "confidence": 0.72 + }, + { + "name": "left_wrist", + "x": 0.5255, + "y": 0.4978, + "confidence": 0.935 + }, + { + "name": "right_wrist", + "x": 0.4425, + "y": 0.4701, + "confidence": 0.787 + }, + { + "name": "left_pinky", + "x": 0.51, + "y": 0.5218, + "confidence": 0.901 + }, + { + "name": "right_pinky", + "x": 0.4341, + "y": 0.5003, + "confidence": 0.776 + }, + { + "name": "left_index", + "x": 0.5141, + "y": 0.5076, + "confidence": 0.905 + }, + { + "name": "right_index", + "x": 0.4404, + "y": 0.4996, + "confidence": 0.787 + }, + { + "name": "left_thumb", + "x": 0.4952, + "y": 0.4981, + "confidence": 0.874 + }, + { + "name": "right_thumb", + "x": 0.4456, + "y": 0.4913, + "confidence": 0.778 + }, + { + "name": "left_hip", + "x": 0.5424, + "y": 0.5422, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5094, + "y": 0.5487, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5318, + "y": 0.7155, + "confidence": 0.958 + }, + { + "name": "right_knee", + "x": 0.5206, + "y": 0.7174, + "confidence": 0.928 + }, + { + "name": "left_ankle", + "x": 0.5303, + "y": 0.8887, + "confidence": 0.946 + }, + { + "name": "right_ankle", + "x": 0.5251, + "y": 0.8865, + "confidence": 0.911 + }, + { + "name": "left_heel", + "x": 0.53, + "y": 0.9053, + "confidence": 0.681 + }, + { + "name": "right_heel", + "x": 0.5268, + "y": 0.9092, + "confidence": 0.657 + }, + { + "name": "left_foot_index", + "x": 0.5309, + "y": 0.9469, + "confidence": 0.921 + }, + { + "name": "right_foot_index", + "x": 0.5235, + "y": 0.9392, + "confidence": 0.879 + } + ] + } + ] + }, + { + "frame_index": 12, + "timestamp": 0.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1508, + "acceleration": 14.165, + "fluidity": 0.002, + "expansion": 0.171, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0029, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5233, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5288, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5316, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5345, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5197, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5162, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.513, + "y": 0.261, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5376, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5095, + "y": 0.269, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5284, + "y": 0.2907, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5171, + "y": 0.289, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5511, + "y": 0.3624, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4888, + "y": 0.3594, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5691, + "y": 0.4531, + "confidence": 0.95 + }, + { + "name": "right_elbow", + "x": 0.4505, + "y": 0.4221, + "confidence": 0.743 + }, + { + "name": "left_wrist", + "x": 0.5475, + "y": 0.4954, + "confidence": 0.933 + }, + { + "name": "right_wrist", + "x": 0.4322, + "y": 0.4719, + "confidence": 0.796 + }, + { + "name": "left_pinky", + "x": 0.5453, + "y": 0.5218, + "confidence": 0.9 + }, + { + "name": "right_pinky", + "x": 0.4263, + "y": 0.5007, + "confidence": 0.782 + }, + { + "name": "left_index", + "x": 0.538, + "y": 0.5103, + "confidence": 0.903 + }, + { + "name": "right_index", + "x": 0.4332, + "y": 0.4997, + "confidence": 0.792 + }, + { + "name": "left_thumb", + "x": 0.5341, + "y": 0.5012, + "confidence": 0.873 + }, + { + "name": "right_thumb", + "x": 0.4368, + "y": 0.492, + "confidence": 0.785 + }, + { + "name": "left_hip", + "x": 0.5404, + "y": 0.5454, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5048, + "y": 0.5503, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5257, + "y": 0.7156, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5029, + "y": 0.6154, + "confidence": 0.906 + }, + { + "name": "left_ankle", + "x": 0.5227, + "y": 0.8882, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.5243, + "y": 0.6084, + "confidence": 0.84 + }, + { + "name": "left_heel", + "x": 0.5221, + "y": 0.9052, + "confidence": 0.69 + }, + { + "name": "right_heel", + "x": 0.5276, + "y": 0.6026, + "confidence": 0.618 + }, + { + "name": "left_foot_index", + "x": 0.5198, + "y": 0.945, + "confidence": 0.917 + }, + { + "name": "right_foot_index", + "x": 0.5258, + "y": 0.6246, + "confidence": 0.824 + } + ] + } + ] + }, + { + "frame_index": 13, + "timestamp": 0.21666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1194, + "acceleration": 13.1224, + "fluidity": 0.002, + "expansion": 0.173, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0003, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5236, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.529, + "y": 0.2627, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5318, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5348, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5199, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5166, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5132, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5376, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5097, + "y": 0.269, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5283, + "y": 0.2911, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5175, + "y": 0.2896, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5506, + "y": 0.3619, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4885, + "y": 0.3601, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5719, + "y": 0.4478, + "confidence": 0.949 + }, + { + "name": "right_elbow", + "x": 0.4497, + "y": 0.421, + "confidence": 0.763 + }, + { + "name": "left_wrist", + "x": 0.5512, + "y": 0.4932, + "confidence": 0.932 + }, + { + "name": "right_wrist", + "x": 0.4297, + "y": 0.4737, + "confidence": 0.805 + }, + { + "name": "left_pinky", + "x": 0.5503, + "y": 0.5198, + "confidence": 0.9 + }, + { + "name": "right_pinky", + "x": 0.4234, + "y": 0.5036, + "confidence": 0.786 + }, + { + "name": "left_index", + "x": 0.5419, + "y": 0.5103, + "confidence": 0.902 + }, + { + "name": "right_index", + "x": 0.4302, + "y": 0.5033, + "confidence": 0.797 + }, + { + "name": "left_thumb", + "x": 0.5396, + "y": 0.5013, + "confidence": 0.872 + }, + { + "name": "right_thumb", + "x": 0.4337, + "y": 0.4941, + "confidence": 0.791 + }, + { + "name": "left_hip", + "x": 0.5404, + "y": 0.5477, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5042, + "y": 0.5508, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5244, + "y": 0.7155, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.4899, + "y": 0.5808, + "confidence": 0.886 + }, + { + "name": "left_ankle", + "x": 0.5218, + "y": 0.8881, + "confidence": 0.942 + }, + { + "name": "right_ankle", + "x": 0.5247, + "y": 0.5813, + "confidence": 0.774 + }, + { + "name": "left_heel", + "x": 0.5217, + "y": 0.9056, + "confidence": 0.695 + }, + { + "name": "right_heel", + "x": 0.5313, + "y": 0.5792, + "confidence": 0.585 + }, + { + "name": "left_foot_index", + "x": 0.5177, + "y": 0.9445, + "confidence": 0.913 + }, + { + "name": "right_foot_index", + "x": 0.5376, + "y": 0.5931, + "confidence": 0.776 + } + ] + } + ] + }, + { + "frame_index": 14, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1274, + "acceleration": 11.2673, + "fluidity": 0.002, + "expansion": 0.173, + "total_displacement": 0.0018, + "center_displacement": { + "x": -0.0008, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5235, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5283, + "y": 0.2626, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5309, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5338, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5194, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5162, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5128, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5359, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5088, + "y": 0.2686, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5277, + "y": 0.2906, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5172, + "y": 0.2888, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5499, + "y": 0.3607, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4861, + "y": 0.3601, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5778, + "y": 0.44, + "confidence": 0.952 + }, + { + "name": "right_elbow", + "x": 0.4445, + "y": 0.4176, + "confidence": 0.785 + }, + { + "name": "left_wrist", + "x": 0.5579, + "y": 0.4936, + "confidence": 0.936 + }, + { + "name": "right_wrist", + "x": 0.4188, + "y": 0.474, + "confidence": 0.821 + }, + { + "name": "left_pinky", + "x": 0.5568, + "y": 0.5214, + "confidence": 0.905 + }, + { + "name": "right_pinky", + "x": 0.4138, + "y": 0.5075, + "confidence": 0.801 + }, + { + "name": "left_index", + "x": 0.5388, + "y": 0.5134, + "confidence": 0.907 + }, + { + "name": "right_index", + "x": 0.4212, + "y": 0.508, + "confidence": 0.811 + }, + { + "name": "left_thumb", + "x": 0.5387, + "y": 0.5073, + "confidence": 0.879 + }, + { + "name": "right_thumb", + "x": 0.4249, + "y": 0.4992, + "confidence": 0.805 + }, + { + "name": "left_hip", + "x": 0.54, + "y": 0.552, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5044, + "y": 0.5541, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5234, + "y": 0.7157, + "confidence": 0.938 + }, + { + "name": "right_knee", + "x": 0.4939, + "y": 0.6824, + "confidence": 0.873 + }, + { + "name": "left_ankle", + "x": 0.5104, + "y": 0.8888, + "confidence": 0.931 + }, + { + "name": "right_ankle", + "x": 0.5221, + "y": 0.7869, + "confidence": 0.759 + }, + { + "name": "left_heel", + "x": 0.5093, + "y": 0.9077, + "confidence": 0.692 + }, + { + "name": "right_heel", + "x": 0.5234, + "y": 0.8458, + "confidence": 0.573 + }, + { + "name": "left_foot_index", + "x": 0.5104, + "y": 0.9388, + "confidence": 0.903 + }, + { + "name": "right_foot_index", + "x": 0.5203, + "y": 0.8327, + "confidence": 0.759 + } + ] + } + ] + }, + { + "frame_index": 15, + "timestamp": 0.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1092, + "acceleration": 10.6883, + "fluidity": 0.001, + "expansion": 0.172, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0006, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.524, + "y": 0.2734, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5285, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5312, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.534, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5199, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5168, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5135, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5355, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5091, + "y": 0.2682, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5278, + "y": 0.2906, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5177, + "y": 0.2886, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5492, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4853, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5799, + "y": 0.4387, + "confidence": 0.956 + }, + { + "name": "right_elbow", + "x": 0.4434, + "y": 0.4171, + "confidence": 0.805 + }, + { + "name": "left_wrist", + "x": 0.5564, + "y": 0.4966, + "confidence": 0.941 + }, + { + "name": "right_wrist", + "x": 0.4185, + "y": 0.4741, + "confidence": 0.837 + }, + { + "name": "left_pinky", + "x": 0.5453, + "y": 0.529, + "confidence": 0.912 + }, + { + "name": "right_pinky", + "x": 0.4138, + "y": 0.5094, + "confidence": 0.816 + }, + { + "name": "left_index", + "x": 0.5344, + "y": 0.522, + "confidence": 0.914 + }, + { + "name": "right_index", + "x": 0.4206, + "y": 0.51, + "confidence": 0.826 + }, + { + "name": "left_thumb", + "x": 0.5366, + "y": 0.5119, + "confidence": 0.887 + }, + { + "name": "right_thumb", + "x": 0.4243, + "y": 0.5013, + "confidence": 0.821 + }, + { + "name": "left_hip", + "x": 0.5391, + "y": 0.5532, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5044, + "y": 0.5544, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5229, + "y": 0.7169, + "confidence": 0.927 + }, + { + "name": "right_knee", + "x": 0.4974, + "y": 0.7002, + "confidence": 0.863 + }, + { + "name": "left_ankle", + "x": 0.5091, + "y": 0.889, + "confidence": 0.922 + }, + { + "name": "right_ankle", + "x": 0.5217, + "y": 0.843, + "confidence": 0.761 + }, + { + "name": "left_heel", + "x": 0.508, + "y": 0.9087, + "confidence": 0.689 + }, + { + "name": "right_heel", + "x": 0.525, + "y": 0.8663, + "confidence": 0.576 + }, + { + "name": "left_foot_index", + "x": 0.5078, + "y": 0.9371, + "confidence": 0.894 + }, + { + "name": "right_foot_index", + "x": 0.5155, + "y": 0.8948, + "confidence": 0.758 + } + ] + } + ] + }, + { + "frame_index": 16, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1002, + "acceleration": 8.8549, + "fluidity": 0.001, + "expansion": 0.172, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0004, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5243, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.529, + "y": 0.2622, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5318, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5345, + "y": 0.2643, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5204, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5173, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5142, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5362, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5098, + "y": 0.2674, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5283, + "y": 0.2893, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5183, + "y": 0.2868, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5492, + "y": 0.3605, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4856, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5802, + "y": 0.4386, + "confidence": 0.958 + }, + { + "name": "right_elbow", + "x": 0.4436, + "y": 0.4175, + "confidence": 0.822 + }, + { + "name": "left_wrist", + "x": 0.5556, + "y": 0.4999, + "confidence": 0.945 + }, + { + "name": "right_wrist", + "x": 0.4184, + "y": 0.4753, + "confidence": 0.85 + }, + { + "name": "left_pinky", + "x": 0.5429, + "y": 0.5344, + "confidence": 0.917 + }, + { + "name": "right_pinky", + "x": 0.414, + "y": 0.5114, + "confidence": 0.829 + }, + { + "name": "left_index", + "x": 0.5336, + "y": 0.5256, + "confidence": 0.919 + }, + { + "name": "right_index", + "x": 0.4205, + "y": 0.5117, + "confidence": 0.838 + }, + { + "name": "left_thumb", + "x": 0.5364, + "y": 0.5148, + "confidence": 0.894 + }, + { + "name": "right_thumb", + "x": 0.4241, + "y": 0.5029, + "confidence": 0.833 + }, + { + "name": "left_hip", + "x": 0.5396, + "y": 0.5547, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5052, + "y": 0.5555, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.523, + "y": 0.719, + "confidence": 0.918 + }, + { + "name": "right_knee", + "x": 0.4992, + "y": 0.704, + "confidence": 0.853 + }, + { + "name": "left_ankle", + "x": 0.509, + "y": 0.8893, + "confidence": 0.916 + }, + { + "name": "right_ankle", + "x": 0.5214, + "y": 0.8437, + "confidence": 0.758 + }, + { + "name": "left_heel", + "x": 0.5078, + "y": 0.9093, + "confidence": 0.689 + }, + { + "name": "right_heel", + "x": 0.5258, + "y": 0.8613, + "confidence": 0.575 + }, + { + "name": "left_foot_index", + "x": 0.5076, + "y": 0.9376, + "confidence": 0.888 + }, + { + "name": "right_foot_index", + "x": 0.5147, + "y": 0.8962, + "confidence": 0.753 + } + ] + } + ] + }, + { + "frame_index": 17, + "timestamp": 0.2833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1159, + "acceleration": 8.9332, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0021, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5242, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5286, + "y": 0.2622, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5313, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5339, + "y": 0.2643, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5202, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5171, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5139, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5354, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5092, + "y": 0.2675, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.5278, + "y": 0.2894, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5181, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.549, + "y": 0.3605, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4842, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5838, + "y": 0.4339, + "confidence": 0.962 + }, + { + "name": "right_elbow", + "x": 0.4393, + "y": 0.4169, + "confidence": 0.839 + }, + { + "name": "left_wrist", + "x": 0.5652, + "y": 0.5042, + "confidence": 0.949 + }, + { + "name": "right_wrist", + "x": 0.4096, + "y": 0.4767, + "confidence": 0.863 + }, + { + "name": "left_pinky", + "x": 0.5584, + "y": 0.5342, + "confidence": 0.922 + }, + { + "name": "right_pinky", + "x": 0.4058, + "y": 0.5124, + "confidence": 0.841 + }, + { + "name": "left_index", + "x": 0.5475, + "y": 0.5269, + "confidence": 0.924 + }, + { + "name": "right_index", + "x": 0.4114, + "y": 0.5138, + "confidence": 0.85 + }, + { + "name": "left_thumb", + "x": 0.5504, + "y": 0.5159, + "confidence": 0.9 + }, + { + "name": "right_thumb", + "x": 0.4143, + "y": 0.5053, + "confidence": 0.846 + }, + { + "name": "left_hip", + "x": 0.5358, + "y": 0.5553, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5021, + "y": 0.5554, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5197, + "y": 0.7226, + "confidence": 0.911 + }, + { + "name": "right_knee", + "x": 0.5036, + "y": 0.712, + "confidence": 0.844 + }, + { + "name": "left_ankle", + "x": 0.5025, + "y": 0.8924, + "confidence": 0.914 + }, + { + "name": "right_ankle", + "x": 0.5143, + "y": 0.8722, + "confidence": 0.765 + }, + { + "name": "left_heel", + "x": 0.5003, + "y": 0.9141, + "confidence": 0.697 + }, + { + "name": "right_heel", + "x": 0.5236, + "y": 0.8903, + "confidence": 0.58 + }, + { + "name": "left_foot_index", + "x": 0.5012, + "y": 0.9388, + "confidence": 0.887 + }, + { + "name": "right_foot_index", + "x": 0.5104, + "y": 0.9167, + "confidence": 0.756 + } + ] + } + ] + }, + { + "frame_index": 18, + "timestamp": 0.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0841, + "acceleration": 8.8541, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5237, + "y": 0.2723, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.528, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5306, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5331, + "y": 0.2639, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5198, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5167, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5135, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5349, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5089, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5272, + "y": 0.2887, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5175, + "y": 0.2862, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5491, + "y": 0.3605, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4843, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.585, + "y": 0.4324, + "confidence": 0.965 + }, + { + "name": "right_elbow", + "x": 0.4391, + "y": 0.4159, + "confidence": 0.853 + }, + { + "name": "left_wrist", + "x": 0.5668, + "y": 0.5052, + "confidence": 0.953 + }, + { + "name": "right_wrist", + "x": 0.4082, + "y": 0.4783, + "confidence": 0.874 + }, + { + "name": "left_pinky", + "x": 0.5608, + "y": 0.5334, + "confidence": 0.927 + }, + { + "name": "right_pinky", + "x": 0.4043, + "y": 0.5128, + "confidence": 0.851 + }, + { + "name": "left_index", + "x": 0.5493, + "y": 0.527, + "confidence": 0.928 + }, + { + "name": "right_index", + "x": 0.409, + "y": 0.5145, + "confidence": 0.86 + }, + { + "name": "left_thumb", + "x": 0.5522, + "y": 0.5158, + "confidence": 0.906 + }, + { + "name": "right_thumb", + "x": 0.4118, + "y": 0.5063, + "confidence": 0.856 + }, + { + "name": "left_hip", + "x": 0.5359, + "y": 0.5551, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5026, + "y": 0.5554, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5193, + "y": 0.723, + "confidence": 0.907 + }, + { + "name": "right_knee", + "x": 0.5066, + "y": 0.7138, + "confidence": 0.836 + }, + { + "name": "left_ankle", + "x": 0.502, + "y": 0.8926, + "confidence": 0.912 + }, + { + "name": "right_ankle", + "x": 0.5118, + "y": 0.8755, + "confidence": 0.77 + }, + { + "name": "left_heel", + "x": 0.5014, + "y": 0.9141, + "confidence": 0.703 + }, + { + "name": "right_heel", + "x": 0.5184, + "y": 0.891, + "confidence": 0.588 + }, + { + "name": "left_foot_index", + "x": 0.4987, + "y": 0.9402, + "confidence": 0.885 + }, + { + "name": "right_foot_index", + "x": 0.5064, + "y": 0.9215, + "confidence": 0.759 + } + ] + } + ] + }, + { + "frame_index": 19, + "timestamp": 0.31666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0806, + "acceleration": 6.8239, + "fluidity": 0.001, + "expansion": 0.178, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0004, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5238, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5279, + "y": 0.262, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5304, + "y": 0.263, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5329, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5198, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5167, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5135, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5343, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5087, + "y": 0.2676, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5271, + "y": 0.2888, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5176, + "y": 0.2864, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.549, + "y": 0.3606, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4842, + "y": 0.36, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5886, + "y": 0.4306, + "confidence": 0.968 + }, + { + "name": "right_elbow", + "x": 0.4367, + "y": 0.4156, + "confidence": 0.867 + }, + { + "name": "left_wrist", + "x": 0.5737, + "y": 0.5064, + "confidence": 0.956 + }, + { + "name": "right_wrist", + "x": 0.4028, + "y": 0.4785, + "confidence": 0.885 + }, + { + "name": "left_pinky", + "x": 0.5688, + "y": 0.5359, + "confidence": 0.93 + }, + { + "name": "right_pinky", + "x": 0.3963, + "y": 0.5127, + "confidence": 0.861 + }, + { + "name": "left_index", + "x": 0.5585, + "y": 0.5266, + "confidence": 0.932 + }, + { + "name": "right_index", + "x": 0.4014, + "y": 0.5146, + "confidence": 0.87 + }, + { + "name": "left_thumb", + "x": 0.5586, + "y": 0.5162, + "confidence": 0.912 + }, + { + "name": "right_thumb", + "x": 0.4045, + "y": 0.5069, + "confidence": 0.866 + }, + { + "name": "left_hip", + "x": 0.5353, + "y": 0.5554, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5019, + "y": 0.5553, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5182, + "y": 0.7255, + "confidence": 0.897 + }, + { + "name": "right_knee", + "x": 0.5084, + "y": 0.7157, + "confidence": 0.83 + }, + { + "name": "left_ankle", + "x": 0.5022, + "y": 0.893, + "confidence": 0.903 + }, + { + "name": "right_ankle", + "x": 0.5095, + "y": 0.8802, + "confidence": 0.775 + }, + { + "name": "left_heel", + "x": 0.5012, + "y": 0.9144, + "confidence": 0.699 + }, + { + "name": "right_heel", + "x": 0.5147, + "y": 0.9002, + "confidence": 0.589 + }, + { + "name": "left_foot_index", + "x": 0.5019, + "y": 0.9425, + "confidence": 0.877 + }, + { + "name": "right_foot_index", + "x": 0.5052, + "y": 0.9301, + "confidence": 0.763 + } + ] + } + ] + }, + { + "frame_index": 20, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0732, + "acceleration": 6.3001, + "fluidity": 0.001, + "expansion": 0.179, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5229, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5273, + "y": 0.2621, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5297, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5322, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5192, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.516, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5129, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5341, + "y": 0.272, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5084, + "y": 0.2677, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5263, + "y": 0.2889, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5163, + "y": 0.2862, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.549, + "y": 0.3607, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4839, + "y": 0.3597, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5899, + "y": 0.4306, + "confidence": 0.971 + }, + { + "name": "right_elbow", + "x": 0.4362, + "y": 0.4155, + "confidence": 0.879 + }, + { + "name": "left_wrist", + "x": 0.5741, + "y": 0.507, + "confidence": 0.96 + }, + { + "name": "right_wrist", + "x": 0.4019, + "y": 0.4787, + "confidence": 0.894 + }, + { + "name": "left_pinky", + "x": 0.5685, + "y": 0.5368, + "confidence": 0.934 + }, + { + "name": "right_pinky", + "x": 0.3949, + "y": 0.5127, + "confidence": 0.87 + }, + { + "name": "left_index", + "x": 0.559, + "y": 0.5264, + "confidence": 0.936 + }, + { + "name": "right_index", + "x": 0.4, + "y": 0.5144, + "confidence": 0.879 + }, + { + "name": "left_thumb", + "x": 0.5588, + "y": 0.5163, + "confidence": 0.917 + }, + { + "name": "right_thumb", + "x": 0.4033, + "y": 0.5068, + "confidence": 0.875 + }, + { + "name": "left_hip", + "x": 0.5351, + "y": 0.5554, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5016, + "y": 0.5552, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5179, + "y": 0.7269, + "confidence": 0.887 + }, + { + "name": "right_knee", + "x": 0.5093, + "y": 0.7171, + "confidence": 0.824 + }, + { + "name": "left_ankle", + "x": 0.502, + "y": 0.894, + "confidence": 0.893 + }, + { + "name": "right_ankle", + "x": 0.5096, + "y": 0.8815, + "confidence": 0.776 + }, + { + "name": "left_heel", + "x": 0.5016, + "y": 0.9163, + "confidence": 0.695 + }, + { + "name": "right_heel", + "x": 0.5139, + "y": 0.8978, + "confidence": 0.588 + }, + { + "name": "left_foot_index", + "x": 0.5017, + "y": 0.9457, + "confidence": 0.868 + }, + { + "name": "right_foot_index", + "x": 0.5054, + "y": 0.9314, + "confidence": 0.762 + } + ] + } + ] + }, + { + "frame_index": 21, + "timestamp": 0.35, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0625, + "acceleration": 5.4962, + "fluidity": 0.242, + "expansion": 0.178, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5228, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5271, + "y": 0.2621, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5296, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.532, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.519, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5159, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5127, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.534, + "y": 0.2721, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5083, + "y": 0.2676, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5262, + "y": 0.2889, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.516, + "y": 0.286, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.549, + "y": 0.3607, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4837, + "y": 0.3596, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.59, + "y": 0.4308, + "confidence": 0.974 + }, + { + "name": "right_elbow", + "x": 0.4358, + "y": 0.4155, + "confidence": 0.89 + }, + { + "name": "left_wrist", + "x": 0.5732, + "y": 0.5097, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.4017, + "y": 0.4789, + "confidence": 0.903 + }, + { + "name": "left_pinky", + "x": 0.5673, + "y": 0.5406, + "confidence": 0.938 + }, + { + "name": "right_pinky", + "x": 0.3947, + "y": 0.5126, + "confidence": 0.878 + }, + { + "name": "left_index", + "x": 0.5576, + "y": 0.5289, + "confidence": 0.94 + }, + { + "name": "right_index", + "x": 0.3998, + "y": 0.5143, + "confidence": 0.887 + }, + { + "name": "left_thumb", + "x": 0.56, + "y": 0.5219, + "confidence": 0.922 + }, + { + "name": "right_thumb", + "x": 0.403, + "y": 0.5069, + "confidence": 0.883 + }, + { + "name": "left_hip", + "x": 0.5347, + "y": 0.5553, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5015, + "y": 0.5551, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5176, + "y": 0.7277, + "confidence": 0.883 + }, + { + "name": "right_knee", + "x": 0.5099, + "y": 0.7174, + "confidence": 0.818 + }, + { + "name": "left_ankle", + "x": 0.5014, + "y": 0.8942, + "confidence": 0.891 + }, + { + "name": "right_ankle", + "x": 0.5105, + "y": 0.881, + "confidence": 0.779 + }, + { + "name": "left_heel", + "x": 0.5009, + "y": 0.9165, + "confidence": 0.696 + }, + { + "name": "right_heel", + "x": 0.515, + "y": 0.8964, + "confidence": 0.588 + }, + { + "name": "left_foot_index", + "x": 0.5006, + "y": 0.9491, + "confidence": 0.865 + }, + { + "name": "right_foot_index", + "x": 0.5057, + "y": 0.9335, + "confidence": 0.763 + } + ] + } + ] + }, + { + "frame_index": 22, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0626, + "acceleration": 4.9825, + "fluidity": 0.061, + "expansion": 0.182, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0004, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5228, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5272, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5296, + "y": 0.264, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.532, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5191, + "y": 0.2604, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.516, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5128, + "y": 0.26, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5333, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.508, + "y": 0.2685, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5263, + "y": 0.2897, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5162, + "y": 0.2867, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5484, + "y": 0.3611, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4835, + "y": 0.3599, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5885, + "y": 0.429, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.4346, + "y": 0.4154, + "confidence": 0.9 + }, + { + "name": "left_wrist", + "x": 0.5819, + "y": 0.507, + "confidence": 0.964 + }, + { + "name": "right_wrist", + "x": 0.3977, + "y": 0.478, + "confidence": 0.91 + }, + { + "name": "left_pinky", + "x": 0.5815, + "y": 0.5337, + "confidence": 0.94 + }, + { + "name": "right_pinky", + "x": 0.3897, + "y": 0.5088, + "confidence": 0.886 + }, + { + "name": "left_index", + "x": 0.5728, + "y": 0.5267, + "confidence": 0.941 + }, + { + "name": "right_index", + "x": 0.395, + "y": 0.5117, + "confidence": 0.894 + }, + { + "name": "left_thumb", + "x": 0.5712, + "y": 0.5198, + "confidence": 0.925 + }, + { + "name": "right_thumb", + "x": 0.3983, + "y": 0.5045, + "confidence": 0.891 + }, + { + "name": "left_hip", + "x": 0.5338, + "y": 0.556, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5016, + "y": 0.5554, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5169, + "y": 0.7306, + "confidence": 0.882 + }, + { + "name": "right_knee", + "x": 0.5103, + "y": 0.7207, + "confidence": 0.818 + }, + { + "name": "left_ankle", + "x": 0.5, + "y": 0.895, + "confidence": 0.892 + }, + { + "name": "right_ankle", + "x": 0.5116, + "y": 0.8816, + "confidence": 0.787 + }, + { + "name": "left_heel", + "x": 0.4987, + "y": 0.9162, + "confidence": 0.701 + }, + { + "name": "right_heel", + "x": 0.516, + "y": 0.8963, + "confidence": 0.591 + }, + { + "name": "left_foot_index", + "x": 0.4995, + "y": 0.9496, + "confidence": 0.867 + }, + { + "name": "right_foot_index", + "x": 0.5073, + "y": 0.9329, + "confidence": 0.771 + } + ] + } + ] + }, + { + "frame_index": 23, + "timestamp": 0.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0597, + "acceleration": 4.2941, + "fluidity": 0.076, + "expansion": 0.182, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0007, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5229, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5273, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5297, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.532, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5192, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5161, + "y": 0.2602, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5129, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5329, + "y": 0.2736, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5076, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5264, + "y": 0.2899, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5164, + "y": 0.2868, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5479, + "y": 0.3611, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4827, + "y": 0.3599, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5888, + "y": 0.4293, + "confidence": 0.977 + }, + { + "name": "right_elbow", + "x": 0.4339, + "y": 0.4153, + "confidence": 0.909 + }, + { + "name": "left_wrist", + "x": 0.5816, + "y": 0.5091, + "confidence": 0.967 + }, + { + "name": "right_wrist", + "x": 0.397, + "y": 0.4775, + "confidence": 0.918 + }, + { + "name": "left_pinky", + "x": 0.5817, + "y": 0.5348, + "confidence": 0.943 + }, + { + "name": "right_pinky", + "x": 0.3889, + "y": 0.5068, + "confidence": 0.893 + }, + { + "name": "left_index", + "x": 0.5726, + "y": 0.5291, + "confidence": 0.944 + }, + { + "name": "right_index", + "x": 0.3942, + "y": 0.5101, + "confidence": 0.901 + }, + { + "name": "left_thumb", + "x": 0.5708, + "y": 0.5213, + "confidence": 0.929 + }, + { + "name": "right_thumb", + "x": 0.3975, + "y": 0.5029, + "confidence": 0.898 + }, + { + "name": "left_hip", + "x": 0.5332, + "y": 0.5562, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5008, + "y": 0.5553, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5164, + "y": 0.7314, + "confidence": 0.882 + }, + { + "name": "right_knee", + "x": 0.5106, + "y": 0.7193, + "confidence": 0.818 + }, + { + "name": "left_ankle", + "x": 0.4998, + "y": 0.8953, + "confidence": 0.894 + }, + { + "name": "right_ankle", + "x": 0.5123, + "y": 0.8794, + "confidence": 0.794 + }, + { + "name": "left_heel", + "x": 0.4982, + "y": 0.9167, + "confidence": 0.707 + }, + { + "name": "right_heel", + "x": 0.5167, + "y": 0.8932, + "confidence": 0.594 + }, + { + "name": "left_foot_index", + "x": 0.499, + "y": 0.951, + "confidence": 0.869 + }, + { + "name": "right_foot_index", + "x": 0.5085, + "y": 0.9278, + "confidence": 0.777 + } + ] + } + ] + }, + { + "frame_index": 24, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0693, + "acceleration": 4.4694, + "fluidity": 0.095, + "expansion": 0.192, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0014, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5216, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5259, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5282, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5306, + "y": 0.266, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5179, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5146, + "y": 0.2603, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5112, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5322, + "y": 0.2738, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5062, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5253, + "y": 0.2899, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5147, + "y": 0.2868, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5472, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4811, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5863, + "y": 0.4204, + "confidence": 0.977 + }, + { + "name": "right_elbow", + "x": 0.4343, + "y": 0.4153, + "confidence": 0.917 + }, + { + "name": "left_wrist", + "x": 0.5885, + "y": 0.4634, + "confidence": 0.967 + }, + { + "name": "right_wrist", + "x": 0.3951, + "y": 0.4753, + "confidence": 0.925 + }, + { + "name": "left_pinky", + "x": 0.5922, + "y": 0.4661, + "confidence": 0.943 + }, + { + "name": "right_pinky", + "x": 0.3863, + "y": 0.501, + "confidence": 0.901 + }, + { + "name": "left_index", + "x": 0.5872, + "y": 0.4527, + "confidence": 0.945 + }, + { + "name": "right_index", + "x": 0.3914, + "y": 0.5048, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.5841, + "y": 0.4578, + "confidence": 0.931 + }, + { + "name": "right_thumb", + "x": 0.3954, + "y": 0.498, + "confidence": 0.906 + }, + { + "name": "left_hip", + "x": 0.5321, + "y": 0.5579, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4985, + "y": 0.5566, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5166, + "y": 0.733, + "confidence": 0.882 + }, + { + "name": "right_knee", + "x": 0.5109, + "y": 0.7213, + "confidence": 0.824 + }, + { + "name": "left_ankle", + "x": 0.5003, + "y": 0.8954, + "confidence": 0.895 + }, + { + "name": "right_ankle", + "x": 0.5142, + "y": 0.8761, + "confidence": 0.802 + }, + { + "name": "left_heel", + "x": 0.4991, + "y": 0.9162, + "confidence": 0.71 + }, + { + "name": "right_heel", + "x": 0.5167, + "y": 0.8924, + "confidence": 0.6 + }, + { + "name": "left_foot_index", + "x": 0.4993, + "y": 0.9507, + "confidence": 0.872 + }, + { + "name": "right_foot_index", + "x": 0.5106, + "y": 0.9275, + "confidence": 0.786 + } + ] + } + ] + }, + { + "frame_index": 25, + "timestamp": 0.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0499, + "acceleration": 4.7006, + "fluidity": 0.058, + "expansion": 0.191, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5214, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5254, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5277, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5301, + "y": 0.2662, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5175, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5143, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5109, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5319, + "y": 0.2741, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5058, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5251, + "y": 0.29, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5148, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.547, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4813, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5864, + "y": 0.42, + "confidence": 0.978 + }, + { + "name": "right_elbow", + "x": 0.4344, + "y": 0.4152, + "confidence": 0.924 + }, + { + "name": "left_wrist", + "x": 0.5908, + "y": 0.476, + "confidence": 0.969 + }, + { + "name": "right_wrist", + "x": 0.3945, + "y": 0.4739, + "confidence": 0.931 + }, + { + "name": "left_pinky", + "x": 0.5935, + "y": 0.4706, + "confidence": 0.945 + }, + { + "name": "right_pinky", + "x": 0.3858, + "y": 0.4986, + "confidence": 0.907 + }, + { + "name": "left_index", + "x": 0.5894, + "y": 0.4896, + "confidence": 0.947 + }, + { + "name": "right_index", + "x": 0.3908, + "y": 0.5024, + "confidence": 0.915 + }, + { + "name": "left_thumb", + "x": 0.5809, + "y": 0.4626, + "confidence": 0.934 + }, + { + "name": "right_thumb", + "x": 0.3948, + "y": 0.4954, + "confidence": 0.912 + }, + { + "name": "left_hip", + "x": 0.5317, + "y": 0.558, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4985, + "y": 0.5568, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5169, + "y": 0.7332, + "confidence": 0.882 + }, + { + "name": "right_knee", + "x": 0.511, + "y": 0.7223, + "confidence": 0.828 + }, + { + "name": "left_ankle", + "x": 0.5012, + "y": 0.8955, + "confidence": 0.897 + }, + { + "name": "right_ankle", + "x": 0.5144, + "y": 0.8755, + "confidence": 0.81 + }, + { + "name": "left_heel", + "x": 0.4998, + "y": 0.9162, + "confidence": 0.717 + }, + { + "name": "right_heel", + "x": 0.5174, + "y": 0.8928, + "confidence": 0.605 + }, + { + "name": "left_foot_index", + "x": 0.5005, + "y": 0.9502, + "confidence": 0.874 + }, + { + "name": "right_foot_index", + "x": 0.5108, + "y": 0.9272, + "confidence": 0.793 + } + ] + } + ] + }, + { + "frame_index": 26, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0664, + "acceleration": 4.5463, + "fluidity": 0.057, + "expansion": 0.192, + "total_displacement": 0.0014, + "center_displacement": { + "x": -0.0014, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5209, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5247, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5269, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5292, + "y": 0.266, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5166, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5133, + "y": 0.261, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5099, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5306, + "y": 0.274, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5047, + "y": 0.2694, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5246, + "y": 0.2897, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5143, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5457, + "y": 0.3599, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4807, + "y": 0.36, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5862, + "y": 0.4178, + "confidence": 0.979 + }, + { + "name": "right_elbow", + "x": 0.4338, + "y": 0.4153, + "confidence": 0.931 + }, + { + "name": "left_wrist", + "x": 0.5932, + "y": 0.4733, + "confidence": 0.968 + }, + { + "name": "right_wrist", + "x": 0.3926, + "y": 0.4719, + "confidence": 0.936 + }, + { + "name": "left_pinky", + "x": 0.595, + "y": 0.4883, + "confidence": 0.944 + }, + { + "name": "right_pinky", + "x": 0.3838, + "y": 0.4964, + "confidence": 0.913 + }, + { + "name": "left_index", + "x": 0.587, + "y": 0.4893, + "confidence": 0.947 + }, + { + "name": "right_index", + "x": 0.3885, + "y": 0.5004, + "confidence": 0.92 + }, + { + "name": "left_thumb", + "x": 0.583, + "y": 0.4772, + "confidence": 0.934 + }, + { + "name": "right_thumb", + "x": 0.3928, + "y": 0.493, + "confidence": 0.918 + }, + { + "name": "left_hip", + "x": 0.5304, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4961, + "y": 0.5565, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5171, + "y": 0.7329, + "confidence": 0.881 + }, + { + "name": "right_knee", + "x": 0.5109, + "y": 0.7211, + "confidence": 0.832 + }, + { + "name": "left_ankle", + "x": 0.5018, + "y": 0.8951, + "confidence": 0.897 + }, + { + "name": "right_ankle", + "x": 0.5141, + "y": 0.8754, + "confidence": 0.816 + }, + { + "name": "left_heel", + "x": 0.5004, + "y": 0.9158, + "confidence": 0.719 + }, + { + "name": "right_heel", + "x": 0.5175, + "y": 0.8916, + "confidence": 0.61 + }, + { + "name": "left_foot_index", + "x": 0.501, + "y": 0.9499, + "confidence": 0.875 + }, + { + "name": "right_foot_index", + "x": 0.5111, + "y": 0.926, + "confidence": 0.799 + } + ] + } + ] + }, + { + "frame_index": 27, + "timestamp": 0.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0524, + "acceleration": 4.372, + "fluidity": 0.052, + "expansion": 0.192, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0004, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5199, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.524, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5262, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5286, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5157, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5123, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.509, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5304, + "y": 0.2739, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5041, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.524, + "y": 0.2889, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5132, + "y": 0.286, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5452, + "y": 0.3597, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4805, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5862, + "y": 0.4176, + "confidence": 0.98 + }, + { + "name": "right_elbow", + "x": 0.4338, + "y": 0.415, + "confidence": 0.937 + }, + { + "name": "left_wrist", + "x": 0.5939, + "y": 0.4732, + "confidence": 0.969 + }, + { + "name": "right_wrist", + "x": 0.3926, + "y": 0.4696, + "confidence": 0.941 + }, + { + "name": "left_pinky", + "x": 0.5948, + "y": 0.4932, + "confidence": 0.943 + }, + { + "name": "right_pinky", + "x": 0.3833, + "y": 0.4931, + "confidence": 0.917 + }, + { + "name": "left_index", + "x": 0.5852, + "y": 0.4899, + "confidence": 0.947 + }, + { + "name": "right_index", + "x": 0.388, + "y": 0.497, + "confidence": 0.925 + }, + { + "name": "left_thumb", + "x": 0.5823, + "y": 0.4816, + "confidence": 0.935 + }, + { + "name": "right_thumb", + "x": 0.3925, + "y": 0.4896, + "confidence": 0.922 + }, + { + "name": "left_hip", + "x": 0.5299, + "y": 0.5577, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4956, + "y": 0.5563, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5171, + "y": 0.7327, + "confidence": 0.877 + }, + { + "name": "right_knee", + "x": 0.5109, + "y": 0.7212, + "confidence": 0.835 + }, + { + "name": "left_ankle", + "x": 0.5023, + "y": 0.893, + "confidence": 0.893 + }, + { + "name": "right_ankle", + "x": 0.5127, + "y": 0.8753, + "confidence": 0.822 + }, + { + "name": "left_heel", + "x": 0.5008, + "y": 0.911, + "confidence": 0.716 + }, + { + "name": "right_heel", + "x": 0.5176, + "y": 0.8914, + "confidence": 0.613 + }, + { + "name": "left_foot_index", + "x": 0.5033, + "y": 0.9491, + "confidence": 0.873 + }, + { + "name": "right_foot_index", + "x": 0.5113, + "y": 0.9258, + "confidence": 0.806 + } + ] + } + ] + }, + { + "frame_index": 28, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0492, + "acceleration": 3.4666, + "fluidity": 0.042, + "expansion": 0.192, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0005, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5197, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5238, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5261, + "y": 0.2649, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5285, + "y": 0.2663, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5156, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5122, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5088, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5302, + "y": 0.2744, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.504, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5237, + "y": 0.289, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5129, + "y": 0.286, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5448, + "y": 0.3595, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4797, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5867, + "y": 0.4159, + "confidence": 0.981 + }, + { + "name": "right_elbow", + "x": 0.4336, + "y": 0.415, + "confidence": 0.942 + }, + { + "name": "left_wrist", + "x": 0.5952, + "y": 0.4759, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.3923, + "y": 0.4692, + "confidence": 0.946 + }, + { + "name": "left_pinky", + "x": 0.5966, + "y": 0.5063, + "confidence": 0.946 + }, + { + "name": "right_pinky", + "x": 0.383, + "y": 0.4925, + "confidence": 0.923 + }, + { + "name": "left_index", + "x": 0.5901, + "y": 0.5015, + "confidence": 0.949 + }, + { + "name": "right_index", + "x": 0.3878, + "y": 0.4963, + "confidence": 0.929 + }, + { + "name": "left_thumb", + "x": 0.5877, + "y": 0.4918, + "confidence": 0.939 + }, + { + "name": "right_thumb", + "x": 0.3923, + "y": 0.4891, + "confidence": 0.927 + }, + { + "name": "left_hip", + "x": 0.5299, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4951, + "y": 0.5563, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5171, + "y": 0.7326, + "confidence": 0.876 + }, + { + "name": "right_knee", + "x": 0.5109, + "y": 0.7217, + "confidence": 0.84 + }, + { + "name": "left_ankle", + "x": 0.5025, + "y": 0.8921, + "confidence": 0.891 + }, + { + "name": "right_ankle", + "x": 0.5128, + "y": 0.8758, + "confidence": 0.829 + }, + { + "name": "left_heel", + "x": 0.5011, + "y": 0.9082, + "confidence": 0.713 + }, + { + "name": "right_heel", + "x": 0.5171, + "y": 0.8936, + "confidence": 0.616 + }, + { + "name": "left_foot_index", + "x": 0.5034, + "y": 0.9491, + "confidence": 0.871 + }, + { + "name": "right_foot_index", + "x": 0.5114, + "y": 0.928, + "confidence": 0.813 + } + ] + } + ] + }, + { + "frame_index": 29, + "timestamp": 0.48333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0569, + "acceleration": 3.5696, + "fluidity": 0.038, + "expansion": 0.192, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.0007, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5195, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5233, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5255, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5279, + "y": 0.266, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5151, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5117, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5084, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5297, + "y": 0.2739, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5035, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5235, + "y": 0.2889, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5127, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5446, + "y": 0.359, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4791, + "y": 0.36, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5866, + "y": 0.4131, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.4331, + "y": 0.415, + "confidence": 0.947 + }, + { + "name": "left_wrist", + "x": 0.5975, + "y": 0.4772, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.3901, + "y": 0.4688, + "confidence": 0.949 + }, + { + "name": "left_pinky", + "x": 0.6004, + "y": 0.5073, + "confidence": 0.949 + }, + { + "name": "right_pinky", + "x": 0.3808, + "y": 0.4917, + "confidence": 0.927 + }, + { + "name": "left_index", + "x": 0.5934, + "y": 0.5016, + "confidence": 0.952 + }, + { + "name": "right_index", + "x": 0.3849, + "y": 0.4957, + "confidence": 0.933 + }, + { + "name": "left_thumb", + "x": 0.5907, + "y": 0.4928, + "confidence": 0.942 + }, + { + "name": "right_thumb", + "x": 0.3892, + "y": 0.4887, + "confidence": 0.932 + }, + { + "name": "left_hip", + "x": 0.5295, + "y": 0.5591, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4932, + "y": 0.5583, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5169, + "y": 0.7345, + "confidence": 0.871 + }, + { + "name": "right_knee", + "x": 0.5104, + "y": 0.7262, + "confidence": 0.844 + }, + { + "name": "left_ankle", + "x": 0.5026, + "y": 0.8916, + "confidence": 0.884 + }, + { + "name": "right_ankle", + "x": 0.511, + "y": 0.8785, + "confidence": 0.834 + }, + { + "name": "left_heel", + "x": 0.5013, + "y": 0.9074, + "confidence": 0.704 + }, + { + "name": "right_heel", + "x": 0.513, + "y": 0.8967, + "confidence": 0.614 + }, + { + "name": "left_foot_index", + "x": 0.5063, + "y": 0.949, + "confidence": 0.865 + }, + { + "name": "right_foot_index", + "x": 0.5101, + "y": 0.9348, + "confidence": 0.817 + } + ] + } + ] + }, + { + "frame_index": 30, + "timestamp": 0.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0432, + "acceleration": 3.533, + "fluidity": 0.033, + "expansion": 0.192, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5194, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.523, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5252, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5276, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5149, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5116, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5083, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5294, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5034, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5234, + "y": 0.2889, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5127, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5447, + "y": 0.3589, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4792, + "y": 0.3599, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5866, + "y": 0.4138, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.4324, + "y": 0.4151, + "confidence": 0.951 + }, + { + "name": "left_wrist", + "x": 0.5988, + "y": 0.4815, + "confidence": 0.975 + }, + { + "name": "right_wrist", + "x": 0.3897, + "y": 0.4688, + "confidence": 0.953 + }, + { + "name": "left_pinky", + "x": 0.6013, + "y": 0.5167, + "confidence": 0.952 + }, + { + "name": "right_pinky", + "x": 0.3803, + "y": 0.4921, + "confidence": 0.931 + }, + { + "name": "left_index", + "x": 0.5951, + "y": 0.5178, + "confidence": 0.955 + }, + { + "name": "right_index", + "x": 0.3845, + "y": 0.4961, + "confidence": 0.937 + }, + { + "name": "left_thumb", + "x": 0.5925, + "y": 0.5073, + "confidence": 0.947 + }, + { + "name": "right_thumb", + "x": 0.3889, + "y": 0.489, + "confidence": 0.936 + }, + { + "name": "left_hip", + "x": 0.5296, + "y": 0.5596, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4931, + "y": 0.5588, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5165, + "y": 0.7351, + "confidence": 0.87 + }, + { + "name": "right_knee", + "x": 0.5097, + "y": 0.7266, + "confidence": 0.847 + }, + { + "name": "left_ankle", + "x": 0.5027, + "y": 0.8911, + "confidence": 0.882 + }, + { + "name": "right_ankle", + "x": 0.511, + "y": 0.8776, + "confidence": 0.838 + }, + { + "name": "left_heel", + "x": 0.5006, + "y": 0.907, + "confidence": 0.704 + }, + { + "name": "right_heel", + "x": 0.5135, + "y": 0.8955, + "confidence": 0.614 + }, + { + "name": "left_foot_index", + "x": 0.5063, + "y": 0.9485, + "confidence": 0.864 + }, + { + "name": "right_foot_index", + "x": 0.5102, + "y": 0.9324, + "confidence": 0.821 + } + ] + } + ] + }, + { + "frame_index": 31, + "timestamp": 0.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0472, + "acceleration": 3.0216, + "fluidity": 0.028, + "expansion": 0.192, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0001, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5179, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5218, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.524, + "y": 0.264, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5263, + "y": 0.2652, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5132, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5099, + "y": 0.2603, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5069, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.529, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5023, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5226, + "y": 0.2885, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5116, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5448, + "y": 0.3573, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4794, + "y": 0.359, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5864, + "y": 0.4116, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.4327, + "y": 0.415, + "confidence": 0.956 + }, + { + "name": "left_wrist", + "x": 0.6008, + "y": 0.4823, + "confidence": 0.977 + }, + { + "name": "right_wrist", + "x": 0.389, + "y": 0.4663, + "confidence": 0.957 + }, + { + "name": "left_pinky", + "x": 0.6047, + "y": 0.5166, + "confidence": 0.956 + }, + { + "name": "right_pinky", + "x": 0.3791, + "y": 0.4887, + "confidence": 0.935 + }, + { + "name": "left_index", + "x": 0.5987, + "y": 0.5173, + "confidence": 0.959 + }, + { + "name": "right_index", + "x": 0.3822, + "y": 0.4919, + "confidence": 0.941 + }, + { + "name": "left_thumb", + "x": 0.5958, + "y": 0.5074, + "confidence": 0.951 + }, + { + "name": "right_thumb", + "x": 0.3867, + "y": 0.4843, + "confidence": 0.94 + }, + { + "name": "left_hip", + "x": 0.5297, + "y": 0.5596, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4931, + "y": 0.5587, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5152, + "y": 0.7338, + "confidence": 0.87 + }, + { + "name": "right_knee", + "x": 0.5054, + "y": 0.7276, + "confidence": 0.853 + }, + { + "name": "left_ankle", + "x": 0.5028, + "y": 0.8904, + "confidence": 0.879 + }, + { + "name": "right_ankle", + "x": 0.5089, + "y": 0.88, + "confidence": 0.842 + }, + { + "name": "left_heel", + "x": 0.5007, + "y": 0.9033, + "confidence": 0.697 + }, + { + "name": "right_heel", + "x": 0.5112, + "y": 0.8962, + "confidence": 0.611 + }, + { + "name": "left_foot_index", + "x": 0.5074, + "y": 0.9475, + "confidence": 0.862 + }, + { + "name": "right_foot_index", + "x": 0.5071, + "y": 0.9367, + "confidence": 0.826 + } + ] + } + ] + }, + { + "frame_index": 32, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.04, + "acceleration": 2.9336, + "fluidity": 0.025, + "expansion": 0.192, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5172, + "y": 0.2716, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5212, + "y": 0.2624, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5235, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5257, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5125, + "y": 0.2602, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5091, + "y": 0.2602, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5063, + "y": 0.2604, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5288, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5017, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5223, + "y": 0.2882, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5111, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5448, + "y": 0.3564, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4795, + "y": 0.3586, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5864, + "y": 0.4109, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.415, + "confidence": 0.959 + }, + { + "name": "left_wrist", + "x": 0.6016, + "y": 0.4827, + "confidence": 0.979 + }, + { + "name": "right_wrist", + "x": 0.3886, + "y": 0.465, + "confidence": 0.96 + }, + { + "name": "left_pinky", + "x": 0.6055, + "y": 0.5166, + "confidence": 0.96 + }, + { + "name": "right_pinky", + "x": 0.3787, + "y": 0.4872, + "confidence": 0.938 + }, + { + "name": "left_index", + "x": 0.5996, + "y": 0.5177, + "confidence": 0.962 + }, + { + "name": "right_index", + "x": 0.3817, + "y": 0.4899, + "confidence": 0.945 + }, + { + "name": "left_thumb", + "x": 0.5967, + "y": 0.5083, + "confidence": 0.955 + }, + { + "name": "right_thumb", + "x": 0.3863, + "y": 0.4822, + "confidence": 0.943 + }, + { + "name": "left_hip", + "x": 0.5298, + "y": 0.5599, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.493, + "y": 0.5589, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5142, + "y": 0.7328, + "confidence": 0.867 + }, + { + "name": "right_knee", + "x": 0.5036, + "y": 0.7276, + "confidence": 0.858 + }, + { + "name": "left_ankle", + "x": 0.5028, + "y": 0.8901, + "confidence": 0.872 + }, + { + "name": "right_ankle", + "x": 0.5077, + "y": 0.8815, + "confidence": 0.845 + }, + { + "name": "left_heel", + "x": 0.5009, + "y": 0.9022, + "confidence": 0.686 + }, + { + "name": "right_heel", + "x": 0.5097, + "y": 0.8974, + "confidence": 0.605 + }, + { + "name": "left_foot_index", + "x": 0.5081, + "y": 0.9464, + "confidence": 0.858 + }, + { + "name": "right_foot_index", + "x": 0.5058, + "y": 0.9377, + "confidence": 0.828 + } + ] + } + ] + }, + { + "frame_index": 33, + "timestamp": 0.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0372, + "acceleration": 2.4596, + "fluidity": 0.022, + "expansion": 0.192, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.517, + "y": 0.2713, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5209, + "y": 0.262, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5232, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5255, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5122, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5088, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.506, + "y": 0.2603, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5287, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5014, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5221, + "y": 0.2879, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5109, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3557, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4796, + "y": 0.3581, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5863, + "y": 0.4105, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4149, + "confidence": 0.963 + }, + { + "name": "left_wrist", + "x": 0.6017, + "y": 0.4832, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.3886, + "y": 0.4643, + "confidence": 0.963 + }, + { + "name": "left_pinky", + "x": 0.6053, + "y": 0.5165, + "confidence": 0.963 + }, + { + "name": "right_pinky", + "x": 0.3787, + "y": 0.4864, + "confidence": 0.941 + }, + { + "name": "left_index", + "x": 0.5995, + "y": 0.5176, + "confidence": 0.965 + }, + { + "name": "right_index", + "x": 0.3818, + "y": 0.4888, + "confidence": 0.948 + }, + { + "name": "left_thumb", + "x": 0.5965, + "y": 0.5082, + "confidence": 0.958 + }, + { + "name": "right_thumb", + "x": 0.3864, + "y": 0.4811, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5299, + "y": 0.5599, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4931, + "y": 0.559, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5135, + "y": 0.7312, + "confidence": 0.864 + }, + { + "name": "right_knee", + "x": 0.5032, + "y": 0.7272, + "confidence": 0.861 + }, + { + "name": "left_ankle", + "x": 0.5028, + "y": 0.8899, + "confidence": 0.866 + }, + { + "name": "right_ankle", + "x": 0.5075, + "y": 0.8817, + "confidence": 0.847 + }, + { + "name": "left_heel", + "x": 0.501, + "y": 0.9018, + "confidence": 0.676 + }, + { + "name": "right_heel", + "x": 0.5094, + "y": 0.8974, + "confidence": 0.6 + }, + { + "name": "left_foot_index", + "x": 0.5084, + "y": 0.9457, + "confidence": 0.853 + }, + { + "name": "right_foot_index", + "x": 0.5054, + "y": 0.9378, + "confidence": 0.83 + } + ] + } + ] + }, + { + "frame_index": 34, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0408, + "acceleration": 2.4109, + "fluidity": 0.019, + "expansion": 0.193, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0001, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5163, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5203, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5227, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.525, + "y": 0.263, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5116, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5083, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5055, + "y": 0.2593, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5285, + "y": 0.2708, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5008, + "y": 0.2689, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5216, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5103, + "y": 0.2855, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3545, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4793, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5859, + "y": 0.4074, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.433, + "y": 0.4147, + "confidence": 0.966 + }, + { + "name": "left_wrist", + "x": 0.6025, + "y": 0.4747, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.3879, + "y": 0.4613, + "confidence": 0.965 + }, + { + "name": "left_pinky", + "x": 0.6071, + "y": 0.5087, + "confidence": 0.965 + }, + { + "name": "right_pinky", + "x": 0.3775, + "y": 0.4826, + "confidence": 0.944 + }, + { + "name": "left_index", + "x": 0.6013, + "y": 0.5129, + "confidence": 0.968 + }, + { + "name": "right_index", + "x": 0.3798, + "y": 0.484, + "confidence": 0.95 + }, + { + "name": "left_thumb", + "x": 0.5974, + "y": 0.5028, + "confidence": 0.962 + }, + { + "name": "right_thumb", + "x": 0.3841, + "y": 0.477, + "confidence": 0.949 + }, + { + "name": "left_hip", + "x": 0.53, + "y": 0.5598, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4928, + "y": 0.5585, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5122, + "y": 0.7298, + "confidence": 0.856 + }, + { + "name": "right_knee", + "x": 0.4984, + "y": 0.7262, + "confidence": 0.861 + }, + { + "name": "left_ankle", + "x": 0.5011, + "y": 0.8884, + "confidence": 0.847 + }, + { + "name": "right_ankle", + "x": 0.5006, + "y": 0.8814, + "confidence": 0.839 + }, + { + "name": "left_heel", + "x": 0.5005, + "y": 0.8992, + "confidence": 0.646 + }, + { + "name": "right_heel", + "x": 0.5042, + "y": 0.8973, + "confidence": 0.584 + }, + { + "name": "left_foot_index", + "x": 0.503, + "y": 0.9392, + "confidence": 0.835 + }, + { + "name": "right_foot_index", + "x": 0.4991, + "y": 0.9369, + "confidence": 0.823 + } + ] + } + ] + }, + { + "frame_index": 35, + "timestamp": 0.5833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0365, + "acceleration": 2.116, + "fluidity": 0.016, + "expansion": 0.194, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0001, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5159, + "y": 0.2699, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5199, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5224, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5247, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5112, + "y": 0.2578, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5079, + "y": 0.2579, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5052, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5283, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5005, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5212, + "y": 0.2863, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5098, + "y": 0.285, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3537, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.479, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5857, + "y": 0.4059, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.4331, + "y": 0.4147, + "confidence": 0.968 + }, + { + "name": "left_wrist", + "x": 0.6029, + "y": 0.4724, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3874, + "y": 0.4603, + "confidence": 0.968 + }, + { + "name": "left_pinky", + "x": 0.6078, + "y": 0.5063, + "confidence": 0.968 + }, + { + "name": "right_pinky", + "x": 0.377, + "y": 0.4814, + "confidence": 0.947 + }, + { + "name": "left_index", + "x": 0.6019, + "y": 0.511, + "confidence": 0.97 + }, + { + "name": "right_index", + "x": 0.3792, + "y": 0.4826, + "confidence": 0.953 + }, + { + "name": "left_thumb", + "x": 0.5979, + "y": 0.5009, + "confidence": 0.965 + }, + { + "name": "right_thumb", + "x": 0.3834, + "y": 0.4758, + "confidence": 0.952 + }, + { + "name": "left_hip", + "x": 0.5301, + "y": 0.5598, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4925, + "y": 0.5582, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5114, + "y": 0.7293, + "confidence": 0.849 + }, + { + "name": "right_knee", + "x": 0.4966, + "y": 0.7249, + "confidence": 0.861 + }, + { + "name": "left_ankle", + "x": 0.5, + "y": 0.8878, + "confidence": 0.833 + }, + { + "name": "right_ankle", + "x": 0.4991, + "y": 0.8808, + "confidence": 0.833 + }, + { + "name": "left_heel", + "x": 0.5, + "y": 0.8985, + "confidence": 0.62 + }, + { + "name": "right_heel", + "x": 0.503, + "y": 0.8969, + "confidence": 0.571 + }, + { + "name": "left_foot_index", + "x": 0.5002, + "y": 0.9387, + "confidence": 0.822 + }, + { + "name": "right_foot_index", + "x": 0.4981, + "y": 0.9344, + "confidence": 0.817 + } + ] + } + ] + }, + { + "frame_index": 36, + "timestamp": 0.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0363, + "acceleration": 1.7845, + "fluidity": 0.075, + "expansion": 0.196, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0005, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5157, + "y": 0.269, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5197, + "y": 0.258, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5221, + "y": 0.2591, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5243, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.511, + "y": 0.2568, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5077, + "y": 0.257, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5049, + "y": 0.2577, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5281, + "y": 0.2696, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5001, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5211, + "y": 0.2855, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5097, + "y": 0.2843, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3538, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4786, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5857, + "y": 0.406, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4147, + "confidence": 0.971 + }, + { + "name": "left_wrist", + "x": 0.6066, + "y": 0.474, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.386, + "y": 0.4586, + "confidence": 0.97 + }, + { + "name": "left_pinky", + "x": 0.6117, + "y": 0.5066, + "confidence": 0.97 + }, + { + "name": "right_pinky", + "x": 0.3757, + "y": 0.4793, + "confidence": 0.949 + }, + { + "name": "left_index", + "x": 0.6054, + "y": 0.511, + "confidence": 0.972 + }, + { + "name": "right_index", + "x": 0.3773, + "y": 0.4802, + "confidence": 0.955 + }, + { + "name": "left_thumb", + "x": 0.6014, + "y": 0.5013, + "confidence": 0.967 + }, + { + "name": "right_thumb", + "x": 0.3813, + "y": 0.4735, + "confidence": 0.954 + }, + { + "name": "left_hip", + "x": 0.5301, + "y": 0.5598, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4909, + "y": 0.5574, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5115, + "y": 0.7295, + "confidence": 0.851 + }, + { + "name": "right_knee", + "x": 0.4869, + "y": 0.7198, + "confidence": 0.866 + }, + { + "name": "left_ankle", + "x": 0.4973, + "y": 0.8878, + "confidence": 0.833 + }, + { + "name": "right_ankle", + "x": 0.4832, + "y": 0.8813, + "confidence": 0.833 + }, + { + "name": "left_heel", + "x": 0.496, + "y": 0.899, + "confidence": 0.602 + }, + { + "name": "right_heel", + "x": 0.4853, + "y": 0.8965, + "confidence": 0.557 + }, + { + "name": "left_foot_index", + "x": 0.4936, + "y": 0.9426, + "confidence": 0.821 + }, + { + "name": "right_foot_index", + "x": 0.4839, + "y": 0.9366, + "confidence": 0.817 + } + ] + } + ] + }, + { + "frame_index": 37, + "timestamp": 0.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0316, + "acceleration": 1.8451, + "fluidity": 0.027, + "expansion": 0.197, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5155, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5195, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5219, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5241, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5107, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5074, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5046, + "y": 0.2573, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.528, + "y": 0.2694, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4999, + "y": 0.2681, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5209, + "y": 0.285, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5095, + "y": 0.284, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3538, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4785, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5857, + "y": 0.4058, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4147, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.6076, + "y": 0.4747, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3854, + "y": 0.4574, + "confidence": 0.972 + }, + { + "name": "left_pinky", + "x": 0.6127, + "y": 0.5067, + "confidence": 0.972 + }, + { + "name": "right_pinky", + "x": 0.375, + "y": 0.4781, + "confidence": 0.951 + }, + { + "name": "left_index", + "x": 0.606, + "y": 0.511, + "confidence": 0.974 + }, + { + "name": "right_index", + "x": 0.3765, + "y": 0.4789, + "confidence": 0.957 + }, + { + "name": "left_thumb", + "x": 0.6019, + "y": 0.5014, + "confidence": 0.97 + }, + { + "name": "right_thumb", + "x": 0.3806, + "y": 0.4723, + "confidence": 0.956 + }, + { + "name": "left_hip", + "x": 0.5302, + "y": 0.5598, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.49, + "y": 0.5572, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5117, + "y": 0.7318, + "confidence": 0.854 + }, + { + "name": "right_knee", + "x": 0.4862, + "y": 0.7198, + "confidence": 0.87 + }, + { + "name": "left_ankle", + "x": 0.4965, + "y": 0.8888, + "confidence": 0.833 + }, + { + "name": "right_ankle", + "x": 0.4811, + "y": 0.8825, + "confidence": 0.831 + }, + { + "name": "left_heel", + "x": 0.4947, + "y": 0.8994, + "confidence": 0.586 + }, + { + "name": "right_heel", + "x": 0.4829, + "y": 0.8965, + "confidence": 0.544 + }, + { + "name": "left_foot_index", + "x": 0.4921, + "y": 0.9454, + "confidence": 0.82 + }, + { + "name": "right_foot_index", + "x": 0.4817, + "y": 0.9383, + "confidence": 0.816 + } + ] + } + ] + }, + { + "frame_index": 38, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0295, + "acceleration": 1.4481, + "fluidity": 0.221, + "expansion": 0.2, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5153, + "y": 0.2685, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5193, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5217, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5239, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5105, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5071, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5044, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5276, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4997, + "y": 0.2682, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5208, + "y": 0.2849, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5092, + "y": 0.2839, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3538, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4785, + "y": 0.3575, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5856, + "y": 0.4048, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.4147, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.6087, + "y": 0.4709, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.383, + "y": 0.4555, + "confidence": 0.974 + }, + { + "name": "left_pinky", + "x": 0.6146, + "y": 0.5013, + "confidence": 0.974 + }, + { + "name": "right_pinky", + "x": 0.3716, + "y": 0.4761, + "confidence": 0.954 + }, + { + "name": "left_index", + "x": 0.6082, + "y": 0.5062, + "confidence": 0.976 + }, + { + "name": "right_index", + "x": 0.3729, + "y": 0.4759, + "confidence": 0.959 + }, + { + "name": "left_thumb", + "x": 0.6036, + "y": 0.4975, + "confidence": 0.972 + }, + { + "name": "right_thumb", + "x": 0.3771, + "y": 0.4697, + "confidence": 0.959 + }, + { + "name": "left_hip", + "x": 0.5302, + "y": 0.5601, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4903, + "y": 0.557, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5113, + "y": 0.7325, + "confidence": 0.856 + }, + { + "name": "right_knee", + "x": 0.4818, + "y": 0.7179, + "confidence": 0.875 + }, + { + "name": "left_ankle", + "x": 0.4956, + "y": 0.8886, + "confidence": 0.838 + }, + { + "name": "right_ankle", + "x": 0.4664, + "y": 0.8793, + "confidence": 0.837 + }, + { + "name": "left_heel", + "x": 0.4929, + "y": 0.8996, + "confidence": 0.582 + }, + { + "name": "right_heel", + "x": 0.469, + "y": 0.8932, + "confidence": 0.545 + }, + { + "name": "left_foot_index", + "x": 0.4892, + "y": 0.9422, + "confidence": 0.824 + }, + { + "name": "right_foot_index", + "x": 0.462, + "y": 0.9281, + "confidence": 0.823 + } + ] + } + ] + }, + { + "frame_index": 39, + "timestamp": 0.65, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0275, + "acceleration": 1.2784, + "fluidity": 0.286, + "expansion": 0.201, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5151, + "y": 0.2684, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5192, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5216, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5237, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5104, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5069, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5041, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5274, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4995, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5206, + "y": 0.2848, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.509, + "y": 0.2839, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3539, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4785, + "y": 0.3581, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5854, + "y": 0.4043, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.4147, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.609, + "y": 0.4694, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3823, + "y": 0.4549, + "confidence": 0.976 + }, + { + "name": "left_pinky", + "x": 0.6149, + "y": 0.4991, + "confidence": 0.976 + }, + { + "name": "right_pinky", + "x": 0.3708, + "y": 0.4749, + "confidence": 0.956 + }, + { + "name": "left_index", + "x": 0.6087, + "y": 0.5039, + "confidence": 0.978 + }, + { + "name": "right_index", + "x": 0.3718, + "y": 0.4744, + "confidence": 0.962 + }, + { + "name": "left_thumb", + "x": 0.6041, + "y": 0.4955, + "confidence": 0.974 + }, + { + "name": "right_thumb", + "x": 0.3759, + "y": 0.4686, + "confidence": 0.961 + }, + { + "name": "left_hip", + "x": 0.5302, + "y": 0.5604, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4905, + "y": 0.5569, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5111, + "y": 0.7329, + "confidence": 0.859 + }, + { + "name": "right_knee", + "x": 0.4808, + "y": 0.7168, + "confidence": 0.881 + }, + { + "name": "left_ankle", + "x": 0.4951, + "y": 0.8885, + "confidence": 0.843 + }, + { + "name": "right_ankle", + "x": 0.4645, + "y": 0.8776, + "confidence": 0.842 + }, + { + "name": "left_heel", + "x": 0.4921, + "y": 0.8998, + "confidence": 0.579 + }, + { + "name": "right_heel", + "x": 0.4673, + "y": 0.8916, + "confidence": 0.546 + }, + { + "name": "left_foot_index", + "x": 0.4876, + "y": 0.9407, + "confidence": 0.828 + }, + { + "name": "right_foot_index", + "x": 0.4594, + "y": 0.9246, + "confidence": 0.83 + } + ] + } + ] + }, + { + "frame_index": 40, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0247, + "acceleration": 1.1803, + "fluidity": 0.197, + "expansion": 0.201, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.515, + "y": 0.2684, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.519, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5215, + "y": 0.2587, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5236, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5102, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5067, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.504, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5273, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4994, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5205, + "y": 0.2847, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5088, + "y": 0.2839, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3539, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4784, + "y": 0.3584, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5854, + "y": 0.4042, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4327, + "y": 0.4147, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.6092, + "y": 0.4691, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3822, + "y": 0.4546, + "confidence": 0.977 + }, + { + "name": "left_pinky", + "x": 0.6151, + "y": 0.4984, + "confidence": 0.978 + }, + { + "name": "right_pinky", + "x": 0.3707, + "y": 0.4741, + "confidence": 0.958 + }, + { + "name": "left_index", + "x": 0.609, + "y": 0.503, + "confidence": 0.98 + }, + { + "name": "right_index", + "x": 0.3716, + "y": 0.4735, + "confidence": 0.964 + }, + { + "name": "left_thumb", + "x": 0.6044, + "y": 0.4949, + "confidence": 0.976 + }, + { + "name": "right_thumb", + "x": 0.3756, + "y": 0.4679, + "confidence": 0.963 + }, + { + "name": "left_hip", + "x": 0.5303, + "y": 0.5607, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4906, + "y": 0.5569, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5111, + "y": 0.7336, + "confidence": 0.862 + }, + { + "name": "right_knee", + "x": 0.4809, + "y": 0.7168, + "confidence": 0.885 + }, + { + "name": "left_ankle", + "x": 0.495, + "y": 0.8885, + "confidence": 0.847 + }, + { + "name": "right_ankle", + "x": 0.4644, + "y": 0.8769, + "confidence": 0.846 + }, + { + "name": "left_heel", + "x": 0.4919, + "y": 0.9, + "confidence": 0.577 + }, + { + "name": "right_heel", + "x": 0.4672, + "y": 0.8908, + "confidence": 0.547 + }, + { + "name": "left_foot_index", + "x": 0.4876, + "y": 0.9402, + "confidence": 0.832 + }, + { + "name": "right_foot_index", + "x": 0.4597, + "y": 0.9227, + "confidence": 0.836 + } + ] + } + ] + }, + { + "frame_index": 41, + "timestamp": 0.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0401, + "acceleration": 2.0017, + "fluidity": 0.176, + "expansion": 0.205, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0005, + "y": 0.0012 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5149, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5189, + "y": 0.258, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5213, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5235, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5101, + "y": 0.257, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5066, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5039, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2695, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4993, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5203, + "y": 0.2849, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5088, + "y": 0.2842, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5449, + "y": 0.3542, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4784, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5853, + "y": 0.4023, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4327, + "y": 0.4147, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.6106, + "y": 0.4649, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3817, + "y": 0.4508, + "confidence": 0.979 + }, + { + "name": "left_pinky", + "x": 0.6174, + "y": 0.4936, + "confidence": 0.98 + }, + { + "name": "right_pinky", + "x": 0.3694, + "y": 0.4717, + "confidence": 0.96 + }, + { + "name": "left_index", + "x": 0.612, + "y": 0.499, + "confidence": 0.981 + }, + { + "name": "right_index", + "x": 0.3703, + "y": 0.4707, + "confidence": 0.965 + }, + { + "name": "left_thumb", + "x": 0.6074, + "y": 0.4913, + "confidence": 0.978 + }, + { + "name": "right_thumb", + "x": 0.3744, + "y": 0.4644, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.5293, + "y": 0.562, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4898, + "y": 0.5581, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5111, + "y": 0.736, + "confidence": 0.872 + }, + { + "name": "right_knee", + "x": 0.4764, + "y": 0.7179, + "confidence": 0.892 + }, + { + "name": "left_ankle", + "x": 0.4954, + "y": 0.8908, + "confidence": 0.858 + }, + { + "name": "right_ankle", + "x": 0.4487, + "y": 0.8714, + "confidence": 0.856 + }, + { + "name": "left_heel", + "x": 0.4921, + "y": 0.9036, + "confidence": 0.589 + }, + { + "name": "right_heel", + "x": 0.4518, + "y": 0.8886, + "confidence": 0.559 + }, + { + "name": "left_foot_index", + "x": 0.489, + "y": 0.942, + "confidence": 0.843 + }, + { + "name": "right_foot_index", + "x": 0.4418, + "y": 0.9228, + "confidence": 0.846 + } + ] + } + ] + }, + { + "frame_index": 42, + "timestamp": 0.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0289, + "acceleration": 1.9481, + "fluidity": 0.165, + "expansion": 0.206, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0002, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5146, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5187, + "y": 0.2583, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5211, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5233, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5099, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5064, + "y": 0.2579, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5037, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4992, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5201, + "y": 0.285, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5086, + "y": 0.2844, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5448, + "y": 0.3542, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4784, + "y": 0.3612, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5851, + "y": 0.4009, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.4147, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.6112, + "y": 0.4634, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3818, + "y": 0.4492, + "confidence": 0.98 + }, + { + "name": "left_pinky", + "x": 0.6184, + "y": 0.4916, + "confidence": 0.981 + }, + { + "name": "right_pinky", + "x": 0.3693, + "y": 0.471, + "confidence": 0.962 + }, + { + "name": "left_index", + "x": 0.6129, + "y": 0.4969, + "confidence": 0.983 + }, + { + "name": "right_index", + "x": 0.3703, + "y": 0.4701, + "confidence": 0.967 + }, + { + "name": "left_thumb", + "x": 0.6083, + "y": 0.4895, + "confidence": 0.98 + }, + { + "name": "right_thumb", + "x": 0.3744, + "y": 0.4635, + "confidence": 0.966 + }, + { + "name": "left_hip", + "x": 0.5289, + "y": 0.5624, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4892, + "y": 0.5582, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5113, + "y": 0.7375, + "confidence": 0.88 + }, + { + "name": "right_knee", + "x": 0.4755, + "y": 0.7184, + "confidence": 0.899 + }, + { + "name": "left_ankle", + "x": 0.4955, + "y": 0.8914, + "confidence": 0.867 + }, + { + "name": "right_ankle", + "x": 0.4467, + "y": 0.8702, + "confidence": 0.866 + }, + { + "name": "left_heel", + "x": 0.4923, + "y": 0.9046, + "confidence": 0.6 + }, + { + "name": "right_heel", + "x": 0.4495, + "y": 0.8885, + "confidence": 0.572 + }, + { + "name": "left_foot_index", + "x": 0.4899, + "y": 0.9422, + "confidence": 0.853 + }, + { + "name": "right_foot_index", + "x": 0.4399, + "y": 0.9231, + "confidence": 0.856 + } + ] + } + ] + }, + { + "frame_index": 43, + "timestamp": 0.7166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0463, + "acceleration": 2.3063, + "fluidity": 0.134, + "expansion": 0.21, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0004, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5146, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5187, + "y": 0.2593, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5211, + "y": 0.2603, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5233, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5099, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5064, + "y": 0.2591, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5037, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4993, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.52, + "y": 0.2856, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5086, + "y": 0.2853, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.545, + "y": 0.3554, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4786, + "y": 0.3626, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5847, + "y": 0.3976, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.414, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.6121, + "y": 0.4538, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3804, + "y": 0.4446, + "confidence": 0.981 + }, + { + "name": "left_pinky", + "x": 0.6207, + "y": 0.4818, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.3676, + "y": 0.4685, + "confidence": 0.963 + }, + { + "name": "left_index", + "x": 0.6157, + "y": 0.487, + "confidence": 0.983 + }, + { + "name": "right_index", + "x": 0.3685, + "y": 0.4679, + "confidence": 0.968 + }, + { + "name": "left_thumb", + "x": 0.6107, + "y": 0.4792, + "confidence": 0.981 + }, + { + "name": "right_thumb", + "x": 0.3728, + "y": 0.4604, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.5283, + "y": 0.5641, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4879, + "y": 0.5598, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5115, + "y": 0.7394, + "confidence": 0.889 + }, + { + "name": "right_knee", + "x": 0.4726, + "y": 0.7189, + "confidence": 0.907 + }, + { + "name": "left_ankle", + "x": 0.4957, + "y": 0.8927, + "confidence": 0.878 + }, + { + "name": "right_ankle", + "x": 0.4387, + "y": 0.8661, + "confidence": 0.877 + }, + { + "name": "left_heel", + "x": 0.492, + "y": 0.9053, + "confidence": 0.619 + }, + { + "name": "right_heel", + "x": 0.4421, + "y": 0.883, + "confidence": 0.596 + }, + { + "name": "left_foot_index", + "x": 0.4902, + "y": 0.9478, + "confidence": 0.864 + }, + { + "name": "right_foot_index", + "x": 0.426, + "y": 0.9231, + "confidence": 0.868 + } + ] + } + ] + }, + { + "frame_index": 44, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0497, + "acceleration": 1.6855, + "fluidity": 0.119, + "expansion": 0.211, + "total_displacement": 0.0014, + "center_displacement": { + "x": -0.0004, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5145, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5186, + "y": 0.26, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.521, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5232, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5098, + "y": 0.2593, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5064, + "y": 0.2598, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5036, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5271, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4993, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5199, + "y": 0.286, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5086, + "y": 0.2857, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.545, + "y": 0.3563, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.479, + "y": 0.3631, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5842, + "y": 0.3961, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4127, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6125, + "y": 0.4517, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3799, + "y": 0.4425, + "confidence": 0.982 + }, + { + "name": "left_pinky", + "x": 0.6216, + "y": 0.4795, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.367, + "y": 0.4674, + "confidence": 0.965 + }, + { + "name": "left_index", + "x": 0.6171, + "y": 0.4851, + "confidence": 0.984 + }, + { + "name": "right_index", + "x": 0.3683, + "y": 0.4672, + "confidence": 0.969 + }, + { + "name": "left_thumb", + "x": 0.6123, + "y": 0.4779, + "confidence": 0.982 + }, + { + "name": "right_thumb", + "x": 0.3726, + "y": 0.4597, + "confidence": 0.969 + }, + { + "name": "left_hip", + "x": 0.5274, + "y": 0.5663, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4866, + "y": 0.5615, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5116, + "y": 0.7419, + "confidence": 0.898 + }, + { + "name": "right_knee", + "x": 0.4717, + "y": 0.7221, + "confidence": 0.915 + }, + { + "name": "left_ankle", + "x": 0.4958, + "y": 0.8928, + "confidence": 0.888 + }, + { + "name": "right_ankle", + "x": 0.437, + "y": 0.8642, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.4917, + "y": 0.9051, + "confidence": 0.637 + }, + { + "name": "right_heel", + "x": 0.4399, + "y": 0.8798, + "confidence": 0.616 + }, + { + "name": "left_foot_index", + "x": 0.4905, + "y": 0.9512, + "confidence": 0.874 + }, + { + "name": "right_foot_index", + "x": 0.4236, + "y": 0.9241, + "confidence": 0.879 + } + ] + } + ] + }, + { + "frame_index": 45, + "timestamp": 0.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0368, + "acceleration": 2.4005, + "fluidity": 0.104, + "expansion": 0.211, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5144, + "y": 0.2698, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5185, + "y": 0.2602, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.521, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5231, + "y": 0.2621, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5097, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5062, + "y": 0.26, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5035, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5271, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4992, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5198, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5084, + "y": 0.2858, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.545, + "y": 0.3568, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.479, + "y": 0.3632, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.584, + "y": 0.3957, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.4124, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.6127, + "y": 0.4518, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3794, + "y": 0.4428, + "confidence": 0.983 + }, + { + "name": "left_pinky", + "x": 0.6215, + "y": 0.4804, + "confidence": 0.984 + }, + { + "name": "right_pinky", + "x": 0.3666, + "y": 0.4678, + "confidence": 0.966 + }, + { + "name": "left_index", + "x": 0.6171, + "y": 0.4859, + "confidence": 0.985 + }, + { + "name": "right_index", + "x": 0.3678, + "y": 0.4675, + "confidence": 0.971 + }, + { + "name": "left_thumb", + "x": 0.6126, + "y": 0.4786, + "confidence": 0.983 + }, + { + "name": "right_thumb", + "x": 0.3719, + "y": 0.4602, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.5274, + "y": 0.5667, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4863, + "y": 0.5619, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.5119, + "y": 0.7431, + "confidence": 0.907 + }, + { + "name": "right_knee", + "x": 0.4709, + "y": 0.7256, + "confidence": 0.922 + }, + { + "name": "left_ankle", + "x": 0.4959, + "y": 0.8935, + "confidence": 0.897 + }, + { + "name": "right_ankle", + "x": 0.4357, + "y": 0.8644, + "confidence": 0.897 + }, + { + "name": "left_heel", + "x": 0.4914, + "y": 0.9054, + "confidence": 0.656 + }, + { + "name": "right_heel", + "x": 0.4383, + "y": 0.8786, + "confidence": 0.634 + }, + { + "name": "left_foot_index", + "x": 0.4908, + "y": 0.9517, + "confidence": 0.884 + }, + { + "name": "right_foot_index", + "x": 0.4238, + "y": 0.9267, + "confidence": 0.889 + } + ] + } + ] + }, + { + "frame_index": 46, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0381, + "acceleration": 1.6344, + "fluidity": 0.158, + "expansion": 0.213, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.515, + "y": 0.27, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5187, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5211, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5234, + "y": 0.2627, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5101, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5067, + "y": 0.2604, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5038, + "y": 0.2611, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5271, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4993, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.52, + "y": 0.2864, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.509, + "y": 0.286, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5454, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4795, + "y": 0.3634, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.584, + "y": 0.393, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4108, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6147, + "y": 0.4491, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.3793, + "y": 0.438, + "confidence": 0.985 + }, + { + "name": "left_pinky", + "x": 0.6247, + "y": 0.4754, + "confidence": 0.985 + }, + { + "name": "right_pinky", + "x": 0.366, + "y": 0.4619, + "confidence": 0.968 + }, + { + "name": "left_index", + "x": 0.6195, + "y": 0.4799, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.3668, + "y": 0.4612, + "confidence": 0.972 + }, + { + "name": "left_thumb", + "x": 0.6147, + "y": 0.4733, + "confidence": 0.984 + }, + { + "name": "right_thumb", + "x": 0.3709, + "y": 0.4543, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.5275, + "y": 0.5668, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4865, + "y": 0.5618, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5122, + "y": 0.7438, + "confidence": 0.914 + }, + { + "name": "right_knee", + "x": 0.4715, + "y": 0.7267, + "confidence": 0.929 + }, + { + "name": "left_ankle", + "x": 0.4959, + "y": 0.8935, + "confidence": 0.906 + }, + { + "name": "right_ankle", + "x": 0.4354, + "y": 0.864, + "confidence": 0.906 + }, + { + "name": "left_heel", + "x": 0.4913, + "y": 0.9057, + "confidence": 0.675 + }, + { + "name": "right_heel", + "x": 0.4376, + "y": 0.8777, + "confidence": 0.652 + }, + { + "name": "left_foot_index", + "x": 0.4909, + "y": 0.9515, + "confidence": 0.893 + }, + { + "name": "right_foot_index", + "x": 0.4238, + "y": 0.927, + "confidence": 0.898 + } + ] + } + ] + }, + { + "frame_index": 47, + "timestamp": 0.7833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0352, + "acceleration": 1.4872, + "fluidity": 0.095, + "expansion": 0.214, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5152, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5188, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5212, + "y": 0.2621, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5234, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5103, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5068, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5038, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4993, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5201, + "y": 0.2865, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5092, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5457, + "y": 0.3576, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4797, + "y": 0.3636, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.584, + "y": 0.392, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4329, + "y": 0.4098, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6153, + "y": 0.4482, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.3792, + "y": 0.4366, + "confidence": 0.985 + }, + { + "name": "left_pinky", + "x": 0.6255, + "y": 0.4736, + "confidence": 0.985 + }, + { + "name": "right_pinky", + "x": 0.3657, + "y": 0.4598, + "confidence": 0.969 + }, + { + "name": "left_index", + "x": 0.6202, + "y": 0.4777, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.3664, + "y": 0.4593, + "confidence": 0.973 + }, + { + "name": "left_thumb", + "x": 0.6153, + "y": 0.4714, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.3705, + "y": 0.4526, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.5275, + "y": 0.567, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4867, + "y": 0.5619, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5123, + "y": 0.7437, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.472, + "y": 0.7272, + "confidence": 0.935 + }, + { + "name": "left_ankle", + "x": 0.4959, + "y": 0.8934, + "confidence": 0.913 + }, + { + "name": "right_ankle", + "x": 0.4352, + "y": 0.8639, + "confidence": 0.914 + }, + { + "name": "left_heel", + "x": 0.4911, + "y": 0.906, + "confidence": 0.692 + }, + { + "name": "right_heel", + "x": 0.4374, + "y": 0.8772, + "confidence": 0.669 + }, + { + "name": "left_foot_index", + "x": 0.4909, + "y": 0.9505, + "confidence": 0.901 + }, + { + "name": "right_foot_index", + "x": 0.4234, + "y": 0.9272, + "confidence": 0.906 + } + ] + } + ] + }, + { + "frame_index": 48, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0301, + "acceleration": 1.4655, + "fluidity": 0.089, + "expansion": 0.215, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5165, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5194, + "y": 0.2616, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5216, + "y": 0.2625, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5239, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5114, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5081, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5048, + "y": 0.2615, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4996, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5206, + "y": 0.2867, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5106, + "y": 0.2863, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5457, + "y": 0.3576, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4802, + "y": 0.3638, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5842, + "y": 0.3881, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.433, + "y": 0.4063, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6176, + "y": 0.4424, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.379, + "y": 0.4315, + "confidence": 0.986 + }, + { + "name": "left_pinky", + "x": 0.6283, + "y": 0.4683, + "confidence": 0.986 + }, + { + "name": "right_pinky", + "x": 0.3652, + "y": 0.453, + "confidence": 0.97 + }, + { + "name": "left_index", + "x": 0.6222, + "y": 0.4717, + "confidence": 0.988 + }, + { + "name": "right_index", + "x": 0.3658, + "y": 0.4529, + "confidence": 0.975 + }, + { + "name": "left_thumb", + "x": 0.6172, + "y": 0.4654, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.3701, + "y": 0.4469, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.5275, + "y": 0.567, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4869, + "y": 0.5617, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5124, + "y": 0.7434, + "confidence": 0.925 + }, + { + "name": "right_knee", + "x": 0.4737, + "y": 0.7199, + "confidence": 0.94 + }, + { + "name": "left_ankle", + "x": 0.4955, + "y": 0.8924, + "confidence": 0.918 + }, + { + "name": "right_ankle", + "x": 0.4397, + "y": 0.8626, + "confidence": 0.92 + }, + { + "name": "left_heel", + "x": 0.4888, + "y": 0.9047, + "confidence": 0.703 + }, + { + "name": "right_heel", + "x": 0.4424, + "y": 0.8771, + "confidence": 0.675 + }, + { + "name": "left_foot_index", + "x": 0.4903, + "y": 0.9409, + "confidence": 0.907 + }, + { + "name": "right_foot_index", + "x": 0.4269, + "y": 0.9231, + "confidence": 0.913 + } + ] + } + ] + }, + { + "frame_index": 49, + "timestamp": 0.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0278, + "acceleration": 1.1837, + "fluidity": 0.151, + "expansion": 0.215, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5171, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5198, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5218, + "y": 0.2627, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5241, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5119, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5087, + "y": 0.261, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5053, + "y": 0.2616, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2716, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4998, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5209, + "y": 0.2868, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5111, + "y": 0.2863, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5456, + "y": 0.3576, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4805, + "y": 0.3639, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5843, + "y": 0.3865, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4331, + "y": 0.4048, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6184, + "y": 0.4406, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.3789, + "y": 0.43, + "confidence": 0.987 + }, + { + "name": "left_pinky", + "x": 0.6292, + "y": 0.4668, + "confidence": 0.987 + }, + { + "name": "right_pinky", + "x": 0.365, + "y": 0.4508, + "confidence": 0.971 + }, + { + "name": "left_index", + "x": 0.6228, + "y": 0.4701, + "confidence": 0.988 + }, + { + "name": "right_index", + "x": 0.3655, + "y": 0.4508, + "confidence": 0.976 + }, + { + "name": "left_thumb", + "x": 0.6178, + "y": 0.4636, + "confidence": 0.987 + }, + { + "name": "right_thumb", + "x": 0.3699, + "y": 0.4451, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.5275, + "y": 0.567, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4872, + "y": 0.5615, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5124, + "y": 0.7432, + "confidence": 0.929 + }, + { + "name": "right_knee", + "x": 0.4747, + "y": 0.7171, + "confidence": 0.944 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.8917, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.4421, + "y": 0.8622, + "confidence": 0.925 + }, + { + "name": "left_heel", + "x": 0.4877, + "y": 0.9039, + "confidence": 0.714 + }, + { + "name": "right_heel", + "x": 0.4447, + "y": 0.8771, + "confidence": 0.681 + }, + { + "name": "left_foot_index", + "x": 0.49, + "y": 0.9373, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.4294, + "y": 0.9214, + "confidence": 0.918 + } + ] + } + ] + }, + { + "frame_index": 50, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0423, + "acceleration": 2.0583, + "fluidity": 0.084, + "expansion": 0.215, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0006, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5173, + "y": 0.2705, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.52, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.522, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5243, + "y": 0.2637, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5122, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.509, + "y": 0.2611, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5055, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5272, + "y": 0.2716, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.521, + "y": 0.287, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5113, + "y": 0.2865, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5457, + "y": 0.3571, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4809, + "y": 0.3638, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5846, + "y": 0.3842, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4333, + "y": 0.4024, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6204, + "y": 0.4349, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.3789, + "y": 0.424, + "confidence": 0.988 + }, + { + "name": "left_pinky", + "x": 0.6319, + "y": 0.4606, + "confidence": 0.987 + }, + { + "name": "right_pinky", + "x": 0.365, + "y": 0.4432, + "confidence": 0.972 + }, + { + "name": "left_index", + "x": 0.6245, + "y": 0.4644, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3655, + "y": 0.443, + "confidence": 0.976 + }, + { + "name": "left_thumb", + "x": 0.6192, + "y": 0.4586, + "confidence": 0.987 + }, + { + "name": "right_thumb", + "x": 0.3698, + "y": 0.4375, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5278, + "y": 0.5649, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4887, + "y": 0.5595, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5117, + "y": 0.7398, + "confidence": 0.928 + }, + { + "name": "right_knee", + "x": 0.4827, + "y": 0.7168, + "confidence": 0.943 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.8903, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.4606, + "y": 0.8624, + "confidence": 0.926 + }, + { + "name": "left_heel", + "x": 0.4878, + "y": 0.9024, + "confidence": 0.708 + }, + { + "name": "right_heel", + "x": 0.4615, + "y": 0.8781, + "confidence": 0.678 + }, + { + "name": "left_foot_index", + "x": 0.4874, + "y": 0.9365, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.4512, + "y": 0.9202, + "confidence": 0.92 + } + ] + } + ] + }, + { + "frame_index": 51, + "timestamp": 0.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0391, + "acceleration": 1.4791, + "fluidity": 0.081, + "expansion": 0.215, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0003, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5174, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5201, + "y": 0.262, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5221, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5244, + "y": 0.2638, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5123, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5091, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5056, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5273, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5001, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5211, + "y": 0.2872, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5115, + "y": 0.2866, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5457, + "y": 0.3568, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4812, + "y": 0.3638, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5848, + "y": 0.3833, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4334, + "y": 0.4013, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6212, + "y": 0.4331, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.379, + "y": 0.4222, + "confidence": 0.988 + }, + { + "name": "left_pinky", + "x": 0.6329, + "y": 0.459, + "confidence": 0.987 + }, + { + "name": "right_pinky", + "x": 0.3649, + "y": 0.4411, + "confidence": 0.973 + }, + { + "name": "left_index", + "x": 0.6251, + "y": 0.4629, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3654, + "y": 0.4409, + "confidence": 0.977 + }, + { + "name": "left_thumb", + "x": 0.6198, + "y": 0.4572, + "confidence": 0.988 + }, + { + "name": "right_thumb", + "x": 0.3697, + "y": 0.4353, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5281, + "y": 0.5634, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4895, + "y": 0.558, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5114, + "y": 0.7373, + "confidence": 0.927 + }, + { + "name": "right_knee", + "x": 0.4852, + "y": 0.7164, + "confidence": 0.943 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.8889, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.4645, + "y": 0.8626, + "confidence": 0.926 + }, + { + "name": "left_heel", + "x": 0.4881, + "y": 0.901, + "confidence": 0.702 + }, + { + "name": "right_heel", + "x": 0.4653, + "y": 0.8786, + "confidence": 0.675 + }, + { + "name": "left_foot_index", + "x": 0.4863, + "y": 0.9355, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.4559, + "y": 0.9193, + "confidence": 0.922 + } + ] + } + ] + }, + { + "frame_index": 52, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0356, + "acceleration": 1.5268, + "fluidity": 0.079, + "expansion": 0.215, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0002, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5174, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5201, + "y": 0.262, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5221, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5244, + "y": 0.2638, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5123, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5091, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5056, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5274, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5002, + "y": 0.2708, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5211, + "y": 0.2873, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5115, + "y": 0.2867, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5458, + "y": 0.3566, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4813, + "y": 0.3637, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5849, + "y": 0.3829, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4334, + "y": 0.4009, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6215, + "y": 0.4324, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.379, + "y": 0.4217, + "confidence": 0.989 + }, + { + "name": "left_pinky", + "x": 0.6331, + "y": 0.4584, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3649, + "y": 0.4406, + "confidence": 0.974 + }, + { + "name": "left_index", + "x": 0.6254, + "y": 0.4624, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3654, + "y": 0.4404, + "confidence": 0.978 + }, + { + "name": "left_thumb", + "x": 0.62, + "y": 0.4565, + "confidence": 0.988 + }, + { + "name": "right_thumb", + "x": 0.3696, + "y": 0.4348, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.5283, + "y": 0.5626, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4899, + "y": 0.557, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5113, + "y": 0.7358, + "confidence": 0.926 + }, + { + "name": "right_knee", + "x": 0.4859, + "y": 0.7148, + "confidence": 0.942 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.8882, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.4655, + "y": 0.8627, + "confidence": 0.927 + }, + { + "name": "left_heel", + "x": 0.4883, + "y": 0.9003, + "confidence": 0.697 + }, + { + "name": "right_heel", + "x": 0.4663, + "y": 0.8789, + "confidence": 0.674 + }, + { + "name": "left_foot_index", + "x": 0.4858, + "y": 0.9355, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.4569, + "y": 0.919, + "confidence": 0.924 + } + ] + } + ] + }, + { + "frame_index": 53, + "timestamp": 0.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0348, + "acceleration": 1.4304, + "fluidity": 0.061, + "expansion": 0.215, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5175, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5202, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5222, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5245, + "y": 0.2637, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5124, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5091, + "y": 0.261, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5057, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5274, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5002, + "y": 0.2708, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5213, + "y": 0.2873, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5116, + "y": 0.2866, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5459, + "y": 0.3566, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4812, + "y": 0.3637, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5849, + "y": 0.3828, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4334, + "y": 0.4011, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6217, + "y": 0.4281, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3789, + "y": 0.4219, + "confidence": 0.99 + }, + { + "name": "left_pinky", + "x": 0.6338, + "y": 0.4526, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3646, + "y": 0.4415, + "confidence": 0.975 + }, + { + "name": "left_index", + "x": 0.6259, + "y": 0.4572, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3651, + "y": 0.4411, + "confidence": 0.979 + }, + { + "name": "left_thumb", + "x": 0.6202, + "y": 0.4513, + "confidence": 0.988 + }, + { + "name": "right_thumb", + "x": 0.3693, + "y": 0.4354, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5288, + "y": 0.5626, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4907, + "y": 0.5575, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5115, + "y": 0.7358, + "confidence": 0.927 + }, + { + "name": "right_knee", + "x": 0.4922, + "y": 0.7202, + "confidence": 0.938 + }, + { + "name": "left_ankle", + "x": 0.4957, + "y": 0.8882, + "confidence": 0.922 + }, + { + "name": "right_ankle", + "x": 0.4822, + "y": 0.8752, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.4943, + "y": 0.9003, + "confidence": 0.687 + }, + { + "name": "right_heel", + "x": 0.4863, + "y": 0.8905, + "confidence": 0.672 + }, + { + "name": "left_foot_index", + "x": 0.4859, + "y": 0.9388, + "confidence": 0.91 + }, + { + "name": "right_foot_index", + "x": 0.4715, + "y": 0.9309, + "confidence": 0.923 + } + ] + } + ] + }, + { + "frame_index": 54, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0305, + "acceleration": 1.2486, + "fluidity": 0.055, + "expansion": 0.215, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5176, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5202, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5223, + "y": 0.2627, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5246, + "y": 0.2637, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5124, + "y": 0.2606, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5091, + "y": 0.261, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5057, + "y": 0.2616, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5274, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5002, + "y": 0.2708, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5213, + "y": 0.2873, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5116, + "y": 0.2866, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5461, + "y": 0.3566, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4811, + "y": 0.3637, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5849, + "y": 0.3829, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4334, + "y": 0.4012, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6219, + "y": 0.427, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3789, + "y": 0.4219, + "confidence": 0.99 + }, + { + "name": "left_pinky", + "x": 0.6342, + "y": 0.4513, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3644, + "y": 0.4418, + "confidence": 0.976 + }, + { + "name": "left_index", + "x": 0.6263, + "y": 0.4559, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3649, + "y": 0.4415, + "confidence": 0.98 + }, + { + "name": "left_thumb", + "x": 0.6203, + "y": 0.45, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3692, + "y": 0.4356, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.529, + "y": 0.5626, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4911, + "y": 0.558, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5117, + "y": 0.7359, + "confidence": 0.928 + }, + { + "name": "right_knee", + "x": 0.494, + "y": 0.7229, + "confidence": 0.933 + }, + { + "name": "left_ankle", + "x": 0.496, + "y": 0.8882, + "confidence": 0.922 + }, + { + "name": "right_ankle", + "x": 0.4847, + "y": 0.8791, + "confidence": 0.922 + }, + { + "name": "left_heel", + "x": 0.4964, + "y": 0.9004, + "confidence": 0.678 + }, + { + "name": "right_heel", + "x": 0.4889, + "y": 0.8941, + "confidence": 0.67 + }, + { + "name": "left_foot_index", + "x": 0.4861, + "y": 0.9405, + "confidence": 0.91 + }, + { + "name": "right_foot_index", + "x": 0.474, + "y": 0.9347, + "confidence": 0.922 + } + ] + } + ] + }, + { + "frame_index": 55, + "timestamp": 0.9166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0367, + "acceleration": 1.5509, + "fluidity": 0.049, + "expansion": 0.216, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0007, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5198, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.522, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5239, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5259, + "y": 0.2643, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5146, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5114, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5078, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5275, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5011, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5228, + "y": 0.2877, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5139, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5461, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4811, + "y": 0.3642, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5848, + "y": 0.3834, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4328, + "y": 0.4034, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6237, + "y": 0.4283, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3786, + "y": 0.4227, + "confidence": 0.991 + }, + { + "name": "left_pinky", + "x": 0.6366, + "y": 0.4523, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3639, + "y": 0.443, + "confidence": 0.977 + }, + { + "name": "left_index", + "x": 0.631, + "y": 0.4566, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3644, + "y": 0.4425, + "confidence": 0.98 + }, + { + "name": "left_thumb", + "x": 0.6244, + "y": 0.4511, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3687, + "y": 0.4366, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5299, + "y": 0.5621, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4933, + "y": 0.5586, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.515, + "y": 0.7359, + "confidence": 0.925 + }, + { + "name": "right_knee", + "x": 0.4955, + "y": 0.724, + "confidence": 0.923 + }, + { + "name": "left_ankle", + "x": 0.5033, + "y": 0.8924, + "confidence": 0.915 + }, + { + "name": "right_ankle", + "x": 0.498, + "y": 0.8873, + "confidence": 0.909 + }, + { + "name": "left_heel", + "x": 0.5062, + "y": 0.9128, + "confidence": 0.665 + }, + { + "name": "right_heel", + "x": 0.502, + "y": 0.907, + "confidence": 0.663 + }, + { + "name": "left_foot_index", + "x": 0.4872, + "y": 0.9437, + "confidence": 0.9 + }, + { + "name": "right_foot_index", + "x": 0.4818, + "y": 0.9417, + "confidence": 0.909 + } + ] + } + ] + }, + { + "frame_index": 56, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0342, + "acceleration": 1.2244, + "fluidity": 0.041, + "expansion": 0.217, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5208, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5229, + "y": 0.2625, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5247, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5267, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5156, + "y": 0.2611, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5123, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5087, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5277, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5016, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5235, + "y": 0.2879, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5148, + "y": 0.2871, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.546, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.481, + "y": 0.3644, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5848, + "y": 0.3837, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4327, + "y": 0.4046, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6244, + "y": 0.4289, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3786, + "y": 0.4234, + "confidence": 0.991 + }, + { + "name": "left_pinky", + "x": 0.6376, + "y": 0.4527, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.364, + "y": 0.4436, + "confidence": 0.978 + }, + { + "name": "left_index", + "x": 0.6326, + "y": 0.457, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3644, + "y": 0.4429, + "confidence": 0.981 + }, + { + "name": "left_thumb", + "x": 0.626, + "y": 0.4518, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3687, + "y": 0.437, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.531, + "y": 0.5619, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4946, + "y": 0.5594, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5165, + "y": 0.7362, + "confidence": 0.923 + }, + { + "name": "right_knee", + "x": 0.4962, + "y": 0.727, + "confidence": 0.914 + }, + { + "name": "left_ankle", + "x": 0.5056, + "y": 0.8941, + "confidence": 0.91 + }, + { + "name": "right_ankle", + "x": 0.4991, + "y": 0.8924, + "confidence": 0.898 + }, + { + "name": "left_heel", + "x": 0.5083, + "y": 0.9156, + "confidence": 0.654 + }, + { + "name": "right_heel", + "x": 0.5029, + "y": 0.9126, + "confidence": 0.656 + }, + { + "name": "left_foot_index", + "x": 0.4882, + "y": 0.9452, + "confidence": 0.893 + }, + { + "name": "right_foot_index", + "x": 0.4825, + "y": 0.9462, + "confidence": 0.898 + } + ] + } + ] + }, + { + "frame_index": 57, + "timestamp": 0.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0301, + "acceleration": 1.2464, + "fluidity": 0.036, + "expansion": 0.218, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.521, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5231, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5249, + "y": 0.2639, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5269, + "y": 0.2649, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5158, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5125, + "y": 0.2614, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5089, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5278, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5018, + "y": 0.271, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5238, + "y": 0.2882, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5149, + "y": 0.2872, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.546, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4809, + "y": 0.3644, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5847, + "y": 0.3838, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4327, + "y": 0.405, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6247, + "y": 0.4289, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3786, + "y": 0.4238, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.638, + "y": 0.4529, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3639, + "y": 0.4441, + "confidence": 0.979 + }, + { + "name": "left_index", + "x": 0.633, + "y": 0.4574, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3643, + "y": 0.4434, + "confidence": 0.982 + }, + { + "name": "left_thumb", + "x": 0.6263, + "y": 0.4523, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3686, + "y": 0.4375, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5317, + "y": 0.5616, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4952, + "y": 0.5601, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5174, + "y": 0.7366, + "confidence": 0.922 + }, + { + "name": "right_knee", + "x": 0.4967, + "y": 0.7285, + "confidence": 0.907 + }, + { + "name": "left_ankle", + "x": 0.5067, + "y": 0.8956, + "confidence": 0.905 + }, + { + "name": "right_ankle", + "x": 0.4994, + "y": 0.8953, + "confidence": 0.89 + }, + { + "name": "left_heel", + "x": 0.5091, + "y": 0.9167, + "confidence": 0.643 + }, + { + "name": "right_heel", + "x": 0.5032, + "y": 0.9157, + "confidence": 0.651 + }, + { + "name": "left_foot_index", + "x": 0.4892, + "y": 0.9456, + "confidence": 0.887 + }, + { + "name": "right_foot_index", + "x": 0.4828, + "y": 0.9486, + "confidence": 0.889 + } + ] + } + ] + }, + { + "frame_index": 58, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0848, + "acceleration": 4.297, + "fluidity": 0.032, + "expansion": 0.22, + "total_displacement": 0.004, + "center_displacement": { + "x": -0.0002, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5209, + "y": 0.278, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5232, + "y": 0.2681, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5252, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5273, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5158, + "y": 0.2669, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5125, + "y": 0.267, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5089, + "y": 0.2676, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5285, + "y": 0.2783, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5021, + "y": 0.2758, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5237, + "y": 0.2943, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5148, + "y": 0.2928, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.546, + "y": 0.36, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4798, + "y": 0.3683, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5851, + "y": 0.3886, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4317, + "y": 0.4123, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6282, + "y": 0.4295, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3781, + "y": 0.4292, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.6415, + "y": 0.4528, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3636, + "y": 0.4482, + "confidence": 0.979 + }, + { + "name": "left_index", + "x": 0.6371, + "y": 0.4557, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3637, + "y": 0.4468, + "confidence": 0.983 + }, + { + "name": "left_thumb", + "x": 0.6298, + "y": 0.4508, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3678, + "y": 0.4408, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5323, + "y": 0.564, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.495, + "y": 0.5663, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5229, + "y": 0.7424, + "confidence": 0.926 + }, + { + "name": "right_knee", + "x": 0.4981, + "y": 0.7378, + "confidence": 0.906 + }, + { + "name": "left_ankle", + "x": 0.5191, + "y": 0.8999, + "confidence": 0.91 + }, + { + "name": "right_ankle", + "x": 0.5076, + "y": 0.9006, + "confidence": 0.893 + }, + { + "name": "left_heel", + "x": 0.5231, + "y": 0.9252, + "confidence": 0.655 + }, + { + "name": "right_heel", + "x": 0.5158, + "y": 0.9263, + "confidence": 0.667 + }, + { + "name": "left_foot_index", + "x": 0.5113, + "y": 0.9546, + "confidence": 0.893 + }, + { + "name": "right_foot_index", + "x": 0.4875, + "y": 0.9568, + "confidence": 0.892 + } + ] + } + ] + }, + { + "frame_index": 59, + "timestamp": 0.9833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0682, + "acceleration": 3.4139, + "fluidity": 0.027, + "expansion": 0.221, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0001, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5208, + "y": 0.2795, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5233, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5254, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5276, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5159, + "y": 0.269, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5126, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5091, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5295, + "y": 0.2809, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5025, + "y": 0.2779, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.524, + "y": 0.296, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5148, + "y": 0.2942, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.546, + "y": 0.3619, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4795, + "y": 0.3705, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5854, + "y": 0.3908, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4313, + "y": 0.4133, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6293, + "y": 0.4297, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3776, + "y": 0.431, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.6425, + "y": 0.4533, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3631, + "y": 0.4507, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.6387, + "y": 0.4561, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.363, + "y": 0.4489, + "confidence": 0.983 + }, + { + "name": "left_thumb", + "x": 0.6313, + "y": 0.4512, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3673, + "y": 0.4423, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.533, + "y": 0.5655, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4949, + "y": 0.5689, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5242, + "y": 0.7448, + "confidence": 0.93 + }, + { + "name": "right_knee", + "x": 0.4984, + "y": 0.7402, + "confidence": 0.907 + }, + { + "name": "left_ankle", + "x": 0.5206, + "y": 0.9012, + "confidence": 0.915 + }, + { + "name": "right_ankle", + "x": 0.5085, + "y": 0.9023, + "confidence": 0.897 + }, + { + "name": "left_heel", + "x": 0.5246, + "y": 0.9273, + "confidence": 0.667 + }, + { + "name": "right_heel", + "x": 0.5171, + "y": 0.9287, + "confidence": 0.683 + }, + { + "name": "left_foot_index", + "x": 0.5122, + "y": 0.957, + "confidence": 0.898 + }, + { + "name": "right_foot_index", + "x": 0.488, + "y": 0.959, + "confidence": 0.895 + } + ] + } + ] + }, + { + "frame_index": 60, + "timestamp": 1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2742, + "acceleration": 14.0939, + "fluidity": 0.024, + "expansion": 0.224, + "total_displacement": 0.0152, + "center_displacement": { + "x": 0.0002, + "y": 0.0152 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5233, + "y": 0.2939, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5252, + "y": 0.2833, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5272, + "y": 0.2839, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5292, + "y": 0.2846, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5178, + "y": 0.282, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5144, + "y": 0.2819, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5109, + "y": 0.2819, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5298, + "y": 0.2917, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5038, + "y": 0.2876, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5258, + "y": 0.31, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5172, + "y": 0.3092, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5465, + "y": 0.374, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4793, + "y": 0.3846, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5862, + "y": 0.4081, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4302, + "y": 0.4242, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6329, + "y": 0.4323, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3775, + "y": 0.4379, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.6467, + "y": 0.4537, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3627, + "y": 0.4564, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.6449, + "y": 0.4566, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3627, + "y": 0.4533, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.6388, + "y": 0.4517, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.367, + "y": 0.4472, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.5337, + "y": 0.5832, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4947, + "y": 0.586, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5323, + "y": 0.7568, + "confidence": 0.934 + }, + { + "name": "right_knee", + "x": 0.4975, + "y": 0.7521, + "confidence": 0.912 + }, + { + "name": "left_ankle", + "x": 0.5362, + "y": 0.9048, + "confidence": 0.92 + }, + { + "name": "right_ankle", + "x": 0.5126, + "y": 0.9094, + "confidence": 0.904 + }, + { + "name": "left_heel", + "x": 0.5345, + "y": 0.9282, + "confidence": 0.683 + }, + { + "name": "right_heel", + "x": 0.5214, + "y": 0.9302, + "confidence": 0.701 + }, + { + "name": "left_foot_index", + "x": 0.5457, + "y": 0.9552, + "confidence": 0.904 + }, + { + "name": "right_foot_index", + "x": 0.4914, + "y": 0.9599, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 61, + "timestamp": 1.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1473, + "acceleration": 16.7262, + "fluidity": 0.021, + "expansion": 0.224, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0002, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5237, + "y": 0.2977, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5255, + "y": 0.2866, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5276, + "y": 0.2872, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5296, + "y": 0.288, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5181, + "y": 0.2855, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5147, + "y": 0.2854, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5112, + "y": 0.2856, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5301, + "y": 0.2946, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5039, + "y": 0.2915, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5264, + "y": 0.3136, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5178, + "y": 0.3123, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5467, + "y": 0.3756, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4792, + "y": 0.3878, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5864, + "y": 0.4083, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4302, + "y": 0.4279, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.6339, + "y": 0.4332, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3772, + "y": 0.4427, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.6472, + "y": 0.454, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3624, + "y": 0.4606, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.6457, + "y": 0.457, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3622, + "y": 0.4585, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.6402, + "y": 0.4518, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3668, + "y": 0.4523, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.5343, + "y": 0.5858, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4946, + "y": 0.5894, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5351, + "y": 0.761, + "confidence": 0.939 + }, + { + "name": "right_knee", + "x": 0.4969, + "y": 0.7553, + "confidence": 0.919 + }, + { + "name": "left_ankle", + "x": 0.5385, + "y": 0.9049, + "confidence": 0.926 + }, + { + "name": "right_ankle", + "x": 0.5123, + "y": 0.9108, + "confidence": 0.911 + }, + { + "name": "left_heel", + "x": 0.5355, + "y": 0.9269, + "confidence": 0.701 + }, + { + "name": "right_heel", + "x": 0.5214, + "y": 0.9299, + "confidence": 0.722 + }, + { + "name": "left_foot_index", + "x": 0.5488, + "y": 0.9535, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.4932, + "y": 0.9603, + "confidence": 0.908 + } + ] + } + ] + }, + { + "frame_index": 62, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3326, + "acceleration": 18.7372, + "fluidity": 0.018, + "expansion": 0.227, + "total_displacement": 0.014, + "center_displacement": { + "x": 0.0009, + "y": 0.014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5256, + "y": 0.315, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5273, + "y": 0.3029, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5293, + "y": 0.3032, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5313, + "y": 0.3036, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5198, + "y": 0.3017, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5165, + "y": 0.3015, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5127, + "y": 0.3012, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5308, + "y": 0.3092, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.505, + "y": 0.3058, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5279, + "y": 0.331, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5199, + "y": 0.3299, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5481, + "y": 0.3953, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4792, + "y": 0.4039, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5902, + "y": 0.4251, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4294, + "y": 0.4368, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.6393, + "y": 0.438, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3767, + "y": 0.4472, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.6525, + "y": 0.4548, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3621, + "y": 0.4634, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.6522, + "y": 0.4571, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3618, + "y": 0.461, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.6477, + "y": 0.4521, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3664, + "y": 0.4554, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.5362, + "y": 0.5956, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4947, + "y": 0.5997, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5484, + "y": 0.7602, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.4941, + "y": 0.7598, + "confidence": 0.924 + }, + { + "name": "left_ankle", + "x": 0.5599, + "y": 0.9046, + "confidence": 0.93 + }, + { + "name": "right_ankle", + "x": 0.5138, + "y": 0.9172, + "confidence": 0.917 + }, + { + "name": "left_heel", + "x": 0.553, + "y": 0.9271, + "confidence": 0.718 + }, + { + "name": "right_heel", + "x": 0.5241, + "y": 0.941, + "confidence": 0.738 + }, + { + "name": "left_foot_index", + "x": 0.5837, + "y": 0.9499, + "confidence": 0.916 + }, + { + "name": "right_foot_index", + "x": 0.4915, + "y": 0.9613, + "confidence": 0.913 + } + ] + } + ] + }, + { + "frame_index": 63, + "timestamp": 1.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2302, + "acceleration": 22.5006, + "fluidity": 0.016, + "expansion": 0.227, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0002, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5261, + "y": 0.318, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.528, + "y": 0.3063, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5302, + "y": 0.307, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5323, + "y": 0.3077, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5202, + "y": 0.3048, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.517, + "y": 0.3047, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5132, + "y": 0.3047, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.532, + "y": 0.3132, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5056, + "y": 0.3105, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5286, + "y": 0.3339, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5205, + "y": 0.3323, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5484, + "y": 0.3978, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4792, + "y": 0.4073, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5911, + "y": 0.4273, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4293, + "y": 0.4407, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.641, + "y": 0.4425, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.376, + "y": 0.4508, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.6536, + "y": 0.4571, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3618, + "y": 0.4652, + "confidence": 0.982 + }, + { + "name": "left_index", + "x": 0.6535, + "y": 0.459, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3615, + "y": 0.4632, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.6491, + "y": 0.4548, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3662, + "y": 0.4586, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.5368, + "y": 0.598, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4946, + "y": 0.6025, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5498, + "y": 0.7609, + "confidence": 0.945 + }, + { + "name": "right_knee", + "x": 0.4929, + "y": 0.7639, + "confidence": 0.93 + }, + { + "name": "left_ankle", + "x": 0.562, + "y": 0.9039, + "confidence": 0.935 + }, + { + "name": "right_ankle", + "x": 0.5146, + "y": 0.919, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.5541, + "y": 0.9271, + "confidence": 0.737 + }, + { + "name": "right_heel", + "x": 0.5252, + "y": 0.9433, + "confidence": 0.757 + }, + { + "name": "left_foot_index", + "x": 0.5861, + "y": 0.948, + "confidence": 0.922 + }, + { + "name": "right_foot_index", + "x": 0.491, + "y": 0.9613, + "confidence": 0.919 + } + ] + } + ] + }, + { + "frame_index": 64, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1843, + "acceleration": 16.5828, + "fluidity": 0.014, + "expansion": 0.227, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0001, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.526, + "y": 0.3169, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.528, + "y": 0.3065, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5302, + "y": 0.3072, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5324, + "y": 0.3079, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5202, + "y": 0.3048, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5169, + "y": 0.3043, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5133, + "y": 0.3039, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5323, + "y": 0.3132, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5057, + "y": 0.3096, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5288, + "y": 0.3329, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5203, + "y": 0.3314, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5487, + "y": 0.4005, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4792, + "y": 0.4087, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5921, + "y": 0.43, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4294, + "y": 0.4417, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.641, + "y": 0.444, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3759, + "y": 0.4509, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.6538, + "y": 0.4592, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3618, + "y": 0.4659, + "confidence": 0.982 + }, + { + "name": "left_index", + "x": 0.6536, + "y": 0.4601, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3615, + "y": 0.4643, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.6491, + "y": 0.4557, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3662, + "y": 0.4596, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.537, + "y": 0.5966, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4946, + "y": 0.6015, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5495, + "y": 0.7611, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.4927, + "y": 0.7637, + "confidence": 0.935 + }, + { + "name": "left_ankle", + "x": 0.5622, + "y": 0.9038, + "confidence": 0.939 + }, + { + "name": "right_ankle", + "x": 0.5151, + "y": 0.9204, + "confidence": 0.93 + }, + { + "name": "left_heel", + "x": 0.5554, + "y": 0.9272, + "confidence": 0.755 + }, + { + "name": "right_heel", + "x": 0.5256, + "y": 0.9448, + "confidence": 0.773 + }, + { + "name": "left_foot_index", + "x": 0.5868, + "y": 0.9477, + "confidence": 0.927 + }, + { + "name": "right_foot_index", + "x": 0.4907, + "y": 0.9622, + "confidence": 0.925 + } + ] + } + ] + }, + { + "frame_index": 65, + "timestamp": 1.0833333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3474, + "acceleration": 23.6838, + "fluidity": 0.012, + "expansion": 0.231, + "total_displacement": 0.0107, + "center_displacement": { + "x": 0.0017, + "y": 0.0106 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5266, + "y": 0.3298, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5291, + "y": 0.3191, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5315, + "y": 0.3195, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5338, + "y": 0.3199, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.521, + "y": 0.3175, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5178, + "y": 0.3171, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5142, + "y": 0.3169, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5339, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5071, + "y": 0.3226, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5293, + "y": 0.3455, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5209, + "y": 0.3442, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5503, + "y": 0.4097, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4807, + "y": 0.4185, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5954, + "y": 0.4329, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4294, + "y": 0.4443, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6438, + "y": 0.445, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3754, + "y": 0.4524, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.657, + "y": 0.4594, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3618, + "y": 0.4668, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.6573, + "y": 0.4601, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3615, + "y": 0.4659, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.6522, + "y": 0.456, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3662, + "y": 0.4617, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.5395, + "y": 0.6081, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4956, + "y": 0.6133, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5599, + "y": 0.762, + "confidence": 0.952 + }, + { + "name": "right_knee", + "x": 0.4881, + "y": 0.7666, + "confidence": 0.94 + }, + { + "name": "left_ankle", + "x": 0.5825, + "y": 0.9036, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.5161, + "y": 0.9231, + "confidence": 0.936 + }, + { + "name": "left_heel", + "x": 0.5792, + "y": 0.926, + "confidence": 0.772 + }, + { + "name": "right_heel", + "x": 0.5274, + "y": 0.947, + "confidence": 0.79 + }, + { + "name": "left_foot_index", + "x": 0.6108, + "y": 0.9477, + "confidence": 0.933 + }, + { + "name": "right_foot_index", + "x": 0.4898, + "y": 0.9632, + "confidence": 0.931 + } + ] + } + ] + }, + { + "frame_index": 66, + "timestamp": 1.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2075, + "acceleration": 24.309, + "fluidity": 0.01, + "expansion": 0.231, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5265, + "y": 0.3288, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5288, + "y": 0.3197, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5312, + "y": 0.3204, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5335, + "y": 0.321, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5208, + "y": 0.3186, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5175, + "y": 0.3186, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.514, + "y": 0.3187, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5345, + "y": 0.3274, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5073, + "y": 0.3248, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5291, + "y": 0.3445, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5206, + "y": 0.3437, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5513, + "y": 0.4122, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4823, + "y": 0.4193, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5971, + "y": 0.4325, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.431, + "y": 0.4444, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6446, + "y": 0.4448, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3756, + "y": 0.4509, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.6584, + "y": 0.4596, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3624, + "y": 0.4661, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.6584, + "y": 0.4601, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3621, + "y": 0.4651, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.6532, + "y": 0.456, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3669, + "y": 0.4605, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5402, + "y": 0.6076, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4964, + "y": 0.6126, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5608, + "y": 0.7612, + "confidence": 0.955 + }, + { + "name": "right_knee", + "x": 0.4865, + "y": 0.7662, + "confidence": 0.945 + }, + { + "name": "left_ankle", + "x": 0.5836, + "y": 0.9024, + "confidence": 0.948 + }, + { + "name": "right_ankle", + "x": 0.5164, + "y": 0.9246, + "confidence": 0.942 + }, + { + "name": "left_heel", + "x": 0.5813, + "y": 0.9221, + "confidence": 0.789 + }, + { + "name": "right_heel", + "x": 0.5278, + "y": 0.9482, + "confidence": 0.806 + }, + { + "name": "left_foot_index", + "x": 0.6125, + "y": 0.9477, + "confidence": 0.938 + }, + { + "name": "right_foot_index", + "x": 0.4893, + "y": 0.9638, + "confidence": 0.936 + } + ] + } + ] + }, + { + "frame_index": 67, + "timestamp": 1.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2556, + "acceleration": 19.3749, + "fluidity": 0.009, + "expansion": 0.235, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0022, + "y": 0.0042 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5278, + "y": 0.3324, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5304, + "y": 0.3235, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5329, + "y": 0.3244, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5353, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5224, + "y": 0.3221, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5192, + "y": 0.3222, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5156, + "y": 0.3225, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5367, + "y": 0.3318, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5096, + "y": 0.3299, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5308, + "y": 0.3482, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5221, + "y": 0.3479, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5537, + "y": 0.4172, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4848, + "y": 0.4231, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.601, + "y": 0.4335, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4321, + "y": 0.4429, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6481, + "y": 0.4405, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3771, + "y": 0.4505, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.6631, + "y": 0.4544, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3643, + "y": 0.4627, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.6633, + "y": 0.4543, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3638, + "y": 0.4615, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.6575, + "y": 0.4503, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3689, + "y": 0.4583, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.542, + "y": 0.611, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4983, + "y": 0.6174, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5674, + "y": 0.7603, + "confidence": 0.958 + }, + { + "name": "right_knee", + "x": 0.4863, + "y": 0.7684, + "confidence": 0.949 + }, + { + "name": "left_ankle", + "x": 0.6012, + "y": 0.9004, + "confidence": 0.952 + }, + { + "name": "right_ankle", + "x": 0.5165, + "y": 0.9267, + "confidence": 0.947 + }, + { + "name": "left_heel", + "x": 0.5979, + "y": 0.9157, + "confidence": 0.805 + }, + { + "name": "right_heel", + "x": 0.5277, + "y": 0.9518, + "confidence": 0.821 + }, + { + "name": "left_foot_index", + "x": 0.6288, + "y": 0.9476, + "confidence": 0.942 + }, + { + "name": "right_foot_index", + "x": 0.4889, + "y": 0.9645, + "confidence": 0.941 + } + ] + } + ] + }, + { + "frame_index": 68, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2341, + "acceleration": 19.2053, + "fluidity": 0.008, + "expansion": 0.237, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0014, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5281, + "y": 0.3342, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5307, + "y": 0.3244, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5333, + "y": 0.3254, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5358, + "y": 0.3264, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5228, + "y": 0.3234, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5196, + "y": 0.3236, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5161, + "y": 0.3241, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5377, + "y": 0.3337, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5105, + "y": 0.3324, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5316, + "y": 0.3491, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5228, + "y": 0.3489, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5553, + "y": 0.4197, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4864, + "y": 0.4249, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6026, + "y": 0.4356, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4331, + "y": 0.4418, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6501, + "y": 0.4391, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3773, + "y": 0.4483, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.6648, + "y": 0.454, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3642, + "y": 0.4607, + "confidence": 0.985 + }, + { + "name": "left_index", + "x": 0.6649, + "y": 0.4538, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.3637, + "y": 0.4594, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.6597, + "y": 0.4493, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3688, + "y": 0.4566, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5431, + "y": 0.6124, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4997, + "y": 0.6179, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5689, + "y": 0.7598, + "confidence": 0.96 + }, + { + "name": "right_knee", + "x": 0.4864, + "y": 0.7698, + "confidence": 0.953 + }, + { + "name": "left_ankle", + "x": 0.6023, + "y": 0.8996, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.5162, + "y": 0.9276, + "confidence": 0.951 + }, + { + "name": "left_heel", + "x": 0.5988, + "y": 0.9137, + "confidence": 0.819 + }, + { + "name": "right_heel", + "x": 0.527, + "y": 0.9524, + "confidence": 0.834 + }, + { + "name": "left_foot_index", + "x": 0.6302, + "y": 0.9476, + "confidence": 0.946 + }, + { + "name": "right_foot_index", + "x": 0.4887, + "y": 0.965, + "confidence": 0.945 + } + ] + } + ] + }, + { + "frame_index": 69, + "timestamp": 1.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1887, + "acceleration": 16.7469, + "fluidity": 0.007, + "expansion": 0.237, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0005, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5293, + "y": 0.3355, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5315, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5341, + "y": 0.3261, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5365, + "y": 0.3271, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5237, + "y": 0.3242, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5206, + "y": 0.3244, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.517, + "y": 0.3247, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5381, + "y": 0.3352, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5109, + "y": 0.3334, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5332, + "y": 0.3505, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5241, + "y": 0.3501, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5561, + "y": 0.4206, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4866, + "y": 0.4266, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6027, + "y": 0.4376, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4331, + "y": 0.4415, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6501, + "y": 0.4384, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3775, + "y": 0.447, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.6647, + "y": 0.4532, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3642, + "y": 0.4594, + "confidence": 0.985 + }, + { + "name": "left_index", + "x": 0.6647, + "y": 0.4529, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3636, + "y": 0.458, + "confidence": 0.988 + }, + { + "name": "left_thumb", + "x": 0.6595, + "y": 0.4486, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.3688, + "y": 0.4554, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5438, + "y": 0.6124, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5001, + "y": 0.6184, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5692, + "y": 0.7573, + "confidence": 0.962 + }, + { + "name": "right_knee", + "x": 0.4864, + "y": 0.7692, + "confidence": 0.956 + }, + { + "name": "left_ankle", + "x": 0.6023, + "y": 0.8985, + "confidence": 0.958 + }, + { + "name": "right_ankle", + "x": 0.516, + "y": 0.9279, + "confidence": 0.955 + }, + { + "name": "left_heel", + "x": 0.5989, + "y": 0.9127, + "confidence": 0.831 + }, + { + "name": "right_heel", + "x": 0.5265, + "y": 0.9525, + "confidence": 0.845 + }, + { + "name": "left_foot_index", + "x": 0.6312, + "y": 0.9476, + "confidence": 0.949 + }, + { + "name": "right_foot_index", + "x": 0.4886, + "y": 0.9654, + "confidence": 0.948 + } + ] + } + ] + }, + { + "frame_index": 70, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2467, + "acceleration": 17.5968, + "fluidity": 0.006, + "expansion": 0.242, + "total_displacement": 0.0051, + "center_displacement": { + "x": 0.0043, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5331, + "y": 0.3336, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5359, + "y": 0.3232, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5384, + "y": 0.3242, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5405, + "y": 0.325, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5278, + "y": 0.3219, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5245, + "y": 0.322, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.521, + "y": 0.3222, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5422, + "y": 0.3333, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5146, + "y": 0.3304, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5371, + "y": 0.3488, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5276, + "y": 0.3479, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5591, + "y": 0.4171, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4901, + "y": 0.4226, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.605, + "y": 0.4352, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4387, + "y": 0.4354, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6534, + "y": 0.4299, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3804, + "y": 0.4347, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.6692, + "y": 0.4402, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.3673, + "y": 0.4458, + "confidence": 0.986 + }, + { + "name": "left_index", + "x": 0.6696, + "y": 0.4405, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3664, + "y": 0.4454, + "confidence": 0.988 + }, + { + "name": "left_thumb", + "x": 0.6641, + "y": 0.4376, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3718, + "y": 0.4428, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.5493, + "y": 0.6107, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5054, + "y": 0.6164, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5764, + "y": 0.7543, + "confidence": 0.965 + }, + { + "name": "right_knee", + "x": 0.4885, + "y": 0.7683, + "confidence": 0.959 + }, + { + "name": "left_ankle", + "x": 0.6107, + "y": 0.8953, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.5167, + "y": 0.9293, + "confidence": 0.959 + }, + { + "name": "left_heel", + "x": 0.6083, + "y": 0.9118, + "confidence": 0.844 + }, + { + "name": "right_heel", + "x": 0.5267, + "y": 0.9546, + "confidence": 0.857 + }, + { + "name": "left_foot_index", + "x": 0.6387, + "y": 0.9443, + "confidence": 0.953 + }, + { + "name": "right_foot_index", + "x": 0.4887, + "y": 0.9654, + "confidence": 0.952 + } + ] + } + ] + }, + { + "frame_index": 71, + "timestamp": 1.1833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1893, + "acceleration": 16.6994, + "fluidity": 0.005, + "expansion": 0.242, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0012, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5328, + "y": 0.3317, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5356, + "y": 0.3212, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5382, + "y": 0.3221, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5406, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5277, + "y": 0.3197, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5244, + "y": 0.3198, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5211, + "y": 0.3199, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5432, + "y": 0.3315, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5153, + "y": 0.3281, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5368, + "y": 0.3473, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5274, + "y": 0.3459, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5606, + "y": 0.4163, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4914, + "y": 0.4205, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6068, + "y": 0.4339, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4399, + "y": 0.4334, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6549, + "y": 0.4271, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3817, + "y": 0.4318, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.6705, + "y": 0.4376, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3681, + "y": 0.4422, + "confidence": 0.986 + }, + { + "name": "left_index", + "x": 0.671, + "y": 0.4379, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.3671, + "y": 0.4414, + "confidence": 0.989 + }, + { + "name": "left_thumb", + "x": 0.6656, + "y": 0.4348, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3728, + "y": 0.4389, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.55, + "y": 0.6102, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5066, + "y": 0.6162, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5767, + "y": 0.7523, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.4906, + "y": 0.7674, + "confidence": 0.963 + }, + { + "name": "left_ankle", + "x": 0.6118, + "y": 0.8929, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.517, + "y": 0.9285, + "confidence": 0.962 + }, + { + "name": "left_heel", + "x": 0.6096, + "y": 0.9096, + "confidence": 0.856 + }, + { + "name": "right_heel", + "x": 0.5263, + "y": 0.9543, + "confidence": 0.869 + }, + { + "name": "left_foot_index", + "x": 0.6394, + "y": 0.9426, + "confidence": 0.956 + }, + { + "name": "right_foot_index", + "x": 0.4894, + "y": 0.9651, + "confidence": 0.956 + } + ] + } + ] + }, + { + "frame_index": 72, + "timestamp": 1.2, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3096, + "acceleration": 20.6538, + "fluidity": 0.004, + "expansion": 0.248, + "total_displacement": 0.0102, + "center_displacement": { + "x": 0.0062, + "y": -0.0082 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5386, + "y": 0.3261, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5408, + "y": 0.3133, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5431, + "y": 0.3135, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5453, + "y": 0.3138, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5337, + "y": 0.313, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5309, + "y": 0.3132, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5283, + "y": 0.3133, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5466, + "y": 0.3215, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5221, + "y": 0.3204, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5423, + "y": 0.343, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5337, + "y": 0.3426, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5648, + "y": 0.4062, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4948, + "y": 0.4113, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.609, + "y": 0.4233, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4425, + "y": 0.4187, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6571, + "y": 0.413, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3834, + "y": 0.409, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.6753, + "y": 0.4211, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3696, + "y": 0.4218, + "confidence": 0.987 + }, + { + "name": "left_index", + "x": 0.6748, + "y": 0.4225, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3693, + "y": 0.4201, + "confidence": 0.989 + }, + { + "name": "left_thumb", + "x": 0.6686, + "y": 0.4201, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.3746, + "y": 0.417, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5581, + "y": 0.6032, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5155, + "y": 0.61, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.581, + "y": 0.7431, + "confidence": 0.969 + }, + { + "name": "right_knee", + "x": 0.4967, + "y": 0.7595, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.6135, + "y": 0.8878, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.5179, + "y": 0.9281, + "confidence": 0.966 + }, + { + "name": "left_heel", + "x": 0.6107, + "y": 0.9054, + "confidence": 0.867 + }, + { + "name": "right_heel", + "x": 0.5265, + "y": 0.953, + "confidence": 0.879 + }, + { + "name": "left_foot_index", + "x": 0.6373, + "y": 0.9413, + "confidence": 0.959 + }, + { + "name": "right_foot_index", + "x": 0.4896, + "y": 0.9649, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 73, + "timestamp": 1.2166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2555, + "acceleration": 18.7992, + "fluidity": 0.004, + "expansion": 0.249, + "total_displacement": 0.0046, + "center_displacement": { + "x": 0.001, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5399, + "y": 0.3221, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5419, + "y": 0.3101, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5441, + "y": 0.3103, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5463, + "y": 0.3106, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5348, + "y": 0.3099, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5321, + "y": 0.3101, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.529, + "y": 0.3103, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5478, + "y": 0.3183, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5226, + "y": 0.3171, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5439, + "y": 0.3392, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5351, + "y": 0.3385, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5664, + "y": 0.4021, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4961, + "y": 0.4054, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6118, + "y": 0.4214, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.443, + "y": 0.4151, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6586, + "y": 0.4113, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.3849, + "y": 0.4044, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.6757, + "y": 0.4199, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3712, + "y": 0.4185, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.6766, + "y": 0.4197, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3711, + "y": 0.4166, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.6706, + "y": 0.4179, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3763, + "y": 0.4126, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5598, + "y": 0.5989, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5148, + "y": 0.6062, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5819, + "y": 0.7403, + "confidence": 0.971 + }, + { + "name": "right_knee", + "x": 0.5008, + "y": 0.7591, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.6136, + "y": 0.8871, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.5183, + "y": 0.9273, + "confidence": 0.968 + }, + { + "name": "left_heel", + "x": 0.6104, + "y": 0.905, + "confidence": 0.876 + }, + { + "name": "right_heel", + "x": 0.5273, + "y": 0.9528, + "confidence": 0.888 + }, + { + "name": "left_foot_index", + "x": 0.6374, + "y": 0.9398, + "confidence": 0.962 + }, + { + "name": "right_foot_index", + "x": 0.49, + "y": 0.9648, + "confidence": 0.962 + } + ] + } + ] + }, + { + "frame_index": 74, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4263, + "acceleration": 24.1506, + "fluidity": 0.003, + "expansion": 0.252, + "total_displacement": 0.0158, + "center_displacement": { + "x": 0.0048, + "y": -0.0151 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5467, + "y": 0.301, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5495, + "y": 0.2885, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5519, + "y": 0.2887, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5541, + "y": 0.289, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5408, + "y": 0.2877, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5378, + "y": 0.2874, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5347, + "y": 0.2876, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5542, + "y": 0.296, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5284, + "y": 0.2958, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5496, + "y": 0.3189, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5401, + "y": 0.3185, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5712, + "y": 0.3831, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4994, + "y": 0.3862, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6135, + "y": 0.4078, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4493, + "y": 0.3968, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6604, + "y": 0.3965, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.3908, + "y": 0.3865, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.68, + "y": 0.4051, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3752, + "y": 0.3981, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.6799, + "y": 0.4059, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3755, + "y": 0.396, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.6713, + "y": 0.4031, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3807, + "y": 0.3934, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5648, + "y": 0.5881, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5209, + "y": 0.5948, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5829, + "y": 0.7353, + "confidence": 0.972 + }, + { + "name": "right_knee", + "x": 0.5111, + "y": 0.7515, + "confidence": 0.968 + }, + { + "name": "left_ankle", + "x": 0.6125, + "y": 0.8846, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.5179, + "y": 0.92, + "confidence": 0.971 + }, + { + "name": "left_heel", + "x": 0.6085, + "y": 0.9018, + "confidence": 0.882 + }, + { + "name": "right_heel", + "x": 0.527, + "y": 0.9446, + "confidence": 0.895 + }, + { + "name": "left_foot_index", + "x": 0.631, + "y": 0.9408, + "confidence": 0.964 + }, + { + "name": "right_foot_index", + "x": 0.4915, + "y": 0.9647, + "confidence": 0.964 + } + ] + } + ] + }, + { + "frame_index": 75, + "timestamp": 1.25, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3465, + "acceleration": 24.24, + "fluidity": 0.003, + "expansion": 0.252, + "total_displacement": 0.0066, + "center_displacement": { + "x": 0.0025, + "y": -0.0061 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5475, + "y": 0.2968, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5506, + "y": 0.284, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5531, + "y": 0.2842, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5553, + "y": 0.2847, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5423, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5392, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5365, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5562, + "y": 0.293, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5304, + "y": 0.2903, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5508, + "y": 0.315, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5416, + "y": 0.3137, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5739, + "y": 0.3794, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5009, + "y": 0.382, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6163, + "y": 0.4052, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4506, + "y": 0.3946, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6642, + "y": 0.3941, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.3927, + "y": 0.3853, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.6805, + "y": 0.4013, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.3769, + "y": 0.3962, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.6817, + "y": 0.4013, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.377, + "y": 0.3937, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.675, + "y": 0.3997, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.382, + "y": 0.3914, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5686, + "y": 0.5801, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5229, + "y": 0.5865, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5837, + "y": 0.733, + "confidence": 0.974 + }, + { + "name": "right_knee", + "x": 0.5143, + "y": 0.7414, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6117, + "y": 0.8841, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.5176, + "y": 0.918, + "confidence": 0.973 + }, + { + "name": "left_heel", + "x": 0.6091, + "y": 0.9027, + "confidence": 0.887 + }, + { + "name": "right_heel", + "x": 0.5268, + "y": 0.9443, + "confidence": 0.901 + }, + { + "name": "left_foot_index", + "x": 0.6287, + "y": 0.9409, + "confidence": 0.967 + }, + { + "name": "right_foot_index", + "x": 0.4923, + "y": 0.9642, + "confidence": 0.967 + } + ] + } + ] + }, + { + "frame_index": 76, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.287, + "acceleration": 20.9195, + "fluidity": 0.003, + "expansion": 0.252, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.0004, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5489, + "y": 0.2947, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5517, + "y": 0.2821, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5541, + "y": 0.2824, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5563, + "y": 0.2829, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5436, + "y": 0.2817, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5407, + "y": 0.2817, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5377, + "y": 0.2818, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5571, + "y": 0.2908, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5311, + "y": 0.2886, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.553, + "y": 0.3123, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5435, + "y": 0.3111, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5749, + "y": 0.3784, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5026, + "y": 0.3803, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6174, + "y": 0.4023, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4505, + "y": 0.396, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6641, + "y": 0.3933, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.3922, + "y": 0.3844, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6796, + "y": 0.4001, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3773, + "y": 0.3959, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.6807, + "y": 0.3997, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.3772, + "y": 0.3941, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6743, + "y": 0.3982, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3822, + "y": 0.392, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5681, + "y": 0.5775, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5223, + "y": 0.5838, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5845, + "y": 0.7336, + "confidence": 0.975 + }, + { + "name": "right_knee", + "x": 0.516, + "y": 0.7412, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6121, + "y": 0.8841, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.5175, + "y": 0.9157, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6094, + "y": 0.9025, + "confidence": 0.89 + }, + { + "name": "right_heel", + "x": 0.5267, + "y": 0.9428, + "confidence": 0.906 + }, + { + "name": "left_foot_index", + "x": 0.6278, + "y": 0.9411, + "confidence": 0.969 + }, + { + "name": "right_foot_index", + "x": 0.4927, + "y": 0.9642, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 77, + "timestamp": 1.2833333333333332, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4378, + "acceleration": 25.8977, + "fluidity": 0.002, + "expansion": 0.251, + "total_displacement": 0.0115, + "center_displacement": { + "x": 0.0046, + "y": -0.0106 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5525, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5556, + "y": 0.2738, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.558, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5601, + "y": 0.2748, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5477, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5445, + "y": 0.2723, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5418, + "y": 0.2719, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5614, + "y": 0.2827, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5366, + "y": 0.2779, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5564, + "y": 0.3034, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5469, + "y": 0.3021, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5804, + "y": 0.3687, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5077, + "y": 0.3695, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6226, + "y": 0.3996, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4562, + "y": 0.3863, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6697, + "y": 0.3858, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.402, + "y": 0.375, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6852, + "y": 0.3909, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3836, + "y": 0.3841, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.687, + "y": 0.3887, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.383, + "y": 0.3787, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6807, + "y": 0.3877, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3888, + "y": 0.377, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.572, + "y": 0.567, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5263, + "y": 0.5726, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5862, + "y": 0.7293, + "confidence": 0.976 + }, + { + "name": "right_knee", + "x": 0.5218, + "y": 0.7345, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6103, + "y": 0.8842, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.5175, + "y": 0.9045, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.608, + "y": 0.9025, + "confidence": 0.888 + }, + { + "name": "right_heel", + "x": 0.5267, + "y": 0.927, + "confidence": 0.905 + }, + { + "name": "left_foot_index", + "x": 0.6208, + "y": 0.9423, + "confidence": 0.969 + }, + { + "name": "right_foot_index", + "x": 0.4945, + "y": 0.961, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 78, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3163, + "acceleration": 25.2215, + "fluidity": 0.002, + "expansion": 0.252, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0009, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5537, + "y": 0.2827, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5566, + "y": 0.271, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5592, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5614, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5485, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5456, + "y": 0.269, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5424, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5627, + "y": 0.2804, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5368, + "y": 0.2749, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5575, + "y": 0.2994, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5482, + "y": 0.2974, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5803, + "y": 0.3659, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5091, + "y": 0.367, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6247, + "y": 0.3916, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4565, + "y": 0.3842, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6711, + "y": 0.3834, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4017, + "y": 0.3724, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6862, + "y": 0.3907, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3842, + "y": 0.3816, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.6874, + "y": 0.3892, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.3839, + "y": 0.3767, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6815, + "y": 0.3878, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3888, + "y": 0.3754, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.573, + "y": 0.5636, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5276, + "y": 0.569, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.587, + "y": 0.7277, + "confidence": 0.976 + }, + { + "name": "right_knee", + "x": 0.5227, + "y": 0.7356, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6094, + "y": 0.8843, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.5174, + "y": 0.9023, + "confidence": 0.976 + }, + { + "name": "left_heel", + "x": 0.6065, + "y": 0.9026, + "confidence": 0.887 + }, + { + "name": "right_heel", + "x": 0.5266, + "y": 0.924, + "confidence": 0.905 + }, + { + "name": "left_foot_index", + "x": 0.6182, + "y": 0.9424, + "confidence": 0.97 + }, + { + "name": "right_foot_index", + "x": 0.495, + "y": 0.9601, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 79, + "timestamp": 1.3166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.37, + "acceleration": 21.6826, + "fluidity": 0.002, + "expansion": 0.25, + "total_displacement": 0.0073, + "center_displacement": { + "x": 0.0059, + "y": -0.0044 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5605, + "y": 0.2769, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5626, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5649, + "y": 0.2657, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.567, + "y": 0.266, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5549, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5517, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.549, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5681, + "y": 0.2731, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5436, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5643, + "y": 0.2924, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5553, + "y": 0.2917, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5883, + "y": 0.3631, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5146, + "y": 0.3615, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6316, + "y": 0.3891, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.461, + "y": 0.3748, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6788, + "y": 0.3774, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4072, + "y": 0.3645, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6939, + "y": 0.3844, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3895, + "y": 0.3747, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.6959, + "y": 0.3817, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.3895, + "y": 0.3692, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6893, + "y": 0.3804, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3949, + "y": 0.3677, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5778, + "y": 0.5606, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5328, + "y": 0.5628, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5904, + "y": 0.7199, + "confidence": 0.976 + }, + { + "name": "right_knee", + "x": 0.5232, + "y": 0.7139, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6084, + "y": 0.8841, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.527, + "y": 0.8876, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6064, + "y": 0.9026, + "confidence": 0.88 + }, + { + "name": "right_heel", + "x": 0.5373, + "y": 0.9058, + "confidence": 0.899 + }, + { + "name": "left_foot_index", + "x": 0.6144, + "y": 0.9445, + "confidence": 0.969 + }, + { + "name": "right_foot_index", + "x": 0.5163, + "y": 0.9555, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 80, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3128, + "acceleration": 22.8764, + "fluidity": 0.001, + "expansion": 0.25, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0017, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5593, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5618, + "y": 0.261, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5643, + "y": 0.2615, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5666, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.554, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5508, + "y": 0.2598, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5478, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5688, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5422, + "y": 0.2672, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5636, + "y": 0.2876, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5542, + "y": 0.2859, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5882, + "y": 0.3621, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5166, + "y": 0.3606, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6316, + "y": 0.387, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.462, + "y": 0.3714, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6801, + "y": 0.3764, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4065, + "y": 0.3637, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6955, + "y": 0.3843, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3896, + "y": 0.3739, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.6968, + "y": 0.3821, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.3895, + "y": 0.3708, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6909, + "y": 0.3808, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3942, + "y": 0.3694, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5804, + "y": 0.5589, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.535, + "y": 0.5613, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5911, + "y": 0.7196, + "confidence": 0.975 + }, + { + "name": "right_knee", + "x": 0.5228, + "y": 0.7123, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6077, + "y": 0.8834, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.5296, + "y": 0.8834, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6055, + "y": 0.9014, + "confidence": 0.874 + }, + { + "name": "right_heel", + "x": 0.5402, + "y": 0.9013, + "confidence": 0.897 + }, + { + "name": "left_foot_index", + "x": 0.6133, + "y": 0.9452, + "confidence": 0.969 + }, + { + "name": "right_foot_index", + "x": 0.5195, + "y": 0.9536, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 81, + "timestamp": 1.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2635, + "acceleration": 18.5316, + "fluidity": 0.001, + "expansion": 0.248, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5598, + "y": 0.2731, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5623, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5651, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5677, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5541, + "y": 0.2611, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5509, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5476, + "y": 0.2608, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5698, + "y": 0.2719, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5416, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5638, + "y": 0.2885, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5546, + "y": 0.2873, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5878, + "y": 0.3626, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5183, + "y": 0.3624, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.63, + "y": 0.3866, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4651, + "y": 0.3701, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6785, + "y": 0.3763, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4104, + "y": 0.3626, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6949, + "y": 0.3844, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3925, + "y": 0.3714, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.6954, + "y": 0.3824, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.3928, + "y": 0.3685, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6896, + "y": 0.3808, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.3977, + "y": 0.3672, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5795, + "y": 0.5595, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5346, + "y": 0.5621, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5915, + "y": 0.717, + "confidence": 0.975 + }, + { + "name": "right_knee", + "x": 0.5231, + "y": 0.7135, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.6074, + "y": 0.8835, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.5308, + "y": 0.8832, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6047, + "y": 0.9013, + "confidence": 0.864 + }, + { + "name": "right_heel", + "x": 0.5409, + "y": 0.9003, + "confidence": 0.89 + }, + { + "name": "left_foot_index", + "x": 0.6124, + "y": 0.9473, + "confidence": 0.968 + }, + { + "name": "right_foot_index", + "x": 0.5211, + "y": 0.9538, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 82, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3149, + "acceleration": 19.6532, + "fluidity": 0.001, + "expansion": 0.246, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0045, + "y": -0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5655, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5679, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5704, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5729, + "y": 0.2626, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5601, + "y": 0.2593, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5572, + "y": 0.2591, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5537, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5749, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5474, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5694, + "y": 0.286, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5605, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5937, + "y": 0.3612, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5241, + "y": 0.3608, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6368, + "y": 0.3868, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4712, + "y": 0.3708, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6838, + "y": 0.3759, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4172, + "y": 0.3592, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.6997, + "y": 0.384, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.3988, + "y": 0.3675, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7005, + "y": 0.3816, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.3989, + "y": 0.3637, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6945, + "y": 0.3801, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4047, + "y": 0.3627, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5826, + "y": 0.5571, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5378, + "y": 0.5571, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5928, + "y": 0.7187, + "confidence": 0.975 + }, + { + "name": "right_knee", + "x": 0.5246, + "y": 0.7021, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6073, + "y": 0.8851, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.5365, + "y": 0.8702, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6042, + "y": 0.9014, + "confidence": 0.853 + }, + { + "name": "right_heel", + "x": 0.5427, + "y": 0.8866, + "confidence": 0.882 + }, + { + "name": "left_foot_index", + "x": 0.6117, + "y": 0.9508, + "confidence": 0.968 + }, + { + "name": "right_foot_index", + "x": 0.5417, + "y": 0.9352, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 83, + "timestamp": 1.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2469, + "acceleration": 18.52, + "fluidity": 0.001, + "expansion": 0.246, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0012, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5667, + "y": 0.2696, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5685, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.571, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5736, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5606, + "y": 0.2579, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5577, + "y": 0.2579, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5542, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5756, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5477, + "y": 0.2671, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5707, + "y": 0.2846, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5617, + "y": 0.2847, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5951, + "y": 0.3604, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.525, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6373, + "y": 0.3882, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4713, + "y": 0.3681, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6851, + "y": 0.3758, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4185, + "y": 0.3593, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7013, + "y": 0.3834, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4012, + "y": 0.3667, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7015, + "y": 0.3804, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4011, + "y": 0.3631, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.6961, + "y": 0.3787, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4066, + "y": 0.3624, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5842, + "y": 0.5558, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5386, + "y": 0.5555, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5932, + "y": 0.7194, + "confidence": 0.974 + }, + { + "name": "right_knee", + "x": 0.5255, + "y": 0.6982, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6074, + "y": 0.8873, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.5373, + "y": 0.8641, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6039, + "y": 0.9025, + "confidence": 0.847 + }, + { + "name": "right_heel", + "x": 0.5433, + "y": 0.88, + "confidence": 0.874 + }, + { + "name": "left_foot_index", + "x": 0.6118, + "y": 0.9509, + "confidence": 0.968 + }, + { + "name": "right_foot_index", + "x": 0.5437, + "y": 0.9253, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 84, + "timestamp": 1.4, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2961, + "acceleration": 18.1139, + "fluidity": 0.001, + "expansion": 0.246, + "total_displacement": 0.006, + "center_displacement": { + "x": 0.006, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5713, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5741, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5768, + "y": 0.259, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5795, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5662, + "y": 0.2581, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5627, + "y": 0.2585, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5596, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.582, + "y": 0.2664, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5535, + "y": 0.2677, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5759, + "y": 0.2836, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5665, + "y": 0.2847, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6022, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5314, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6457, + "y": 0.3887, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4802, + "y": 0.3703, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6908, + "y": 0.375, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4258, + "y": 0.3577, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7062, + "y": 0.3815, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4086, + "y": 0.3656, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7071, + "y": 0.3785, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4077, + "y": 0.3615, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7009, + "y": 0.3773, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.414, + "y": 0.3605, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5891, + "y": 0.5568, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5443, + "y": 0.5544, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5969, + "y": 0.7196, + "confidence": 0.971 + }, + { + "name": "right_knee", + "x": 0.5272, + "y": 0.7007, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6077, + "y": 0.8904, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.543, + "y": 0.8603, + "confidence": 0.972 + }, + { + "name": "left_heel", + "x": 0.6038, + "y": 0.904, + "confidence": 0.833 + }, + { + "name": "right_heel", + "x": 0.5504, + "y": 0.877, + "confidence": 0.862 + }, + { + "name": "left_foot_index", + "x": 0.6119, + "y": 0.9507, + "confidence": 0.963 + }, + { + "name": "right_foot_index", + "x": 0.5472, + "y": 0.9147, + "confidence": 0.965 + } + ] + } + ] + }, + { + "frame_index": 85, + "timestamp": 1.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2422, + "acceleration": 17.7934, + "fluidity": 0.001, + "expansion": 0.245, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0018, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5727, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5749, + "y": 0.2587, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5774, + "y": 0.2591, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.58, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5669, + "y": 0.2585, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5635, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5601, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5825, + "y": 0.2666, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5541, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5771, + "y": 0.2842, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5678, + "y": 0.2847, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6029, + "y": 0.3597, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5327, + "y": 0.3611, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6455, + "y": 0.3893, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.48, + "y": 0.372, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6913, + "y": 0.3754, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4261, + "y": 0.3585, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7077, + "y": 0.3819, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4089, + "y": 0.3657, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7081, + "y": 0.3789, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.409, + "y": 0.3616, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7025, + "y": 0.3777, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4149, + "y": 0.3608, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5916, + "y": 0.5567, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5471, + "y": 0.5546, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5986, + "y": 0.7202, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.5288, + "y": 0.6988, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6082, + "y": 0.8905, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.5443, + "y": 0.858, + "confidence": 0.969 + }, + { + "name": "left_heel", + "x": 0.6038, + "y": 0.904, + "confidence": 0.817 + }, + { + "name": "right_heel", + "x": 0.5517, + "y": 0.8749, + "confidence": 0.855 + }, + { + "name": "left_foot_index", + "x": 0.6122, + "y": 0.9494, + "confidence": 0.957 + }, + { + "name": "right_foot_index", + "x": 0.5478, + "y": 0.9148, + "confidence": 0.962 + } + ] + } + ] + }, + { + "frame_index": 86, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2775, + "acceleration": 16.8129, + "fluidity": 0.001, + "expansion": 0.244, + "total_displacement": 0.0054, + "center_displacement": { + "x": 0.0054, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5773, + "y": 0.2678, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5797, + "y": 0.2569, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5825, + "y": 0.2572, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5852, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5719, + "y": 0.2572, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5688, + "y": 0.2578, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5658, + "y": 0.2587, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5881, + "y": 0.2652, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5599, + "y": 0.2669, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5818, + "y": 0.2825, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5726, + "y": 0.2834, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6084, + "y": 0.3593, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5379, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.651, + "y": 0.3897, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4874, + "y": 0.3723, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6966, + "y": 0.3749, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.431, + "y": 0.3579, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7117, + "y": 0.3813, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4133, + "y": 0.3654, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7119, + "y": 0.3783, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4132, + "y": 0.3616, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7064, + "y": 0.3771, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4189, + "y": 0.3605, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5971, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5525, + "y": 0.5562, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6015, + "y": 0.7197, + "confidence": 0.957 + }, + { + "name": "right_knee", + "x": 0.5299, + "y": 0.6926, + "confidence": 0.974 + }, + { + "name": "left_ankle", + "x": 0.6083, + "y": 0.8899, + "confidence": 0.954 + }, + { + "name": "right_ankle", + "x": 0.5549, + "y": 0.8551, + "confidence": 0.96 + }, + { + "name": "left_heel", + "x": 0.6036, + "y": 0.902, + "confidence": 0.785 + }, + { + "name": "right_heel", + "x": 0.5654, + "y": 0.8706, + "confidence": 0.836 + }, + { + "name": "left_foot_index", + "x": 0.6108, + "y": 0.9483, + "confidence": 0.943 + }, + { + "name": "right_foot_index", + "x": 0.5633, + "y": 0.9155, + "confidence": 0.953 + } + ] + } + ] + }, + { + "frame_index": 87, + "timestamp": 1.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2242, + "acceleration": 16.8323, + "fluidity": 0.001, + "expansion": 0.244, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0013, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5779, + "y": 0.2689, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5802, + "y": 0.258, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5827, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5852, + "y": 0.2585, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5724, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5692, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5659, + "y": 0.2595, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5882, + "y": 0.2656, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5602, + "y": 0.2673, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5825, + "y": 0.2835, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5735, + "y": 0.2844, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6092, + "y": 0.3595, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5394, + "y": 0.3601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6518, + "y": 0.3898, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4881, + "y": 0.372, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6976, + "y": 0.3745, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.432, + "y": 0.3578, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7135, + "y": 0.381, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4145, + "y": 0.3648, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7132, + "y": 0.3778, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4146, + "y": 0.3616, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7078, + "y": 0.3763, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4198, + "y": 0.3605, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5986, + "y": 0.5584, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5538, + "y": 0.5571, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.603, + "y": 0.7198, + "confidence": 0.946 + }, + { + "name": "right_knee", + "x": 0.5323, + "y": 0.6929, + "confidence": 0.974 + }, + { + "name": "left_ankle", + "x": 0.6087, + "y": 0.8919, + "confidence": 0.939 + }, + { + "name": "right_ankle", + "x": 0.5555, + "y": 0.8525, + "confidence": 0.95 + }, + { + "name": "left_heel", + "x": 0.6035, + "y": 0.9032, + "confidence": 0.757 + }, + { + "name": "right_heel", + "x": 0.5663, + "y": 0.8684, + "confidence": 0.818 + }, + { + "name": "left_foot_index", + "x": 0.611, + "y": 0.9477, + "confidence": 0.927 + }, + { + "name": "right_foot_index", + "x": 0.5641, + "y": 0.9143, + "confidence": 0.943 + } + ] + } + ] + }, + { + "frame_index": 88, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1968, + "acceleration": 13.4256, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5783, + "y": 0.269, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5802, + "y": 0.258, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5828, + "y": 0.2581, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5852, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5727, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5694, + "y": 0.259, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5662, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5879, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5602, + "y": 0.2672, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5833, + "y": 0.2835, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5743, + "y": 0.2844, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6092, + "y": 0.3592, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5403, + "y": 0.3597, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.652, + "y": 0.3903, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4878, + "y": 0.3725, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6974, + "y": 0.3745, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4317, + "y": 0.3569, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.714, + "y": 0.3805, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4146, + "y": 0.3641, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7133, + "y": 0.377, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4148, + "y": 0.3605, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7077, + "y": 0.3755, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4199, + "y": 0.3594, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5993, + "y": 0.5587, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5551, + "y": 0.5575, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6036, + "y": 0.7199, + "confidence": 0.94 + }, + { + "name": "right_knee", + "x": 0.5334, + "y": 0.6932, + "confidence": 0.974 + }, + { + "name": "left_ankle", + "x": 0.6092, + "y": 0.8918, + "confidence": 0.931 + }, + { + "name": "right_ankle", + "x": 0.5558, + "y": 0.8505, + "confidence": 0.946 + }, + { + "name": "left_heel", + "x": 0.6035, + "y": 0.9032, + "confidence": 0.738 + }, + { + "name": "right_heel", + "x": 0.5668, + "y": 0.8668, + "confidence": 0.807 + }, + { + "name": "left_foot_index", + "x": 0.6116, + "y": 0.95, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.5632, + "y": 0.9111, + "confidence": 0.938 + } + ] + } + ] + }, + { + "frame_index": 89, + "timestamp": 1.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2286, + "acceleration": 14.3526, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0035, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5816, + "y": 0.269, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5837, + "y": 0.2583, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.586, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5887, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5758, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5726, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5693, + "y": 0.2601, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5915, + "y": 0.2658, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5637, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5863, + "y": 0.2834, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5774, + "y": 0.2844, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6127, + "y": 0.3588, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.544, + "y": 0.359, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6559, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4931, + "y": 0.3713, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.701, + "y": 0.3744, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4348, + "y": 0.3555, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7174, + "y": 0.381, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.418, + "y": 0.364, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.717, + "y": 0.3777, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4181, + "y": 0.3608, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7112, + "y": 0.3761, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4232, + "y": 0.3591, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6021, + "y": 0.5584, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5592, + "y": 0.5564, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6055, + "y": 0.7262, + "confidence": 0.931 + }, + { + "name": "right_knee", + "x": 0.5324, + "y": 0.6844, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6091, + "y": 0.8911, + "confidence": 0.92 + }, + { + "name": "right_ankle", + "x": 0.5683, + "y": 0.8305, + "confidence": 0.935 + }, + { + "name": "left_heel", + "x": 0.6047, + "y": 0.9025, + "confidence": 0.718 + }, + { + "name": "right_heel", + "x": 0.5788, + "y": 0.8425, + "confidence": 0.794 + }, + { + "name": "left_foot_index", + "x": 0.6117, + "y": 0.9419, + "confidence": 0.907 + }, + { + "name": "right_foot_index", + "x": 0.5708, + "y": 0.9056, + "confidence": 0.928 + } + ] + } + ] + }, + { + "frame_index": 90, + "timestamp": 1.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1735, + "acceleration": 13.7261, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0007, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5823, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5845, + "y": 0.2581, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.587, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5894, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5768, + "y": 0.2586, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5734, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5701, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5925, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5641, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5874, + "y": 0.2833, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5784, + "y": 0.2843, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6132, + "y": 0.3588, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5447, + "y": 0.358, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6563, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4945, + "y": 0.3706, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7027, + "y": 0.374, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4368, + "y": 0.3542, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7195, + "y": 0.3814, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4201, + "y": 0.363, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.719, + "y": 0.3781, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4202, + "y": 0.36, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7132, + "y": 0.3763, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4254, + "y": 0.3583, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6026, + "y": 0.5584, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5605, + "y": 0.5567, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6071, + "y": 0.7281, + "confidence": 0.922 + }, + { + "name": "right_knee", + "x": 0.5316, + "y": 0.6851, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.6084, + "y": 0.8882, + "confidence": 0.905 + }, + { + "name": "right_ankle", + "x": 0.5719, + "y": 0.8282, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.6046, + "y": 0.8966, + "confidence": 0.695 + }, + { + "name": "right_heel", + "x": 0.5824, + "y": 0.8391, + "confidence": 0.782 + }, + { + "name": "left_foot_index", + "x": 0.6114, + "y": 0.9339, + "confidence": 0.89 + }, + { + "name": "right_foot_index", + "x": 0.5734, + "y": 0.9058, + "confidence": 0.916 + } + ] + } + ] + }, + { + "frame_index": 91, + "timestamp": 1.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1943, + "acceleration": 12.386, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0029, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5863, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5882, + "y": 0.2578, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5907, + "y": 0.258, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5934, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5803, + "y": 0.2583, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5772, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5739, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5964, + "y": 0.2655, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5684, + "y": 0.2673, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5908, + "y": 0.2828, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5819, + "y": 0.2838, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6177, + "y": 0.3582, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5478, + "y": 0.3571, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6608, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4969, + "y": 0.3699, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7053, + "y": 0.374, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4404, + "y": 0.353, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7219, + "y": 0.3816, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4229, + "y": 0.3624, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7212, + "y": 0.3783, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4233, + "y": 0.359, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7153, + "y": 0.3763, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4284, + "y": 0.3571, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6046, + "y": 0.558, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5623, + "y": 0.5556, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6097, + "y": 0.728, + "confidence": 0.906 + }, + { + "name": "right_knee", + "x": 0.5314, + "y": 0.6771, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6099, + "y": 0.8836, + "confidence": 0.89 + }, + { + "name": "right_ankle", + "x": 0.5794, + "y": 0.8145, + "confidence": 0.907 + }, + { + "name": "left_heel", + "x": 0.6083, + "y": 0.8948, + "confidence": 0.668 + }, + { + "name": "right_heel", + "x": 0.5899, + "y": 0.8236, + "confidence": 0.764 + }, + { + "name": "left_foot_index", + "x": 0.6123, + "y": 0.9383, + "confidence": 0.874 + }, + { + "name": "right_foot_index", + "x": 0.5808, + "y": 0.8981, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 92, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1684, + "acceleration": 11.6286, + "fluidity": 0, + "expansion": 0.236, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0009, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5866, + "y": 0.2681, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.589, + "y": 0.2576, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5916, + "y": 0.2578, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5941, + "y": 0.258, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.581, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5776, + "y": 0.2588, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5744, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5978, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5689, + "y": 0.2671, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5918, + "y": 0.2828, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5826, + "y": 0.2838, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6181, + "y": 0.3577, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5495, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6611, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4994, + "y": 0.3692, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7061, + "y": 0.3742, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4413, + "y": 0.352, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7233, + "y": 0.3818, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4245, + "y": 0.3615, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7226, + "y": 0.3784, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4246, + "y": 0.3584, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7168, + "y": 0.3764, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4294, + "y": 0.3565, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6052, + "y": 0.5571, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5631, + "y": 0.5548, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6101, + "y": 0.7261, + "confidence": 0.891 + }, + { + "name": "right_knee", + "x": 0.5312, + "y": 0.6752, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.6097, + "y": 0.8731, + "confidence": 0.867 + }, + { + "name": "right_ankle", + "x": 0.5827, + "y": 0.8168, + "confidence": 0.891 + }, + { + "name": "left_heel", + "x": 0.6084, + "y": 0.8875, + "confidence": 0.642 + }, + { + "name": "right_heel", + "x": 0.5933, + "y": 0.8296, + "confidence": 0.751 + }, + { + "name": "left_foot_index", + "x": 0.6124, + "y": 0.9372, + "confidence": 0.85 + }, + { + "name": "right_foot_index", + "x": 0.5808, + "y": 0.9, + "confidence": 0.885 + } + ] + } + ] + }, + { + "frame_index": 93, + "timestamp": 1.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1451, + "acceleration": 9.9292, + "fluidity": 0, + "expansion": 0.236, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0001, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5882, + "y": 0.2672, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5897, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5923, + "y": 0.2568, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5946, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.582, + "y": 0.2575, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5786, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5752, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5973, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5693, + "y": 0.2668, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5933, + "y": 0.2818, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5842, + "y": 0.283, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6186, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5499, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6609, + "y": 0.3901, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4996, + "y": 0.3691, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7064, + "y": 0.3743, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4414, + "y": 0.3521, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.723, + "y": 0.3819, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4247, + "y": 0.3616, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7221, + "y": 0.3784, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.425, + "y": 0.3586, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7163, + "y": 0.3765, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4299, + "y": 0.3566, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6052, + "y": 0.5562, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5625, + "y": 0.5539, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6106, + "y": 0.7253, + "confidence": 0.884 + }, + { + "name": "right_knee", + "x": 0.531, + "y": 0.6745, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.61, + "y": 0.874, + "confidence": 0.856 + }, + { + "name": "right_ankle", + "x": 0.5811, + "y": 0.8149, + "confidence": 0.879 + }, + { + "name": "left_heel", + "x": 0.6093, + "y": 0.8879, + "confidence": 0.626 + }, + { + "name": "right_heel", + "x": 0.5909, + "y": 0.8243, + "confidence": 0.74 + }, + { + "name": "left_foot_index", + "x": 0.6129, + "y": 0.9376, + "confidence": 0.838 + }, + { + "name": "right_foot_index", + "x": 0.579, + "y": 0.8966, + "confidence": 0.873 + } + ] + } + ] + }, + { + "frame_index": 94, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1707, + "acceleration": 10.4433, + "fluidity": 0, + "expansion": 0.236, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0026, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5908, + "y": 0.2669, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.593, + "y": 0.2565, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5953, + "y": 0.2568, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5978, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5851, + "y": 0.2566, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5819, + "y": 0.2569, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5785, + "y": 0.2574, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6011, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5729, + "y": 0.2654, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5954, + "y": 0.2817, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5864, + "y": 0.2824, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6212, + "y": 0.356, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.552, + "y": 0.3542, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6641, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5027, + "y": 0.3689, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.708, + "y": 0.3744, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4459, + "y": 0.3517, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7251, + "y": 0.382, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4288, + "y": 0.3609, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.724, + "y": 0.3784, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4288, + "y": 0.3577, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7182, + "y": 0.3765, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.434, + "y": 0.3554, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.608, + "y": 0.5549, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5655, + "y": 0.5517, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6131, + "y": 0.7265, + "confidence": 0.877 + }, + { + "name": "right_knee", + "x": 0.5319, + "y": 0.6733, + "confidence": 0.963 + }, + { + "name": "left_ankle", + "x": 0.6113, + "y": 0.8756, + "confidence": 0.848 + }, + { + "name": "right_ankle", + "x": 0.5795, + "y": 0.8106, + "confidence": 0.865 + }, + { + "name": "left_heel", + "x": 0.6105, + "y": 0.8904, + "confidence": 0.612 + }, + { + "name": "right_heel", + "x": 0.5891, + "y": 0.8211, + "confidence": 0.725 + }, + { + "name": "left_foot_index", + "x": 0.6137, + "y": 0.9379, + "confidence": 0.828 + }, + { + "name": "right_foot_index", + "x": 0.5928, + "y": 0.8681, + "confidence": 0.859 + } + ] + } + ] + }, + { + "frame_index": 95, + "timestamp": 1.5833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1295, + "acceleration": 10.1142, + "fluidity": 0, + "expansion": 0.238, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5909, + "y": 0.2668, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5932, + "y": 0.2565, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5958, + "y": 0.2568, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5982, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5852, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5818, + "y": 0.2567, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5785, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6021, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5733, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5959, + "y": 0.2816, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5867, + "y": 0.2823, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.622, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5527, + "y": 0.3541, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6643, + "y": 0.39, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5033, + "y": 0.3691, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7085, + "y": 0.3745, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4467, + "y": 0.3516, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7253, + "y": 0.382, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4298, + "y": 0.3607, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7243, + "y": 0.3782, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4297, + "y": 0.3576, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7187, + "y": 0.3763, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.435, + "y": 0.3553, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6085, + "y": 0.555, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5658, + "y": 0.552, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6138, + "y": 0.7272, + "confidence": 0.871 + }, + { + "name": "right_knee", + "x": 0.5319, + "y": 0.6715, + "confidence": 0.962 + }, + { + "name": "left_ankle", + "x": 0.6113, + "y": 0.8793, + "confidence": 0.84 + }, + { + "name": "right_ankle", + "x": 0.5788, + "y": 0.8103, + "confidence": 0.852 + }, + { + "name": "left_heel", + "x": 0.6108, + "y": 0.8931, + "confidence": 0.601 + }, + { + "name": "right_heel", + "x": 0.5877, + "y": 0.8193, + "confidence": 0.711 + }, + { + "name": "left_foot_index", + "x": 0.6137, + "y": 0.9382, + "confidence": 0.818 + }, + { + "name": "right_foot_index", + "x": 0.5836, + "y": 0.8789, + "confidence": 0.846 + } + ] + } + ] + }, + { + "frame_index": 96, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1566, + "acceleration": 9.8266, + "fluidity": 0, + "expansion": 0.239, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0029, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5919, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5946, + "y": 0.255, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5973, + "y": 0.2555, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5999, + "y": 0.2561, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5863, + "y": 0.2547, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5828, + "y": 0.255, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5797, + "y": 0.2556, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6046, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.575, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5973, + "y": 0.2811, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5879, + "y": 0.2815, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.624, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5548, + "y": 0.3541, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6674, + "y": 0.3896, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.505, + "y": 0.3692, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.711, + "y": 0.3746, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4489, + "y": 0.3517, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.728, + "y": 0.382, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4314, + "y": 0.3607, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.727, + "y": 0.3783, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4315, + "y": 0.3575, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.721, + "y": 0.3764, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4368, + "y": 0.3552, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6116, + "y": 0.5534, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5699, + "y": 0.5504, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6155, + "y": 0.7272, + "confidence": 0.87 + }, + { + "name": "right_knee", + "x": 0.537, + "y": 0.6722, + "confidence": 0.962 + }, + { + "name": "left_ankle", + "x": 0.6124, + "y": 0.8827, + "confidence": 0.837 + }, + { + "name": "right_ankle", + "x": 0.5778, + "y": 0.8151, + "confidence": 0.849 + }, + { + "name": "left_heel", + "x": 0.6106, + "y": 0.8933, + "confidence": 0.588 + }, + { + "name": "right_heel", + "x": 0.5859, + "y": 0.8254, + "confidence": 0.701 + }, + { + "name": "left_foot_index", + "x": 0.6132, + "y": 0.938, + "confidence": 0.814 + }, + { + "name": "right_foot_index", + "x": 0.5807, + "y": 0.882, + "confidence": 0.844 + } + ] + } + ] + }, + { + "frame_index": 97, + "timestamp": 1.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1225, + "acceleration": 9.8137, + "fluidity": 0, + "expansion": 0.239, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5922, + "y": 0.2652, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5949, + "y": 0.2543, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5978, + "y": 0.2549, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6005, + "y": 0.2557, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5866, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5832, + "y": 0.2539, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5801, + "y": 0.2545, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6053, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5757, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5977, + "y": 0.2808, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5881, + "y": 0.281, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6246, + "y": 0.3544, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5557, + "y": 0.354, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6681, + "y": 0.3893, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5053, + "y": 0.3693, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7116, + "y": 0.3745, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4497, + "y": 0.3519, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7285, + "y": 0.3814, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4325, + "y": 0.3605, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7275, + "y": 0.3775, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4325, + "y": 0.3571, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7219, + "y": 0.3757, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4379, + "y": 0.355, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6122, + "y": 0.5534, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5699, + "y": 0.5502, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6147, + "y": 0.7292, + "confidence": 0.871 + }, + { + "name": "right_knee", + "x": 0.5365, + "y": 0.6645, + "confidence": 0.963 + }, + { + "name": "left_ankle", + "x": 0.6125, + "y": 0.8826, + "confidence": 0.837 + }, + { + "name": "right_ankle", + "x": 0.5771, + "y": 0.8162, + "confidence": 0.85 + }, + { + "name": "left_heel", + "x": 0.6105, + "y": 0.8903, + "confidence": 0.581 + }, + { + "name": "right_heel", + "x": 0.5846, + "y": 0.8257, + "confidence": 0.697 + }, + { + "name": "left_foot_index", + "x": 0.6123, + "y": 0.9358, + "confidence": 0.814 + }, + { + "name": "right_foot_index", + "x": 0.5813, + "y": 0.8812, + "confidence": 0.844 + } + ] + } + ] + }, + { + "frame_index": 98, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.119, + "acceleration": 7.9547, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5942, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5974, + "y": 0.254, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6001, + "y": 0.2547, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6029, + "y": 0.2556, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5891, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5857, + "y": 0.2535, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5826, + "y": 0.2542, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6082, + "y": 0.264, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5786, + "y": 0.2638, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5997, + "y": 0.2804, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5901, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6267, + "y": 0.3542, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5571, + "y": 0.354, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6696, + "y": 0.3891, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5073, + "y": 0.3701, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7133, + "y": 0.3745, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4521, + "y": 0.352, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7304, + "y": 0.3812, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4339, + "y": 0.3605, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7292, + "y": 0.3775, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4339, + "y": 0.357, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7233, + "y": 0.3757, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4395, + "y": 0.355, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6124, + "y": 0.5529, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5701, + "y": 0.5486, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.614, + "y": 0.7298, + "confidence": 0.872 + }, + { + "name": "right_knee", + "x": 0.5366, + "y": 0.6611, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.6124, + "y": 0.8894, + "confidence": 0.842 + }, + { + "name": "right_ankle", + "x": 0.5505, + "y": 0.8178, + "confidence": 0.856 + }, + { + "name": "left_heel", + "x": 0.6093, + "y": 0.8984, + "confidence": 0.586 + }, + { + "name": "right_heel", + "x": 0.5557, + "y": 0.8264, + "confidence": 0.7 + }, + { + "name": "left_foot_index", + "x": 0.6112, + "y": 0.9359, + "confidence": 0.817 + }, + { + "name": "right_foot_index", + "x": 0.5547, + "y": 0.8797, + "confidence": 0.85 + } + ] + } + ] + }, + { + "frame_index": 99, + "timestamp": 1.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1092, + "acceleration": 7.3293, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5939, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.597, + "y": 0.2535, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5999, + "y": 0.2543, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6027, + "y": 0.2552, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.589, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5858, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5829, + "y": 0.2539, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6084, + "y": 0.264, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5792, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5996, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.59, + "y": 0.2802, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6271, + "y": 0.3538, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5582, + "y": 0.3541, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6697, + "y": 0.3886, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5088, + "y": 0.3702, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7141, + "y": 0.3744, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4535, + "y": 0.3521, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.731, + "y": 0.3808, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4353, + "y": 0.3606, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7299, + "y": 0.377, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4356, + "y": 0.357, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7243, + "y": 0.3753, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4414, + "y": 0.3551, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6125, + "y": 0.5527, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5707, + "y": 0.5477, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6135, + "y": 0.73, + "confidence": 0.876 + }, + { + "name": "right_knee", + "x": 0.536, + "y": 0.6574, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.6124, + "y": 0.891, + "confidence": 0.849 + }, + { + "name": "right_ankle", + "x": 0.5461, + "y": 0.8186, + "confidence": 0.864 + }, + { + "name": "left_heel", + "x": 0.6087, + "y": 0.9008, + "confidence": 0.596 + }, + { + "name": "right_heel", + "x": 0.5522, + "y": 0.8273, + "confidence": 0.706 + }, + { + "name": "left_foot_index", + "x": 0.6106, + "y": 0.9362, + "confidence": 0.823 + }, + { + "name": "right_foot_index", + "x": 0.5499, + "y": 0.8796, + "confidence": 0.856 + } + ] + } + ] + }, + { + "frame_index": 100, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0933, + "acceleration": 6.5219, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0002, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5942, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5972, + "y": 0.2535, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6003, + "y": 0.2543, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6031, + "y": 0.2552, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5893, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5862, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5833, + "y": 0.2539, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6089, + "y": 0.264, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5799, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5999, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5903, + "y": 0.2802, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6278, + "y": 0.3539, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5583, + "y": 0.3541, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6698, + "y": 0.3886, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5081, + "y": 0.3704, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7141, + "y": 0.3744, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4538, + "y": 0.3521, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.731, + "y": 0.3806, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4356, + "y": 0.3606, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7296, + "y": 0.3764, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4359, + "y": 0.357, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.724, + "y": 0.3746, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4414, + "y": 0.3551, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6126, + "y": 0.5523, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5706, + "y": 0.5468, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6131, + "y": 0.7305, + "confidence": 0.881 + }, + { + "name": "right_knee", + "x": 0.5357, + "y": 0.6559, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6123, + "y": 0.8918, + "confidence": 0.855 + }, + { + "name": "right_ankle", + "x": 0.5452, + "y": 0.8191, + "confidence": 0.871 + }, + { + "name": "left_heel", + "x": 0.6084, + "y": 0.9022, + "confidence": 0.601 + }, + { + "name": "right_heel", + "x": 0.5511, + "y": 0.8277, + "confidence": 0.711 + }, + { + "name": "left_foot_index", + "x": 0.6103, + "y": 0.9364, + "confidence": 0.83 + }, + { + "name": "right_foot_index", + "x": 0.5493, + "y": 0.8793, + "confidence": 0.864 + } + ] + } + ] + }, + { + "frame_index": 101, + "timestamp": 1.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0936, + "acceleration": 5.9094, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5952, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5983, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6014, + "y": 0.254, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6042, + "y": 0.255, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5903, + "y": 0.2527, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5871, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5842, + "y": 0.2538, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6101, + "y": 0.2639, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5809, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6011, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5914, + "y": 0.2802, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6294, + "y": 0.3542, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5593, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6719, + "y": 0.3898, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5097, + "y": 0.3726, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7145, + "y": 0.3749, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4549, + "y": 0.3533, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7324, + "y": 0.3806, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4361, + "y": 0.3606, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7308, + "y": 0.3763, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4364, + "y": 0.357, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7248, + "y": 0.3747, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4418, + "y": 0.3551, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6134, + "y": 0.552, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5707, + "y": 0.5455, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6129, + "y": 0.7306, + "confidence": 0.887 + }, + { + "name": "right_knee", + "x": 0.5401, + "y": 0.6558, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.6115, + "y": 0.8919, + "confidence": 0.866 + }, + { + "name": "right_ankle", + "x": 0.5273, + "y": 0.819, + "confidence": 0.882 + }, + { + "name": "left_heel", + "x": 0.6069, + "y": 0.9033, + "confidence": 0.617 + }, + { + "name": "right_heel", + "x": 0.5296, + "y": 0.828, + "confidence": 0.725 + }, + { + "name": "left_foot_index", + "x": 0.609, + "y": 0.938, + "confidence": 0.84 + }, + { + "name": "right_foot_index", + "x": 0.5229, + "y": 0.8755, + "confidence": 0.875 + } + ] + } + ] + }, + { + "frame_index": 102, + "timestamp": 1.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0803, + "acceleration": 5.3577, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0002, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5965, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5994, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6025, + "y": 0.254, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6053, + "y": 0.255, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5914, + "y": 0.2526, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5882, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5852, + "y": 0.2537, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6107, + "y": 0.264, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5815, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6022, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5922, + "y": 0.2802, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.63, + "y": 0.3544, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5594, + "y": 0.3557, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6718, + "y": 0.3905, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5093, + "y": 0.3737, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.714, + "y": 0.3756, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4558, + "y": 0.3539, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7329, + "y": 0.3805, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.437, + "y": 0.3606, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7311, + "y": 0.3762, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4371, + "y": 0.357, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7246, + "y": 0.3747, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4428, + "y": 0.3552, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6134, + "y": 0.551, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5706, + "y": 0.544, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6127, + "y": 0.73, + "confidence": 0.893 + }, + { + "name": "right_knee", + "x": 0.5417, + "y": 0.6572, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6108, + "y": 0.8918, + "confidence": 0.875 + }, + { + "name": "right_ankle", + "x": 0.5251, + "y": 0.8187, + "confidence": 0.892 + }, + { + "name": "left_heel", + "x": 0.6057, + "y": 0.9035, + "confidence": 0.631 + }, + { + "name": "right_heel", + "x": 0.5272, + "y": 0.8282, + "confidence": 0.737 + }, + { + "name": "left_foot_index", + "x": 0.6083, + "y": 0.9392, + "confidence": 0.851 + }, + { + "name": "right_foot_index", + "x": 0.5209, + "y": 0.8749, + "confidence": 0.885 + } + ] + } + ] + }, + { + "frame_index": 103, + "timestamp": 1.7166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0901, + "acceleration": 5.4688, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0015, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5973, + "y": 0.2645, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6002, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6034, + "y": 0.254, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6062, + "y": 0.2549, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5923, + "y": 0.2526, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5892, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5863, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6117, + "y": 0.2639, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5829, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.603, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5933, + "y": 0.2802, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6309, + "y": 0.3546, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5615, + "y": 0.3561, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6732, + "y": 0.3915, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5115, + "y": 0.3764, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7152, + "y": 0.3763, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4585, + "y": 0.3565, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7339, + "y": 0.3805, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4395, + "y": 0.3613, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7323, + "y": 0.3762, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4394, + "y": 0.3572, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7257, + "y": 0.3747, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4456, + "y": 0.3558, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6143, + "y": 0.5511, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5729, + "y": 0.5444, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6125, + "y": 0.73, + "confidence": 0.9 + }, + { + "name": "right_knee", + "x": 0.5421, + "y": 0.6604, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6092, + "y": 0.8917, + "confidence": 0.885 + }, + { + "name": "right_ankle", + "x": 0.5139, + "y": 0.8077, + "confidence": 0.9 + }, + { + "name": "left_heel", + "x": 0.6038, + "y": 0.9036, + "confidence": 0.654 + }, + { + "name": "right_heel", + "x": 0.5147, + "y": 0.8231, + "confidence": 0.747 + }, + { + "name": "left_foot_index", + "x": 0.6065, + "y": 0.9423, + "confidence": 0.863 + }, + { + "name": "right_foot_index", + "x": 0.5019, + "y": 0.8602, + "confidence": 0.893 + } + ] + } + ] + }, + { + "frame_index": 104, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0816, + "acceleration": 4.6461, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5988, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6015, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6046, + "y": 0.2538, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6073, + "y": 0.2548, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5936, + "y": 0.2525, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5904, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5875, + "y": 0.2534, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6125, + "y": 0.2638, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5837, + "y": 0.2626, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6044, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5946, + "y": 0.2801, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6314, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5627, + "y": 0.3562, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6732, + "y": 0.3927, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5125, + "y": 0.3768, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7149, + "y": 0.3766, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4595, + "y": 0.3577, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7338, + "y": 0.3805, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4405, + "y": 0.362, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7321, + "y": 0.376, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4404, + "y": 0.3574, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7254, + "y": 0.3747, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4466, + "y": 0.3562, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6155, + "y": 0.5509, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5741, + "y": 0.5443, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6124, + "y": 0.7299, + "confidence": 0.907 + }, + { + "name": "right_knee", + "x": 0.5417, + "y": 0.6726, + "confidence": 0.976 + }, + { + "name": "left_ankle", + "x": 0.6085, + "y": 0.8916, + "confidence": 0.894 + }, + { + "name": "right_ankle", + "x": 0.5127, + "y": 0.8045, + "confidence": 0.908 + }, + { + "name": "left_heel", + "x": 0.603, + "y": 0.9034, + "confidence": 0.674 + }, + { + "name": "right_heel", + "x": 0.5131, + "y": 0.8208, + "confidence": 0.755 + }, + { + "name": "left_foot_index", + "x": 0.606, + "y": 0.9445, + "confidence": 0.873 + }, + { + "name": "right_foot_index", + "x": 0.5005, + "y": 0.8564, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 105, + "timestamp": 1.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0648, + "acceleration": 4.6943, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5992, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6017, + "y": 0.253, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6046, + "y": 0.2537, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6074, + "y": 0.2546, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5938, + "y": 0.2524, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5907, + "y": 0.2528, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5878, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6123, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.584, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6047, + "y": 0.2803, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.595, + "y": 0.2801, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6315, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5629, + "y": 0.3563, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6728, + "y": 0.3929, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5126, + "y": 0.3778, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7147, + "y": 0.3773, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4597, + "y": 0.3588, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7336, + "y": 0.3806, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4408, + "y": 0.3624, + "confidence": 0.989 + }, + { + "name": "left_index", + "x": 0.7318, + "y": 0.3761, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4406, + "y": 0.3575, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7251, + "y": 0.3748, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4468, + "y": 0.3563, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6153, + "y": 0.5509, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5736, + "y": 0.544, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6124, + "y": 0.7291, + "confidence": 0.913 + }, + { + "name": "right_knee", + "x": 0.5411, + "y": 0.6763, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6081, + "y": 0.8916, + "confidence": 0.903 + }, + { + "name": "right_ankle", + "x": 0.5127, + "y": 0.8037, + "confidence": 0.915 + }, + { + "name": "left_heel", + "x": 0.6024, + "y": 0.9033, + "confidence": 0.693 + }, + { + "name": "right_heel", + "x": 0.514, + "y": 0.8201, + "confidence": 0.763 + }, + { + "name": "left_foot_index", + "x": 0.6062, + "y": 0.9452, + "confidence": 0.882 + }, + { + "name": "right_foot_index", + "x": 0.4995, + "y": 0.856, + "confidence": 0.908 + } + ] + } + ] + }, + { + "frame_index": 106, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0647, + "acceleration": 3.9293, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0004, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6007, + "y": 0.2643, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6025, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6053, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.608, + "y": 0.2544, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5949, + "y": 0.2524, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5918, + "y": 0.2528, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5889, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6124, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.585, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6061, + "y": 0.2801, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5967, + "y": 0.28, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6325, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5634, + "y": 0.3563, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6728, + "y": 0.3943, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5131, + "y": 0.3801, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7145, + "y": 0.3779, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4606, + "y": 0.3603, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7332, + "y": 0.3806, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4418, + "y": 0.3631, + "confidence": 0.99 + }, + { + "name": "left_index", + "x": 0.7315, + "y": 0.376, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4417, + "y": 0.3579, + "confidence": 0.991 + }, + { + "name": "left_thumb", + "x": 0.7249, + "y": 0.3748, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4479, + "y": 0.357, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6153, + "y": 0.551, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5736, + "y": 0.5438, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6119, + "y": 0.728, + "confidence": 0.919 + }, + { + "name": "right_knee", + "x": 0.5412, + "y": 0.6755, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6073, + "y": 0.8915, + "confidence": 0.91 + }, + { + "name": "right_ankle", + "x": 0.504, + "y": 0.793, + "confidence": 0.919 + }, + { + "name": "left_heel", + "x": 0.6022, + "y": 0.9032, + "confidence": 0.705 + }, + { + "name": "right_heel", + "x": 0.5043, + "y": 0.8064, + "confidence": 0.76 + }, + { + "name": "left_foot_index", + "x": 0.6058, + "y": 0.9456, + "confidence": 0.891 + }, + { + "name": "right_foot_index", + "x": 0.4903, + "y": 0.8384, + "confidence": 0.912 + } + ] + } + ] + }, + { + "frame_index": 107, + "timestamp": 1.7833333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0564, + "acceleration": 3.4311, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6006, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6026, + "y": 0.2527, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6053, + "y": 0.2534, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.608, + "y": 0.2542, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.595, + "y": 0.252, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.592, + "y": 0.2524, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5892, + "y": 0.2528, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6123, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5853, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6059, + "y": 0.2799, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5964, + "y": 0.2796, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6326, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5635, + "y": 0.3563, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6727, + "y": 0.3949, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5132, + "y": 0.3813, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7145, + "y": 0.3782, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4607, + "y": 0.3617, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7331, + "y": 0.3806, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.4418, + "y": 0.364, + "confidence": 0.99 + }, + { + "name": "left_index", + "x": 0.7314, + "y": 0.376, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4416, + "y": 0.3587, + "confidence": 0.992 + }, + { + "name": "left_thumb", + "x": 0.7247, + "y": 0.3748, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4478, + "y": 0.3579, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.615, + "y": 0.5508, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5734, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6115, + "y": 0.727, + "confidence": 0.925 + }, + { + "name": "right_knee", + "x": 0.5412, + "y": 0.6751, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.607, + "y": 0.8915, + "confidence": 0.917 + }, + { + "name": "right_ankle", + "x": 0.5028, + "y": 0.7904, + "confidence": 0.922 + }, + { + "name": "left_heel", + "x": 0.6022, + "y": 0.9031, + "confidence": 0.717 + }, + { + "name": "right_heel", + "x": 0.5027, + "y": 0.8036, + "confidence": 0.757 + }, + { + "name": "left_foot_index", + "x": 0.6055, + "y": 0.9458, + "confidence": 0.899 + }, + { + "name": "right_foot_index", + "x": 0.4895, + "y": 0.8339, + "confidence": 0.915 + } + ] + } + ] + }, + { + "frame_index": 108, + "timestamp": 1.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0482, + "acceleration": 3.1299, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6021, + "y": 0.2639, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6038, + "y": 0.2525, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6063, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6088, + "y": 0.254, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5964, + "y": 0.2519, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5933, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5904, + "y": 0.2526, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6124, + "y": 0.2626, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5859, + "y": 0.2616, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6071, + "y": 0.2797, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5979, + "y": 0.2794, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6332, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5636, + "y": 0.3562, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6731, + "y": 0.3953, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5132, + "y": 0.3839, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7144, + "y": 0.3791, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4611, + "y": 0.3635, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.733, + "y": 0.3811, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.442, + "y": 0.3655, + "confidence": 0.99 + }, + { + "name": "left_index", + "x": 0.7313, + "y": 0.376, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4419, + "y": 0.3598, + "confidence": 0.992 + }, + { + "name": "left_thumb", + "x": 0.7246, + "y": 0.3749, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4481, + "y": 0.359, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6149, + "y": 0.5507, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5733, + "y": 0.5428, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6107, + "y": 0.7261, + "confidence": 0.931 + }, + { + "name": "right_knee", + "x": 0.5405, + "y": 0.6784, + "confidence": 0.978 + }, + { + "name": "left_ankle", + "x": 0.6062, + "y": 0.8914, + "confidence": 0.924 + }, + { + "name": "right_ankle", + "x": 0.4977, + "y": 0.7834, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.6019, + "y": 0.9031, + "confidence": 0.727 + }, + { + "name": "right_heel", + "x": 0.4967, + "y": 0.7926, + "confidence": 0.748 + }, + { + "name": "left_foot_index", + "x": 0.6043, + "y": 0.9457, + "confidence": 0.906 + }, + { + "name": "right_foot_index", + "x": 0.4823, + "y": 0.8269, + "confidence": 0.916 + } + ] + } + ] + }, + { + "frame_index": 109, + "timestamp": 1.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0432, + "acceleration": 2.674, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6022, + "y": 0.2637, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6039, + "y": 0.2523, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6064, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6089, + "y": 0.2537, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5966, + "y": 0.2516, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5935, + "y": 0.2519, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5906, + "y": 0.2523, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6122, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.586, + "y": 0.2612, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.607, + "y": 0.2795, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5979, + "y": 0.2792, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6334, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5636, + "y": 0.3562, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6734, + "y": 0.3956, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5135, + "y": 0.386, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7144, + "y": 0.38, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4611, + "y": 0.3652, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7331, + "y": 0.3814, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.4419, + "y": 0.367, + "confidence": 0.991 + }, + { + "name": "left_index", + "x": 0.7314, + "y": 0.3761, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4418, + "y": 0.3611, + "confidence": 0.992 + }, + { + "name": "left_thumb", + "x": 0.7245, + "y": 0.3752, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.448, + "y": 0.3604, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6148, + "y": 0.5507, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5733, + "y": 0.5427, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6102, + "y": 0.7258, + "confidence": 0.936 + }, + { + "name": "right_knee", + "x": 0.5399, + "y": 0.6801, + "confidence": 0.978 + }, + { + "name": "left_ankle", + "x": 0.6058, + "y": 0.8914, + "confidence": 0.929 + }, + { + "name": "right_ankle", + "x": 0.4966, + "y": 0.7821, + "confidence": 0.925 + }, + { + "name": "left_heel", + "x": 0.6016, + "y": 0.903, + "confidence": 0.738 + }, + { + "name": "right_heel", + "x": 0.4953, + "y": 0.7914, + "confidence": 0.741 + }, + { + "name": "left_foot_index", + "x": 0.604, + "y": 0.9456, + "confidence": 0.912 + }, + { + "name": "right_foot_index", + "x": 0.481, + "y": 0.8253, + "confidence": 0.918 + } + ] + } + ] + }, + { + "frame_index": 110, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0439, + "acceleration": 2.6695, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.603, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6048, + "y": 0.2521, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6072, + "y": 0.2528, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6097, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5975, + "y": 0.2513, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5944, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5915, + "y": 0.2519, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6127, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5866, + "y": 0.261, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6077, + "y": 0.2793, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5986, + "y": 0.279, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6339, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5639, + "y": 0.3564, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6739, + "y": 0.3966, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5138, + "y": 0.3873, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7143, + "y": 0.3805, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4613, + "y": 0.3662, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.733, + "y": 0.3813, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.4422, + "y": 0.3676, + "confidence": 0.991 + }, + { + "name": "left_index", + "x": 0.7314, + "y": 0.3759, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4421, + "y": 0.3617, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7245, + "y": 0.3753, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4482, + "y": 0.361, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6151, + "y": 0.551, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5739, + "y": 0.5427, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.61, + "y": 0.7261, + "confidence": 0.94 + }, + { + "name": "right_knee", + "x": 0.5397, + "y": 0.6797, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6047, + "y": 0.8913, + "confidence": 0.934 + }, + { + "name": "right_ankle", + "x": 0.4947, + "y": 0.7745, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.6009, + "y": 0.9035, + "confidence": 0.746 + }, + { + "name": "right_heel", + "x": 0.4937, + "y": 0.7826, + "confidence": 0.734 + }, + { + "name": "left_foot_index", + "x": 0.6026, + "y": 0.9435, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.4778, + "y": 0.8163, + "confidence": 0.917 + } + ] + } + ] + }, + { + "frame_index": 111, + "timestamp": 1.8499999999999999, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0383, + "acceleration": 2.2634, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6029, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6049, + "y": 0.2518, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6073, + "y": 0.2525, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6098, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5975, + "y": 0.2509, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5945, + "y": 0.251, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5916, + "y": 0.2514, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6129, + "y": 0.2621, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5869, + "y": 0.2604, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6075, + "y": 0.2791, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5984, + "y": 0.2787, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6341, + "y": 0.3548, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5642, + "y": 0.3565, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.674, + "y": 0.3968, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3877, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7142, + "y": 0.3812, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4617, + "y": 0.367, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.733, + "y": 0.3814, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4426, + "y": 0.368, + "confidence": 0.991 + }, + { + "name": "left_index", + "x": 0.7313, + "y": 0.3759, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4424, + "y": 0.362, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7244, + "y": 0.3755, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4486, + "y": 0.3615, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6154, + "y": 0.5511, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5743, + "y": 0.5428, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6099, + "y": 0.7265, + "confidence": 0.944 + }, + { + "name": "right_knee", + "x": 0.5396, + "y": 0.6785, + "confidence": 0.976 + }, + { + "name": "left_ankle", + "x": 0.6039, + "y": 0.8913, + "confidence": 0.939 + }, + { + "name": "right_ankle", + "x": 0.4944, + "y": 0.7728, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.6003, + "y": 0.9037, + "confidence": 0.755 + }, + { + "name": "right_heel", + "x": 0.4934, + "y": 0.7813, + "confidence": 0.73 + }, + { + "name": "left_foot_index", + "x": 0.6017, + "y": 0.9419, + "confidence": 0.922 + }, + { + "name": "right_foot_index", + "x": 0.4774, + "y": 0.8141, + "confidence": 0.917 + } + ] + } + ] + }, + { + "frame_index": 112, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0351, + "acceleration": 1.9456, + "fluidity": 0.031, + "expansion": 0.24, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6027, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6048, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6073, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6098, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5974, + "y": 0.2505, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5944, + "y": 0.2507, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5915, + "y": 0.2509, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.613, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.587, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6073, + "y": 0.2789, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5982, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6342, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5643, + "y": 0.3566, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6741, + "y": 0.397, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5149, + "y": 0.388, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7144, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4616, + "y": 0.3673, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7333, + "y": 0.3815, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4426, + "y": 0.3681, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7316, + "y": 0.376, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4424, + "y": 0.3622, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7245, + "y": 0.3756, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4485, + "y": 0.3617, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6157, + "y": 0.5511, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5748, + "y": 0.5428, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6099, + "y": 0.7268, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.5396, + "y": 0.677, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6033, + "y": 0.8912, + "confidence": 0.943 + }, + { + "name": "right_ankle", + "x": 0.4946, + "y": 0.7719, + "confidence": 0.922 + }, + { + "name": "left_heel", + "x": 0.5997, + "y": 0.9043, + "confidence": 0.762 + }, + { + "name": "right_heel", + "x": 0.4935, + "y": 0.7803, + "confidence": 0.727 + }, + { + "name": "left_foot_index", + "x": 0.6013, + "y": 0.9415, + "confidence": 0.926 + }, + { + "name": "right_foot_index", + "x": 0.4775, + "y": 0.8129, + "confidence": 0.916 + } + ] + } + ] + }, + { + "frame_index": 113, + "timestamp": 1.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0335, + "acceleration": 1.7466, + "fluidity": 0.123, + "expansion": 0.239, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6029, + "y": 0.263, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6051, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6076, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6101, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5976, + "y": 0.2502, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5946, + "y": 0.2503, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5917, + "y": 0.2505, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6132, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6075, + "y": 0.2788, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5982, + "y": 0.2782, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6343, + "y": 0.355, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5645, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6742, + "y": 0.3973, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5148, + "y": 0.3888, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7143, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4619, + "y": 0.3674, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7334, + "y": 0.3815, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4429, + "y": 0.3681, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7317, + "y": 0.376, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4428, + "y": 0.3622, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7245, + "y": 0.3756, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4491, + "y": 0.3618, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6159, + "y": 0.5513, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5753, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6098, + "y": 0.7272, + "confidence": 0.951 + }, + { + "name": "right_knee", + "x": 0.5395, + "y": 0.6738, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6011, + "y": 0.8913, + "confidence": 0.947 + }, + { + "name": "right_ankle", + "x": 0.4927, + "y": 0.7636, + "confidence": 0.92 + }, + { + "name": "left_heel", + "x": 0.5979, + "y": 0.9053, + "confidence": 0.767 + }, + { + "name": "right_heel", + "x": 0.4915, + "y": 0.7731, + "confidence": 0.724 + }, + { + "name": "left_foot_index", + "x": 0.5997, + "y": 0.9415, + "confidence": 0.93 + }, + { + "name": "right_foot_index", + "x": 0.476, + "y": 0.8056, + "confidence": 0.915 + } + ] + } + ] + }, + { + "frame_index": 114, + "timestamp": 1.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.03, + "acceleration": 1.5492, + "fluidity": 0.038, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.603, + "y": 0.263, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6052, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6077, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6102, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5977, + "y": 0.2502, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5946, + "y": 0.2502, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5917, + "y": 0.2504, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6133, + "y": 0.2619, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5873, + "y": 0.2596, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6075, + "y": 0.2788, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5982, + "y": 0.2781, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6344, + "y": 0.3551, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5647, + "y": 0.3569, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6742, + "y": 0.3976, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3894, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7143, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4621, + "y": 0.3674, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7336, + "y": 0.3815, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4431, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.732, + "y": 0.376, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.443, + "y": 0.3623, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7245, + "y": 0.3756, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4493, + "y": 0.3619, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6159, + "y": 0.5515, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5756, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6096, + "y": 0.7274, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5395, + "y": 0.6721, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.6002, + "y": 0.8915, + "confidence": 0.95 + }, + { + "name": "right_ankle", + "x": 0.4922, + "y": 0.7616, + "confidence": 0.917 + }, + { + "name": "left_heel", + "x": 0.5971, + "y": 0.9063, + "confidence": 0.772 + }, + { + "name": "right_heel", + "x": 0.4909, + "y": 0.7711, + "confidence": 0.719 + }, + { + "name": "left_foot_index", + "x": 0.5989, + "y": 0.9415, + "confidence": 0.933 + }, + { + "name": "right_foot_index", + "x": 0.4761, + "y": 0.8037, + "confidence": 0.912 + } + ] + } + ] + }, + { + "frame_index": 115, + "timestamp": 1.9166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0269, + "acceleration": 1.3692, + "fluidity": 0.048, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6032, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6056, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6081, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6106, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5979, + "y": 0.2501, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5948, + "y": 0.2501, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5919, + "y": 0.2501, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6138, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5874, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6076, + "y": 0.2787, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5982, + "y": 0.2779, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3554, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5647, + "y": 0.3571, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6744, + "y": 0.3996, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3897, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7144, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.462, + "y": 0.3673, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7336, + "y": 0.3814, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.732, + "y": 0.3755, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4432, + "y": 0.3622, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7248, + "y": 0.3754, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4493, + "y": 0.3618, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.616, + "y": 0.5516, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5755, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6089, + "y": 0.7275, + "confidence": 0.956 + }, + { + "name": "right_knee", + "x": 0.5389, + "y": 0.6692, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.5991, + "y": 0.892, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.4917, + "y": 0.7545, + "confidence": 0.913 + }, + { + "name": "left_heel", + "x": 0.5957, + "y": 0.9071, + "confidence": 0.779 + }, + { + "name": "right_heel", + "x": 0.4902, + "y": 0.7647, + "confidence": 0.713 + }, + { + "name": "left_foot_index", + "x": 0.5975, + "y": 0.9442, + "confidence": 0.936 + }, + { + "name": "right_foot_index", + "x": 0.4741, + "y": 0.7952, + "confidence": 0.909 + } + ] + } + ] + }, + { + "frame_index": 116, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0236, + "acceleration": 1.2416, + "fluidity": 0.052, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6032, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6057, + "y": 0.2514, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6082, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6107, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5979, + "y": 0.25, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5949, + "y": 0.2499, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5919, + "y": 0.25, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.614, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5874, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6075, + "y": 0.2786, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5982, + "y": 0.2777, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6347, + "y": 0.3554, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5647, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6744, + "y": 0.4009, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.3897, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7146, + "y": 0.3815, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4619, + "y": 0.3673, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7336, + "y": 0.3814, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4433, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7322, + "y": 0.3754, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4433, + "y": 0.3622, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7251, + "y": 0.3754, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4493, + "y": 0.3618, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6162, + "y": 0.5516, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5754, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6085, + "y": 0.7278, + "confidence": 0.959 + }, + { + "name": "right_knee", + "x": 0.5384, + "y": 0.6677, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.5986, + "y": 0.8921, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.4917, + "y": 0.7524, + "confidence": 0.909 + }, + { + "name": "left_heel", + "x": 0.5951, + "y": 0.9073, + "confidence": 0.784 + }, + { + "name": "right_heel", + "x": 0.4904, + "y": 0.7632, + "confidence": 0.708 + }, + { + "name": "left_foot_index", + "x": 0.597, + "y": 0.9445, + "confidence": 0.938 + }, + { + "name": "right_foot_index", + "x": 0.4738, + "y": 0.793, + "confidence": 0.905 + } + ] + } + ] + }, + { + "frame_index": 117, + "timestamp": 1.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0205, + "acceleration": 1.0742, + "fluidity": 0.114, + "expansion": 0.239, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6031, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6057, + "y": 0.2514, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6082, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6107, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5979, + "y": 0.2499, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5949, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.592, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.614, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5875, + "y": 0.259, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6075, + "y": 0.2786, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5981, + "y": 0.2776, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6347, + "y": 0.3555, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5647, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.4017, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.3898, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7148, + "y": 0.3815, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4618, + "y": 0.3672, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7336, + "y": 0.3814, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4433, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7323, + "y": 0.3753, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4433, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7254, + "y": 0.3753, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4492, + "y": 0.3618, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6163, + "y": 0.5516, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5753, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6082, + "y": 0.728, + "confidence": 0.961 + }, + { + "name": "right_knee", + "x": 0.5381, + "y": 0.6669, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.5984, + "y": 0.8921, + "confidence": 0.958 + }, + { + "name": "right_ankle", + "x": 0.492, + "y": 0.7514, + "confidence": 0.906 + }, + { + "name": "left_heel", + "x": 0.5949, + "y": 0.9075, + "confidence": 0.79 + }, + { + "name": "right_heel", + "x": 0.4909, + "y": 0.7625, + "confidence": 0.703 + }, + { + "name": "left_foot_index", + "x": 0.5968, + "y": 0.9446, + "confidence": 0.94 + }, + { + "name": "right_foot_index", + "x": 0.474, + "y": 0.7921, + "confidence": 0.902 + } + ] + } + ] + }, + { + "frame_index": 118, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0201, + "acceleration": 1.0385, + "fluidity": 0.053, + "expansion": 0.239, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6041, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6066, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.609, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6115, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5988, + "y": 0.2499, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5956, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5926, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6141, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5877, + "y": 0.259, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6082, + "y": 0.2785, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5987, + "y": 0.2776, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6347, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5648, + "y": 0.3573, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.4016, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.3902, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7153, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4618, + "y": 0.3672, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7339, + "y": 0.3811, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4433, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7327, + "y": 0.3751, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4432, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7262, + "y": 0.3751, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4492, + "y": 0.3619, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6165, + "y": 0.5517, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5756, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6077, + "y": 0.7279, + "confidence": 0.964 + }, + { + "name": "right_knee", + "x": 0.5377, + "y": 0.666, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.5977, + "y": 0.892, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.492, + "y": 0.7455, + "confidence": 0.9 + }, + { + "name": "left_heel", + "x": 0.5941, + "y": 0.9073, + "confidence": 0.795 + }, + { + "name": "right_heel", + "x": 0.4912, + "y": 0.7565, + "confidence": 0.698 + }, + { + "name": "left_foot_index", + "x": 0.5954, + "y": 0.9449, + "confidence": 0.943 + }, + { + "name": "right_foot_index", + "x": 0.4721, + "y": 0.7884, + "confidence": 0.898 + } + ] + } + ] + }, + { + "frame_index": 119, + "timestamp": 1.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0179, + "acceleration": 0.8709, + "fluidity": 0.143, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6046, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.607, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6094, + "y": 0.2522, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6118, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5992, + "y": 0.2499, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.596, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.593, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6141, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5879, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6085, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.599, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6347, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3573, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.4016, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.3905, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7158, + "y": 0.3812, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4617, + "y": 0.3673, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.734, + "y": 0.3809, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7329, + "y": 0.3748, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4432, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7266, + "y": 0.3749, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4492, + "y": 0.3619, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5518, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5432, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6074, + "y": 0.7279, + "confidence": 0.966 + }, + { + "name": "right_knee", + "x": 0.5375, + "y": 0.6655, + "confidence": 0.966 + }, + { + "name": "left_ankle", + "x": 0.5974, + "y": 0.8921, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.4919, + "y": 0.7448, + "confidence": 0.896 + }, + { + "name": "left_heel", + "x": 0.5938, + "y": 0.9073, + "confidence": 0.801 + }, + { + "name": "right_heel", + "x": 0.4912, + "y": 0.7555, + "confidence": 0.695 + }, + { + "name": "left_foot_index", + "x": 0.5947, + "y": 0.946, + "confidence": 0.946 + }, + { + "name": "right_foot_index", + "x": 0.4714, + "y": 0.7874, + "confidence": 0.895 + } + ] + } + ] + }, + { + "frame_index": 120, + "timestamp": 2, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.0168, + "acceleration": 0.7699, + "fluidity": 0.208, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6054, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6077, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6101, + "y": 0.2523, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6125, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5998, + "y": 0.25, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5966, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5935, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6142, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.588, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6094, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5999, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3573, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.4019, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.391, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7157, + "y": 0.3814, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4616, + "y": 0.3672, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7339, + "y": 0.3809, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3682, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7328, + "y": 0.3747, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4432, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7266, + "y": 0.3748, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4491, + "y": 0.3619, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6169, + "y": 0.5513, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6065, + "y": 0.726, + "confidence": 0.968 + }, + { + "name": "right_knee", + "x": 0.5374, + "y": 0.6643, + "confidence": 0.964 + }, + { + "name": "left_ankle", + "x": 0.5957, + "y": 0.8916, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.4918, + "y": 0.7434, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.5919, + "y": 0.9073, + "confidence": 0.804 + }, + { + "name": "right_heel", + "x": 0.4909, + "y": 0.7561, + "confidence": 0.687 + }, + { + "name": "left_foot_index", + "x": 0.5921, + "y": 0.9458, + "confidence": 0.947 + }, + { + "name": "right_foot_index", + "x": 0.4721, + "y": 0.7841, + "confidence": 0.888 + } + ] + } + ] + }, + { + "frame_index": 121, + "timestamp": 2.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.0155, + "acceleration": 0.6913, + "fluidity": 0.244, + "expansion": 0.239, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6058, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.608, + "y": 0.2516, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6104, + "y": 0.2523, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6127, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6001, + "y": 0.25, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5969, + "y": 0.2499, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5938, + "y": 0.2498, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6143, + "y": 0.262, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5881, + "y": 0.259, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6003, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3573, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.4022, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.3916, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7155, + "y": 0.3817, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4616, + "y": 0.3672, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7339, + "y": 0.3809, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3682, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7327, + "y": 0.3746, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4431, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7264, + "y": 0.3748, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4491, + "y": 0.3619, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6171, + "y": 0.551, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5429, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6061, + "y": 0.7253, + "confidence": 0.969 + }, + { + "name": "right_knee", + "x": 0.5372, + "y": 0.6636, + "confidence": 0.962 + }, + { + "name": "left_ankle", + "x": 0.595, + "y": 0.8914, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.4919, + "y": 0.7426, + "confidence": 0.88 + }, + { + "name": "left_heel", + "x": 0.591, + "y": 0.9073, + "confidence": 0.806 + }, + { + "name": "right_heel", + "x": 0.4909, + "y": 0.7558, + "confidence": 0.679 + }, + { + "name": "left_foot_index", + "x": 0.5914, + "y": 0.9456, + "confidence": 0.949 + }, + { + "name": "right_foot_index", + "x": 0.4721, + "y": 0.7837, + "confidence": 0.882 + } + ] + } + ] + }, + { + "frame_index": 122, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0175, + "acceleration": 0.7702, + "fluidity": 0.149, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6059, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6082, + "y": 0.2521, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6107, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6131, + "y": 0.2538, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6003, + "y": 0.2505, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5971, + "y": 0.2502, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.594, + "y": 0.2501, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6148, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5882, + "y": 0.2592, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2787, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6004, + "y": 0.2777, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3557, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3579, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6744, + "y": 0.4028, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.3924, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7154, + "y": 0.382, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4616, + "y": 0.3677, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7338, + "y": 0.3809, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3683, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7327, + "y": 0.3744, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4431, + "y": 0.3622, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7262, + "y": 0.3748, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4491, + "y": 0.3621, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6172, + "y": 0.5513, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5432, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6044, + "y": 0.7264, + "confidence": 0.971 + }, + { + "name": "right_knee", + "x": 0.5377, + "y": 0.6634, + "confidence": 0.963 + }, + { + "name": "left_ankle", + "x": 0.5934, + "y": 0.8907, + "confidence": 0.968 + }, + { + "name": "right_ankle", + "x": 0.4918, + "y": 0.7446, + "confidence": 0.881 + }, + { + "name": "left_heel", + "x": 0.5884, + "y": 0.9067, + "confidence": 0.814 + }, + { + "name": "right_heel", + "x": 0.4909, + "y": 0.7549, + "confidence": 0.682 + }, + { + "name": "left_foot_index", + "x": 0.5911, + "y": 0.9456, + "confidence": 0.951 + }, + { + "name": "right_foot_index", + "x": 0.4721, + "y": 0.7864, + "confidence": 0.883 + } + ] + } + ] + }, + { + "frame_index": 123, + "timestamp": 2.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0166, + "acceleration": 0.6112, + "fluidity": 0.15, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6059, + "y": 0.2633, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6084, + "y": 0.2525, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.2533, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.2542, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.2507, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2504, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2502, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6151, + "y": 0.2625, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5883, + "y": 0.2593, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2789, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6004, + "y": 0.2778, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3557, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3583, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6743, + "y": 0.4031, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.393, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7153, + "y": 0.3823, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4616, + "y": 0.3681, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7338, + "y": 0.3809, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3684, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7327, + "y": 0.3743, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4431, + "y": 0.3623, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7261, + "y": 0.3748, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4491, + "y": 0.3624, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6174, + "y": 0.5516, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5435, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6037, + "y": 0.7273, + "confidence": 0.972 + }, + { + "name": "right_knee", + "x": 0.5381, + "y": 0.6632, + "confidence": 0.964 + }, + { + "name": "left_ankle", + "x": 0.5927, + "y": 0.8902, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.4918, + "y": 0.7457, + "confidence": 0.883 + }, + { + "name": "left_heel", + "x": 0.5874, + "y": 0.9064, + "confidence": 0.823 + }, + { + "name": "right_heel", + "x": 0.4908, + "y": 0.7544, + "confidence": 0.687 + }, + { + "name": "left_foot_index", + "x": 0.591, + "y": 0.9456, + "confidence": 0.953 + }, + { + "name": "right_foot_index", + "x": 0.472, + "y": 0.7878, + "confidence": 0.885 + } + ] + } + ] + }, + { + "frame_index": 124, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0148, + "acceleration": 0.6221, + "fluidity": 0.136, + "expansion": 0.238, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6059, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6085, + "y": 0.2528, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.611, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6135, + "y": 0.2545, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6005, + "y": 0.2509, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5973, + "y": 0.2506, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5942, + "y": 0.2504, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6153, + "y": 0.2626, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5884, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2791, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6004, + "y": 0.2779, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6346, + "y": 0.3558, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5649, + "y": 0.3586, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6743, + "y": 0.4033, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.3932, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7153, + "y": 0.3824, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4615, + "y": 0.3683, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7338, + "y": 0.3808, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4432, + "y": 0.3684, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7327, + "y": 0.3741, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4431, + "y": 0.3623, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7261, + "y": 0.3747, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.449, + "y": 0.3626, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6174, + "y": 0.5518, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5758, + "y": 0.5437, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6036, + "y": 0.7279, + "confidence": 0.973 + }, + { + "name": "right_knee", + "x": 0.5383, + "y": 0.6633, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.5925, + "y": 0.8899, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.4918, + "y": 0.7463, + "confidence": 0.885 + }, + { + "name": "left_heel", + "x": 0.587, + "y": 0.9061, + "confidence": 0.83 + }, + { + "name": "right_heel", + "x": 0.4908, + "y": 0.7543, + "confidence": 0.69 + }, + { + "name": "left_foot_index", + "x": 0.5909, + "y": 0.9457, + "confidence": 0.955 + }, + { + "name": "right_foot_index", + "x": 0.472, + "y": 0.7888, + "confidence": 0.886 + } + ] + } + ] + }, + { + "frame_index": 125, + "timestamp": 2.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0156, + "acceleration": 0.5643, + "fluidity": 0.109, + "expansion": 0.238, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6058, + "y": 0.2636, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6084, + "y": 0.253, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.2539, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6135, + "y": 0.2548, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.251, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2506, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2504, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6154, + "y": 0.2628, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5884, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2792, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6004, + "y": 0.278, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6345, + "y": 0.3559, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.565, + "y": 0.3588, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6746, + "y": 0.4033, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3942, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7154, + "y": 0.3831, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4612, + "y": 0.3695, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.734, + "y": 0.3807, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4429, + "y": 0.3691, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7328, + "y": 0.3738, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4426, + "y": 0.3628, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7265, + "y": 0.3746, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4482, + "y": 0.3632, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6171, + "y": 0.5517, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5752, + "y": 0.5437, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6021, + "y": 0.7284, + "confidence": 0.973 + }, + { + "name": "right_knee", + "x": 0.5385, + "y": 0.6813, + "confidence": 0.966 + }, + { + "name": "left_ankle", + "x": 0.5919, + "y": 0.8899, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.4925, + "y": 0.7676, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.5867, + "y": 0.9062, + "confidence": 0.833 + }, + { + "name": "right_heel", + "x": 0.4908, + "y": 0.7726, + "confidence": 0.684 + }, + { + "name": "left_foot_index", + "x": 0.5897, + "y": 0.9453, + "confidence": 0.955 + }, + { + "name": "right_foot_index", + "x": 0.476, + "y": 0.8089, + "confidence": 0.887 + } + ] + } + ] + }, + { + "frame_index": 126, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0135, + "acceleration": 0.5462, + "fluidity": 0.099, + "expansion": 0.238, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6058, + "y": 0.2637, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6084, + "y": 0.2532, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.2541, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.255, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.2511, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2507, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2504, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6154, + "y": 0.2629, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5884, + "y": 0.2594, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.2793, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6004, + "y": 0.278, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6345, + "y": 0.3559, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.565, + "y": 0.359, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6749, + "y": 0.4032, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3948, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7154, + "y": 0.3834, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.461, + "y": 0.3703, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7342, + "y": 0.3805, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4428, + "y": 0.3696, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.733, + "y": 0.3736, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4423, + "y": 0.3631, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7268, + "y": 0.3746, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4477, + "y": 0.3636, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.617, + "y": 0.5517, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5749, + "y": 0.5436, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6015, + "y": 0.7287, + "confidence": 0.973 + }, + { + "name": "right_knee", + "x": 0.5388, + "y": 0.6851, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.5916, + "y": 0.8899, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.4933, + "y": 0.7725, + "confidence": 0.889 + }, + { + "name": "left_heel", + "x": 0.5865, + "y": 0.9063, + "confidence": 0.835 + }, + { + "name": "right_heel", + "x": 0.4912, + "y": 0.7776, + "confidence": 0.679 + }, + { + "name": "left_foot_index", + "x": 0.5892, + "y": 0.9451, + "confidence": 0.956 + }, + { + "name": "right_foot_index", + "x": 0.4779, + "y": 0.8136, + "confidence": 0.888 + } + ] + } + ] + }, + { + "frame_index": 127, + "timestamp": 2.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.02, + "acceleration": 0.8662, + "fluidity": 0.086, + "expansion": 0.238, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0003, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6057, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6083, + "y": 0.2537, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.2546, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.2555, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.2517, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2513, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2512, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6154, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5884, + "y": 0.2599, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6097, + "y": 0.28, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6003, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6345, + "y": 0.3566, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.565, + "y": 0.36, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6752, + "y": 0.4038, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3954, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7163, + "y": 0.3835, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.461, + "y": 0.3714, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7349, + "y": 0.3802, + "confidence": 0.993 + }, + { + "name": "right_pinky", + "x": 0.4427, + "y": 0.3697, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7335, + "y": 0.3732, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4421, + "y": 0.3632, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7278, + "y": 0.3743, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4474, + "y": 0.3638, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6164, + "y": 0.5521, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5743, + "y": 0.5436, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.601, + "y": 0.7305, + "confidence": 0.971 + }, + { + "name": "right_knee", + "x": 0.547, + "y": 0.6881, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.5904, + "y": 0.8899, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.508, + "y": 0.7984, + "confidence": 0.896 + }, + { + "name": "left_heel", + "x": 0.585, + "y": 0.9068, + "confidence": 0.841 + }, + { + "name": "right_heel", + "x": 0.5067, + "y": 0.809, + "confidence": 0.689 + }, + { + "name": "left_foot_index", + "x": 0.5885, + "y": 0.9451, + "confidence": 0.956 + }, + { + "name": "right_foot_index", + "x": 0.4924, + "y": 0.8495, + "confidence": 0.894 + } + ] + } + ] + }, + { + "frame_index": 128, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0185, + "acceleration": 0.6654, + "fluidity": 0.073, + "expansion": 0.238, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6057, + "y": 0.2646, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6083, + "y": 0.2541, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.2549, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.2558, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.252, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2516, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2514, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5884, + "y": 0.26, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6097, + "y": 0.2804, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6003, + "y": 0.2787, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6344, + "y": 0.357, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.565, + "y": 0.3607, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6755, + "y": 0.4041, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.396, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7168, + "y": 0.3837, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4608, + "y": 0.3715, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7354, + "y": 0.3801, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4425, + "y": 0.3697, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7339, + "y": 0.373, + "confidence": 0.994 + }, + { + "name": "right_index", + "x": 0.4419, + "y": 0.3632, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7284, + "y": 0.3742, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.4472, + "y": 0.3638, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6161, + "y": 0.5525, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.574, + "y": 0.5436, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6007, + "y": 0.732, + "confidence": 0.97 + }, + { + "name": "right_knee", + "x": 0.5492, + "y": 0.6892, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.5899, + "y": 0.89, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.5109, + "y": 0.8024, + "confidence": 0.903 + }, + { + "name": "left_heel", + "x": 0.5842, + "y": 0.9072, + "confidence": 0.847 + }, + { + "name": "right_heel", + "x": 0.5097, + "y": 0.8135, + "confidence": 0.698 + }, + { + "name": "left_foot_index", + "x": 0.5883, + "y": 0.9453, + "confidence": 0.957 + }, + { + "name": "right_foot_index", + "x": 0.495, + "y": 0.8544, + "confidence": 0.901 + } + ] + } + ] + }, + { + "frame_index": 129, + "timestamp": 2.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0175, + "acceleration": 0.6211, + "fluidity": 0.064, + "expansion": 0.238, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6056, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6083, + "y": 0.2542, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6108, + "y": 0.255, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.2559, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6003, + "y": 0.2521, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2517, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6156, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5885, + "y": 0.26, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6097, + "y": 0.2806, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6002, + "y": 0.2788, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6344, + "y": 0.3572, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.565, + "y": 0.3613, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6756, + "y": 0.4042, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3963, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7169, + "y": 0.3839, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4607, + "y": 0.3716, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7354, + "y": 0.3801, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4424, + "y": 0.3698, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.734, + "y": 0.3729, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4418, + "y": 0.3632, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7284, + "y": 0.3742, + "confidence": 0.994 + }, + { + "name": "right_thumb", + "x": 0.447, + "y": 0.3638, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.616, + "y": 0.5528, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5739, + "y": 0.5437, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6005, + "y": 0.7334, + "confidence": 0.968 + }, + { + "name": "right_knee", + "x": 0.5499, + "y": 0.6892, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.5897, + "y": 0.8904, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.5115, + "y": 0.8031, + "confidence": 0.91 + }, + { + "name": "left_heel", + "x": 0.5838, + "y": 0.9077, + "confidence": 0.853 + }, + { + "name": "right_heel", + "x": 0.5103, + "y": 0.8141, + "confidence": 0.707 + }, + { + "name": "left_foot_index", + "x": 0.5882, + "y": 0.9458, + "confidence": 0.958 + }, + { + "name": "right_foot_index", + "x": 0.4955, + "y": 0.8552, + "confidence": 0.906 + } + ] + } + ] + }, + { + "frame_index": 130, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0164, + "acceleration": 0.6603, + "fluidity": 0.056, + "expansion": 0.237, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6057, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6083, + "y": 0.2544, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6108, + "y": 0.2552, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.256, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6004, + "y": 0.2527, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5972, + "y": 0.2524, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5941, + "y": 0.2524, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6156, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5885, + "y": 0.2609, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6099, + "y": 0.2807, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6005, + "y": 0.279, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6345, + "y": 0.3577, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5652, + "y": 0.3617, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6757, + "y": 0.4049, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.3971, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7171, + "y": 0.385, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4603, + "y": 0.3729, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7355, + "y": 0.3809, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4422, + "y": 0.3712, + "confidence": 0.993 + }, + { + "name": "left_index", + "x": 0.7341, + "y": 0.3736, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4413, + "y": 0.3647, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7287, + "y": 0.3747, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4464, + "y": 0.3653, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6156, + "y": 0.5528, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5738, + "y": 0.5433, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5993, + "y": 0.7328, + "confidence": 0.959 + }, + { + "name": "right_knee", + "x": 0.5619, + "y": 0.6879, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.5884, + "y": 0.8903, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.53, + "y": 0.8287, + "confidence": 0.916 + }, + { + "name": "left_heel", + "x": 0.5807, + "y": 0.9066, + "confidence": 0.847 + }, + { + "name": "right_heel", + "x": 0.5289, + "y": 0.8401, + "confidence": 0.72 + }, + { + "name": "left_foot_index", + "x": 0.5854, + "y": 0.9416, + "confidence": 0.955 + }, + { + "name": "right_foot_index", + "x": 0.5196, + "y": 0.8847, + "confidence": 0.913 + } + ] + } + ] + }, + { + "frame_index": 131, + "timestamp": 2.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.0152, + "acceleration": 0.5048, + "fluidity": 0.208, + "expansion": 0.236, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6063, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6085, + "y": 0.2544, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.611, + "y": 0.2552, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6134, + "y": 0.256, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6007, + "y": 0.253, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5975, + "y": 0.2529, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5943, + "y": 0.2531, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2634, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5885, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6106, + "y": 0.2807, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6014, + "y": 0.2791, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6345, + "y": 0.358, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5652, + "y": 0.362, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6757, + "y": 0.4052, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.3973, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7171, + "y": 0.3862, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4602, + "y": 0.374, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7354, + "y": 0.3819, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4422, + "y": 0.3721, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7341, + "y": 0.3745, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4412, + "y": 0.3655, + "confidence": 0.994 + }, + { + "name": "left_thumb", + "x": 0.7287, + "y": 0.3757, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4464, + "y": 0.3663, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6153, + "y": 0.5528, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5737, + "y": 0.5431, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5985, + "y": 0.7322, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5644, + "y": 0.687, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.5879, + "y": 0.8903, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.5327, + "y": 0.8316, + "confidence": 0.922 + }, + { + "name": "left_heel", + "x": 0.5797, + "y": 0.9058, + "confidence": 0.842 + }, + { + "name": "right_heel", + "x": 0.532, + "y": 0.8427, + "confidence": 0.732 + }, + { + "name": "left_foot_index", + "x": 0.5845, + "y": 0.9398, + "confidence": 0.954 + }, + { + "name": "right_foot_index", + "x": 0.5225, + "y": 0.8885, + "confidence": 0.919 + } + ] + } + ] + }, + { + "frame_index": 132, + "timestamp": 2.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0169, + "acceleration": 0.5985, + "fluidity": 0.082, + "expansion": 0.234, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6076, + "y": 0.2654, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6097, + "y": 0.2555, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6119, + "y": 0.2563, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6141, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6021, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5988, + "y": 0.2534, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5955, + "y": 0.2534, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2638, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5887, + "y": 0.2617, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6113, + "y": 0.2813, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6024, + "y": 0.2796, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.634, + "y": 0.3581, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5652, + "y": 0.3621, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6751, + "y": 0.4075, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.4017, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7185, + "y": 0.3892, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4594, + "y": 0.3798, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.736, + "y": 0.3839, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.442, + "y": 0.3773, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7349, + "y": 0.3767, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4407, + "y": 0.37, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7295, + "y": 0.3787, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4459, + "y": 0.3717, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6154, + "y": 0.5515, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5744, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5981, + "y": 0.7313, + "confidence": 0.937 + }, + { + "name": "right_knee", + "x": 0.5705, + "y": 0.6981, + "confidence": 0.966 + }, + { + "name": "left_ankle", + "x": 0.5831, + "y": 0.8899, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.5552, + "y": 0.8582, + "confidence": 0.917 + }, + { + "name": "left_heel", + "x": 0.5775, + "y": 0.9047, + "confidence": 0.824 + }, + { + "name": "right_heel", + "x": 0.5586, + "y": 0.8782, + "confidence": 0.726 + }, + { + "name": "left_foot_index", + "x": 0.5755, + "y": 0.9381, + "confidence": 0.941 + }, + { + "name": "right_foot_index", + "x": 0.5393, + "y": 0.9152, + "confidence": 0.914 + } + ] + } + ] + }, + { + "frame_index": 133, + "timestamp": 2.216666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0145, + "acceleration": 0.5799, + "fluidity": 0.086, + "expansion": 0.233, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6085, + "y": 0.2657, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6104, + "y": 0.2561, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6126, + "y": 0.257, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6146, + "y": 0.2578, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.603, + "y": 0.254, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5996, + "y": 0.2537, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5962, + "y": 0.2536, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5889, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6119, + "y": 0.2815, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6031, + "y": 0.2798, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6336, + "y": 0.3581, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5652, + "y": 0.3622, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6746, + "y": 0.4087, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.4037, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7196, + "y": 0.3903, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4588, + "y": 0.3821, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7365, + "y": 0.3848, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4418, + "y": 0.3794, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7356, + "y": 0.3776, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4403, + "y": 0.3719, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7302, + "y": 0.38, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4456, + "y": 0.3739, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6157, + "y": 0.551, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5751, + "y": 0.5432, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5977, + "y": 0.7304, + "confidence": 0.923 + }, + { + "name": "right_knee", + "x": 0.5716, + "y": 0.7013, + "confidence": 0.959 + }, + { + "name": "left_ankle", + "x": 0.5813, + "y": 0.8895, + "confidence": 0.94 + }, + { + "name": "right_ankle", + "x": 0.5571, + "y": 0.8616, + "confidence": 0.913 + }, + { + "name": "left_heel", + "x": 0.5765, + "y": 0.904, + "confidence": 0.808 + }, + { + "name": "right_heel", + "x": 0.5607, + "y": 0.8824, + "confidence": 0.721 + }, + { + "name": "left_foot_index", + "x": 0.5736, + "y": 0.9377, + "confidence": 0.93 + }, + { + "name": "right_foot_index", + "x": 0.5406, + "y": 0.9183, + "confidence": 0.91 + } + ] + } + ] + }, + { + "frame_index": 134, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.077, + "acceleration": 4.1979, + "fluidity": 0.094, + "expansion": 0.229, + "total_displacement": 0.0044, + "center_displacement": { + "x": 0, + "y": 0.0044 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6083, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6104, + "y": 0.2583, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6125, + "y": 0.2591, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6146, + "y": 0.2598, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6029, + "y": 0.2564, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5995, + "y": 0.2561, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5962, + "y": 0.256, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2656, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5888, + "y": 0.2635, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6119, + "y": 0.2845, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.603, + "y": 0.2827, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6333, + "y": 0.3609, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5647, + "y": 0.3629, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6725, + "y": 0.4193, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5147, + "y": 0.4109, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7194, + "y": 0.4054, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4574, + "y": 0.3914, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7366, + "y": 0.397, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4409, + "y": 0.3886, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7363, + "y": 0.3887, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4396, + "y": 0.3807, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7307, + "y": 0.3925, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4448, + "y": 0.3824, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.616, + "y": 0.554, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5755, + "y": 0.5541, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5992, + "y": 0.7378, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.5757, + "y": 0.7249, + "confidence": 0.949 + }, + { + "name": "left_ankle", + "x": 0.5833, + "y": 0.8919, + "confidence": 0.928 + }, + { + "name": "right_ankle", + "x": 0.5798, + "y": 0.8894, + "confidence": 0.905 + }, + { + "name": "left_heel", + "x": 0.5849, + "y": 0.9097, + "confidence": 0.791 + }, + { + "name": "right_heel", + "x": 0.5832, + "y": 0.9107, + "confidence": 0.712 + }, + { + "name": "left_foot_index", + "x": 0.5762, + "y": 0.9377, + "confidence": 0.916 + }, + { + "name": "right_foot_index", + "x": 0.5657, + "y": 0.9408, + "confidence": 0.899 + } + ] + } + ] + }, + { + "frame_index": 135, + "timestamp": 2.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.059, + "acceleration": 3.3504, + "fluidity": 0.066, + "expansion": 0.229, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0001, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.608, + "y": 0.2699, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6102, + "y": 0.2597, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6124, + "y": 0.2605, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6145, + "y": 0.2613, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6026, + "y": 0.2576, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5992, + "y": 0.2572, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5958, + "y": 0.2571, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6155, + "y": 0.2668, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5885, + "y": 0.2644, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6115, + "y": 0.2858, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6023, + "y": 0.2837, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6333, + "y": 0.3626, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5642, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6723, + "y": 0.4225, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.414, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7194, + "y": 0.408, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4572, + "y": 0.3952, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7371, + "y": 0.3991, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4408, + "y": 0.392, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7372, + "y": 0.3903, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4396, + "y": 0.3841, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7314, + "y": 0.3944, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4448, + "y": 0.386, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6161, + "y": 0.5561, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5757, + "y": 0.5573, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.5998, + "y": 0.7404, + "confidence": 0.909 + }, + { + "name": "right_knee", + "x": 0.5764, + "y": 0.7256, + "confidence": 0.94 + }, + { + "name": "left_ankle", + "x": 0.5844, + "y": 0.8933, + "confidence": 0.914 + }, + { + "name": "right_ankle", + "x": 0.5818, + "y": 0.8923, + "confidence": 0.897 + }, + { + "name": "left_heel", + "x": 0.5874, + "y": 0.9116, + "confidence": 0.772 + }, + { + "name": "right_heel", + "x": 0.5848, + "y": 0.912, + "confidence": 0.701 + }, + { + "name": "left_foot_index", + "x": 0.5776, + "y": 0.9388, + "confidence": 0.902 + }, + { + "name": "right_foot_index", + "x": 0.5686, + "y": 0.9445, + "confidence": 0.888 + } + ] + } + ] + }, + { + "frame_index": 136, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0618, + "acceleration": 2.4948, + "fluidity": 0.062, + "expansion": 0.229, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0002, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6076, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.61, + "y": 0.2607, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6123, + "y": 0.2615, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6144, + "y": 0.2623, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6023, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5989, + "y": 0.258, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5954, + "y": 0.2579, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6154, + "y": 0.2678, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5883, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6111, + "y": 0.2867, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6017, + "y": 0.2844, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6332, + "y": 0.3637, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5637, + "y": 0.3662, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6723, + "y": 0.4238, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5146, + "y": 0.416, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7199, + "y": 0.4078, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4572, + "y": 0.3964, + "confidence": 0.998 + }, + { + "name": "left_pinky", + "x": 0.7377, + "y": 0.3996, + "confidence": 0.992 + }, + { + "name": "right_pinky", + "x": 0.4408, + "y": 0.3928, + "confidence": 0.992 + }, + { + "name": "left_index", + "x": 0.7379, + "y": 0.3909, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4396, + "y": 0.3852, + "confidence": 0.993 + }, + { + "name": "left_thumb", + "x": 0.7323, + "y": 0.3943, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4448, + "y": 0.387, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5575, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.5594, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6, + "y": 0.7411, + "confidence": 0.9 + }, + { + "name": "right_knee", + "x": 0.5765, + "y": 0.7247, + "confidence": 0.931 + }, + { + "name": "left_ankle", + "x": 0.5851, + "y": 0.8934, + "confidence": 0.899 + }, + { + "name": "right_ankle", + "x": 0.5818, + "y": 0.892, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.5884, + "y": 0.9123, + "confidence": 0.749 + }, + { + "name": "right_heel", + "x": 0.5846, + "y": 0.9108, + "confidence": 0.688 + }, + { + "name": "left_foot_index", + "x": 0.5782, + "y": 0.9395, + "confidence": 0.885 + }, + { + "name": "right_foot_index", + "x": 0.569, + "y": 0.9442, + "confidence": 0.876 + } + ] + } + ] + }, + { + "frame_index": 137, + "timestamp": 2.283333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2066, + "acceleration": 10.4901, + "fluidity": 0.055, + "expansion": 0.227, + "total_displacement": 0.0105, + "center_displacement": { + "x": -0.0004, + "y": 0.0105 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6073, + "y": 0.2808, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6098, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6121, + "y": 0.2713, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6142, + "y": 0.2721, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6021, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5987, + "y": 0.267, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5952, + "y": 0.267, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6148, + "y": 0.2781, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5882, + "y": 0.2746, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6105, + "y": 0.2981, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6011, + "y": 0.2957, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6327, + "y": 0.3716, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5627, + "y": 0.3761, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6704, + "y": 0.4347, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5143, + "y": 0.429, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.7195, + "y": 0.4253, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.4563, + "y": 0.4147, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7358, + "y": 0.4225, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.4391, + "y": 0.4107, + "confidence": 0.991 + }, + { + "name": "left_index", + "x": 0.7364, + "y": 0.4134, + "confidence": 0.993 + }, + { + "name": "right_index", + "x": 0.4382, + "y": 0.3994, + "confidence": 0.992 + }, + { + "name": "left_thumb", + "x": 0.7307, + "y": 0.4151, + "confidence": 0.993 + }, + { + "name": "right_thumb", + "x": 0.4438, + "y": 0.4023, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5678, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.5731, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6036, + "y": 0.7481, + "confidence": 0.89 + }, + { + "name": "right_knee", + "x": 0.5825, + "y": 0.7423, + "confidence": 0.919 + }, + { + "name": "left_ankle", + "x": 0.598, + "y": 0.8968, + "confidence": 0.888 + }, + { + "name": "right_ankle", + "x": 0.5972, + "y": 0.9058, + "confidence": 0.881 + }, + { + "name": "left_heel", + "x": 0.6019, + "y": 0.9177, + "confidence": 0.742 + }, + { + "name": "right_heel", + "x": 0.604, + "y": 0.9294, + "confidence": 0.691 + }, + { + "name": "left_foot_index", + "x": 0.6026, + "y": 0.9406, + "confidence": 0.874 + }, + { + "name": "right_foot_index", + "x": 0.5757, + "y": 0.9521, + "confidence": 0.866 + } + ] + } + ] + }, + { + "frame_index": 138, + "timestamp": 2.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1144, + "acceleration": 11.5554, + "fluidity": 0.046, + "expansion": 0.226, + "total_displacement": 0.0022, + "center_displacement": { + "x": -0.0002, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.2846, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6099, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6121, + "y": 0.2747, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6142, + "y": 0.2758, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6022, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5988, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5953, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6147, + "y": 0.2813, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5882, + "y": 0.2776, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6105, + "y": 0.3019, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6011, + "y": 0.2986, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6325, + "y": 0.3744, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5618, + "y": 0.3775, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6696, + "y": 0.4369, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5141, + "y": 0.4323, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7192, + "y": 0.4301, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4555, + "y": 0.4164, + "confidence": 0.997 + }, + { + "name": "left_pinky", + "x": 0.7351, + "y": 0.4272, + "confidence": 0.991 + }, + { + "name": "right_pinky", + "x": 0.4383, + "y": 0.4112, + "confidence": 0.99 + }, + { + "name": "left_index", + "x": 0.736, + "y": 0.4194, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4371, + "y": 0.4009, + "confidence": 0.992 + }, + { + "name": "left_thumb", + "x": 0.7304, + "y": 0.4215, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4429, + "y": 0.4035, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5707, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5766, + "y": 0.5747, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6056, + "y": 0.7524, + "confidence": 0.886 + }, + { + "name": "right_knee", + "x": 0.5828, + "y": 0.7463, + "confidence": 0.908 + }, + { + "name": "left_ankle", + "x": 0.6011, + "y": 0.8993, + "confidence": 0.883 + }, + { + "name": "right_ankle", + "x": 0.5972, + "y": 0.9048, + "confidence": 0.876 + }, + { + "name": "left_heel", + "x": 0.6046, + "y": 0.9208, + "confidence": 0.741 + }, + { + "name": "right_heel", + "x": 0.604, + "y": 0.9294, + "confidence": 0.693 + }, + { + "name": "left_foot_index", + "x": 0.6028, + "y": 0.94, + "confidence": 0.869 + }, + { + "name": "right_foot_index", + "x": 0.5762, + "y": 0.9537, + "confidence": 0.86 + } + ] + } + ] + }, + { + "frame_index": 139, + "timestamp": 2.3166666666666664, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2894, + "acceleration": 15.7992, + "fluidity": 0.041, + "expansion": 0.221, + "total_displacement": 0.0129, + "center_displacement": { + "x": -0.0003, + "y": 0.0129 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6075, + "y": 0.303, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6099, + "y": 0.2893, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.612, + "y": 0.2897, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6138, + "y": 0.29, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6022, + "y": 0.288, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5988, + "y": 0.2875, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5953, + "y": 0.2871, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6127, + "y": 0.2954, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5878, + "y": 0.2934, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6105, + "y": 0.3196, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6013, + "y": 0.319, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6317, + "y": 0.3868, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5615, + "y": 0.3912, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6666, + "y": 0.4508, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5137, + "y": 0.4484, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7178, + "y": 0.4507, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4545, + "y": 0.436, + "confidence": 0.996 + }, + { + "name": "left_pinky", + "x": 0.734, + "y": 0.4488, + "confidence": 0.99 + }, + { + "name": "right_pinky", + "x": 0.4374, + "y": 0.4299, + "confidence": 0.988 + }, + { + "name": "left_index", + "x": 0.7355, + "y": 0.4402, + "confidence": 0.992 + }, + { + "name": "right_index", + "x": 0.4361, + "y": 0.4203, + "confidence": 0.99 + }, + { + "name": "left_thumb", + "x": 0.7296, + "y": 0.4435, + "confidence": 0.992 + }, + { + "name": "right_thumb", + "x": 0.4422, + "y": 0.4236, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5832, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.5877, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6178, + "y": 0.7594, + "confidence": 0.892 + }, + { + "name": "right_knee", + "x": 0.5818, + "y": 0.7538, + "confidence": 0.914 + }, + { + "name": "left_ankle", + "x": 0.6191, + "y": 0.9032, + "confidence": 0.89 + }, + { + "name": "right_ankle", + "x": 0.6024, + "y": 0.9088, + "confidence": 0.886 + }, + { + "name": "left_heel", + "x": 0.618, + "y": 0.9243, + "confidence": 0.754 + }, + { + "name": "right_heel", + "x": 0.6075, + "y": 0.9291, + "confidence": 0.709 + }, + { + "name": "left_foot_index", + "x": 0.6424, + "y": 0.9428, + "confidence": 0.877 + }, + { + "name": "right_foot_index", + "x": 0.5807, + "y": 0.9582, + "confidence": 0.869 + } + ] + } + ] + }, + { + "frame_index": 140, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2248, + "acceleration": 16.7471, + "fluidity": 0.035, + "expansion": 0.221, + "total_displacement": 0.0048, + "center_displacement": { + "x": -0.0001, + "y": 0.0048 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.3036, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6096, + "y": 0.2914, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6117, + "y": 0.2918, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6135, + "y": 0.2922, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6018, + "y": 0.2901, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5984, + "y": 0.29, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5949, + "y": 0.2902, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6123, + "y": 0.2978, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5874, + "y": 0.2972, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6104, + "y": 0.3204, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6012, + "y": 0.3194, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6314, + "y": 0.3888, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5613, + "y": 0.3965, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6662, + "y": 0.4523, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.5136, + "y": 0.4501, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7178, + "y": 0.4516, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4546, + "y": 0.4407, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.734, + "y": 0.4503, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4379, + "y": 0.4353, + "confidence": 0.986 + }, + { + "name": "left_index", + "x": 0.7353, + "y": 0.4426, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4364, + "y": 0.4271, + "confidence": 0.989 + }, + { + "name": "left_thumb", + "x": 0.7296, + "y": 0.445, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4427, + "y": 0.4308, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6168, + "y": 0.5895, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.5934, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6199, + "y": 0.7621, + "confidence": 0.897 + }, + { + "name": "right_knee", + "x": 0.5811, + "y": 0.756, + "confidence": 0.919 + }, + { + "name": "left_ankle", + "x": 0.6212, + "y": 0.9041, + "confidence": 0.896 + }, + { + "name": "right_ankle", + "x": 0.6026, + "y": 0.9087, + "confidence": 0.894 + }, + { + "name": "left_heel", + "x": 0.6205, + "y": 0.9255, + "confidence": 0.765 + }, + { + "name": "right_heel", + "x": 0.6079, + "y": 0.9293, + "confidence": 0.725 + }, + { + "name": "left_foot_index", + "x": 0.6422, + "y": 0.944, + "confidence": 0.883 + }, + { + "name": "right_foot_index", + "x": 0.5819, + "y": 0.9592, + "confidence": 0.878 + } + ] + } + ] + }, + { + "frame_index": 141, + "timestamp": 2.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1683, + "acceleration": 14.6927, + "fluidity": 0.03, + "expansion": 0.22, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0001, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6075, + "y": 0.304, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6096, + "y": 0.2927, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6117, + "y": 0.2931, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6135, + "y": 0.2935, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6018, + "y": 0.2916, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5984, + "y": 0.2914, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5949, + "y": 0.2915, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6122, + "y": 0.2985, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5873, + "y": 0.2982, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6104, + "y": 0.3203, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6013, + "y": 0.3188, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6314, + "y": 0.3909, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5613, + "y": 0.3967, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6657, + "y": 0.4533, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.5144, + "y": 0.4497, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7167, + "y": 0.453, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.4562, + "y": 0.4432, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.7326, + "y": 0.4512, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.4391, + "y": 0.4357, + "confidence": 0.986 + }, + { + "name": "left_index", + "x": 0.734, + "y": 0.4439, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.4372, + "y": 0.4273, + "confidence": 0.988 + }, + { + "name": "left_thumb", + "x": 0.7284, + "y": 0.4462, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.4435, + "y": 0.4314, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6172, + "y": 0.587, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5767, + "y": 0.5906, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6201, + "y": 0.7618, + "confidence": 0.903 + }, + { + "name": "right_knee", + "x": 0.5805, + "y": 0.7555, + "confidence": 0.925 + }, + { + "name": "left_ankle", + "x": 0.6212, + "y": 0.9041, + "confidence": 0.903 + }, + { + "name": "right_ankle", + "x": 0.6025, + "y": 0.9094, + "confidence": 0.903 + }, + { + "name": "left_heel", + "x": 0.6212, + "y": 0.9261, + "confidence": 0.775 + }, + { + "name": "right_heel", + "x": 0.6082, + "y": 0.9301, + "confidence": 0.741 + }, + { + "name": "left_foot_index", + "x": 0.6413, + "y": 0.9445, + "confidence": 0.891 + }, + { + "name": "right_foot_index", + "x": 0.5803, + "y": 0.9599, + "confidence": 0.886 + } + ] + } + ] + }, + { + "frame_index": 142, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.363, + "acceleration": 22.6855, + "fluidity": 0.027, + "expansion": 0.218, + "total_displacement": 0.0128, + "center_displacement": { + "x": -0.0001, + "y": 0.0128 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6075, + "y": 0.3184, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6095, + "y": 0.307, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6116, + "y": 0.3073, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6133, + "y": 0.3075, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6017, + "y": 0.3061, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5983, + "y": 0.306, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5948, + "y": 0.3061, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6118, + "y": 0.3137, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5871, + "y": 0.3126, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6103, + "y": 0.3343, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6012, + "y": 0.3342, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6313, + "y": 0.4059, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5608, + "y": 0.4123, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6657, + "y": 0.4726, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.5145, + "y": 0.4701, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7168, + "y": 0.4698, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.4562, + "y": 0.4588, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.7329, + "y": 0.4678, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.4392, + "y": 0.451, + "confidence": 0.985 + }, + { + "name": "left_index", + "x": 0.7345, + "y": 0.4592, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.4372, + "y": 0.4429, + "confidence": 0.988 + }, + { + "name": "left_thumb", + "x": 0.7292, + "y": 0.4613, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.4436, + "y": 0.4461, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6177, + "y": 0.5951, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.6033, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6316, + "y": 0.7598, + "confidence": 0.909 + }, + { + "name": "right_knee", + "x": 0.5802, + "y": 0.7638, + "confidence": 0.931 + }, + { + "name": "left_ankle", + "x": 0.6448, + "y": 0.8998, + "confidence": 0.91 + }, + { + "name": "right_ankle", + "x": 0.603, + "y": 0.9157, + "confidence": 0.911 + }, + { + "name": "left_heel", + "x": 0.6366, + "y": 0.9253, + "confidence": 0.79 + }, + { + "name": "right_heel", + "x": 0.6108, + "y": 0.9396, + "confidence": 0.759 + }, + { + "name": "left_foot_index", + "x": 0.673, + "y": 0.9384, + "confidence": 0.898 + }, + { + "name": "right_foot_index", + "x": 0.5776, + "y": 0.961, + "confidence": 0.895 + } + ] + } + ] + }, + { + "frame_index": 143, + "timestamp": 2.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2375, + "acceleration": 22.1681, + "fluidity": 0.023, + "expansion": 0.218, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6066, + "y": 0.3215, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6087, + "y": 0.3102, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6109, + "y": 0.3105, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6128, + "y": 0.3109, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6009, + "y": 0.3093, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5976, + "y": 0.3094, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5942, + "y": 0.3097, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6117, + "y": 0.3175, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.587, + "y": 0.3175, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6097, + "y": 0.3375, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6005, + "y": 0.3368, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6312, + "y": 0.4086, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5605, + "y": 0.4165, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.666, + "y": 0.4752, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.5144, + "y": 0.4724, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7181, + "y": 0.4726, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.4563, + "y": 0.4618, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.7335, + "y": 0.4699, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.4392, + "y": 0.4538, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.735, + "y": 0.4616, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.4374, + "y": 0.4458, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7301, + "y": 0.4636, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.444, + "y": 0.4491, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6179, + "y": 0.5979, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5765, + "y": 0.6065, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6336, + "y": 0.7586, + "confidence": 0.916 + }, + { + "name": "right_knee", + "x": 0.5801, + "y": 0.7658, + "confidence": 0.936 + }, + { + "name": "left_ankle", + "x": 0.647, + "y": 0.8968, + "confidence": 0.917 + }, + { + "name": "right_ankle", + "x": 0.6034, + "y": 0.9168, + "confidence": 0.918 + }, + { + "name": "left_heel", + "x": 0.6389, + "y": 0.9244, + "confidence": 0.803 + }, + { + "name": "right_heel", + "x": 0.6117, + "y": 0.9414, + "confidence": 0.775 + }, + { + "name": "left_foot_index", + "x": 0.6734, + "y": 0.9364, + "confidence": 0.905 + }, + { + "name": "right_foot_index", + "x": 0.5773, + "y": 0.961, + "confidence": 0.903 + } + ] + } + ] + }, + { + "frame_index": 144, + "timestamp": 2.4, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3747, + "acceleration": 22.932, + "fluidity": 0.02, + "expansion": 0.214, + "total_displacement": 0.0122, + "center_displacement": { + "x": 0.0008, + "y": 0.0121 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6066, + "y": 0.3338, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6087, + "y": 0.3219, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6108, + "y": 0.3218, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6127, + "y": 0.3216, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6009, + "y": 0.3224, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5976, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5943, + "y": 0.3237, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6117, + "y": 0.3284, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.3304, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6098, + "y": 0.3491, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6008, + "y": 0.35, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6314, + "y": 0.4233, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5606, + "y": 0.4294, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6679, + "y": 0.4892, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.5152, + "y": 0.4852, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7199, + "y": 0.4905, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4577, + "y": 0.4781, + "confidence": 0.995 + }, + { + "name": "left_pinky", + "x": 0.7347, + "y": 0.4858, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.4414, + "y": 0.4698, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.736, + "y": 0.4759, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4393, + "y": 0.4607, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7312, + "y": 0.4789, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4459, + "y": 0.4645, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6204, + "y": 0.6071, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5769, + "y": 0.6182, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6406, + "y": 0.7579, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.5736, + "y": 0.7656, + "confidence": 0.939 + }, + { + "name": "left_ankle", + "x": 0.663, + "y": 0.8928, + "confidence": 0.922 + }, + { + "name": "right_ankle", + "x": 0.6028, + "y": 0.9201, + "confidence": 0.924 + }, + { + "name": "left_heel", + "x": 0.6591, + "y": 0.9153, + "confidence": 0.814 + }, + { + "name": "right_heel", + "x": 0.6117, + "y": 0.9452, + "confidence": 0.788 + }, + { + "name": "left_foot_index", + "x": 0.6914, + "y": 0.936, + "confidence": 0.911 + }, + { + "name": "right_foot_index", + "x": 0.5752, + "y": 0.9617, + "confidence": 0.908 + } + ] + } + ] + }, + { + "frame_index": 145, + "timestamp": 2.4166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.276, + "acceleration": 25.9693, + "fluidity": 0.017, + "expansion": 0.214, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6072, + "y": 0.3331, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6087, + "y": 0.3223, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6108, + "y": 0.3225, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6127, + "y": 0.3226, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6011, + "y": 0.322, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5979, + "y": 0.3223, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5944, + "y": 0.3228, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6117, + "y": 0.3292, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.3307, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6104, + "y": 0.3485, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6015, + "y": 0.3489, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6314, + "y": 0.4254, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5606, + "y": 0.4296, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6691, + "y": 0.4911, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5152, + "y": 0.4853, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.721, + "y": 0.4915, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4585, + "y": 0.4799, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7354, + "y": 0.4871, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.443, + "y": 0.4724, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.7369, + "y": 0.4786, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4411, + "y": 0.4648, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7319, + "y": 0.4816, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4474, + "y": 0.4689, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6204, + "y": 0.6102, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.577, + "y": 0.6214, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6425, + "y": 0.7576, + "confidence": 0.927 + }, + { + "name": "right_knee", + "x": 0.5703, + "y": 0.7684, + "confidence": 0.943 + }, + { + "name": "left_ankle", + "x": 0.6645, + "y": 0.8909, + "confidence": 0.927 + }, + { + "name": "right_ankle", + "x": 0.6026, + "y": 0.9216, + "confidence": 0.93 + }, + { + "name": "left_heel", + "x": 0.6604, + "y": 0.9122, + "confidence": 0.826 + }, + { + "name": "right_heel", + "x": 0.6119, + "y": 0.9459, + "confidence": 0.801 + }, + { + "name": "left_foot_index", + "x": 0.6929, + "y": 0.9361, + "confidence": 0.917 + }, + { + "name": "right_foot_index", + "x": 0.5743, + "y": 0.962, + "confidence": 0.913 + } + ] + } + ] + }, + { + "frame_index": 146, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2387, + "acceleration": 18.697, + "fluidity": 0.015, + "expansion": 0.213, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0011, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.607, + "y": 0.3378, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6085, + "y": 0.3258, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6106, + "y": 0.3258, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6126, + "y": 0.3257, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6009, + "y": 0.3262, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5977, + "y": 0.3266, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5943, + "y": 0.3271, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.612, + "y": 0.3322, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.3344, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6104, + "y": 0.3524, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6015, + "y": 0.353, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6319, + "y": 0.4266, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5612, + "y": 0.4311, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6693, + "y": 0.4921, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5168, + "y": 0.4875, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7212, + "y": 0.5008, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4602, + "y": 0.4876, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7358, + "y": 0.4967, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.446, + "y": 0.4802, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7375, + "y": 0.4879, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4439, + "y": 0.473, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7322, + "y": 0.4911, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4497, + "y": 0.4776, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6224, + "y": 0.6083, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5782, + "y": 0.6193, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6474, + "y": 0.7532, + "confidence": 0.932 + }, + { + "name": "right_knee", + "x": 0.5691, + "y": 0.7651, + "confidence": 0.947 + }, + { + "name": "left_ankle", + "x": 0.6787, + "y": 0.885, + "confidence": 0.933 + }, + { + "name": "right_ankle", + "x": 0.601, + "y": 0.9242, + "confidence": 0.935 + }, + { + "name": "left_heel", + "x": 0.6752, + "y": 0.9017, + "confidence": 0.838 + }, + { + "name": "right_heel", + "x": 0.6105, + "y": 0.95, + "confidence": 0.815 + }, + { + "name": "left_foot_index", + "x": 0.7056, + "y": 0.9289, + "confidence": 0.923 + }, + { + "name": "right_foot_index", + "x": 0.5735, + "y": 0.9626, + "confidence": 0.919 + } + ] + } + ] + }, + { + "frame_index": 147, + "timestamp": 2.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2316, + "acceleration": 17.3458, + "fluidity": 0.013, + "expansion": 0.213, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6068, + "y": 0.3376, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6083, + "y": 0.325, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6106, + "y": 0.325, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6126, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6007, + "y": 0.3253, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5974, + "y": 0.3257, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.594, + "y": 0.3263, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6131, + "y": 0.3336, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.3354, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6104, + "y": 0.3528, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6015, + "y": 0.3532, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6322, + "y": 0.427, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5617, + "y": 0.4333, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6698, + "y": 0.4932, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5174, + "y": 0.4895, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7212, + "y": 0.5036, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4608, + "y": 0.4886, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7359, + "y": 0.4987, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4467, + "y": 0.4819, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7378, + "y": 0.4901, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4448, + "y": 0.4741, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7324, + "y": 0.4939, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4505, + "y": 0.4781, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.623, + "y": 0.6074, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5791, + "y": 0.6186, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6475, + "y": 0.7488, + "confidence": 0.937 + }, + { + "name": "right_knee", + "x": 0.5691, + "y": 0.7642, + "confidence": 0.95 + }, + { + "name": "left_ankle", + "x": 0.6796, + "y": 0.8828, + "confidence": 0.938 + }, + { + "name": "right_ankle", + "x": 0.6002, + "y": 0.9255, + "confidence": 0.94 + }, + { + "name": "left_heel", + "x": 0.6763, + "y": 0.8985, + "confidence": 0.848 + }, + { + "name": "right_heel", + "x": 0.6103, + "y": 0.9515, + "confidence": 0.826 + }, + { + "name": "left_foot_index", + "x": 0.7058, + "y": 0.9265, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.573, + "y": 0.9625, + "confidence": 0.924 + } + ] + } + ] + }, + { + "frame_index": 148, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1948, + "acceleration": 15.5616, + "fluidity": 0.011, + "expansion": 0.213, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.606, + "y": 0.3382, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6078, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6102, + "y": 0.3252, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6123, + "y": 0.3252, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6001, + "y": 0.3254, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5967, + "y": 0.3257, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5934, + "y": 0.3263, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6134, + "y": 0.334, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5872, + "y": 0.3354, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6102, + "y": 0.3534, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6009, + "y": 0.3533, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6326, + "y": 0.4276, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5624, + "y": 0.4321, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6706, + "y": 0.4935, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5182, + "y": 0.4886, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7212, + "y": 0.5036, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4609, + "y": 0.4893, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7362, + "y": 0.499, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4469, + "y": 0.4822, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7382, + "y": 0.4905, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4451, + "y": 0.4749, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7325, + "y": 0.4943, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4509, + "y": 0.4791, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6234, + "y": 0.6073, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5795, + "y": 0.6181, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6482, + "y": 0.7485, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.569, + "y": 0.7651, + "confidence": 0.953 + }, + { + "name": "left_ankle", + "x": 0.6792, + "y": 0.8818, + "confidence": 0.942 + }, + { + "name": "right_ankle", + "x": 0.5997, + "y": 0.9262, + "confidence": 0.945 + }, + { + "name": "left_heel", + "x": 0.6755, + "y": 0.8972, + "confidence": 0.857 + }, + { + "name": "right_heel", + "x": 0.6102, + "y": 0.9514, + "confidence": 0.836 + }, + { + "name": "left_foot_index", + "x": 0.7052, + "y": 0.9258, + "confidence": 0.932 + }, + { + "name": "right_foot_index", + "x": 0.5728, + "y": 0.9629, + "confidence": 0.929 + } + ] + } + ] + }, + { + "frame_index": 149, + "timestamp": 2.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2289, + "acceleration": 16.1666, + "fluidity": 0.01, + "expansion": 0.212, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0028, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6059, + "y": 0.3358, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6078, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6102, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6124, + "y": 0.3228, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6001, + "y": 0.3233, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5968, + "y": 0.3237, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5934, + "y": 0.3241, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6151, + "y": 0.3311, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5878, + "y": 0.3324, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6103, + "y": 0.3509, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6009, + "y": 0.3505, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6344, + "y": 0.4237, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5646, + "y": 0.4284, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6725, + "y": 0.489, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5211, + "y": 0.4842, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.722, + "y": 0.5032, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4648, + "y": 0.4898, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7367, + "y": 0.4994, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.45, + "y": 0.4846, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7391, + "y": 0.4909, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.4484, + "y": 0.4776, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7333, + "y": 0.4942, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4538, + "y": 0.4808, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6268, + "y": 0.6044, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5833, + "y": 0.6162, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6533, + "y": 0.7446, + "confidence": 0.944 + }, + { + "name": "right_knee", + "x": 0.5715, + "y": 0.7639, + "confidence": 0.956 + }, + { + "name": "left_ankle", + "x": 0.6826, + "y": 0.8777, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.5992, + "y": 0.9252, + "confidence": 0.95 + }, + { + "name": "left_heel", + "x": 0.6791, + "y": 0.8928, + "confidence": 0.866 + }, + { + "name": "right_heel", + "x": 0.6093, + "y": 0.9503, + "confidence": 0.848 + }, + { + "name": "left_foot_index", + "x": 0.7063, + "y": 0.9232, + "confidence": 0.936 + }, + { + "name": "right_foot_index", + "x": 0.5717, + "y": 0.9622, + "confidence": 0.934 + } + ] + } + ] + }, + { + "frame_index": 150, + "timestamp": 2.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2043, + "acceleration": 13.6004, + "fluidity": 0.009, + "expansion": 0.211, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.001, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6058, + "y": 0.3359, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6078, + "y": 0.3231, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6103, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6125, + "y": 0.3226, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6001, + "y": 0.3237, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5968, + "y": 0.324, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5934, + "y": 0.3243, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6159, + "y": 0.3303, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5879, + "y": 0.3315, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6103, + "y": 0.3505, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6008, + "y": 0.35, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6352, + "y": 0.4218, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5656, + "y": 0.4265, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6739, + "y": 0.4871, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5221, + "y": 0.4821, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7233, + "y": 0.5034, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.4655, + "y": 0.4899, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7383, + "y": 0.4998, + "confidence": 0.989 + }, + { + "name": "right_pinky", + "x": 0.4507, + "y": 0.4853, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7405, + "y": 0.4909, + "confidence": 0.991 + }, + { + "name": "right_index", + "x": 0.449, + "y": 0.478, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7346, + "y": 0.4938, + "confidence": 0.991 + }, + { + "name": "right_thumb", + "x": 0.4544, + "y": 0.4813, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6276, + "y": 0.6016, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5846, + "y": 0.6127, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6536, + "y": 0.7411, + "confidence": 0.947 + }, + { + "name": "right_knee", + "x": 0.5724, + "y": 0.7621, + "confidence": 0.958 + }, + { + "name": "left_ankle", + "x": 0.6822, + "y": 0.8751, + "confidence": 0.949 + }, + { + "name": "right_ankle", + "x": 0.5989, + "y": 0.9245, + "confidence": 0.954 + }, + { + "name": "left_heel", + "x": 0.6787, + "y": 0.8902, + "confidence": 0.873 + }, + { + "name": "right_heel", + "x": 0.6086, + "y": 0.9496, + "confidence": 0.858 + }, + { + "name": "left_foot_index", + "x": 0.7049, + "y": 0.9219, + "confidence": 0.94 + }, + { + "name": "right_foot_index", + "x": 0.5716, + "y": 0.9619, + "confidence": 0.939 + } + ] + } + ] + }, + { + "frame_index": 151, + "timestamp": 2.5166666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3464, + "acceleration": 20.2694, + "fluidity": 0.007, + "expansion": 0.21, + "total_displacement": 0.0126, + "center_displacement": { + "x": 0.0031, + "y": -0.0122 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6063, + "y": 0.3247, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.609, + "y": 0.3105, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6117, + "y": 0.3099, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6143, + "y": 0.3093, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.601, + "y": 0.311, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5977, + "y": 0.3111, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5944, + "y": 0.3111, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6178, + "y": 0.3151, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5902, + "y": 0.3182, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.611, + "y": 0.3407, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6011, + "y": 0.3411, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6374, + "y": 0.4092, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5675, + "y": 0.4101, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6749, + "y": 0.477, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5243, + "y": 0.4763, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7237, + "y": 0.4997, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.472, + "y": 0.4882, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7389, + "y": 0.4976, + "confidence": 0.988 + }, + { + "name": "right_pinky", + "x": 0.4558, + "y": 0.4832, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.7414, + "y": 0.4901, + "confidence": 0.99 + }, + { + "name": "right_index", + "x": 0.4543, + "y": 0.476, + "confidence": 0.986 + }, + { + "name": "left_thumb", + "x": 0.7352, + "y": 0.4927, + "confidence": 0.99 + }, + { + "name": "right_thumb", + "x": 0.4594, + "y": 0.4787, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6323, + "y": 0.5919, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.5882, + "y": 0.6025, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6524, + "y": 0.7305, + "confidence": 0.95 + }, + { + "name": "right_knee", + "x": 0.5794, + "y": 0.7527, + "confidence": 0.959 + }, + { + "name": "left_ankle", + "x": 0.6801, + "y": 0.8751, + "confidence": 0.952 + }, + { + "name": "right_ankle", + "x": 0.598, + "y": 0.9236, + "confidence": 0.957 + }, + { + "name": "left_heel", + "x": 0.6772, + "y": 0.8903, + "confidence": 0.88 + }, + { + "name": "right_heel", + "x": 0.6071, + "y": 0.9481, + "confidence": 0.866 + }, + { + "name": "left_foot_index", + "x": 0.6995, + "y": 0.9232, + "confidence": 0.944 + }, + { + "name": "right_foot_index", + "x": 0.5715, + "y": 0.9616, + "confidence": 0.942 + } + ] + } + ] + }, + { + "frame_index": 152, + "timestamp": 2.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2661, + "acceleration": 19.6039, + "fluidity": 0.007, + "expansion": 0.21, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0011, + "y": -0.0046 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.607, + "y": 0.3207, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6101, + "y": 0.307, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6128, + "y": 0.3065, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6156, + "y": 0.306, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6021, + "y": 0.3074, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.599, + "y": 0.3074, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5957, + "y": 0.3073, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6192, + "y": 0.3123, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5917, + "y": 0.3144, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6122, + "y": 0.3367, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6021, + "y": 0.3371, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6384, + "y": 0.4042, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5686, + "y": 0.4055, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6755, + "y": 0.4728, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5255, + "y": 0.4736, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7245, + "y": 0.4989, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.4733, + "y": 0.4871, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7396, + "y": 0.4976, + "confidence": 0.987 + }, + { + "name": "right_pinky", + "x": 0.4567, + "y": 0.4826, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.7419, + "y": 0.4914, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.4554, + "y": 0.4755, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7358, + "y": 0.4938, + "confidence": 0.989 + }, + { + "name": "right_thumb", + "x": 0.4604, + "y": 0.4777, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6335, + "y": 0.5876, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5894, + "y": 0.5979, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6526, + "y": 0.7252, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.5818, + "y": 0.749, + "confidence": 0.959 + }, + { + "name": "left_ankle", + "x": 0.6797, + "y": 0.8739, + "confidence": 0.956 + }, + { + "name": "right_ankle", + "x": 0.5977, + "y": 0.9228, + "confidence": 0.96 + }, + { + "name": "left_heel", + "x": 0.6769, + "y": 0.8905, + "confidence": 0.887 + }, + { + "name": "right_heel", + "x": 0.6069, + "y": 0.9474, + "confidence": 0.874 + }, + { + "name": "left_foot_index", + "x": 0.6978, + "y": 0.924, + "confidence": 0.948 + }, + { + "name": "right_foot_index", + "x": 0.5707, + "y": 0.9613, + "confidence": 0.946 + } + ] + } + ] + }, + { + "frame_index": 153, + "timestamp": 2.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.228, + "acceleration": 16.2093, + "fluidity": 0.006, + "expansion": 0.21, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0007, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6078, + "y": 0.3172, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6107, + "y": 0.3049, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6134, + "y": 0.3046, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6162, + "y": 0.3042, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6029, + "y": 0.3055, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5998, + "y": 0.3056, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5966, + "y": 0.3056, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6197, + "y": 0.3114, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5923, + "y": 0.3132, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6131, + "y": 0.3333, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6028, + "y": 0.3334, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.4034, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.569, + "y": 0.404, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6762, + "y": 0.4704, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5266, + "y": 0.4716, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7249, + "y": 0.4978, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.4734, + "y": 0.4867, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.74, + "y": 0.4969, + "confidence": 0.986 + }, + { + "name": "right_pinky", + "x": 0.4572, + "y": 0.4828, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.7421, + "y": 0.4911, + "confidence": 0.989 + }, + { + "name": "right_index", + "x": 0.4557, + "y": 0.4759, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7362, + "y": 0.4932, + "confidence": 0.988 + }, + { + "name": "right_thumb", + "x": 0.4608, + "y": 0.4779, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6347, + "y": 0.5861, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5896, + "y": 0.596, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6528, + "y": 0.7261, + "confidence": 0.956 + }, + { + "name": "right_knee", + "x": 0.5832, + "y": 0.7467, + "confidence": 0.96 + }, + { + "name": "left_ankle", + "x": 0.6791, + "y": 0.8738, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.5973, + "y": 0.9226, + "confidence": 0.963 + }, + { + "name": "left_heel", + "x": 0.6764, + "y": 0.8911, + "confidence": 0.893 + }, + { + "name": "right_heel", + "x": 0.6063, + "y": 0.9469, + "confidence": 0.881 + }, + { + "name": "left_foot_index", + "x": 0.6973, + "y": 0.9256, + "confidence": 0.951 + }, + { + "name": "right_foot_index", + "x": 0.5701, + "y": 0.961, + "confidence": 0.95 + } + ] + } + ] + }, + { + "frame_index": 154, + "timestamp": 2.5666666666666664, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4211, + "acceleration": 25.2499, + "fluidity": 0.005, + "expansion": 0.206, + "total_displacement": 0.0141, + "center_displacement": { + "x": 0.003, + "y": -0.0137 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6088, + "y": 0.3045, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6121, + "y": 0.292, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.615, + "y": 0.2917, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6178, + "y": 0.2913, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6039, + "y": 0.2923, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6009, + "y": 0.2923, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5977, + "y": 0.2922, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6209, + "y": 0.2965, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5936, + "y": 0.2983, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6135, + "y": 0.3212, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6037, + "y": 0.321, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6414, + "y": 0.3872, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5711, + "y": 0.3898, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6773, + "y": 0.4565, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5318, + "y": 0.4522, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7247, + "y": 0.4959, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.4821, + "y": 0.4854, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7399, + "y": 0.4954, + "confidence": 0.985 + }, + { + "name": "right_pinky", + "x": 0.4656, + "y": 0.4826, + "confidence": 0.984 + }, + { + "name": "left_index", + "x": 0.742, + "y": 0.4897, + "confidence": 0.988 + }, + { + "name": "right_index", + "x": 0.4637, + "y": 0.4757, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7361, + "y": 0.4916, + "confidence": 0.987 + }, + { + "name": "right_thumb", + "x": 0.4688, + "y": 0.4776, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6378, + "y": 0.5751, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5943, + "y": 0.5825, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6526, + "y": 0.7268, + "confidence": 0.959 + }, + { + "name": "right_knee", + "x": 0.5904, + "y": 0.741, + "confidence": 0.963 + }, + { + "name": "left_ankle", + "x": 0.6768, + "y": 0.8739, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.5921, + "y": 0.91, + "confidence": 0.966 + }, + { + "name": "left_heel", + "x": 0.6738, + "y": 0.8909, + "confidence": 0.895 + }, + { + "name": "right_heel", + "x": 0.5996, + "y": 0.9311, + "confidence": 0.887 + }, + { + "name": "left_foot_index", + "x": 0.6911, + "y": 0.9328, + "confidence": 0.955 + }, + { + "name": "right_foot_index", + "x": 0.5691, + "y": 0.9586, + "confidence": 0.953 + } + ] + } + ] + }, + { + "frame_index": 155, + "timestamp": 2.5833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2676, + "acceleration": 25.5997, + "fluidity": 0.004, + "expansion": 0.206, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.001, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6094, + "y": 0.2995, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6128, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6155, + "y": 0.2866, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6184, + "y": 0.2863, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6047, + "y": 0.287, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6016, + "y": 0.2871, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5984, + "y": 0.2872, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6214, + "y": 0.2926, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5942, + "y": 0.2949, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6139, + "y": 0.3156, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6041, + "y": 0.3158, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6428, + "y": 0.3836, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5718, + "y": 0.3873, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6779, + "y": 0.4522, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5318, + "y": 0.4521, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7248, + "y": 0.4946, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.4827, + "y": 0.4848, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7402, + "y": 0.4945, + "confidence": 0.984 + }, + { + "name": "right_pinky", + "x": 0.4667, + "y": 0.4824, + "confidence": 0.983 + }, + { + "name": "left_index", + "x": 0.742, + "y": 0.4888, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4648, + "y": 0.4758, + "confidence": 0.987 + }, + { + "name": "left_thumb", + "x": 0.7362, + "y": 0.4907, + "confidence": 0.987 + }, + { + "name": "right_thumb", + "x": 0.47, + "y": 0.478, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6387, + "y": 0.5735, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5954, + "y": 0.5806, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6533, + "y": 0.7285, + "confidence": 0.962 + }, + { + "name": "right_knee", + "x": 0.5925, + "y": 0.7394, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.6759, + "y": 0.8742, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.5906, + "y": 0.907, + "confidence": 0.969 + }, + { + "name": "left_heel", + "x": 0.6724, + "y": 0.8911, + "confidence": 0.897 + }, + { + "name": "right_heel", + "x": 0.5984, + "y": 0.929, + "confidence": 0.893 + }, + { + "name": "left_foot_index", + "x": 0.6887, + "y": 0.9371, + "confidence": 0.958 + }, + { + "name": "right_foot_index", + "x": 0.568, + "y": 0.9584, + "confidence": 0.957 + } + ] + } + ] + }, + { + "frame_index": 156, + "timestamp": 2.6, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3371, + "acceleration": 20.9174, + "fluidity": 0.004, + "expansion": 0.201, + "total_displacement": 0.0072, + "center_displacement": { + "x": 0.0025, + "y": -0.0068 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6122, + "y": 0.2886, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6154, + "y": 0.2755, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6183, + "y": 0.2752, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6211, + "y": 0.275, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6071, + "y": 0.276, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6041, + "y": 0.2761, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6009, + "y": 0.2763, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6241, + "y": 0.2817, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5969, + "y": 0.284, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6164, + "y": 0.3054, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6074, + "y": 0.3051, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6467, + "y": 0.3758, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5738, + "y": 0.3795, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6803, + "y": 0.4475, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5352, + "y": 0.4471, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7254, + "y": 0.4924, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.4902, + "y": 0.4854, + "confidence": 0.994 + }, + { + "name": "left_pinky", + "x": 0.7403, + "y": 0.4943, + "confidence": 0.984 + }, + { + "name": "right_pinky", + "x": 0.4735, + "y": 0.4864, + "confidence": 0.982 + }, + { + "name": "left_index", + "x": 0.7419, + "y": 0.4881, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4715, + "y": 0.4798, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.7363, + "y": 0.4901, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4782, + "y": 0.4814, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6414, + "y": 0.5688, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5967, + "y": 0.5738, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6548, + "y": 0.7249, + "confidence": 0.965 + }, + { + "name": "right_knee", + "x": 0.5944, + "y": 0.7279, + "confidence": 0.968 + }, + { + "name": "left_ankle", + "x": 0.675, + "y": 0.8744, + "confidence": 0.968 + }, + { + "name": "right_ankle", + "x": 0.591, + "y": 0.891, + "confidence": 0.972 + }, + { + "name": "left_heel", + "x": 0.6691, + "y": 0.8907, + "confidence": 0.897 + }, + { + "name": "right_heel", + "x": 0.5992, + "y": 0.9096, + "confidence": 0.897 + }, + { + "name": "left_foot_index", + "x": 0.6798, + "y": 0.9394, + "confidence": 0.961 + }, + { + "name": "right_foot_index", + "x": 0.5738, + "y": 0.9511, + "confidence": 0.96 + } + ] + } + ] + }, + { + "frame_index": 157, + "timestamp": 2.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3127, + "acceleration": 21.0473, + "fluidity": 0.003, + "expansion": 0.2, + "total_displacement": 0.0037, + "center_displacement": { + "x": 0.0011, + "y": -0.0036 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6137, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6165, + "y": 0.2734, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6193, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6219, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6087, + "y": 0.2746, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6056, + "y": 0.2751, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6024, + "y": 0.2754, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6245, + "y": 0.2789, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5978, + "y": 0.2831, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.618, + "y": 0.3021, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6089, + "y": 0.3025, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6476, + "y": 0.3716, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5752, + "y": 0.3762, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6814, + "y": 0.4452, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5365, + "y": 0.4452, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7256, + "y": 0.4919, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.4921, + "y": 0.485, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7406, + "y": 0.4937, + "confidence": 0.984 + }, + { + "name": "right_pinky", + "x": 0.4742, + "y": 0.4866, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7419, + "y": 0.4886, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4721, + "y": 0.4802, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.7362, + "y": 0.4904, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4792, + "y": 0.4817, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6425, + "y": 0.5653, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5976, + "y": 0.5706, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6551, + "y": 0.7211, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.5938, + "y": 0.7238, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.6746, + "y": 0.8746, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.5911, + "y": 0.8879, + "confidence": 0.974 + }, + { + "name": "left_heel", + "x": 0.6683, + "y": 0.8907, + "confidence": 0.894 + }, + { + "name": "right_heel", + "x": 0.6008, + "y": 0.9065, + "confidence": 0.899 + }, + { + "name": "left_foot_index", + "x": 0.6756, + "y": 0.9393, + "confidence": 0.963 + }, + { + "name": "right_foot_index", + "x": 0.5747, + "y": 0.9504, + "confidence": 0.963 + } + ] + } + ] + }, + { + "frame_index": 158, + "timestamp": 2.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2983, + "acceleration": 17.6537, + "fluidity": 0.003, + "expansion": 0.195, + "total_displacement": 0.0046, + "center_displacement": { + "x": 0.0032, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.615, + "y": 0.2822, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6178, + "y": 0.2696, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6204, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.623, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6103, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6076, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6047, + "y": 0.2734, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.627, + "y": 0.2763, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6012, + "y": 0.2823, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6201, + "y": 0.2968, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.611, + "y": 0.2978, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6527, + "y": 0.3691, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5794, + "y": 0.3733, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6841, + "y": 0.4434, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5424, + "y": 0.4443, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7271, + "y": 0.4917, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.4976, + "y": 0.4856, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7413, + "y": 0.4935, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.4819, + "y": 0.4896, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.7419, + "y": 0.4895, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4791, + "y": 0.4829, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7363, + "y": 0.4906, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4861, + "y": 0.4837, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6446, + "y": 0.5624, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5991, + "y": 0.5657, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6562, + "y": 0.721, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.5929, + "y": 0.7124, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.6728, + "y": 0.8753, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.5979, + "y": 0.8727, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6662, + "y": 0.8909, + "confidence": 0.876 + }, + { + "name": "right_heel", + "x": 0.6059, + "y": 0.8871, + "confidence": 0.894 + }, + { + "name": "left_foot_index", + "x": 0.6739, + "y": 0.9405, + "confidence": 0.963 + }, + { + "name": "right_foot_index", + "x": 0.5962, + "y": 0.945, + "confidence": 0.965 + } + ] + } + ] + }, + { + "frame_index": 159, + "timestamp": 2.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2626, + "acceleration": 17.5057, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0008, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6149, + "y": 0.2857, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6177, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6204, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6232, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6102, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6075, + "y": 0.275, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6047, + "y": 0.2756, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6284, + "y": 0.2783, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6016, + "y": 0.2829, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6203, + "y": 0.2999, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6111, + "y": 0.3009, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6532, + "y": 0.3676, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5802, + "y": 0.3734, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6847, + "y": 0.4428, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5435, + "y": 0.445, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7277, + "y": 0.4912, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.4981, + "y": 0.4874, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7426, + "y": 0.4934, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.4828, + "y": 0.4913, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.7428, + "y": 0.4893, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4801, + "y": 0.4842, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.737, + "y": 0.4904, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4869, + "y": 0.4851, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6462, + "y": 0.5593, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5991, + "y": 0.5641, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6567, + "y": 0.7181, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.5926, + "y": 0.7071, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6718, + "y": 0.8759, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.6004, + "y": 0.87, + "confidence": 0.976 + }, + { + "name": "left_heel", + "x": 0.6656, + "y": 0.891, + "confidence": 0.863 + }, + { + "name": "right_heel", + "x": 0.6077, + "y": 0.8847, + "confidence": 0.892 + }, + { + "name": "left_foot_index", + "x": 0.6732, + "y": 0.9408, + "confidence": 0.963 + }, + { + "name": "right_foot_index", + "x": 0.5999, + "y": 0.9416, + "confidence": 0.967 + } + ] + } + ] + }, + { + "frame_index": 160, + "timestamp": 2.6666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.229, + "acceleration": 14.9461, + "fluidity": 0.002, + "expansion": 0.194, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0006, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6152, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6182, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.621, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6238, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6106, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6077, + "y": 0.2749, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6048, + "y": 0.2755, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6295, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6015, + "y": 0.2823, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6208, + "y": 0.2994, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6113, + "y": 0.3004, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6537, + "y": 0.3674, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5803, + "y": 0.3722, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6849, + "y": 0.4433, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5439, + "y": 0.4449, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7281, + "y": 0.4908, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.4988, + "y": 0.4875, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7436, + "y": 0.4931, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.4829, + "y": 0.4914, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.7434, + "y": 0.4894, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.48, + "y": 0.4845, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7375, + "y": 0.4902, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.487, + "y": 0.4854, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6476, + "y": 0.5592, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5995, + "y": 0.5639, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.657, + "y": 0.7173, + "confidence": 0.968 + }, + { + "name": "right_knee", + "x": 0.5927, + "y": 0.7052, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6713, + "y": 0.8774, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.601, + "y": 0.8698, + "confidence": 0.977 + }, + { + "name": "left_heel", + "x": 0.6654, + "y": 0.8911, + "confidence": 0.85 + }, + { + "name": "right_heel", + "x": 0.6085, + "y": 0.8849, + "confidence": 0.887 + }, + { + "name": "left_foot_index", + "x": 0.6729, + "y": 0.9405, + "confidence": 0.964 + }, + { + "name": "right_foot_index", + "x": 0.6009, + "y": 0.9414, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 161, + "timestamp": 2.683333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2461, + "acceleration": 14.8026, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.003, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6164, + "y": 0.2869, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6196, + "y": 0.2734, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6226, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6258, + "y": 0.2719, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6121, + "y": 0.2755, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6095, + "y": 0.2762, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6068, + "y": 0.2769, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.633, + "y": 0.2773, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6049, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6228, + "y": 0.2999, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6138, + "y": 0.3013, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.658, + "y": 0.367, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5861, + "y": 0.3683, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6874, + "y": 0.4418, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5515, + "y": 0.444, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7283, + "y": 0.4908, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5055, + "y": 0.4884, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7437, + "y": 0.4948, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.4907, + "y": 0.4942, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7434, + "y": 0.4932, + "confidence": 0.987 + }, + { + "name": "right_index", + "x": 0.4873, + "y": 0.4875, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7375, + "y": 0.4929, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4945, + "y": 0.4878, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6484, + "y": 0.5603, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6007, + "y": 0.5627, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6573, + "y": 0.7177, + "confidence": 0.967 + }, + { + "name": "right_knee", + "x": 0.5929, + "y": 0.708, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6696, + "y": 0.8775, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.6041, + "y": 0.8643, + "confidence": 0.977 + }, + { + "name": "left_heel", + "x": 0.6646, + "y": 0.8909, + "confidence": 0.839 + }, + { + "name": "right_heel", + "x": 0.6104, + "y": 0.8754, + "confidence": 0.879 + }, + { + "name": "left_foot_index", + "x": 0.6721, + "y": 0.9422, + "confidence": 0.963 + }, + { + "name": "right_foot_index", + "x": 0.61, + "y": 0.9321, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 162, + "timestamp": 2.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2195, + "acceleration": 12.6236, + "fluidity": 0.002, + "expansion": 0.191, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0012, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6185, + "y": 0.2845, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6216, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6245, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6274, + "y": 0.2696, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6139, + "y": 0.2736, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6113, + "y": 0.2744, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6087, + "y": 0.2751, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6341, + "y": 0.2758, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.607, + "y": 0.2816, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6248, + "y": 0.297, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6154, + "y": 0.2988, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6589, + "y": 0.3665, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5885, + "y": 0.3666, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6888, + "y": 0.4411, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5532, + "y": 0.4421, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7301, + "y": 0.4907, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5071, + "y": 0.4883, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7455, + "y": 0.4949, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.4925, + "y": 0.4945, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7448, + "y": 0.4935, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.4893, + "y": 0.4874, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.7389, + "y": 0.4934, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.4966, + "y": 0.4874, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6488, + "y": 0.5581, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6017, + "y": 0.5589, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6579, + "y": 0.7186, + "confidence": 0.965 + }, + { + "name": "right_knee", + "x": 0.593, + "y": 0.7071, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6686, + "y": 0.8795, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.6043, + "y": 0.8626, + "confidence": 0.976 + }, + { + "name": "left_heel", + "x": 0.6642, + "y": 0.8913, + "confidence": 0.82 + }, + { + "name": "right_heel", + "x": 0.6106, + "y": 0.874, + "confidence": 0.868 + }, + { + "name": "left_foot_index", + "x": 0.6705, + "y": 0.9426, + "confidence": 0.96 + }, + { + "name": "right_foot_index", + "x": 0.61, + "y": 0.927, + "confidence": 0.967 + } + ] + } + ] + }, + { + "frame_index": 163, + "timestamp": 2.716666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2146, + "acceleration": 10.9437, + "fluidity": 0.001, + "expansion": 0.187, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0026, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6193, + "y": 0.2831, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6224, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6251, + "y": 0.2676, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.628, + "y": 0.2666, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6148, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6122, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6098, + "y": 0.2737, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6352, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6092, + "y": 0.28, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.626, + "y": 0.2959, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6166, + "y": 0.2977, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6618, + "y": 0.3644, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5915, + "y": 0.3649, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6913, + "y": 0.4401, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5601, + "y": 0.4419, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.731, + "y": 0.4938, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5153, + "y": 0.4903, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7454, + "y": 0.4993, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5013, + "y": 0.4987, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.745, + "y": 0.4987, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.4986, + "y": 0.4915, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7392, + "y": 0.4983, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5051, + "y": 0.4908, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6509, + "y": 0.5588, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6043, + "y": 0.5593, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6581, + "y": 0.7194, + "confidence": 0.963 + }, + { + "name": "right_knee", + "x": 0.5937, + "y": 0.7033, + "confidence": 0.978 + }, + { + "name": "left_ankle", + "x": 0.6672, + "y": 0.8796, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.609, + "y": 0.8513, + "confidence": 0.975 + }, + { + "name": "left_heel", + "x": 0.6627, + "y": 0.8914, + "confidence": 0.808 + }, + { + "name": "right_heel", + "x": 0.6172, + "y": 0.8646, + "confidence": 0.86 + }, + { + "name": "left_foot_index", + "x": 0.669, + "y": 0.9453, + "confidence": 0.957 + }, + { + "name": "right_foot_index", + "x": 0.6142, + "y": 0.9175, + "confidence": 0.966 + } + ] + } + ] + }, + { + "frame_index": 164, + "timestamp": 2.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1838, + "acceleration": 11.2197, + "fluidity": 0.001, + "expansion": 0.186, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0008, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.619, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6225, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6251, + "y": 0.2682, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6278, + "y": 0.2673, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6149, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6124, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6101, + "y": 0.2733, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6347, + "y": 0.2736, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6093, + "y": 0.279, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6256, + "y": 0.2961, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.616, + "y": 0.2973, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6625, + "y": 0.3638, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5918, + "y": 0.3661, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6916, + "y": 0.4389, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5609, + "y": 0.4425, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7309, + "y": 0.4941, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5167, + "y": 0.4905, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7453, + "y": 0.5007, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5022, + "y": 0.4982, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7449, + "y": 0.5003, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5002, + "y": 0.4908, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7391, + "y": 0.4997, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5067, + "y": 0.4902, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6518, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6054, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6579, + "y": 0.7196, + "confidence": 0.963 + }, + { + "name": "right_knee", + "x": 0.5941, + "y": 0.7002, + "confidence": 0.98 + }, + { + "name": "left_ankle", + "x": 0.6666, + "y": 0.8796, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.6105, + "y": 0.8491, + "confidence": 0.974 + }, + { + "name": "left_heel", + "x": 0.6623, + "y": 0.8915, + "confidence": 0.798 + }, + { + "name": "right_heel", + "x": 0.6184, + "y": 0.8625, + "confidence": 0.853 + }, + { + "name": "left_foot_index", + "x": 0.6685, + "y": 0.9466, + "confidence": 0.956 + }, + { + "name": "right_foot_index", + "x": 0.6155, + "y": 0.9159, + "confidence": 0.965 + } + ] + } + ] + }, + { + "frame_index": 165, + "timestamp": 2.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1733, + "acceleration": 8.9985, + "fluidity": 0.001, + "expansion": 0.185, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0008, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6194, + "y": 0.2824, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.623, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6257, + "y": 0.2677, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6283, + "y": 0.267, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6154, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6129, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6108, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6349, + "y": 0.2731, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6098, + "y": 0.2783, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6261, + "y": 0.2954, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6162, + "y": 0.2964, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6626, + "y": 0.363, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5924, + "y": 0.366, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6918, + "y": 0.4382, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.561, + "y": 0.4425, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7308, + "y": 0.4946, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.517, + "y": 0.4908, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7451, + "y": 0.5014, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5021, + "y": 0.4986, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7449, + "y": 0.501, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5001, + "y": 0.491, + "confidence": 0.985 + }, + { + "name": "left_thumb", + "x": 0.739, + "y": 0.5005, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5067, + "y": 0.4902, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6531, + "y": 0.5564, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6068, + "y": 0.5562, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6577, + "y": 0.7179, + "confidence": 0.962 + }, + { + "name": "right_knee", + "x": 0.5942, + "y": 0.698, + "confidence": 0.981 + }, + { + "name": "left_ankle", + "x": 0.6662, + "y": 0.8781, + "confidence": 0.968 + }, + { + "name": "right_ankle", + "x": 0.6116, + "y": 0.8488, + "confidence": 0.973 + }, + { + "name": "left_heel", + "x": 0.6623, + "y": 0.8899, + "confidence": 0.787 + }, + { + "name": "right_heel", + "x": 0.6189, + "y": 0.861, + "confidence": 0.847 + }, + { + "name": "left_foot_index", + "x": 0.6681, + "y": 0.9462, + "confidence": 0.954 + }, + { + "name": "right_foot_index", + "x": 0.6159, + "y": 0.9162, + "confidence": 0.964 + } + ] + } + ] + }, + { + "frame_index": 166, + "timestamp": 2.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.205, + "acceleration": 10.3839, + "fluidity": 0.001, + "expansion": 0.18, + "total_displacement": 0.0041, + "center_displacement": { + "x": 0.0026, + "y": -0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6199, + "y": 0.2816, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6238, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2666, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.629, + "y": 0.2659, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6161, + "y": 0.2699, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6136, + "y": 0.2707, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6116, + "y": 0.2713, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6359, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6116, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6266, + "y": 0.2944, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6167, + "y": 0.2954, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6641, + "y": 0.3619, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5953, + "y": 0.3655, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6933, + "y": 0.4378, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.565, + "y": 0.4414, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.497, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5217, + "y": 0.4911, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7451, + "y": 0.504, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5071, + "y": 0.5, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.745, + "y": 0.5041, + "confidence": 0.985 + }, + { + "name": "right_index", + "x": 0.5062, + "y": 0.4935, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.739, + "y": 0.5039, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5122, + "y": 0.4925, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6551, + "y": 0.5511, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6108, + "y": 0.5503, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6586, + "y": 0.7146, + "confidence": 0.955 + }, + { + "name": "right_knee", + "x": 0.594, + "y": 0.6816, + "confidence": 0.981 + }, + { + "name": "left_ankle", + "x": 0.6648, + "y": 0.8736, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.6202, + "y": 0.8351, + "confidence": 0.968 + }, + { + "name": "left_heel", + "x": 0.6601, + "y": 0.8817, + "confidence": 0.758 + }, + { + "name": "right_heel", + "x": 0.6298, + "y": 0.847, + "confidence": 0.832 + }, + { + "name": "left_foot_index", + "x": 0.6628, + "y": 0.9372, + "confidence": 0.944 + }, + { + "name": "right_foot_index", + "x": 0.6324, + "y": 0.899, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 167, + "timestamp": 2.783333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1584, + "acceleration": 10.3028, + "fluidity": 0.001, + "expansion": 0.178, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0009, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6202, + "y": 0.2821, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6242, + "y": 0.2682, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6271, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6296, + "y": 0.2667, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6163, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6139, + "y": 0.2713, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.612, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6364, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.612, + "y": 0.2779, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6271, + "y": 0.2951, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6168, + "y": 0.2962, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.665, + "y": 0.3615, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.596, + "y": 0.3651, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6937, + "y": 0.4374, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5653, + "y": 0.4408, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7312, + "y": 0.4987, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.5229, + "y": 0.4916, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.745, + "y": 0.5058, + "confidence": 0.981 + }, + { + "name": "right_pinky", + "x": 0.5083, + "y": 0.5008, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.745, + "y": 0.5062, + "confidence": 0.985 + }, + { + "name": "right_index", + "x": 0.5074, + "y": 0.4948, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.739, + "y": 0.5061, + "confidence": 0.984 + }, + { + "name": "right_thumb", + "x": 0.5135, + "y": 0.4939, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6564, + "y": 0.5498, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6117, + "y": 0.5495, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6598, + "y": 0.7097, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.594, + "y": 0.6769, + "confidence": 0.98 + }, + { + "name": "left_ankle", + "x": 0.6649, + "y": 0.8695, + "confidence": 0.95 + }, + { + "name": "right_ankle", + "x": 0.6233, + "y": 0.8337, + "confidence": 0.96 + }, + { + "name": "left_heel", + "x": 0.6601, + "y": 0.8769, + "confidence": 0.725 + }, + { + "name": "right_heel", + "x": 0.6334, + "y": 0.8449, + "confidence": 0.812 + }, + { + "name": "left_foot_index", + "x": 0.6627, + "y": 0.9342, + "confidence": 0.931 + }, + { + "name": "right_foot_index", + "x": 0.6382, + "y": 0.8996, + "confidence": 0.948 + } + ] + } + ] + }, + { + "frame_index": 168, + "timestamp": 2.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1676, + "acceleration": 8.3531, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0014, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.621, + "y": 0.2834, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6251, + "y": 0.2686, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6281, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6306, + "y": 0.267, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6171, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2723, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6374, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.613, + "y": 0.2783, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6282, + "y": 0.2953, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6177, + "y": 0.2976, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6661, + "y": 0.3602, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.598, + "y": 0.3649, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6942, + "y": 0.4369, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5678, + "y": 0.4402, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.503, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5257, + "y": 0.4927, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7441, + "y": 0.5104, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5117, + "y": 0.5044, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.744, + "y": 0.511, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5119, + "y": 0.4979, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7382, + "y": 0.5107, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5174, + "y": 0.4957, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6572, + "y": 0.5482, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6133, + "y": 0.5457, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6597, + "y": 0.7091, + "confidence": 0.938 + }, + { + "name": "right_knee", + "x": 0.5912, + "y": 0.6713, + "confidence": 0.977 + }, + { + "name": "left_ankle", + "x": 0.6626, + "y": 0.8732, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.6298, + "y": 0.816, + "confidence": 0.945 + }, + { + "name": "left_heel", + "x": 0.6602, + "y": 0.8779, + "confidence": 0.712 + }, + { + "name": "right_heel", + "x": 0.6399, + "y": 0.8254, + "confidence": 0.793 + }, + { + "name": "left_foot_index", + "x": 0.6632, + "y": 0.9307, + "confidence": 0.922 + }, + { + "name": "right_foot_index", + "x": 0.6363, + "y": 0.8944, + "confidence": 0.931 + } + ] + } + ] + }, + { + "frame_index": 169, + "timestamp": 2.8166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1549, + "acceleration": 7.9356, + "fluidity": 0.001, + "expansion": 0.176, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0005, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6212, + "y": 0.2836, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6254, + "y": 0.269, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6285, + "y": 0.2679, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6311, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6171, + "y": 0.2716, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6148, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6376, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6131, + "y": 0.2786, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6286, + "y": 0.2958, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6178, + "y": 0.298, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.667, + "y": 0.3587, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5987, + "y": 0.3646, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6944, + "y": 0.4359, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5684, + "y": 0.4397, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.5043, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5264, + "y": 0.4931, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7431, + "y": 0.5112, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.5124, + "y": 0.5043, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.743, + "y": 0.5122, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5118, + "y": 0.4982, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.7375, + "y": 0.512, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.5176, + "y": 0.4961, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6573, + "y": 0.5462, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6138, + "y": 0.5439, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6596, + "y": 0.7053, + "confidence": 0.925 + }, + { + "name": "right_knee", + "x": 0.5906, + "y": 0.6725, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6606, + "y": 0.8733, + "confidence": 0.933 + }, + { + "name": "right_ankle", + "x": 0.6317, + "y": 0.8142, + "confidence": 0.928 + }, + { + "name": "left_heel", + "x": 0.6603, + "y": 0.8791, + "confidence": 0.694 + }, + { + "name": "right_heel", + "x": 0.6416, + "y": 0.8244, + "confidence": 0.773 + }, + { + "name": "left_foot_index", + "x": 0.6634, + "y": 0.9241, + "confidence": 0.91 + }, + { + "name": "right_foot_index", + "x": 0.6362, + "y": 0.8953, + "confidence": 0.911 + } + ] + } + ] + }, + { + "frame_index": 170, + "timestamp": 2.8333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1366, + "acceleration": 6.9956, + "fluidity": 0.001, + "expansion": 0.173, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0009, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6211, + "y": 0.2859, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6256, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6286, + "y": 0.2689, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6314, + "y": 0.2681, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6173, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6151, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6132, + "y": 0.273, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6379, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6137, + "y": 0.2788, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6285, + "y": 0.2981, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6177, + "y": 0.3014, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6679, + "y": 0.3574, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5994, + "y": 0.3648, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6948, + "y": 0.4362, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5726, + "y": 0.4401, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7308, + "y": 0.5078, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5313, + "y": 0.4978, + "confidence": 0.993 + }, + { + "name": "left_pinky", + "x": 0.7423, + "y": 0.514, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.5167, + "y": 0.5121, + "confidence": 0.981 + }, + { + "name": "left_index", + "x": 0.7422, + "y": 0.5147, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5159, + "y": 0.5057, + "confidence": 0.984 + }, + { + "name": "left_thumb", + "x": 0.737, + "y": 0.5141, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.5216, + "y": 0.5021, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.658, + "y": 0.5456, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6152, + "y": 0.5432, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6595, + "y": 0.7049, + "confidence": 0.924 + }, + { + "name": "right_knee", + "x": 0.5882, + "y": 0.6657, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6602, + "y": 0.8726, + "confidence": 0.933 + }, + { + "name": "right_ankle", + "x": 0.6327, + "y": 0.8121, + "confidence": 0.925 + }, + { + "name": "left_heel", + "x": 0.6604, + "y": 0.8793, + "confidence": 0.694 + }, + { + "name": "right_heel", + "x": 0.6431, + "y": 0.8231, + "confidence": 0.768 + }, + { + "name": "left_foot_index", + "x": 0.6624, + "y": 0.9247, + "confidence": 0.908 + }, + { + "name": "right_foot_index", + "x": 0.6353, + "y": 0.8931, + "confidence": 0.906 + } + ] + } + ] + }, + { + "frame_index": 171, + "timestamp": 2.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1343, + "acceleration": 6.0166, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0002, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.621, + "y": 0.2872, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6257, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6288, + "y": 0.269, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6318, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6173, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.615, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6131, + "y": 0.273, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6384, + "y": 0.273, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6138, + "y": 0.279, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6285, + "y": 0.2993, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6177, + "y": 0.3035, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6685, + "y": 0.3571, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5993, + "y": 0.3646, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6947, + "y": 0.4364, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5743, + "y": 0.4402, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7294, + "y": 0.5076, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.534, + "y": 0.4997, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.7407, + "y": 0.5141, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.519, + "y": 0.5156, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.7404, + "y": 0.5148, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.518, + "y": 0.51, + "confidence": 0.983 + }, + { + "name": "left_thumb", + "x": 0.7355, + "y": 0.5141, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.5242, + "y": 0.5056, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6582, + "y": 0.5433, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6152, + "y": 0.5409, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6594, + "y": 0.7024, + "confidence": 0.923 + }, + { + "name": "right_knee", + "x": 0.5865, + "y": 0.6652, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.6603, + "y": 0.8704, + "confidence": 0.932 + }, + { + "name": "right_ankle", + "x": 0.6332, + "y": 0.8082, + "confidence": 0.919 + }, + { + "name": "left_heel", + "x": 0.6605, + "y": 0.8767, + "confidence": 0.687 + }, + { + "name": "right_heel", + "x": 0.6435, + "y": 0.8189, + "confidence": 0.758 + }, + { + "name": "left_foot_index", + "x": 0.6618, + "y": 0.9257, + "confidence": 0.904 + }, + { + "name": "right_foot_index", + "x": 0.6344, + "y": 0.8923, + "confidence": 0.896 + } + ] + } + ] + }, + { + "frame_index": 172, + "timestamp": 2.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1177, + "acceleration": 5.7382, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0003, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6206, + "y": 0.289, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6256, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6287, + "y": 0.2702, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6316, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6171, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.615, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2735, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6382, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6138, + "y": 0.2791, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6283, + "y": 0.3012, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6175, + "y": 0.3056, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6685, + "y": 0.3567, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5994, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6947, + "y": 0.4366, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5745, + "y": 0.4403, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.729, + "y": 0.5074, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5348, + "y": 0.5001, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.7399, + "y": 0.5145, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.52, + "y": 0.5156, + "confidence": 0.98 + }, + { + "name": "left_index", + "x": 0.7398, + "y": 0.5151, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.519, + "y": 0.5107, + "confidence": 0.983 + }, + { + "name": "left_thumb", + "x": 0.7351, + "y": 0.5141, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.5251, + "y": 0.5064, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6584, + "y": 0.5418, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.616, + "y": 0.5403, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6593, + "y": 0.702, + "confidence": 0.92 + }, + { + "name": "right_knee", + "x": 0.5863, + "y": 0.6648, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.6603, + "y": 0.8698, + "confidence": 0.929 + }, + { + "name": "right_ankle", + "x": 0.6336, + "y": 0.8059, + "confidence": 0.911 + }, + { + "name": "left_heel", + "x": 0.6605, + "y": 0.8767, + "confidence": 0.68 + }, + { + "name": "right_heel", + "x": 0.6449, + "y": 0.8178, + "confidence": 0.747 + }, + { + "name": "left_foot_index", + "x": 0.6604, + "y": 0.9214, + "confidence": 0.899 + }, + { + "name": "right_foot_index", + "x": 0.6453, + "y": 0.8742, + "confidence": 0.884 + } + ] + } + ] + }, + { + "frame_index": 173, + "timestamp": 2.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1307, + "acceleration": 6.0282, + "fluidity": 0, + "expansion": 0.171, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0022, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6205, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6254, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6285, + "y": 0.2663, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6315, + "y": 0.2654, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6171, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6149, + "y": 0.2717, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.613, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6382, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6141, + "y": 0.2783, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6282, + "y": 0.2981, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6175, + "y": 0.304, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6692, + "y": 0.3565, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6005, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6952, + "y": 0.4367, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5775, + "y": 0.4447, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.7278, + "y": 0.5084, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5388, + "y": 0.5033, + "confidence": 0.992 + }, + { + "name": "left_pinky", + "x": 0.738, + "y": 0.5184, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.5247, + "y": 0.5161, + "confidence": 0.979 + }, + { + "name": "left_index", + "x": 0.737, + "y": 0.5188, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5236, + "y": 0.5123, + "confidence": 0.982 + }, + { + "name": "left_thumb", + "x": 0.7326, + "y": 0.5167, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.5291, + "y": 0.5097, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6611, + "y": 0.5422, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6202, + "y": 0.542, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6596, + "y": 0.7146, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.5855, + "y": 0.662, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6592, + "y": 0.8763, + "confidence": 0.93 + }, + { + "name": "right_ankle", + "x": 0.6311, + "y": 0.8083, + "confidence": 0.906 + }, + { + "name": "left_heel", + "x": 0.6595, + "y": 0.8862, + "confidence": 0.676 + }, + { + "name": "right_heel", + "x": 0.6417, + "y": 0.8188, + "confidence": 0.741 + }, + { + "name": "left_foot_index", + "x": 0.6585, + "y": 0.9263, + "confidence": 0.9 + }, + { + "name": "right_foot_index", + "x": 0.6424, + "y": 0.8824, + "confidence": 0.879 + } + ] + } + ] + }, + { + "frame_index": 174, + "timestamp": 2.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1096, + "acceleration": 5.6248, + "fluidity": 0, + "expansion": 0.17, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6194, + "y": 0.2861, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6246, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6279, + "y": 0.2663, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.631, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6167, + "y": 0.2708, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6149, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6381, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6147, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6275, + "y": 0.2982, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6172, + "y": 0.304, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6697, + "y": 0.3561, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6016, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6959, + "y": 0.4368, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5782, + "y": 0.4452, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.7274, + "y": 0.5091, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5386, + "y": 0.5047, + "confidence": 0.991 + }, + { + "name": "left_pinky", + "x": 0.7378, + "y": 0.5198, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.5244, + "y": 0.5162, + "confidence": 0.978 + }, + { + "name": "left_index", + "x": 0.7365, + "y": 0.5206, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5234, + "y": 0.5131, + "confidence": 0.981 + }, + { + "name": "left_thumb", + "x": 0.732, + "y": 0.518, + "confidence": 0.986 + }, + { + "name": "right_thumb", + "x": 0.529, + "y": 0.511, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6622, + "y": 0.5428, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6212, + "y": 0.5427, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6596, + "y": 0.7144, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.5858, + "y": 0.6601, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6584, + "y": 0.8763, + "confidence": 0.929 + }, + { + "name": "right_ankle", + "x": 0.6302, + "y": 0.81, + "confidence": 0.904 + }, + { + "name": "left_heel", + "x": 0.6589, + "y": 0.8884, + "confidence": 0.671 + }, + { + "name": "right_heel", + "x": 0.6406, + "y": 0.8207, + "confidence": 0.735 + }, + { + "name": "left_foot_index", + "x": 0.6579, + "y": 0.9255, + "confidence": 0.899 + }, + { + "name": "right_foot_index", + "x": 0.641, + "y": 0.8852, + "confidence": 0.877 + } + ] + } + ] + }, + { + "frame_index": 175, + "timestamp": 2.9166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1071, + "acceleration": 4.5689, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6193, + "y": 0.2874, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6244, + "y": 0.2687, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6277, + "y": 0.2672, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6309, + "y": 0.2658, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6167, + "y": 0.2719, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6148, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2728, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.638, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6151, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6275, + "y": 0.2993, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3048, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6705, + "y": 0.3559, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.603, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6958, + "y": 0.4377, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5824, + "y": 0.4458, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7269, + "y": 0.5144, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.5455, + "y": 0.5065, + "confidence": 0.99 + }, + { + "name": "left_pinky", + "x": 0.7373, + "y": 0.5274, + "confidence": 0.983 + }, + { + "name": "right_pinky", + "x": 0.5322, + "y": 0.5191, + "confidence": 0.977 + }, + { + "name": "left_index", + "x": 0.7359, + "y": 0.5291, + "confidence": 0.986 + }, + { + "name": "right_index", + "x": 0.5311, + "y": 0.5161, + "confidence": 0.98 + }, + { + "name": "left_thumb", + "x": 0.7314, + "y": 0.5268, + "confidence": 0.985 + }, + { + "name": "right_thumb", + "x": 0.5364, + "y": 0.5143, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6639, + "y": 0.5435, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.622, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6596, + "y": 0.7147, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.586, + "y": 0.6562, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6575, + "y": 0.8776, + "confidence": 0.928 + }, + { + "name": "right_ankle", + "x": 0.6169, + "y": 0.8115, + "confidence": 0.902 + }, + { + "name": "left_heel", + "x": 0.6536, + "y": 0.8892, + "confidence": 0.659 + }, + { + "name": "right_heel", + "x": 0.6262, + "y": 0.828, + "confidence": 0.728 + }, + { + "name": "left_foot_index", + "x": 0.6545, + "y": 0.933, + "confidence": 0.898 + }, + { + "name": "right_foot_index", + "x": 0.6276, + "y": 0.8817, + "confidence": 0.876 + } + ] + } + ] + }, + { + "frame_index": 176, + "timestamp": 2.933333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0937, + "acceleration": 4.7026, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0001, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6191, + "y": 0.2874, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6241, + "y": 0.2689, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6275, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6307, + "y": 0.2661, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6166, + "y": 0.272, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2725, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6128, + "y": 0.2729, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6379, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6152, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6273, + "y": 0.2993, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3048, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6707, + "y": 0.3554, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6032, + "y": 0.3644, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6957, + "y": 0.4383, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5831, + "y": 0.4462, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.7266, + "y": 0.5159, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.546, + "y": 0.5074, + "confidence": 0.989 + }, + { + "name": "left_pinky", + "x": 0.7368, + "y": 0.5287, + "confidence": 0.982 + }, + { + "name": "right_pinky", + "x": 0.5331, + "y": 0.5198, + "confidence": 0.975 + }, + { + "name": "left_index", + "x": 0.7356, + "y": 0.53, + "confidence": 0.985 + }, + { + "name": "right_index", + "x": 0.5319, + "y": 0.517, + "confidence": 0.978 + }, + { + "name": "left_thumb", + "x": 0.7311, + "y": 0.5281, + "confidence": 0.984 + }, + { + "name": "right_thumb", + "x": 0.537, + "y": 0.5155, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.6639, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6218, + "y": 0.5421, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6598, + "y": 0.71, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.5866, + "y": 0.655, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6571, + "y": 0.8775, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.6143, + "y": 0.8146, + "confidence": 0.899 + }, + { + "name": "left_heel", + "x": 0.6512, + "y": 0.8887, + "confidence": 0.637 + }, + { + "name": "right_heel", + "x": 0.6234, + "y": 0.832, + "confidence": 0.717 + }, + { + "name": "left_foot_index", + "x": 0.653, + "y": 0.9323, + "confidence": 0.893 + }, + { + "name": "right_foot_index", + "x": 0.6241, + "y": 0.8814, + "confidence": 0.875 + } + ] + } + ] + }, + { + "frame_index": 177, + "timestamp": 2.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0821, + "acceleration": 3.8643, + "fluidity": 0, + "expansion": 0.168, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.619, + "y": 0.2877, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.624, + "y": 0.2692, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6275, + "y": 0.2676, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6307, + "y": 0.2662, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6166, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6128, + "y": 0.273, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6379, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6151, + "y": 0.2776, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6272, + "y": 0.2996, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3049, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6708, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6033, + "y": 0.3643, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6957, + "y": 0.4384, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5834, + "y": 0.4463, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.726, + "y": 0.5158, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.5466, + "y": 0.5072, + "confidence": 0.988 + }, + { + "name": "left_pinky", + "x": 0.7361, + "y": 0.5286, + "confidence": 0.981 + }, + { + "name": "right_pinky", + "x": 0.5334, + "y": 0.5201, + "confidence": 0.973 + }, + { + "name": "left_index", + "x": 0.7348, + "y": 0.53, + "confidence": 0.984 + }, + { + "name": "right_index", + "x": 0.5324, + "y": 0.5173, + "confidence": 0.977 + }, + { + "name": "left_thumb", + "x": 0.7302, + "y": 0.528, + "confidence": 0.983 + }, + { + "name": "right_thumb", + "x": 0.5376, + "y": 0.5157, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.5431, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6223, + "y": 0.5424, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6598, + "y": 0.7031, + "confidence": 0.915 + }, + { + "name": "right_knee", + "x": 0.5868, + "y": 0.6549, + "confidence": 0.969 + }, + { + "name": "left_ankle", + "x": 0.657, + "y": 0.8775, + "confidence": 0.919 + }, + { + "name": "right_ankle", + "x": 0.6134, + "y": 0.8154, + "confidence": 0.894 + }, + { + "name": "left_heel", + "x": 0.6502, + "y": 0.8897, + "confidence": 0.623 + }, + { + "name": "right_heel", + "x": 0.6224, + "y": 0.833, + "confidence": 0.705 + }, + { + "name": "left_foot_index", + "x": 0.6512, + "y": 0.9309, + "confidence": 0.89 + }, + { + "name": "right_foot_index", + "x": 0.6222, + "y": 0.8821, + "confidence": 0.872 + } + ] + } + ] + }, + { + "frame_index": 178, + "timestamp": 2.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0759, + "acceleration": 3.3244, + "fluidity": 0.048, + "expansion": 0.167, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6187, + "y": 0.2898, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6235, + "y": 0.2712, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6269, + "y": 0.2697, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6301, + "y": 0.2682, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6165, + "y": 0.2738, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2741, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6128, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6378, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6154, + "y": 0.278, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6269, + "y": 0.3011, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3059, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6708, + "y": 0.3549, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6039, + "y": 0.3646, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6956, + "y": 0.4394, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.585, + "y": 0.4477, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.7247, + "y": 0.5183, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.5508, + "y": 0.5127, + "confidence": 0.987 + }, + { + "name": "left_pinky", + "x": 0.7353, + "y": 0.5321, + "confidence": 0.98 + }, + { + "name": "right_pinky", + "x": 0.5372, + "y": 0.5257, + "confidence": 0.972 + }, + { + "name": "left_index", + "x": 0.7339, + "y": 0.534, + "confidence": 0.983 + }, + { + "name": "right_index", + "x": 0.5363, + "y": 0.5217, + "confidence": 0.975 + }, + { + "name": "left_thumb", + "x": 0.729, + "y": 0.5317, + "confidence": 0.982 + }, + { + "name": "right_thumb", + "x": 0.5416, + "y": 0.5202, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.6643, + "y": 0.5437, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6219, + "y": 0.5429, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6598, + "y": 0.7045, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.5874, + "y": 0.6545, + "confidence": 0.97 + }, + { + "name": "left_ankle", + "x": 0.6553, + "y": 0.8787, + "confidence": 0.922 + }, + { + "name": "right_ankle", + "x": 0.5944, + "y": 0.8164, + "confidence": 0.899 + }, + { + "name": "left_heel", + "x": 0.6501, + "y": 0.8925, + "confidence": 0.627 + }, + { + "name": "right_heel", + "x": 0.5993, + "y": 0.833, + "confidence": 0.71 + }, + { + "name": "left_foot_index", + "x": 0.6504, + "y": 0.9361, + "confidence": 0.893 + }, + { + "name": "right_foot_index", + "x": 0.5937, + "y": 0.8815, + "confidence": 0.878 + } + ] + } + ] + }, + { + "frame_index": 179, + "timestamp": 2.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "fast", + "velocity": 0.0682, + "acceleration": 2.9795, + "fluidity": 0.229, + "expansion": 0.166, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6185, + "y": 0.2904, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6233, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6298, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6164, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6146, + "y": 0.2746, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6128, + "y": 0.2748, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6377, + "y": 0.271, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6155, + "y": 0.2782, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6267, + "y": 0.3017, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3063, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6709, + "y": 0.355, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6042, + "y": 0.3648, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6956, + "y": 0.4398, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5856, + "y": 0.4485, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.7239, + "y": 0.5189, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.5519, + "y": 0.5147, + "confidence": 0.985 + }, + { + "name": "left_pinky", + "x": 0.7349, + "y": 0.5331, + "confidence": 0.978 + }, + { + "name": "right_pinky", + "x": 0.5381, + "y": 0.5279, + "confidence": 0.969 + }, + { + "name": "left_index", + "x": 0.7335, + "y": 0.5349, + "confidence": 0.982 + }, + { + "name": "right_index", + "x": 0.5371, + "y": 0.5238, + "confidence": 0.973 + }, + { + "name": "left_thumb", + "x": 0.7285, + "y": 0.5325, + "confidence": 0.981 + }, + { + "name": "right_thumb", + "x": 0.5425, + "y": 0.522, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.6648, + "y": 0.5437, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6222, + "y": 0.5435, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6597, + "y": 0.7049, + "confidence": 0.918 + }, + { + "name": "right_knee", + "x": 0.588, + "y": 0.6545, + "confidence": 0.971 + }, + { + "name": "left_ankle", + "x": 0.6548, + "y": 0.8791, + "confidence": 0.924 + }, + { + "name": "right_ankle", + "x": 0.5919, + "y": 0.8171, + "confidence": 0.904 + }, + { + "name": "left_heel", + "x": 0.6504, + "y": 0.8937, + "confidence": 0.627 + }, + { + "name": "right_heel", + "x": 0.5968, + "y": 0.8331, + "confidence": 0.712 + }, + { + "name": "left_foot_index", + "x": 0.65, + "y": 0.9376, + "confidence": 0.896 + }, + { + "name": "right_foot_index", + "x": 0.5904, + "y": 0.8812, + "confidence": 0.884 + } + ] + } + ] + }, + { + "frame_index": 180, + "timestamp": 3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0594, + "acceleration": 2.6879, + "fluidity": 0.069, + "expansion": 0.165, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6186, + "y": 0.2903, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6233, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6298, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6164, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6146, + "y": 0.2746, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2748, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6377, + "y": 0.271, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6154, + "y": 0.2784, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6267, + "y": 0.3017, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3063, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6708, + "y": 0.3551, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6042, + "y": 0.3654, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.695, + "y": 0.4398, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5867, + "y": 0.4517, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.7198, + "y": 0.5214, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.555, + "y": 0.5198, + "confidence": 0.982 + }, + { + "name": "left_pinky", + "x": 0.7312, + "y": 0.5375, + "confidence": 0.978 + }, + { + "name": "right_pinky", + "x": 0.5416, + "y": 0.5345, + "confidence": 0.965 + }, + { + "name": "left_index", + "x": 0.73, + "y": 0.5394, + "confidence": 0.981 + }, + { + "name": "right_index", + "x": 0.5403, + "y": 0.5316, + "confidence": 0.969 + }, + { + "name": "left_thumb", + "x": 0.7249, + "y": 0.5364, + "confidence": 0.98 + }, + { + "name": "right_thumb", + "x": 0.5456, + "y": 0.5292, + "confidence": 0.969 + }, + { + "name": "left_hip", + "x": 0.6647, + "y": 0.5439, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6219, + "y": 0.5433, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6591, + "y": 0.7054, + "confidence": 0.922 + }, + { + "name": "right_knee", + "x": 0.5921, + "y": 0.6549, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.6544, + "y": 0.879, + "confidence": 0.929 + }, + { + "name": "right_ankle", + "x": 0.574, + "y": 0.8096, + "confidence": 0.911 + }, + { + "name": "left_heel", + "x": 0.6501, + "y": 0.8947, + "confidence": 0.643 + }, + { + "name": "right_heel", + "x": 0.5738, + "y": 0.8286, + "confidence": 0.717 + }, + { + "name": "left_foot_index", + "x": 0.6494, + "y": 0.9377, + "confidence": 0.902 + }, + { + "name": "right_foot_index", + "x": 0.5669, + "y": 0.8696, + "confidence": 0.891 + } + ] + } + ] + }, + { + "frame_index": 181, + "timestamp": 3.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0525, + "acceleration": 2.3206, + "fluidity": 0.087, + "expansion": 0.164, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6186, + "y": 0.2903, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6233, + "y": 0.2718, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2703, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6298, + "y": 0.2688, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6163, + "y": 0.2743, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6146, + "y": 0.2746, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6129, + "y": 0.2749, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6377, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6154, + "y": 0.2786, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6267, + "y": 0.3018, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6171, + "y": 0.3063, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6708, + "y": 0.3552, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6042, + "y": 0.3656, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6946, + "y": 0.4398, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.587, + "y": 0.4528, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.7186, + "y": 0.5222, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5557, + "y": 0.5212, + "confidence": 0.98 + }, + { + "name": "left_pinky", + "x": 0.73, + "y": 0.5388, + "confidence": 0.977 + }, + { + "name": "right_pinky", + "x": 0.5424, + "y": 0.5364, + "confidence": 0.962 + }, + { + "name": "left_index", + "x": 0.7288, + "y": 0.5409, + "confidence": 0.98 + }, + { + "name": "right_index", + "x": 0.541, + "y": 0.5336, + "confidence": 0.966 + }, + { + "name": "left_thumb", + "x": 0.7237, + "y": 0.5377, + "confidence": 0.979 + }, + { + "name": "right_thumb", + "x": 0.5463, + "y": 0.5309, + "confidence": 0.966 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.544, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6217, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6588, + "y": 0.7057, + "confidence": 0.926 + }, + { + "name": "right_knee", + "x": 0.5936, + "y": 0.6557, + "confidence": 0.973 + }, + { + "name": "left_ankle", + "x": 0.6543, + "y": 0.879, + "confidence": 0.933 + }, + { + "name": "right_ankle", + "x": 0.5722, + "y": 0.8069, + "confidence": 0.917 + }, + { + "name": "left_heel", + "x": 0.6502, + "y": 0.8949, + "confidence": 0.657 + }, + { + "name": "right_heel", + "x": 0.5719, + "y": 0.8262, + "confidence": 0.72 + }, + { + "name": "left_foot_index", + "x": 0.6493, + "y": 0.9376, + "confidence": 0.907 + }, + { + "name": "right_foot_index", + "x": 0.5649, + "y": 0.8666, + "confidence": 0.898 + } + ] + } + ] + }, + { + "frame_index": 182, + "timestamp": 3.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0687, + "acceleration": 3.3198, + "fluidity": 0.096, + "expansion": 0.164, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0004, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6186, + "y": 0.2907, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6232, + "y": 0.272, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2704, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6297, + "y": 0.2689, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6163, + "y": 0.2747, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6146, + "y": 0.2751, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.613, + "y": 0.2755, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6377, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6155, + "y": 0.2794, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6267, + "y": 0.3022, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6172, + "y": 0.3068, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6711, + "y": 0.3553, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.605, + "y": 0.3677, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6939, + "y": 0.4403, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5886, + "y": 0.4542, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.7156, + "y": 0.5232, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5611, + "y": 0.5214, + "confidence": 0.979 + }, + { + "name": "left_pinky", + "x": 0.7268, + "y": 0.542, + "confidence": 0.977 + }, + { + "name": "right_pinky", + "x": 0.5494, + "y": 0.5387, + "confidence": 0.959 + }, + { + "name": "left_index", + "x": 0.7261, + "y": 0.5448, + "confidence": 0.98 + }, + { + "name": "right_index", + "x": 0.5483, + "y": 0.5371, + "confidence": 0.964 + }, + { + "name": "left_thumb", + "x": 0.7212, + "y": 0.5403, + "confidence": 0.979 + }, + { + "name": "right_thumb", + "x": 0.5526, + "y": 0.5337, + "confidence": 0.963 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.5468, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6221, + "y": 0.5442, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6578, + "y": 0.7127, + "confidence": 0.932 + }, + { + "name": "right_knee", + "x": 0.5933, + "y": 0.6789, + "confidence": 0.974 + }, + { + "name": "left_ankle", + "x": 0.651, + "y": 0.8819, + "confidence": 0.938 + }, + { + "name": "right_ankle", + "x": 0.5574, + "y": 0.7897, + "confidence": 0.915 + }, + { + "name": "left_heel", + "x": 0.6475, + "y": 0.8998, + "confidence": 0.676 + }, + { + "name": "right_heel", + "x": 0.5551, + "y": 0.8012, + "confidence": 0.708 + }, + { + "name": "left_foot_index", + "x": 0.6476, + "y": 0.9402, + "confidence": 0.914 + }, + { + "name": "right_foot_index", + "x": 0.546, + "y": 0.8361, + "confidence": 0.897 + } + ] + } + ] + }, + { + "frame_index": 183, + "timestamp": 3.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0588, + "acceleration": 2.6859, + "fluidity": 0.063, + "expansion": 0.164, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0001, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6187, + "y": 0.2913, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6232, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2709, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6297, + "y": 0.2693, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6163, + "y": 0.2756, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2761, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6131, + "y": 0.2766, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6378, + "y": 0.2713, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6155, + "y": 0.2804, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6268, + "y": 0.3028, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6174, + "y": 0.3074, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6712, + "y": 0.3553, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6051, + "y": 0.3692, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6936, + "y": 0.4407, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5891, + "y": 0.4553, + "confidence": 0.967 + }, + { + "name": "left_wrist", + "x": 0.7149, + "y": 0.5235, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5619, + "y": 0.5223, + "confidence": 0.977 + }, + { + "name": "left_pinky", + "x": 0.7259, + "y": 0.5429, + "confidence": 0.977 + }, + { + "name": "right_pinky", + "x": 0.5505, + "y": 0.5399, + "confidence": 0.957 + }, + { + "name": "left_index", + "x": 0.7251, + "y": 0.5459, + "confidence": 0.981 + }, + { + "name": "right_index", + "x": 0.5492, + "y": 0.5384, + "confidence": 0.962 + }, + { + "name": "left_thumb", + "x": 0.7203, + "y": 0.541, + "confidence": 0.979 + }, + { + "name": "right_thumb", + "x": 0.5535, + "y": 0.535, + "confidence": 0.961 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.5482, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6222, + "y": 0.5448, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6573, + "y": 0.7158, + "confidence": 0.937 + }, + { + "name": "right_knee", + "x": 0.5931, + "y": 0.6849, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6498, + "y": 0.8833, + "confidence": 0.942 + }, + { + "name": "right_ankle", + "x": 0.556, + "y": 0.7864, + "confidence": 0.914 + }, + { + "name": "left_heel", + "x": 0.6464, + "y": 0.9015, + "confidence": 0.695 + }, + { + "name": "right_heel", + "x": 0.5532, + "y": 0.797, + "confidence": 0.698 + }, + { + "name": "left_foot_index", + "x": 0.6471, + "y": 0.9414, + "confidence": 0.919 + }, + { + "name": "right_foot_index", + "x": 0.5446, + "y": 0.8315, + "confidence": 0.896 + } + ] + } + ] + }, + { + "frame_index": 184, + "timestamp": 3.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0523, + "acceleration": 2.4592, + "fluidity": 0.061, + "expansion": 0.164, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6187, + "y": 0.2918, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6232, + "y": 0.2732, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6297, + "y": 0.2698, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6163, + "y": 0.2762, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6147, + "y": 0.2767, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6131, + "y": 0.2772, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6378, + "y": 0.2714, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6156, + "y": 0.2809, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6268, + "y": 0.3033, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6175, + "y": 0.3078, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6714, + "y": 0.3553, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6051, + "y": 0.37, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6934, + "y": 0.4412, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5892, + "y": 0.4559, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.7148, + "y": 0.5237, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5618, + "y": 0.5231, + "confidence": 0.976 + }, + { + "name": "left_pinky", + "x": 0.7257, + "y": 0.5434, + "confidence": 0.977 + }, + { + "name": "right_pinky", + "x": 0.5505, + "y": 0.5407, + "confidence": 0.955 + }, + { + "name": "left_index", + "x": 0.7248, + "y": 0.5464, + "confidence": 0.981 + }, + { + "name": "right_index", + "x": 0.5491, + "y": 0.539, + "confidence": 0.96 + }, + { + "name": "left_thumb", + "x": 0.7201, + "y": 0.5414, + "confidence": 0.979 + }, + { + "name": "right_thumb", + "x": 0.5535, + "y": 0.5358, + "confidence": 0.958 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.5489, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6222, + "y": 0.5452, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.657, + "y": 0.7172, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.593, + "y": 0.6868, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6494, + "y": 0.8839, + "confidence": 0.946 + }, + { + "name": "right_ankle", + "x": 0.5558, + "y": 0.7858, + "confidence": 0.913 + }, + { + "name": "left_heel", + "x": 0.646, + "y": 0.9022, + "confidence": 0.711 + }, + { + "name": "right_heel", + "x": 0.5528, + "y": 0.7963, + "confidence": 0.688 + }, + { + "name": "left_foot_index", + "x": 0.647, + "y": 0.9419, + "confidence": 0.924 + }, + { + "name": "right_foot_index", + "x": 0.5444, + "y": 0.8311, + "confidence": 0.896 + } + ] + } + ] + }, + { + "frame_index": 185, + "timestamp": 3.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0486, + "acceleration": 2.3387, + "fluidity": 0.055, + "expansion": 0.16, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6187, + "y": 0.2928, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6232, + "y": 0.2739, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2722, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6298, + "y": 0.2706, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6164, + "y": 0.2768, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6148, + "y": 0.2773, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6132, + "y": 0.2778, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6379, + "y": 0.2724, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6156, + "y": 0.2815, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6268, + "y": 0.3042, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6175, + "y": 0.3085, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6714, + "y": 0.3556, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6053, + "y": 0.3707, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6933, + "y": 0.4419, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.5897, + "y": 0.4577, + "confidence": 0.964 + }, + { + "name": "left_wrist", + "x": 0.7127, + "y": 0.5268, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.565, + "y": 0.5317, + "confidence": 0.973 + }, + { + "name": "left_pinky", + "x": 0.7238, + "y": 0.5492, + "confidence": 0.975 + }, + { + "name": "right_pinky", + "x": 0.5555, + "y": 0.5527, + "confidence": 0.951 + }, + { + "name": "left_index", + "x": 0.7227, + "y": 0.5531, + "confidence": 0.978 + }, + { + "name": "right_index", + "x": 0.5551, + "y": 0.5502, + "confidence": 0.956 + }, + { + "name": "left_thumb", + "x": 0.7181, + "y": 0.5481, + "confidence": 0.976 + }, + { + "name": "right_thumb", + "x": 0.5587, + "y": 0.5462, + "confidence": 0.954 + }, + { + "name": "left_hip", + "x": 0.6645, + "y": 0.5489, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6227, + "y": 0.545, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6549, + "y": 0.7173, + "confidence": 0.945 + }, + { + "name": "right_knee", + "x": 0.5911, + "y": 0.6855, + "confidence": 0.975 + }, + { + "name": "left_ankle", + "x": 0.6474, + "y": 0.8819, + "confidence": 0.95 + }, + { + "name": "right_ankle", + "x": 0.5469, + "y": 0.7668, + "confidence": 0.908 + }, + { + "name": "left_heel", + "x": 0.6438, + "y": 0.9018, + "confidence": 0.722 + }, + { + "name": "right_heel", + "x": 0.5456, + "y": 0.7762, + "confidence": 0.682 + }, + { + "name": "left_foot_index", + "x": 0.6442, + "y": 0.9409, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.5287, + "y": 0.8043, + "confidence": 0.894 + } + ] + } + ] + }, + { + "frame_index": 186, + "timestamp": 3.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0451, + "acceleration": 1.9665, + "fluidity": 0.045, + "expansion": 0.159, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6188, + "y": 0.2932, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6232, + "y": 0.2742, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6265, + "y": 0.2726, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6298, + "y": 0.271, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6164, + "y": 0.2771, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6148, + "y": 0.2775, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6133, + "y": 0.2781, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6379, + "y": 0.273, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6157, + "y": 0.2817, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6268, + "y": 0.3047, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6176, + "y": 0.3088, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6714, + "y": 0.3558, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6053, + "y": 0.3711, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6932, + "y": 0.4428, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.5898, + "y": 0.4588, + "confidence": 0.963 + }, + { + "name": "left_wrist", + "x": 0.7122, + "y": 0.5291, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.5653, + "y": 0.535, + "confidence": 0.971 + }, + { + "name": "left_pinky", + "x": 0.7231, + "y": 0.5521, + "confidence": 0.972 + }, + { + "name": "right_pinky", + "x": 0.5562, + "y": 0.556, + "confidence": 0.947 + }, + { + "name": "left_index", + "x": 0.7218, + "y": 0.5558, + "confidence": 0.976 + }, + { + "name": "right_index", + "x": 0.556, + "y": 0.5535, + "confidence": 0.952 + }, + { + "name": "left_thumb", + "x": 0.7173, + "y": 0.5509, + "confidence": 0.974 + }, + { + "name": "right_thumb", + "x": 0.5595, + "y": 0.5495, + "confidence": 0.95 + }, + { + "name": "left_hip", + "x": 0.6648, + "y": 0.5488, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6236, + "y": 0.545, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6541, + "y": 0.7182, + "confidence": 0.949 + }, + { + "name": "right_knee", + "x": 0.5897, + "y": 0.6829, + "confidence": 0.974 + }, + { + "name": "left_ankle", + "x": 0.6467, + "y": 0.8815, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.5451, + "y": 0.7644, + "confidence": 0.902 + }, + { + "name": "left_heel", + "x": 0.6432, + "y": 0.9013, + "confidence": 0.73 + }, + { + "name": "right_heel", + "x": 0.5439, + "y": 0.7729, + "confidence": 0.673 + }, + { + "name": "left_foot_index", + "x": 0.6433, + "y": 0.9408, + "confidence": 0.932 + }, + { + "name": "right_foot_index", + "x": 0.5273, + "y": 0.8014, + "confidence": 0.89 + } + ] + } + ] + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 169, + "left": 1, + "down": 7, + "up": 7, + "right": 3 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 1, + "high": 179, + "medium": 7 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 20, + "fast": 167 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 0.1401, + "std": 0.1247, + "min": 0, + "max": 1.0074 + }, + "acceleration": { + "mean": 10.1642, + "std": 9.7296, + "min": 0, + "max": 60.4416 + }, + "fluidity": { + "mean": 0.039, + "std": 0.058 + }, + "expansion": { + "mean": 0.21, + "std": 0.03 + }, + "movement_segments": [ + { + "start_frame": 21, + "start_time": 0.35, + "peak_velocity": 0.0625, + "dominant_direction": "stationary", + "end_frame": 21, + "end_time": 0.35, + "duration": 0 + }, + { + "start_frame": 38, + "start_time": 0.6333333333333333, + "peak_velocity": 0.0295, + "dominant_direction": "stationary", + "end_frame": 39, + "end_time": 0.65, + "duration": 0.01666666666666672 + }, + { + "start_frame": 120, + "start_time": 2, + "peak_velocity": 0.0168, + "dominant_direction": "stationary", + "end_frame": 121, + "end_time": 2.0166666666666666, + "duration": 0.016666666666666607 + }, + { + "start_frame": 131, + "start_time": 2.183333333333333, + "peak_velocity": 0.0152, + "dominant_direction": "stationary", + "end_frame": 131, + "end_time": 2.183333333333333, + "duration": 0 + }, + { + "start_frame": 179, + "start_time": 2.9833333333333334, + "peak_velocity": 0.0682, + "dominant_direction": "stationary", + "end_frame": 179, + "end_time": 2.9833333333333334, + "duration": 0 + } + ] + } + } + } \ No newline at end of file diff --git a/src/files/mediapipe_heavy_kp_parkour.json b/src/files/mediapipe_heavy_kp_parkour.json new file mode 100644 index 0000000000000000000000000000000000000000..f161cdf3d5ff879a1f6c2770e14b58b06edf6a39 --- /dev/null +++ b/src/files/mediapipe_heavy_kp_parkour.json @@ -0,0 +1,33551 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-10T00:13:45.793203", + "version": "1.0.0", + "model_info": { + "name": "mediapipe-heavy", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 60, + "duration_seconds": 2.533333333333333, + "width": 2438, + "height": 1786, + "frame_count": 152 + }, + "movement_analysis": { + "frame_count": 152, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0.055, + "total_displacement": 0 + } + }, + { + "frame_index": 1, + "timestamp": 0.016666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0503, + "acceleration": 3.0195, + "fluidity": 0, + "expansion": 0.092, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.0647, + "y": 0.4437, + "confidence": 0.992 + }, + { + "name": "left_eye_inner", + "x": 0.0635, + "y": 0.4286, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.062, + "y": 0.4279, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.0606, + "y": 0.4271, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.0635, + "y": 0.4279, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.062, + "y": 0.4267, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.0604, + "y": 0.4253, + "confidence": 0.994 + }, + { + "name": "left_ear", + "x": 0.0476, + "y": 0.4213, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.0457, + "y": 0.4199, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.0559, + "y": 0.4525, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.0556, + "y": 0.4522, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.0188, + "y": 0.4656, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.0045, + "y": 0.4601, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.0442, + "y": 0.551, + "confidence": 0.164 + }, + { + "name": "right_elbow", + "x": 0.0308, + "y": 0.5406, + "confidence": 0.969 + }, + { + "name": "left_wrist", + "x": 0.0955, + "y": 0.5932, + "confidence": 0.334 + }, + { + "name": "right_wrist", + "x": 0.0898, + "y": 0.5802, + "confidence": 0.933 + }, + { + "name": "left_pinky", + "x": 0.1013, + "y": 0.5951, + "confidence": 0.352 + }, + { + "name": "right_pinky", + "x": 0.1007, + "y": 0.5954, + "confidence": 0.912 + }, + { + "name": "left_index", + "x": 0.1115, + "y": 0.5951, + "confidence": 0.362 + }, + { + "name": "right_index", + "x": 0.1157, + "y": 0.5843, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.1057, + "y": 0.5926, + "confidence": 0.348 + }, + { + "name": "right_thumb", + "x": 0.107, + "y": 0.583, + "confidence": 0.863 + }, + { + "name": "left_hip", + "x": 0.0403, + "y": 0.6158, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0173, + "y": 0.6281, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1109, + "y": 0.6875, + "confidence": 0.565 + }, + { + "name": "right_knee", + "x": 0.0723, + "y": 0.6951, + "confidence": 0.947 + }, + { + "name": "left_ankle", + "x": 0.13, + "y": 0.7742, + "confidence": 0.745 + }, + { + "name": "right_ankle", + "x": 0.1261, + "y": 0.7968, + "confidence": 0.929 + }, + { + "name": "left_heel", + "x": 0.1347, + "y": 0.7975, + "confidence": 0.803 + }, + { + "name": "right_heel", + "x": 0.1233, + "y": 0.815, + "confidence": 0.816 + }, + { + "name": "left_foot_index", + "x": 0.1833, + "y": 0.7775, + "confidence": 0.815 + }, + { + "name": "right_foot_index", + "x": 0.1633, + "y": 0.8157, + "confidence": 0.923 + } + ] + } + ] + }, + { + "frame_index": 2, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.0901, + "acceleration": 62.3837, + "fluidity": 0, + "expansion": 0.118, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0005, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.0647, + "y": 0.4428, + "confidence": 0.984 + }, + { + "name": "left_eye_inner", + "x": 0.0638, + "y": 0.4286, + "confidence": 0.98 + }, + { + "name": "left_eye", + "x": 0.0623, + "y": 0.4279, + "confidence": 0.983 + }, + { + "name": "left_eye_outer", + "x": 0.0609, + "y": 0.427, + "confidence": 0.989 + }, + { + "name": "right_eye_inner", + "x": 0.0638, + "y": 0.4279, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.0623, + "y": 0.4267, + "confidence": 0.988 + }, + { + "name": "right_eye_outer", + "x": 0.0608, + "y": 0.4253, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0.0484, + "y": 0.4212, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.0469, + "y": 0.4198, + "confidence": 0.99 + }, + { + "name": "mouth_left", + "x": 0.0559, + "y": 0.4512, + "confidence": 0.991 + }, + { + "name": "mouth_right", + "x": 0.0557, + "y": 0.4505, + "confidence": 0.993 + }, + { + "name": "left_shoulder", + "x": 0.0273, + "y": 0.4657, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.0047, + "y": 0.4584, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.047, + "y": 0.5526, + "confidence": 0.167 + }, + { + "name": "right_elbow", + "x": 0.0345, + "y": 0.541, + "confidence": 0.967 + }, + { + "name": "left_wrist", + "x": 0.0973, + "y": 0.5931, + "confidence": 0.33 + }, + { + "name": "right_wrist", + "x": 0.0926, + "y": 0.5808, + "confidence": 0.923 + }, + { + "name": "left_pinky", + "x": 0.1082, + "y": 0.5965, + "confidence": 0.348 + }, + { + "name": "right_pinky", + "x": 0.1017, + "y": 0.5957, + "confidence": 0.89 + }, + { + "name": "left_index", + "x": 0.1131, + "y": 0.5932, + "confidence": 0.362 + }, + { + "name": "right_index", + "x": 0.1155, + "y": 0.5845, + "confidence": 0.89 + }, + { + "name": "left_thumb", + "x": 0.1075, + "y": 0.5912, + "confidence": 0.347 + }, + { + "name": "right_thumb", + "x": 0.1081, + "y": 0.583, + "confidence": 0.834 + }, + { + "name": "left_hip", + "x": 0.0335, + "y": 0.6106, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0133, + "y": 0.625, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.0953, + "y": 0.6844, + "confidence": 0.512 + }, + { + "name": "right_knee", + "x": 0.0717, + "y": 0.6947, + "confidence": 0.949 + }, + { + "name": "left_ankle", + "x": 0.1382, + "y": 0.768, + "confidence": 0.688 + }, + { + "name": "right_ankle", + "x": 0.1246, + "y": 0.7936, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.1407, + "y": 0.7909, + "confidence": 0.752 + }, + { + "name": "right_heel", + "x": 0.1232, + "y": 0.815, + "confidence": 0.81 + }, + { + "name": "left_foot_index", + "x": 0.1788, + "y": 0.7701, + "confidence": 0.754 + }, + { + "name": "right_foot_index", + "x": 0.1659, + "y": 0.8045, + "confidence": 0.91 + } + ] + } + ] + }, + { + "frame_index": 3, + "timestamp": 0.05, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.4466, + "acceleration": 21.3917, + "fluidity": 0, + "expansion": 0.14, + "total_displacement": 0.0511, + "center_displacement": { + "x": 0.0509, + "y": 0.0054 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.1231, + "y": 0.4518, + "confidence": 0.985 + }, + { + "name": "left_eye_inner", + "x": 0.1227, + "y": 0.4396, + "confidence": 0.981 + }, + { + "name": "left_eye", + "x": 0.1213, + "y": 0.4386, + "confidence": 0.984 + }, + { + "name": "left_eye_outer", + "x": 0.1198, + "y": 0.4375, + "confidence": 0.989 + }, + { + "name": "right_eye_inner", + "x": 0.1228, + "y": 0.4392, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.1215, + "y": 0.4381, + "confidence": 0.989 + }, + { + "name": "right_eye_outer", + "x": 0.1202, + "y": 0.4368, + "confidence": 0.991 + }, + { + "name": "left_ear", + "x": 0.1057, + "y": 0.43, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.1058, + "y": 0.4302, + "confidence": 0.99 + }, + { + "name": "mouth_left", + "x": 0.116, + "y": 0.46, + "confidence": 0.992 + }, + { + "name": "mouth_right", + "x": 0.1158, + "y": 0.4593, + "confidence": 0.994 + }, + { + "name": "left_shoulder", + "x": 0.0762, + "y": 0.4729, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.0687, + "y": 0.4616, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.1002, + "y": 0.5769, + "confidence": 0.202 + }, + { + "name": "right_elbow", + "x": 0.1405, + "y": 0.5093, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.1645, + "y": 0.6282, + "confidence": 0.359 + }, + { + "name": "right_wrist", + "x": 0.2108, + "y": 0.5156, + "confidence": 0.93 + }, + { + "name": "left_pinky", + "x": 0.1804, + "y": 0.635, + "confidence": 0.375 + }, + { + "name": "right_pinky", + "x": 0.2242, + "y": 0.5199, + "confidence": 0.899 + }, + { + "name": "left_index", + "x": 0.185, + "y": 0.6302, + "confidence": 0.389 + }, + { + "name": "right_index", + "x": 0.2294, + "y": 0.5084, + "confidence": 0.9 + }, + { + "name": "left_thumb", + "x": 0.1795, + "y": 0.6298, + "confidence": 0.375 + }, + { + "name": "right_thumb", + "x": 0.224, + "y": 0.5098, + "confidence": 0.848 + }, + { + "name": "left_hip", + "x": 0.075, + "y": 0.6154, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0623, + "y": 0.6316, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1409, + "y": 0.6832, + "confidence": 0.466 + }, + { + "name": "right_knee", + "x": 0.1317, + "y": 0.7132, + "confidence": 0.953 + }, + { + "name": "left_ankle", + "x": 0.1833, + "y": 0.7643, + "confidence": 0.625 + }, + { + "name": "right_ankle", + "x": 0.1532, + "y": 0.8101, + "confidence": 0.91 + }, + { + "name": "left_heel", + "x": 0.1824, + "y": 0.7852, + "confidence": 0.694 + }, + { + "name": "right_heel", + "x": 0.1469, + "y": 0.829, + "confidence": 0.799 + }, + { + "name": "left_foot_index", + "x": 0.2171, + "y": 0.7691, + "confidence": 0.689 + }, + { + "name": "right_foot_index", + "x": 0.1937, + "y": 0.8264, + "confidence": 0.888 + } + ] + } + ] + }, + { + "frame_index": 4, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.031, + "acceleration": -24.9337, + "fluidity": 0, + "expansion": 0.154, + "total_displacement": 0.003, + "center_displacement": { + "x": -0.0013, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.128, + "y": 0.453, + "confidence": 0.978 + }, + { + "name": "left_eye_inner", + "x": 0.1281, + "y": 0.4406, + "confidence": 0.972 + }, + { + "name": "left_eye", + "x": 0.1268, + "y": 0.4397, + "confidence": 0.976 + }, + { + "name": "left_eye_outer", + "x": 0.1256, + "y": 0.4387, + "confidence": 0.984 + }, + { + "name": "right_eye_inner", + "x": 0.1278, + "y": 0.4403, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.1263, + "y": 0.4392, + "confidence": 0.983 + }, + { + "name": "right_eye_outer", + "x": 0.1249, + "y": 0.4379, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.1127, + "y": 0.4312, + "confidence": 0.993 + }, + { + "name": "right_ear", + "x": 0.1115, + "y": 0.4309, + "confidence": 0.986 + }, + { + "name": "mouth_left", + "x": 0.1205, + "y": 0.4604, + "confidence": 0.987 + }, + { + "name": "mouth_right", + "x": 0.1202, + "y": 0.4599, + "confidence": 0.99 + }, + { + "name": "left_shoulder", + "x": 0.079, + "y": 0.4773, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.0719, + "y": 0.4619, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.0996, + "y": 0.579, + "confidence": 0.198 + }, + { + "name": "right_elbow", + "x": 0.1383, + "y": 0.5092, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.1637, + "y": 0.6294, + "confidence": 0.348 + }, + { + "name": "right_wrist", + "x": 0.2118, + "y": 0.5123, + "confidence": 0.933 + }, + { + "name": "left_pinky", + "x": 0.1829, + "y": 0.6398, + "confidence": 0.363 + }, + { + "name": "right_pinky", + "x": 0.2244, + "y": 0.5117, + "confidence": 0.902 + }, + { + "name": "left_index", + "x": 0.1867, + "y": 0.6337, + "confidence": 0.376 + }, + { + "name": "right_index", + "x": 0.2241, + "y": 0.5052, + "confidence": 0.902 + }, + { + "name": "left_thumb", + "x": 0.1808, + "y": 0.6304, + "confidence": 0.362 + }, + { + "name": "right_thumb", + "x": 0.2186, + "y": 0.5066, + "confidence": 0.848 + }, + { + "name": "left_hip", + "x": 0.0696, + "y": 0.6205, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0565, + "y": 0.6327, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1324, + "y": 0.6828, + "confidence": 0.421 + }, + { + "name": "right_knee", + "x": 0.1282, + "y": 0.7093, + "confidence": 0.957 + }, + { + "name": "left_ankle", + "x": 0.1784, + "y": 0.7613, + "confidence": 0.572 + }, + { + "name": "right_ankle", + "x": 0.1558, + "y": 0.7995, + "confidence": 0.9 + }, + { + "name": "left_heel", + "x": 0.1792, + "y": 0.7837, + "confidence": 0.646 + }, + { + "name": "right_heel", + "x": 0.1509, + "y": 0.8146, + "confidence": 0.793 + }, + { + "name": "left_foot_index", + "x": 0.2173, + "y": 0.7595, + "confidence": 0.628 + }, + { + "name": "right_foot_index", + "x": 0.2019, + "y": 0.7965, + "confidence": 0.871 + } + ] + } + ] + }, + { + "frame_index": 5, + "timestamp": 0.08333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.941, + "acceleration": -5.4037, + "fluidity": 0, + "expansion": 0.166, + "total_displacement": 0.0244, + "center_displacement": { + "x": 0.0202, + "y": -0.0137 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.1705, + "y": 0.4699, + "confidence": 0.98 + }, + { + "name": "left_eye_inner", + "x": 0.1777, + "y": 0.4557, + "confidence": 0.975 + }, + { + "name": "left_eye", + "x": 0.1784, + "y": 0.4548, + "confidence": 0.978 + }, + { + "name": "left_eye_outer", + "x": 0.1793, + "y": 0.454, + "confidence": 0.986 + }, + { + "name": "right_eye_inner", + "x": 0.1741, + "y": 0.4552, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.1722, + "y": 0.4536, + "confidence": 0.985 + }, + { + "name": "right_eye_outer", + "x": 0.1702, + "y": 0.4522, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0.1565, + "y": 0.4443, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.1565, + "y": 0.4388, + "confidence": 0.988 + }, + { + "name": "mouth_left", + "x": 0.1623, + "y": 0.4743, + "confidence": 0.988 + }, + { + "name": "mouth_right", + "x": 0.1586, + "y": 0.4721, + "confidence": 0.991 + }, + { + "name": "left_shoulder", + "x": 0.1146, + "y": 0.4763, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.0971, + "y": 0.4502, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.1636, + "y": 0.5766, + "confidence": 0.278 + }, + { + "name": "right_elbow", + "x": 0.152, + "y": 0.4594, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.2444, + "y": 0.6018, + "confidence": 0.413 + }, + { + "name": "right_wrist", + "x": 0.2461, + "y": 0.4528, + "confidence": 0.94 + }, + { + "name": "left_pinky", + "x": 0.2615, + "y": 0.6028, + "confidence": 0.426 + }, + { + "name": "right_pinky", + "x": 0.2626, + "y": 0.4359, + "confidence": 0.911 + }, + { + "name": "left_index", + "x": 0.2631, + "y": 0.5884, + "confidence": 0.439 + }, + { + "name": "right_index", + "x": 0.2653, + "y": 0.4268, + "confidence": 0.912 + }, + { + "name": "left_thumb", + "x": 0.2573, + "y": 0.5865, + "confidence": 0.426 + }, + { + "name": "right_thumb", + "x": 0.2607, + "y": 0.4315, + "confidence": 0.863 + }, + { + "name": "left_hip", + "x": 0.0853, + "y": 0.6025, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.061, + "y": 0.6086, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1366, + "y": 0.6803, + "confidence": 0.479 + }, + { + "name": "right_knee", + "x": 0.1239, + "y": 0.6034, + "confidence": 0.961 + }, + { + "name": "left_ankle", + "x": 0.1725, + "y": 0.7828, + "confidence": 0.614 + }, + { + "name": "right_ankle", + "x": 0.1967, + "y": 0.5644, + "confidence": 0.91 + }, + { + "name": "left_heel", + "x": 0.1745, + "y": 0.7918, + "confidence": 0.681 + }, + { + "name": "right_heel", + "x": 0.2084, + "y": 0.573, + "confidence": 0.814 + }, + { + "name": "left_foot_index", + "x": 0.216, + "y": 0.8033, + "confidence": 0.665 + }, + { + "name": "right_foot_index", + "x": 0.219, + "y": 0.5235, + "confidence": 0.883 + } + ] + } + ] + }, + { + "frame_index": 6, + "timestamp": 0.1, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4846, + "acceleration": -27.3786, + "fluidity": 0, + "expansion": 0.18, + "total_displacement": 0.0054, + "center_displacement": { + "x": 0.0054, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.1698, + "y": 0.4787, + "confidence": 0.982 + }, + { + "name": "left_eye_inner", + "x": 0.1777, + "y": 0.4655, + "confidence": 0.977 + }, + { + "name": "left_eye", + "x": 0.1787, + "y": 0.4645, + "confidence": 0.98 + }, + { + "name": "left_eye_outer", + "x": 0.1796, + "y": 0.4637, + "confidence": 0.987 + }, + { + "name": "right_eye_inner", + "x": 0.1738, + "y": 0.4641, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.172, + "y": 0.4619, + "confidence": 0.986 + }, + { + "name": "right_eye_outer", + "x": 0.17, + "y": 0.4596, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0.1726, + "y": 0.4509, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.1559, + "y": 0.4409, + "confidence": 0.989 + }, + { + "name": "mouth_left", + "x": 0.1615, + "y": 0.4829, + "confidence": 0.99 + }, + { + "name": "mouth_right", + "x": 0.1577, + "y": 0.4796, + "confidence": 0.992 + }, + { + "name": "left_shoulder", + "x": 0.1355, + "y": 0.4756, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.1, + "y": 0.4516, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.1726, + "y": 0.5718, + "confidence": 0.33 + }, + { + "name": "right_elbow", + "x": 0.1566, + "y": 0.4637, + "confidence": 0.972 + }, + { + "name": "left_wrist", + "x": 0.245, + "y": 0.5953, + "confidence": 0.456 + }, + { + "name": "right_wrist", + "x": 0.2387, + "y": 0.4397, + "confidence": 0.942 + }, + { + "name": "left_pinky", + "x": 0.2624, + "y": 0.5948, + "confidence": 0.462 + }, + { + "name": "right_pinky", + "x": 0.2618, + "y": 0.4331, + "confidence": 0.914 + }, + { + "name": "left_index", + "x": 0.2642, + "y": 0.5819, + "confidence": 0.475 + }, + { + "name": "right_index", + "x": 0.2597, + "y": 0.4285, + "confidence": 0.915 + }, + { + "name": "left_thumb", + "x": 0.2575, + "y": 0.5819, + "confidence": 0.463 + }, + { + "name": "right_thumb", + "x": 0.2549, + "y": 0.433, + "confidence": 0.866 + }, + { + "name": "left_hip", + "x": 0.0896, + "y": 0.5992, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0545, + "y": 0.6113, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1566, + "y": 0.6598, + "confidence": 0.44 + }, + { + "name": "right_knee", + "x": 0.1303, + "y": 0.6466, + "confidence": 0.927 + }, + { + "name": "left_ankle", + "x": 0.1674, + "y": 0.7745, + "confidence": 0.558 + }, + { + "name": "right_ankle", + "x": 0.1691, + "y": 0.7473, + "confidence": 0.849 + }, + { + "name": "left_heel", + "x": 0.1662, + "y": 0.7873, + "confidence": 0.624 + }, + { + "name": "right_heel", + "x": 0.1872, + "y": 0.774, + "confidence": 0.756 + }, + { + "name": "left_foot_index", + "x": 0.2042, + "y": 0.7965, + "confidence": 0.61 + }, + { + "name": "right_foot_index", + "x": 0.1976, + "y": 0.7904, + "confidence": 0.828 + } + ] + } + ] + }, + { + "frame_index": 7, + "timestamp": 0.11666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.8639, + "acceleration": 22.7543, + "fluidity": 0, + "expansion": 0.2, + "total_displacement": 0.0031, + "center_displacement": { + "x": -0.0001, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.17, + "y": 0.4769, + "confidence": 0.984 + }, + { + "name": "left_eye_inner", + "x": 0.1769, + "y": 0.4655, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0.1778, + "y": 0.465, + "confidence": 0.982 + }, + { + "name": "left_eye_outer", + "x": 0.1787, + "y": 0.4647, + "confidence": 0.989 + }, + { + "name": "right_eye_inner", + "x": 0.1738, + "y": 0.4624, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.1724, + "y": 0.4596, + "confidence": 0.988 + }, + { + "name": "right_eye_outer", + "x": 0.1708, + "y": 0.4568, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0.1736, + "y": 0.4533, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.1593, + "y": 0.4382, + "confidence": 0.99 + }, + { + "name": "mouth_left", + "x": 0.162, + "y": 0.4807, + "confidence": 0.99 + }, + { + "name": "mouth_right", + "x": 0.1589, + "y": 0.4767, + "confidence": 0.993 + }, + { + "name": "left_shoulder", + "x": 0.1388, + "y": 0.4782, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.1068, + "y": 0.4383, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.1742, + "y": 0.5697, + "confidence": 0.376 + }, + { + "name": "right_elbow", + "x": 0.1531, + "y": 0.4496, + "confidence": 0.969 + }, + { + "name": "left_wrist", + "x": 0.2477, + "y": 0.5915, + "confidence": 0.487 + }, + { + "name": "right_wrist", + "x": 0.2392, + "y": 0.4378, + "confidence": 0.937 + }, + { + "name": "left_pinky", + "x": 0.2641, + "y": 0.5874, + "confidence": 0.488 + }, + { + "name": "right_pinky", + "x": 0.2611, + "y": 0.4356, + "confidence": 0.901 + }, + { + "name": "left_index", + "x": 0.2668, + "y": 0.5758, + "confidence": 0.502 + }, + { + "name": "right_index", + "x": 0.2592, + "y": 0.4229, + "confidence": 0.901 + }, + { + "name": "left_thumb", + "x": 0.2605, + "y": 0.5768, + "confidence": 0.492 + }, + { + "name": "right_thumb", + "x": 0.2538, + "y": 0.4281, + "confidence": 0.845 + }, + { + "name": "left_hip", + "x": 0.085, + "y": 0.6015, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0486, + "y": 0.6073, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.146, + "y": 0.6651, + "confidence": 0.414 + }, + { + "name": "right_knee", + "x": 0.1172, + "y": 0.6473, + "confidence": 0.919 + }, + { + "name": "left_ankle", + "x": 0.097, + "y": 0.7467, + "confidence": 0.507 + }, + { + "name": "right_ankle", + "x": 0.1668, + "y": 0.7801, + "confidence": 0.806 + }, + { + "name": "left_heel", + "x": 0.0876, + "y": 0.7521, + "confidence": 0.572 + }, + { + "name": "right_heel", + "x": 0.1739, + "y": 0.7988, + "confidence": 0.716 + }, + { + "name": "left_foot_index", + "x": 0.0961, + "y": 0.7789, + "confidence": 0.553 + }, + { + "name": "right_foot_index", + "x": 0.1849, + "y": 0.8116, + "confidence": 0.772 + } + ] + } + ] + }, + { + "frame_index": 8, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.2283, + "acceleration": 21.8648, + "fluidity": 0, + "expansion": 0.215, + "total_displacement": 0.032, + "center_displacement": { + "x": 0.0296, + "y": -0.0122 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.1934, + "y": 0.4927, + "confidence": 0.985 + }, + { + "name": "left_eye_inner", + "x": 0.1962, + "y": 0.4829, + "confidence": 0.981 + }, + { + "name": "left_eye", + "x": 0.1973, + "y": 0.486, + "confidence": 0.984 + }, + { + "name": "left_eye_outer", + "x": 0.1973, + "y": 0.4852, + "confidence": 0.99 + }, + { + "name": "right_eye_inner", + "x": 0.1944, + "y": 0.4821, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.1933, + "y": 0.4803, + "confidence": 0.989 + }, + { + "name": "right_eye_outer", + "x": 0.1924, + "y": 0.4784, + "confidence": 0.991 + }, + { + "name": "left_ear", + "x": 0.1899, + "y": 0.4683, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.1823, + "y": 0.4607, + "confidence": 0.991 + }, + { + "name": "mouth_left", + "x": 0.1876, + "y": 0.4895, + "confidence": 0.991 + }, + { + "name": "mouth_right", + "x": 0.1864, + "y": 0.4888, + "confidence": 0.993 + }, + { + "name": "left_shoulder", + "x": 0.1719, + "y": 0.478, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.1423, + "y": 0.4422, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.2247, + "y": 0.5514, + "confidence": 0.384 + }, + { + "name": "right_elbow", + "x": 0.2225, + "y": 0.4116, + "confidence": 0.96 + }, + { + "name": "left_wrist", + "x": 0.2877, + "y": 0.5465, + "confidence": 0.477 + }, + { + "name": "right_wrist", + "x": 0.3045, + "y": 0.3602, + "confidence": 0.92 + }, + { + "name": "left_pinky", + "x": 0.3031, + "y": 0.5421, + "confidence": 0.475 + }, + { + "name": "right_pinky", + "x": 0.3155, + "y": 0.352, + "confidence": 0.878 + }, + { + "name": "left_index", + "x": 0.3024, + "y": 0.5263, + "confidence": 0.49 + }, + { + "name": "right_index", + "x": 0.3154, + "y": 0.3523, + "confidence": 0.878 + }, + { + "name": "left_thumb", + "x": 0.2955, + "y": 0.5257, + "confidence": 0.48 + }, + { + "name": "right_thumb", + "x": 0.3124, + "y": 0.3557, + "confidence": 0.817 + }, + { + "name": "left_hip", + "x": 0.1075, + "y": 0.573, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.076, + "y": 0.5834, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.162, + "y": 0.664, + "confidence": 0.376 + }, + { + "name": "right_knee", + "x": 0.1501, + "y": 0.6593, + "confidence": 0.865 + }, + { + "name": "left_ankle", + "x": 0.1166, + "y": 0.7242, + "confidence": 0.458 + }, + { + "name": "right_ankle", + "x": 0.1118, + "y": 0.7422, + "confidence": 0.734 + }, + { + "name": "left_heel", + "x": 0.1158, + "y": 0.7296, + "confidence": 0.517 + }, + { + "name": "right_heel", + "x": 0.0975, + "y": 0.7461, + "confidence": 0.653 + }, + { + "name": "left_foot_index", + "x": 0.1371, + "y": 0.753, + "confidence": 0.5 + }, + { + "name": "right_foot_index", + "x": 0.1237, + "y": 0.781, + "confidence": 0.704 + } + ] + } + ] + }, + { + "frame_index": 9, + "timestamp": 0.15, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.7181, + "acceleration": 29.3875, + "fluidity": 0, + "expansion": 0.234, + "total_displacement": 0.015, + "center_displacement": { + "x": 0.0141, + "y": -0.0051 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2249, + "y": 0.4818, + "confidence": 0.987 + }, + { + "name": "left_eye_inner", + "x": 0.2308, + "y": 0.4701, + "confidence": 0.983 + }, + { + "name": "left_eye", + "x": 0.2306, + "y": 0.4713, + "confidence": 0.985 + }, + { + "name": "left_eye_outer", + "x": 0.2302, + "y": 0.4705, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.2293, + "y": 0.4697, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.2275, + "y": 0.4686, + "confidence": 0.99 + }, + { + "name": "right_eye_outer", + "x": 0.2258, + "y": 0.4684, + "confidence": 0.992 + }, + { + "name": "left_ear", + "x": 0.2224, + "y": 0.4584, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.2181, + "y": 0.458, + "confidence": 0.992 + }, + { + "name": "mouth_left", + "x": 0.2163, + "y": 0.4829, + "confidence": 0.992 + }, + { + "name": "mouth_right", + "x": 0.2157, + "y": 0.4857, + "confidence": 0.994 + }, + { + "name": "left_shoulder", + "x": 0.1818, + "y": 0.4874, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.1679, + "y": 0.4251, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.2274, + "y": 0.5527, + "confidence": 0.412 + }, + { + "name": "right_elbow", + "x": 0.2349, + "y": 0.3996, + "confidence": 0.945 + }, + { + "name": "left_wrist", + "x": 0.2878, + "y": 0.545, + "confidence": 0.515 + }, + { + "name": "right_wrist", + "x": 0.3044, + "y": 0.3577, + "confidence": 0.895 + }, + { + "name": "left_pinky", + "x": 0.3065, + "y": 0.5365, + "confidence": 0.507 + }, + { + "name": "right_pinky", + "x": 0.3203, + "y": 0.3482, + "confidence": 0.841 + }, + { + "name": "left_index", + "x": 0.3041, + "y": 0.5213, + "confidence": 0.521 + }, + { + "name": "right_index", + "x": 0.3217, + "y": 0.3469, + "confidence": 0.84 + }, + { + "name": "left_thumb", + "x": 0.2959, + "y": 0.5224, + "confidence": 0.51 + }, + { + "name": "right_thumb", + "x": 0.3162, + "y": 0.353, + "confidence": 0.778 + }, + { + "name": "left_hip", + "x": 0.1186, + "y": 0.5759, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.0858, + "y": 0.5678, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1655, + "y": 0.6663, + "confidence": 0.342 + }, + { + "name": "right_knee", + "x": 0.1512, + "y": 0.663, + "confidence": 0.793 + }, + { + "name": "left_ankle", + "x": 0.1459, + "y": 0.7395, + "confidence": 0.413 + }, + { + "name": "right_ankle", + "x": 0.1066, + "y": 0.7452, + "confidence": 0.662 + }, + { + "name": "left_heel", + "x": 0.1364, + "y": 0.7507, + "confidence": 0.467 + }, + { + "name": "right_heel", + "x": 0.0952, + "y": 0.7496, + "confidence": 0.589 + }, + { + "name": "left_foot_index", + "x": 0.1464, + "y": 0.7542, + "confidence": 0.451 + }, + { + "name": "right_foot_index", + "x": 0.1213, + "y": 0.7831, + "confidence": 0.635 + } + ] + } + ] + }, + { + "frame_index": 10, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.8009, + "acceleration": 4.9671, + "fluidity": 0, + "expansion": 0.253, + "total_displacement": 0.0504, + "center_displacement": { + "x": 0.047, + "y": -0.0181 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2719, + "y": 0.4425, + "confidence": 0.988 + }, + { + "name": "left_eye_inner", + "x": 0.2775, + "y": 0.4528, + "confidence": 0.985 + }, + { + "name": "left_eye", + "x": 0.2777, + "y": 0.4593, + "confidence": 0.987 + }, + { + "name": "left_eye_outer", + "x": 0.2777, + "y": 0.465, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.2755, + "y": 0.4324, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.2745, + "y": 0.4259, + "confidence": 0.991 + }, + { + "name": "right_eye_outer", + "x": 0.2734, + "y": 0.4204, + "confidence": 0.993 + }, + { + "name": "left_ear", + "x": 0.2719, + "y": 0.4542, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.2664, + "y": 0.415, + "confidence": 0.992 + }, + { + "name": "mouth_left", + "x": 0.2633, + "y": 0.4513, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.2629, + "y": 0.4308, + "confidence": 0.994 + }, + { + "name": "left_shoulder", + "x": 0.2238, + "y": 0.488, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2232, + "y": 0.396, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.2722, + "y": 0.5533, + "confidence": 0.416 + }, + { + "name": "right_elbow", + "x": 0.2968, + "y": 0.3369, + "confidence": 0.916 + }, + { + "name": "left_wrist", + "x": 0.3143, + "y": 0.5094, + "confidence": 0.544 + }, + { + "name": "right_wrist", + "x": 0.3443, + "y": 0.3116, + "confidence": 0.879 + }, + { + "name": "left_pinky", + "x": 0.3221, + "y": 0.489, + "confidence": 0.532 + }, + { + "name": "right_pinky", + "x": 0.3622, + "y": 0.2899, + "confidence": 0.823 + }, + { + "name": "left_index", + "x": 0.3183, + "y": 0.4785, + "confidence": 0.545 + }, + { + "name": "right_index", + "x": 0.3641, + "y": 0.2926, + "confidence": 0.819 + }, + { + "name": "left_thumb", + "x": 0.3138, + "y": 0.4848, + "confidence": 0.53 + }, + { + "name": "right_thumb", + "x": 0.3583, + "y": 0.2972, + "confidence": 0.758 + }, + { + "name": "left_hip", + "x": 0.1565, + "y": 0.5668, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1387, + "y": 0.5328, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1865, + "y": 0.6733, + "confidence": 0.313 + }, + { + "name": "right_knee", + "x": 0.1514, + "y": 0.6602, + "confidence": 0.739 + }, + { + "name": "left_ankle", + "x": 0.1629, + "y": 0.7692, + "confidence": 0.374 + }, + { + "name": "right_ankle", + "x": 0.118, + "y": 0.757, + "confidence": 0.607 + }, + { + "name": "left_heel", + "x": 0.1525, + "y": 0.782, + "confidence": 0.424 + }, + { + "name": "right_heel", + "x": 0.1108, + "y": 0.7686, + "confidence": 0.538 + }, + { + "name": "left_foot_index", + "x": 0.1585, + "y": 0.7974, + "confidence": 0.41 + }, + { + "name": "right_foot_index", + "x": 0.1387, + "y": 0.7962, + "confidence": 0.58 + } + ] + } + ] + }, + { + "frame_index": 11, + "timestamp": 0.18333333333333332, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.0078, + "acceleration": -47.5871, + "fluidity": 0, + "expansion": 0.268, + "total_displacement": 0.011, + "center_displacement": { + "x": 0.0009, + "y": -0.011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2718, + "y": 0.4387, + "confidence": 0.989 + }, + { + "name": "left_eye_inner", + "x": 0.2767, + "y": 0.446, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.2769, + "y": 0.4514, + "confidence": 0.988 + }, + { + "name": "left_eye_outer", + "x": 0.2773, + "y": 0.4579, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.2758, + "y": 0.4302, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.2754, + "y": 0.4249, + "confidence": 0.992 + }, + { + "name": "right_eye_outer", + "x": 0.2753, + "y": 0.42, + "confidence": 0.993 + }, + { + "name": "left_ear", + "x": 0.2724, + "y": 0.4524, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.2697, + "y": 0.4123, + "confidence": 0.993 + }, + { + "name": "mouth_left", + "x": 0.2639, + "y": 0.4435, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.2635, + "y": 0.4299, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.2241, + "y": 0.487, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2303, + "y": 0.3948, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.2621, + "y": 0.5488, + "confidence": 0.426 + }, + { + "name": "right_elbow", + "x": 0.2977, + "y": 0.3374, + "confidence": 0.877 + }, + { + "name": "left_wrist", + "x": 0.3134, + "y": 0.5098, + "confidence": 0.568 + }, + { + "name": "right_wrist", + "x": 0.3657, + "y": 0.2948, + "confidence": 0.859 + }, + { + "name": "left_pinky", + "x": 0.3213, + "y": 0.4865, + "confidence": 0.552 + }, + { + "name": "right_pinky", + "x": 0.3743, + "y": 0.2892, + "confidence": 0.794 + }, + { + "name": "left_index", + "x": 0.3205, + "y": 0.4789, + "confidence": 0.563 + }, + { + "name": "right_index", + "x": 0.3757, + "y": 0.292, + "confidence": 0.79 + }, + { + "name": "left_thumb", + "x": 0.3155, + "y": 0.4854, + "confidence": 0.546 + }, + { + "name": "right_thumb", + "x": 0.3743, + "y": 0.2941, + "confidence": 0.729 + }, + { + "name": "left_hip", + "x": 0.1563, + "y": 0.5378, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1349, + "y": 0.5203, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1816, + "y": 0.661, + "confidence": 0.29 + }, + { + "name": "right_knee", + "x": 0.1576, + "y": 0.6485, + "confidence": 0.676 + }, + { + "name": "left_ankle", + "x": 0.1763, + "y": 0.7523, + "confidence": 0.34 + }, + { + "name": "right_ankle", + "x": 0.1281, + "y": 0.7278, + "confidence": 0.549 + }, + { + "name": "left_heel", + "x": 0.1718, + "y": 0.7638, + "confidence": 0.385 + }, + { + "name": "right_heel", + "x": 0.1222, + "y": 0.7347, + "confidence": 0.486 + }, + { + "name": "left_foot_index", + "x": 0.1734, + "y": 0.7765, + "confidence": 0.372 + }, + { + "name": "right_foot_index", + "x": 0.145, + "y": 0.7613, + "confidence": 0.525 + } + ] + } + ] + }, + { + "frame_index": 12, + "timestamp": 0.2, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.2147, + "acceleration": 12.4195, + "fluidity": 0, + "expansion": 0.305, + "total_displacement": 0.0094, + "center_displacement": { + "x": 0.0001, + "y": -0.0094 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2767, + "y": 0.4372, + "confidence": 0.99 + }, + { + "name": "left_eye_inner", + "x": 0.2785, + "y": 0.4435, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.2781, + "y": 0.4487, + "confidence": 0.989 + }, + { + "name": "left_eye_outer", + "x": 0.2778, + "y": 0.4557, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.2788, + "y": 0.4274, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.2782, + "y": 0.4216, + "confidence": 0.992 + }, + { + "name": "right_eye_outer", + "x": 0.2778, + "y": 0.4161, + "confidence": 0.994 + }, + { + "name": "left_ear", + "x": 0.2714, + "y": 0.4508, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.2701, + "y": 0.4101, + "confidence": 0.993 + }, + { + "name": "mouth_left", + "x": 0.2684, + "y": 0.4436, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.2694, + "y": 0.4265, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.2299, + "y": 0.4881, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2375, + "y": 0.3906, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.2741, + "y": 0.5496, + "confidence": 0.439 + }, + { + "name": "right_elbow", + "x": 0.3007, + "y": 0.3316, + "confidence": 0.861 + }, + { + "name": "left_wrist", + "x": 0.3127, + "y": 0.5009, + "confidence": 0.594 + }, + { + "name": "right_wrist", + "x": 0.3687, + "y": 0.2961, + "confidence": 0.86 + }, + { + "name": "left_pinky", + "x": 0.3172, + "y": 0.482, + "confidence": 0.575 + }, + { + "name": "right_pinky", + "x": 0.3821, + "y": 0.2889, + "confidence": 0.795 + }, + { + "name": "left_index", + "x": 0.3158, + "y": 0.472, + "confidence": 0.584 + }, + { + "name": "right_index", + "x": 0.3837, + "y": 0.2925, + "confidence": 0.789 + }, + { + "name": "left_thumb", + "x": 0.3123, + "y": 0.4784, + "confidence": 0.568 + }, + { + "name": "right_thumb", + "x": 0.3797, + "y": 0.2963, + "confidence": 0.731 + }, + { + "name": "left_hip", + "x": 0.1496, + "y": 0.5385, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1292, + "y": 0.4851, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1777, + "y": 0.6539, + "confidence": 0.295 + }, + { + "name": "right_knee", + "x": 0.1051, + "y": 0.5894, + "confidence": 0.68 + }, + { + "name": "left_ankle", + "x": 0.1868, + "y": 0.7503, + "confidence": 0.317 + }, + { + "name": "right_ankle", + "x": 0.0382, + "y": 0.6252, + "confidence": 0.506 + }, + { + "name": "left_heel", + "x": 0.1757, + "y": 0.7631, + "confidence": 0.366 + }, + { + "name": "right_heel", + "x": 0.0258, + "y": 0.6263, + "confidence": 0.45 + }, + { + "name": "left_foot_index", + "x": 0.1892, + "y": 0.7777, + "confidence": 0.346 + }, + { + "name": "right_foot_index", + "x": 0.023, + "y": 0.6588, + "confidence": 0.48 + } + ] + } + ] + }, + { + "frame_index": 13, + "timestamp": 0.21666666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.1702, + "acceleration": -2.6725, + "fluidity": 0, + "expansion": 0.337, + "total_displacement": 0.0346, + "center_displacement": { + "x": 0.0189, + "y": -0.0289 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3031, + "y": 0.4326, + "confidence": 0.991 + }, + { + "name": "left_eye_inner", + "x": 0.307, + "y": 0.4386, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.3064, + "y": 0.4425, + "confidence": 0.989 + }, + { + "name": "left_eye_outer", + "x": 0.3056, + "y": 0.4473, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.3093, + "y": 0.4251, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.3099, + "y": 0.4202, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.3102, + "y": 0.4153, + "confidence": 0.994 + }, + { + "name": "left_ear", + "x": 0.3004, + "y": 0.4467, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.3064, + "y": 0.4076, + "confidence": 0.993 + }, + { + "name": "mouth_left", + "x": 0.2938, + "y": 0.435, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.2973, + "y": 0.4213, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.2599, + "y": 0.4627, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2692, + "y": 0.3692, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3075, + "y": 0.5508, + "confidence": 0.455 + }, + { + "name": "right_elbow", + "x": 0.3342, + "y": 0.3049, + "confidence": 0.854 + }, + { + "name": "left_wrist", + "x": 0.3329, + "y": 0.4659, + "confidence": 0.597 + }, + { + "name": "right_wrist", + "x": 0.3953, + "y": 0.2557, + "confidence": 0.866 + }, + { + "name": "left_pinky", + "x": 0.3321, + "y": 0.4426, + "confidence": 0.574 + }, + { + "name": "right_pinky", + "x": 0.4118, + "y": 0.2444, + "confidence": 0.802 + }, + { + "name": "left_index", + "x": 0.3307, + "y": 0.4366, + "confidence": 0.582 + }, + { + "name": "right_index", + "x": 0.4158, + "y": 0.2484, + "confidence": 0.795 + }, + { + "name": "left_thumb", + "x": 0.3286, + "y": 0.4434, + "confidence": 0.561 + }, + { + "name": "right_thumb", + "x": 0.4119, + "y": 0.2538, + "confidence": 0.74 + }, + { + "name": "left_hip", + "x": 0.1602, + "y": 0.5034, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1323, + "y": 0.4514, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1726, + "y": 0.6461, + "confidence": 0.304 + }, + { + "name": "right_knee", + "x": 0.0469, + "y": 0.5139, + "confidence": 0.639 + }, + { + "name": "left_ankle", + "x": 0.1877, + "y": 0.7511, + "confidence": 0.296 + }, + { + "name": "right_ankle", + "x": -0.0178, + "y": 0.5378, + "confidence": 0.461 + }, + { + "name": "left_heel", + "x": 0.1805, + "y": 0.7641, + "confidence": 0.334 + }, + { + "name": "right_heel", + "x": -0.0265, + "y": 0.5466, + "confidence": 0.408 + }, + { + "name": "left_foot_index", + "x": 0.1859, + "y": 0.7766, + "confidence": 0.32 + }, + { + "name": "right_foot_index", + "x": -0.0313, + "y": 0.5389, + "confidence": 0.435 + } + ] + } + ] + }, + { + "frame_index": 14, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.203, + "acceleration": 1.968, + "fluidity": 0, + "expansion": 0.358, + "total_displacement": 0.0037, + "center_displacement": { + "x": -0.0021, + "y": -0.003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3068, + "y": 0.4323, + "confidence": 0.992 + }, + { + "name": "left_eye_inner", + "x": 0.3107, + "y": 0.4388, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.3091, + "y": 0.4428, + "confidence": 0.99 + }, + { + "name": "left_eye_outer", + "x": 0.3079, + "y": 0.4473, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.3146, + "y": 0.4245, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.3157, + "y": 0.4188, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.3164, + "y": 0.4128, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.3018, + "y": 0.4469, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.3123, + "y": 0.403, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.296, + "y": 0.4366, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.3018, + "y": 0.42, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.2627, + "y": 0.4636, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2763, + "y": 0.3675, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3052, + "y": 0.5514, + "confidence": 0.464 + }, + { + "name": "right_elbow", + "x": 0.3383, + "y": 0.3031, + "confidence": 0.858 + }, + { + "name": "left_wrist", + "x": 0.3312, + "y": 0.4694, + "confidence": 0.589 + }, + { + "name": "right_wrist", + "x": 0.3982, + "y": 0.2513, + "confidence": 0.873 + }, + { + "name": "left_pinky", + "x": 0.3299, + "y": 0.4452, + "confidence": 0.565 + }, + { + "name": "right_pinky", + "x": 0.4152, + "y": 0.2419, + "confidence": 0.811 + }, + { + "name": "left_index", + "x": 0.3289, + "y": 0.4384, + "confidence": 0.572 + }, + { + "name": "right_index", + "x": 0.4178, + "y": 0.2455, + "confidence": 0.805 + }, + { + "name": "left_thumb", + "x": 0.3276, + "y": 0.4469, + "confidence": 0.547 + }, + { + "name": "right_thumb", + "x": 0.4124, + "y": 0.2509, + "confidence": 0.753 + }, + { + "name": "left_hip", + "x": 0.153, + "y": 0.4996, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1212, + "y": 0.4437, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1682, + "y": 0.6177, + "confidence": 0.349 + }, + { + "name": "right_knee", + "x": 0.0584, + "y": 0.5208, + "confidence": 0.641 + }, + { + "name": "left_ankle", + "x": 0.1883, + "y": 0.7656, + "confidence": 0.326 + }, + { + "name": "right_ankle", + "x": -0.0257, + "y": 0.5209, + "confidence": 0.428 + }, + { + "name": "left_heel", + "x": 0.1795, + "y": 0.7967, + "confidence": 0.351 + }, + { + "name": "right_heel", + "x": -0.0404, + "y": 0.5223, + "confidence": 0.378 + }, + { + "name": "left_foot_index", + "x": 0.2047, + "y": 0.7765, + "confidence": 0.349 + }, + { + "name": "right_foot_index", + "x": -0.0364, + "y": 0.5207, + "confidence": 0.402 + } + ] + } + ] + }, + { + "frame_index": 15, + "timestamp": 0.25, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.2407, + "acceleration": 2.2586, + "fluidity": 0, + "expansion": 0.378, + "total_displacement": 0.0369, + "center_displacement": { + "x": 0.0285, + "y": -0.0235 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.349, + "y": 0.418, + "confidence": 0.992 + }, + { + "name": "left_eye_inner", + "x": 0.3488, + "y": 0.4299, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.3477, + "y": 0.4332, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.3465, + "y": 0.4367, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.3493, + "y": 0.4192, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.3487, + "y": 0.415, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.3479, + "y": 0.4107, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.3368, + "y": 0.4404, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.3399, + "y": 0.4031, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.3416, + "y": 0.4173, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.343, + "y": 0.4071, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.2963, + "y": 0.4447, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3093, + "y": 0.3462, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3389, + "y": 0.5254, + "confidence": 0.493 + }, + { + "name": "right_elbow", + "x": 0.3635, + "y": 0.2682, + "confidence": 0.858 + }, + { + "name": "left_wrist", + "x": 0.3634, + "y": 0.4536, + "confidence": 0.602 + }, + { + "name": "right_wrist", + "x": 0.4206, + "y": 0.2179, + "confidence": 0.88 + }, + { + "name": "left_pinky", + "x": 0.3565, + "y": 0.4381, + "confidence": 0.571 + }, + { + "name": "right_pinky", + "x": 0.4352, + "y": 0.2049, + "confidence": 0.821 + }, + { + "name": "left_index", + "x": 0.3584, + "y": 0.4352, + "confidence": 0.578 + }, + { + "name": "right_index", + "x": 0.4385, + "y": 0.2111, + "confidence": 0.815 + }, + { + "name": "left_thumb", + "x": 0.3592, + "y": 0.4398, + "confidence": 0.556 + }, + { + "name": "right_thumb", + "x": 0.4334, + "y": 0.2169, + "confidence": 0.766 + }, + { + "name": "left_hip", + "x": 0.1731, + "y": 0.473, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1484, + "y": 0.4165, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1723, + "y": 0.5666, + "confidence": 0.384 + }, + { + "name": "right_knee", + "x": 0.0588, + "y": 0.3924, + "confidence": 0.671 + }, + { + "name": "left_ankle", + "x": 0.1815, + "y": 0.7535, + "confidence": 0.318 + }, + { + "name": "right_ankle", + "x": -0.0703, + "y": 0.3811, + "confidence": 0.445 + }, + { + "name": "left_heel", + "x": 0.173, + "y": 0.778, + "confidence": 0.34 + }, + { + "name": "right_heel", + "x": -0.0919, + "y": 0.3816, + "confidence": 0.371 + }, + { + "name": "left_foot_index", + "x": 0.1977, + "y": 0.7817, + "confidence": 0.341 + }, + { + "name": "right_foot_index", + "x": -0.0937, + "y": 0.3836, + "confidence": 0.402 + } + ] + } + ] + }, + { + "frame_index": 16, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.1767, + "acceleration": -3.8361, + "fluidity": 0, + "expansion": 0.38, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.0002, + "y": -0.005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3526, + "y": 0.4094, + "confidence": 0.993 + }, + { + "name": "left_eye_inner", + "x": 0.3508, + "y": 0.4203, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.349, + "y": 0.4244, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.3472, + "y": 0.4285, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.3518, + "y": 0.4099, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.351, + "y": 0.4062, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.3502, + "y": 0.4023, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.3362, + "y": 0.436, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.3402, + "y": 0.3971, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.3442, + "y": 0.4106, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.3463, + "y": 0.4005, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.2989, + "y": 0.4468, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3112, + "y": 0.3441, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3415, + "y": 0.5304, + "confidence": 0.525 + }, + { + "name": "right_elbow", + "x": 0.3649, + "y": 0.2651, + "confidence": 0.868 + }, + { + "name": "left_wrist", + "x": 0.3628, + "y": 0.4532, + "confidence": 0.625 + }, + { + "name": "right_wrist", + "x": 0.4218, + "y": 0.2181, + "confidence": 0.891 + }, + { + "name": "left_pinky", + "x": 0.3571, + "y": 0.4332, + "confidence": 0.589 + }, + { + "name": "right_pinky", + "x": 0.4343, + "y": 0.2054, + "confidence": 0.837 + }, + { + "name": "left_index", + "x": 0.3585, + "y": 0.4292, + "confidence": 0.596 + }, + { + "name": "right_index", + "x": 0.4386, + "y": 0.2102, + "confidence": 0.832 + }, + { + "name": "left_thumb", + "x": 0.3594, + "y": 0.4361, + "confidence": 0.575 + }, + { + "name": "right_thumb", + "x": 0.4338, + "y": 0.2178, + "confidence": 0.787 + }, + { + "name": "left_hip", + "x": 0.1699, + "y": 0.4672, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1482, + "y": 0.4022, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.17, + "y": 0.5592, + "confidence": 0.442 + }, + { + "name": "right_knee", + "x": 0.0565, + "y": 0.3875, + "confidence": 0.703 + }, + { + "name": "left_ankle", + "x": 0.1786, + "y": 0.7456, + "confidence": 0.376 + }, + { + "name": "right_ankle", + "x": -0.065, + "y": 0.3731, + "confidence": 0.494 + }, + { + "name": "left_heel", + "x": 0.1701, + "y": 0.7683, + "confidence": 0.381 + }, + { + "name": "right_heel", + "x": -0.0831, + "y": 0.374, + "confidence": 0.404 + }, + { + "name": "left_foot_index", + "x": 0.1995, + "y": 0.7843, + "confidence": 0.391 + }, + { + "name": "right_foot_index", + "x": -0.0877, + "y": 0.3718, + "confidence": 0.446 + } + ] + } + ] + }, + { + "frame_index": 17, + "timestamp": 0.2833333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.1852, + "acceleration": 0.5068, + "fluidity": 0, + "expansion": 0.377, + "total_displacement": 0.0331, + "center_displacement": { + "x": 0.0246, + "y": -0.0222 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3708, + "y": 0.4143, + "confidence": 0.993 + }, + { + "name": "left_eye_inner", + "x": 0.3704, + "y": 0.4241, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.3694, + "y": 0.4269, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.3682, + "y": 0.4296, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.37, + "y": 0.414, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.3691, + "y": 0.4089, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.3682, + "y": 0.403, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.3586, + "y": 0.4311, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.3589, + "y": 0.402, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.3645, + "y": 0.41, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.3647, + "y": 0.4043, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.3265, + "y": 0.4155, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.335, + "y": 0.3388, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3778, + "y": 0.5032, + "confidence": 0.543 + }, + { + "name": "right_elbow", + "x": 0.3728, + "y": 0.246, + "confidence": 0.861 + }, + { + "name": "left_wrist", + "x": 0.3728, + "y": 0.454, + "confidence": 0.603 + }, + { + "name": "right_wrist", + "x": 0.4246, + "y": 0.1894, + "confidence": 0.899 + }, + { + "name": "left_pinky", + "x": 0.3647, + "y": 0.4512, + "confidence": 0.562 + }, + { + "name": "right_pinky", + "x": 0.4391, + "y": 0.1757, + "confidence": 0.849 + }, + { + "name": "left_index", + "x": 0.365, + "y": 0.4353, + "confidence": 0.565 + }, + { + "name": "right_index", + "x": 0.4426, + "y": 0.1805, + "confidence": 0.844 + }, + { + "name": "left_thumb", + "x": 0.3662, + "y": 0.4457, + "confidence": 0.545 + }, + { + "name": "right_thumb", + "x": 0.4374, + "y": 0.1889, + "confidence": 0.803 + }, + { + "name": "left_hip", + "x": 0.1902, + "y": 0.427, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1748, + "y": 0.3903, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1624, + "y": 0.5425, + "confidence": 0.49 + }, + { + "name": "right_knee", + "x": 0.1012, + "y": 0.3097, + "confidence": 0.723 + }, + { + "name": "left_ankle", + "x": 0.1638, + "y": 0.6962, + "confidence": 0.414 + }, + { + "name": "right_ankle", + "x": -0.0116, + "y": 0.2581, + "confidence": 0.519 + }, + { + "name": "left_heel", + "x": 0.1499, + "y": 0.7163, + "confidence": 0.409 + }, + { + "name": "right_heel", + "x": -0.0265, + "y": 0.2657, + "confidence": 0.432 + }, + { + "name": "left_foot_index", + "x": 0.16, + "y": 0.7236, + "confidence": 0.423 + }, + { + "name": "right_foot_index", + "x": -0.0223, + "y": 0.2313, + "confidence": 0.464 + } + ] + } + ] + }, + { + "frame_index": 18, + "timestamp": 0.3, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.5442, + "acceleration": -38.4604, + "fluidity": 0, + "expansion": 0.377, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0065, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.376, + "y": 0.4099, + "confidence": 0.994 + }, + { + "name": "left_eye_inner", + "x": 0.3769, + "y": 0.4199, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.3763, + "y": 0.4225, + "confidence": 0.99 + }, + { + "name": "left_eye_outer", + "x": 0.3756, + "y": 0.4251, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.3762, + "y": 0.4113, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.3752, + "y": 0.4078, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.3742, + "y": 0.4036, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.3674, + "y": 0.428, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.3657, + "y": 0.4014, + "confidence": 0.993 + }, + { + "name": "mouth_left", + "x": 0.3699, + "y": 0.409, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.3694, + "y": 0.4014, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.3319, + "y": 0.424, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3371, + "y": 0.3363, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3761, + "y": 0.4994, + "confidence": 0.557 + }, + { + "name": "right_elbow", + "x": 0.3733, + "y": 0.2415, + "confidence": 0.87 + }, + { + "name": "left_wrist", + "x": 0.3859, + "y": 0.4443, + "confidence": 0.602 + }, + { + "name": "right_wrist", + "x": 0.426, + "y": 0.1902, + "confidence": 0.908 + }, + { + "name": "left_pinky", + "x": 0.3807, + "y": 0.4278, + "confidence": 0.552 + }, + { + "name": "right_pinky", + "x": 0.4394, + "y": 0.1752, + "confidence": 0.863 + }, + { + "name": "left_index", + "x": 0.3803, + "y": 0.4227, + "confidence": 0.553 + }, + { + "name": "right_index", + "x": 0.4438, + "y": 0.1778, + "confidence": 0.858 + }, + { + "name": "left_thumb", + "x": 0.3801, + "y": 0.431, + "confidence": 0.534 + }, + { + "name": "right_thumb", + "x": 0.4393, + "y": 0.1842, + "confidence": 0.821 + }, + { + "name": "left_hip", + "x": 0.2005, + "y": 0.4357, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1831, + "y": 0.3763, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1704, + "y": 0.5497, + "confidence": 0.539 + }, + { + "name": "right_knee", + "x": 0.1068, + "y": 0.3078, + "confidence": 0.748 + }, + { + "name": "left_ankle", + "x": 0.1544, + "y": 0.7019, + "confidence": 0.47 + }, + { + "name": "right_ankle", + "x": 0.0025, + "y": 0.2565, + "confidence": 0.56 + }, + { + "name": "left_heel", + "x": 0.1394, + "y": 0.7168, + "confidence": 0.459 + }, + { + "name": "right_heel", + "x": -0.0093, + "y": 0.2612, + "confidence": 0.468 + }, + { + "name": "left_foot_index", + "x": 0.1607, + "y": 0.7395, + "confidence": 0.473 + }, + { + "name": "right_foot_index", + "x": -0.0279, + "y": 0.2244, + "confidence": 0.5 + } + ] + } + ] + }, + { + "frame_index": 19, + "timestamp": 0.31666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.8066, + "acceleration": 15.7462, + "fluidity": 0, + "expansion": 0.37, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0004, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.381, + "y": 0.4047, + "confidence": 0.994 + }, + { + "name": "left_eye_inner", + "x": 0.382, + "y": 0.4154, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.3812, + "y": 0.4183, + "confidence": 0.987 + }, + { + "name": "left_eye_outer", + "x": 0.3803, + "y": 0.4211, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.3815, + "y": 0.4065, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.3807, + "y": 0.4032, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.3799, + "y": 0.3994, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.3713, + "y": 0.4252, + "confidence": 0.992 + }, + { + "name": "right_ear", + "x": 0.3711, + "y": 0.3981, + "confidence": 0.991 + }, + { + "name": "mouth_left", + "x": 0.3739, + "y": 0.4056, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.3741, + "y": 0.3966, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.3337, + "y": 0.429, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3408, + "y": 0.3339, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3777, + "y": 0.5021, + "confidence": 0.566 + }, + { + "name": "right_elbow", + "x": 0.3768, + "y": 0.2391, + "confidence": 0.874 + }, + { + "name": "left_wrist", + "x": 0.3862, + "y": 0.4465, + "confidence": 0.589 + }, + { + "name": "right_wrist", + "x": 0.4271, + "y": 0.1882, + "confidence": 0.916 + }, + { + "name": "left_pinky", + "x": 0.382, + "y": 0.4289, + "confidence": 0.533 + }, + { + "name": "right_pinky", + "x": 0.4406, + "y": 0.1729, + "confidence": 0.874 + }, + { + "name": "left_index", + "x": 0.3811, + "y": 0.4228, + "confidence": 0.531 + }, + { + "name": "right_index", + "x": 0.4449, + "y": 0.1764, + "confidence": 0.869 + }, + { + "name": "left_thumb", + "x": 0.3807, + "y": 0.428, + "confidence": 0.512 + }, + { + "name": "right_thumb", + "x": 0.441, + "y": 0.1841, + "confidence": 0.835 + }, + { + "name": "left_hip", + "x": 0.1963, + "y": 0.4363, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1834, + "y": 0.3698, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1732, + "y": 0.5627, + "confidence": 0.57 + }, + { + "name": "right_knee", + "x": 0.1092, + "y": 0.307, + "confidence": 0.761 + }, + { + "name": "left_ankle", + "x": 0.1532, + "y": 0.7056, + "confidence": 0.487 + }, + { + "name": "right_ankle", + "x": 0.0069, + "y": 0.255, + "confidence": 0.578 + }, + { + "name": "left_heel", + "x": 0.138, + "y": 0.7134, + "confidence": 0.449 + }, + { + "name": "right_heel", + "x": -0.0036, + "y": 0.2631, + "confidence": 0.467 + }, + { + "name": "left_foot_index", + "x": 0.1444, + "y": 0.7367, + "confidence": 0.478 + }, + { + "name": "right_foot_index", + "x": -0.0265, + "y": 0.2251, + "confidence": 0.503 + } + ] + } + ] + }, + { + "frame_index": 20, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.9543, + "acceleration": 8.8616, + "fluidity": 0, + "expansion": 0.361, + "total_displacement": 0.0303, + "center_displacement": { + "x": 0.023, + "y": -0.0197 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4143, + "y": 0.4138, + "confidence": 0.994 + }, + { + "name": "left_eye_inner", + "x": 0.4096, + "y": 0.4313, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.4073, + "y": 0.4287, + "confidence": 0.985 + }, + { + "name": "left_eye_outer", + "x": 0.4049, + "y": 0.4286, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.4103, + "y": 0.4256, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4092, + "y": 0.4239, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.4081, + "y": 0.4221, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.393, + "y": 0.4252, + "confidence": 0.991 + }, + { + "name": "right_ear", + "x": 0.396, + "y": 0.3991, + "confidence": 0.991 + }, + { + "name": "mouth_left", + "x": 0.4035, + "y": 0.4098, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.4051, + "y": 0.4016, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.3566, + "y": 0.4224, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3688, + "y": 0.3189, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.3947, + "y": 0.4806, + "confidence": 0.528 + }, + { + "name": "right_elbow", + "x": 0.38, + "y": 0.2304, + "confidence": 0.861 + }, + { + "name": "left_wrist", + "x": 0.4017, + "y": 0.4506, + "confidence": 0.543 + }, + { + "name": "right_wrist", + "x": 0.4207, + "y": 0.1704, + "confidence": 0.919 + }, + { + "name": "left_pinky", + "x": 0.3987, + "y": 0.4407, + "confidence": 0.493 + }, + { + "name": "right_pinky", + "x": 0.4337, + "y": 0.1518, + "confidence": 0.88 + }, + { + "name": "left_index", + "x": 0.399, + "y": 0.4338, + "confidence": 0.49 + }, + { + "name": "right_index", + "x": 0.4396, + "y": 0.1535, + "confidence": 0.876 + }, + { + "name": "left_thumb", + "x": 0.3998, + "y": 0.4393, + "confidence": 0.473 + }, + { + "name": "right_thumb", + "x": 0.4349, + "y": 0.1626, + "confidence": 0.842 + }, + { + "name": "left_hip", + "x": 0.2133, + "y": 0.4105, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.2078, + "y": 0.3383, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1714, + "y": 0.5021, + "confidence": 0.604 + }, + { + "name": "right_knee", + "x": 0.1357, + "y": 0.2419, + "confidence": 0.778 + }, + { + "name": "left_ankle", + "x": 0.1089, + "y": 0.6051, + "confidence": 0.528 + }, + { + "name": "right_ankle", + "x": 0.0412, + "y": 0.1773, + "confidence": 0.613 + }, + { + "name": "left_heel", + "x": 0.0905, + "y": 0.6127, + "confidence": 0.48 + }, + { + "name": "right_heel", + "x": 0.027, + "y": 0.1815, + "confidence": 0.498 + }, + { + "name": "left_foot_index", + "x": 0.0995, + "y": 0.6714, + "confidence": 0.511 + }, + { + "name": "right_foot_index", + "x": -0.0159, + "y": 0.1363, + "confidence": 0.537 + } + ] + } + ] + }, + { + "frame_index": 21, + "timestamp": 0.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.9768, + "acceleration": 1.3524, + "fluidity": 0, + "expansion": 0.352, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.0023, + "y": -0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4026, + "y": 0.4058, + "confidence": 0.994 + }, + { + "name": "left_eye_inner", + "x": 0.4007, + "y": 0.4232, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.3992, + "y": 0.4224, + "confidence": 0.983 + }, + { + "name": "left_eye_outer", + "x": 0.3976, + "y": 0.4224, + "confidence": 0.989 + }, + { + "name": "right_eye_inner", + "x": 0.4001, + "y": 0.41, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.3992, + "y": 0.4072, + "confidence": 0.992 + }, + { + "name": "right_eye_outer", + "x": 0.4084, + "y": 0.4093, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.3898, + "y": 0.4188, + "confidence": 0.99 + }, + { + "name": "right_ear", + "x": 0.4048, + "y": 0.3921, + "confidence": 0.99 + }, + { + "name": "mouth_left", + "x": 0.3948, + "y": 0.401, + "confidence": 0.992 + }, + { + "name": "mouth_right", + "x": 0.396, + "y": 0.3952, + "confidence": 0.994 + }, + { + "name": "left_shoulder", + "x": 0.3612, + "y": 0.4216, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3686, + "y": 0.3177, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4044, + "y": 0.4839, + "confidence": 0.522 + }, + { + "name": "right_elbow", + "x": 0.3815, + "y": 0.2245, + "confidence": 0.864 + }, + { + "name": "left_wrist", + "x": 0.402, + "y": 0.45, + "confidence": 0.511 + }, + { + "name": "right_wrist", + "x": 0.4228, + "y": 0.1658, + "confidence": 0.926 + }, + { + "name": "left_pinky", + "x": 0.3985, + "y": 0.443, + "confidence": 0.46 + }, + { + "name": "right_pinky", + "x": 0.4344, + "y": 0.1471, + "confidence": 0.89 + }, + { + "name": "left_index", + "x": 0.3966, + "y": 0.436, + "confidence": 0.456 + }, + { + "name": "right_index", + "x": 0.4399, + "y": 0.1496, + "confidence": 0.886 + }, + { + "name": "left_thumb", + "x": 0.397, + "y": 0.4382, + "confidence": 0.441 + }, + { + "name": "right_thumb", + "x": 0.436, + "y": 0.1566, + "confidence": 0.855 + }, + { + "name": "left_hip", + "x": 0.2163, + "y": 0.4063, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.2096, + "y": 0.3317, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1704, + "y": 0.5035, + "confidence": 0.639 + }, + { + "name": "right_knee", + "x": 0.1375, + "y": 0.2387, + "confidence": 0.799 + }, + { + "name": "left_ankle", + "x": 0.1066, + "y": 0.5957, + "confidence": 0.571 + }, + { + "name": "right_ankle", + "x": 0.0405, + "y": 0.1694, + "confidence": 0.65 + }, + { + "name": "left_heel", + "x": 0.0902, + "y": 0.5984, + "confidence": 0.518 + }, + { + "name": "right_heel", + "x": 0.0269, + "y": 0.1734, + "confidence": 0.538 + }, + { + "name": "left_foot_index", + "x": 0.0969, + "y": 0.6718, + "confidence": 0.552 + }, + { + "name": "right_foot_index", + "x": -0.0109, + "y": 0.131, + "confidence": 0.579 + } + ] + } + ] + }, + { + "frame_index": 22, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.9509, + "acceleration": -1.5554, + "fluidity": 0, + "expansion": 0.341, + "total_displacement": 0.029, + "center_displacement": { + "x": 0.0235, + "y": -0.017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4227, + "y": 0.4073, + "confidence": 0.994 + }, + { + "name": "left_eye_inner", + "x": 0.42, + "y": 0.4237, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.4184, + "y": 0.4234, + "confidence": 0.983 + }, + { + "name": "left_eye_outer", + "x": 0.4168, + "y": 0.4239, + "confidence": 0.989 + }, + { + "name": "right_eye_inner", + "x": 0.419, + "y": 0.411, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4182, + "y": 0.4083, + "confidence": 0.992 + }, + { + "name": "right_eye_outer", + "x": 0.4206, + "y": 0.4128, + "confidence": 0.995 + }, + { + "name": "left_ear", + "x": 0.4043, + "y": 0.4178, + "confidence": 0.99 + }, + { + "name": "right_ear", + "x": 0.4141, + "y": 0.396, + "confidence": 0.991 + }, + { + "name": "mouth_left", + "x": 0.4141, + "y": 0.4052, + "confidence": 0.992 + }, + { + "name": "mouth_right", + "x": 0.4168, + "y": 0.399, + "confidence": 0.994 + }, + { + "name": "left_shoulder", + "x": 0.3808, + "y": 0.4165, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3897, + "y": 0.3136, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4256, + "y": 0.4798, + "confidence": 0.541 + }, + { + "name": "right_elbow", + "x": 0.385, + "y": 0.2329, + "confidence": 0.871 + }, + { + "name": "left_wrist", + "x": 0.419, + "y": 0.4694, + "confidence": 0.512 + }, + { + "name": "right_wrist", + "x": 0.4172, + "y": 0.1642, + "confidence": 0.932 + }, + { + "name": "left_pinky", + "x": 0.4196, + "y": 0.4714, + "confidence": 0.454 + }, + { + "name": "right_pinky", + "x": 0.4274, + "y": 0.1413, + "confidence": 0.898 + }, + { + "name": "left_index", + "x": 0.4253, + "y": 0.4576, + "confidence": 0.449 + }, + { + "name": "right_index", + "x": 0.433, + "y": 0.1434, + "confidence": 0.895 + }, + { + "name": "left_thumb", + "x": 0.4246, + "y": 0.4545, + "confidence": 0.437 + }, + { + "name": "right_thumb", + "x": 0.4292, + "y": 0.1515, + "confidence": 0.866 + }, + { + "name": "left_hip", + "x": 0.2392, + "y": 0.3784, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.2398, + "y": 0.3006, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1668, + "y": 0.4292, + "confidence": 0.672 + }, + { + "name": "right_knee", + "x": 0.1776, + "y": 0.1988, + "confidence": 0.817 + }, + { + "name": "left_ankle", + "x": 0.0714, + "y": 0.4747, + "confidence": 0.612 + }, + { + "name": "right_ankle", + "x": 0.0795, + "y": 0.1207, + "confidence": 0.684 + }, + { + "name": "left_heel", + "x": 0.049, + "y": 0.4697, + "confidence": 0.557 + }, + { + "name": "right_heel", + "x": 0.0638, + "y": 0.1241, + "confidence": 0.575 + }, + { + "name": "left_foot_index", + "x": 0.0473, + "y": 0.5428, + "confidence": 0.593 + }, + { + "name": "right_foot_index", + "x": 0.0417, + "y": 0.0821, + "confidence": 0.618 + } + ] + } + ] + }, + { + "frame_index": 23, + "timestamp": 0.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4445, + "acceleration": -30.3864, + "fluidity": 0, + "expansion": 0.338, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0018, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.426, + "y": 0.4153, + "confidence": 0.995 + }, + { + "name": "left_eye_inner", + "x": 0.4219, + "y": 0.4313, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.4199, + "y": 0.431, + "confidence": 0.984 + }, + { + "name": "left_eye_outer", + "x": 0.4181, + "y": 0.4312, + "confidence": 0.99 + }, + { + "name": "right_eye_inner", + "x": 0.4248, + "y": 0.4242, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4243, + "y": 0.4223, + "confidence": 0.993 + }, + { + "name": "right_eye_outer", + "x": 0.4241, + "y": 0.4228, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.4085, + "y": 0.4195, + "confidence": 0.99 + }, + { + "name": "right_ear", + "x": 0.416, + "y": 0.4053, + "confidence": 0.991 + }, + { + "name": "mouth_left", + "x": 0.417, + "y": 0.4062, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.4183, + "y": 0.3992, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.3775, + "y": 0.4161, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3945, + "y": 0.3192, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4291, + "y": 0.4807, + "confidence": 0.561 + }, + { + "name": "right_elbow", + "x": 0.3867, + "y": 0.2369, + "confidence": 0.879 + }, + { + "name": "left_wrist", + "x": 0.4182, + "y": 0.4556, + "confidence": 0.502 + }, + { + "name": "right_wrist", + "x": 0.4156, + "y": 0.164, + "confidence": 0.938 + }, + { + "name": "left_pinky", + "x": 0.4162, + "y": 0.4516, + "confidence": 0.436 + }, + { + "name": "right_pinky", + "x": 0.4267, + "y": 0.1408, + "confidence": 0.907 + }, + { + "name": "left_index", + "x": 0.4167, + "y": 0.4493, + "confidence": 0.43 + }, + { + "name": "right_index", + "x": 0.4325, + "y": 0.1411, + "confidence": 0.904 + }, + { + "name": "left_thumb", + "x": 0.4169, + "y": 0.4463, + "confidence": 0.418 + }, + { + "name": "right_thumb", + "x": 0.428, + "y": 0.1497, + "confidence": 0.877 + }, + { + "name": "left_hip", + "x": 0.2411, + "y": 0.3711, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2436, + "y": 0.2973, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1626, + "y": 0.4223, + "confidence": 0.703 + }, + { + "name": "right_knee", + "x": 0.1783, + "y": 0.1932, + "confidence": 0.834 + }, + { + "name": "left_ankle", + "x": 0.0651, + "y": 0.4711, + "confidence": 0.649 + }, + { + "name": "right_ankle", + "x": 0.083, + "y": 0.1166, + "confidence": 0.714 + }, + { + "name": "left_heel", + "x": 0.0436, + "y": 0.4653, + "confidence": 0.589 + }, + { + "name": "right_heel", + "x": 0.0656, + "y": 0.1186, + "confidence": 0.609 + }, + { + "name": "left_foot_index", + "x": 0.0406, + "y": 0.53, + "confidence": 0.631 + }, + { + "name": "right_foot_index", + "x": 0.0473, + "y": 0.0772, + "confidence": 0.653 + } + ] + } + ] + }, + { + "frame_index": 24, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.6501, + "acceleration": 12.3383, + "fluidity": 0, + "expansion": 0.331, + "total_displacement": 0.0041, + "center_displacement": { + "x": 0.0041, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4328, + "y": 0.4289, + "confidence": 0.995 + }, + { + "name": "left_eye_inner", + "x": 0.4283, + "y": 0.4448, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4261, + "y": 0.4451, + "confidence": 0.986 + }, + { + "name": "left_eye_outer", + "x": 0.4241, + "y": 0.4455, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.4304, + "y": 0.4414, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4306, + "y": 0.4412, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.4296, + "y": 0.4379, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.4118, + "y": 0.4354, + "confidence": 0.991 + }, + { + "name": "right_ear", + "x": 0.4215, + "y": 0.4255, + "confidence": 0.992 + }, + { + "name": "mouth_left", + "x": 0.4243, + "y": 0.4165, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.4273, + "y": 0.4132, + "confidence": 0.995 + }, + { + "name": "left_shoulder", + "x": 0.3782, + "y": 0.4171, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3954, + "y": 0.3237, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4283, + "y": 0.4822, + "confidence": 0.583 + }, + { + "name": "right_elbow", + "x": 0.3854, + "y": 0.2419, + "confidence": 0.887 + }, + { + "name": "left_wrist", + "x": 0.4199, + "y": 0.4708, + "confidence": 0.478 + }, + { + "name": "right_wrist", + "x": 0.4157, + "y": 0.164, + "confidence": 0.942 + }, + { + "name": "left_pinky", + "x": 0.4179, + "y": 0.4706, + "confidence": 0.408 + }, + { + "name": "right_pinky", + "x": 0.4257, + "y": 0.1403, + "confidence": 0.911 + }, + { + "name": "left_index", + "x": 0.4167, + "y": 0.4686, + "confidence": 0.402 + }, + { + "name": "right_index", + "x": 0.4326, + "y": 0.1419, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.4171, + "y": 0.4682, + "confidence": 0.394 + }, + { + "name": "right_thumb", + "x": 0.4286, + "y": 0.151, + "confidence": 0.884 + }, + { + "name": "left_hip", + "x": 0.2475, + "y": 0.3704, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2522, + "y": 0.293, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1607, + "y": 0.425, + "confidence": 0.73 + }, + { + "name": "right_knee", + "x": 0.1798, + "y": 0.1946, + "confidence": 0.849 + }, + { + "name": "left_ankle", + "x": 0.0621, + "y": 0.4746, + "confidence": 0.682 + }, + { + "name": "right_ankle", + "x": 0.0845, + "y": 0.1169, + "confidence": 0.742 + }, + { + "name": "left_heel", + "x": 0.0421, + "y": 0.4677, + "confidence": 0.619 + }, + { + "name": "right_heel", + "x": 0.067, + "y": 0.1206, + "confidence": 0.642 + }, + { + "name": "left_foot_index", + "x": 0.0415, + "y": 0.536, + "confidence": 0.664 + }, + { + "name": "right_foot_index", + "x": 0.0509, + "y": 0.0796, + "confidence": 0.686 + } + ] + } + ] + }, + { + "frame_index": 25, + "timestamp": 0.4166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.7554, + "acceleration": 6.319, + "fluidity": 0, + "expansion": 0.321, + "total_displacement": 0.021, + "center_displacement": { + "x": 0.0164, + "y": -0.0131 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4373, + "y": 0.426, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4365, + "y": 0.437, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4355, + "y": 0.4383, + "confidence": 0.987 + }, + { + "name": "left_eye_outer", + "x": 0.4314, + "y": 0.4376, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.4379, + "y": 0.4332, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4378, + "y": 0.4236, + "confidence": 0.994 + }, + { + "name": "right_eye_outer", + "x": 0.4424, + "y": 0.4267, + "confidence": 0.996 + }, + { + "name": "left_ear", + "x": 0.4259, + "y": 0.4317, + "confidence": 0.992 + }, + { + "name": "right_ear", + "x": 0.4417, + "y": 0.4043, + "confidence": 0.993 + }, + { + "name": "mouth_left", + "x": 0.4307, + "y": 0.4165, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.4331, + "y": 0.4114, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.3934, + "y": 0.4156, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4087, + "y": 0.3173, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4385, + "y": 0.479, + "confidence": 0.598 + }, + { + "name": "right_elbow", + "x": 0.3949, + "y": 0.2443, + "confidence": 0.883 + }, + { + "name": "left_wrist", + "x": 0.4375, + "y": 0.4514, + "confidence": 0.453 + }, + { + "name": "right_wrist", + "x": 0.4149, + "y": 0.1643, + "confidence": 0.945 + }, + { + "name": "left_pinky", + "x": 0.4348, + "y": 0.4514, + "confidence": 0.38 + }, + { + "name": "right_pinky", + "x": 0.4237, + "y": 0.1419, + "confidence": 0.916 + }, + { + "name": "left_index", + "x": 0.4291, + "y": 0.4466, + "confidence": 0.374 + }, + { + "name": "right_index", + "x": 0.4302, + "y": 0.1408, + "confidence": 0.914 + }, + { + "name": "left_thumb", + "x": 0.4285, + "y": 0.4459, + "confidence": 0.367 + }, + { + "name": "right_thumb", + "x": 0.4261, + "y": 0.1494, + "confidence": 0.889 + }, + { + "name": "left_hip", + "x": 0.2607, + "y": 0.3494, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2761, + "y": 0.2696, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1608, + "y": 0.3624, + "confidence": 0.757 + }, + { + "name": "right_knee", + "x": 0.2162, + "y": 0.1739, + "confidence": 0.864 + }, + { + "name": "left_ankle", + "x": 0.0565, + "y": 0.3642, + "confidence": 0.713 + }, + { + "name": "right_ankle", + "x": 0.1168, + "y": 0.0935, + "confidence": 0.767 + }, + { + "name": "left_heel", + "x": 0.0382, + "y": 0.3515, + "confidence": 0.655 + }, + { + "name": "right_heel", + "x": 0.0995, + "y": 0.095, + "confidence": 0.673 + }, + { + "name": "left_foot_index", + "x": 0.0248, + "y": 0.4023, + "confidence": 0.697 + }, + { + "name": "right_foot_index", + "x": 0.089, + "y": 0.0487, + "confidence": 0.717 + } + ] + } + ] + }, + { + "frame_index": 26, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.1679, + "acceleration": 24.748, + "fluidity": 0, + "expansion": 0.3, + "total_displacement": 0.0059, + "center_displacement": { + "x": 0.0053, + "y": -0.0027 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4418, + "y": 0.4307, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4423, + "y": 0.4415, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.438, + "y": 0.445, + "confidence": 0.988 + }, + { + "name": "left_eye_outer", + "x": 0.4367, + "y": 0.446, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4435, + "y": 0.4379, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4433, + "y": 0.4344, + "confidence": 0.995 + }, + { + "name": "right_eye_outer", + "x": 0.4439, + "y": 0.4306, + "confidence": 0.997 + }, + { + "name": "left_ear", + "x": 0.4383, + "y": 0.4329, + "confidence": 0.993 + }, + { + "name": "right_ear", + "x": 0.4498, + "y": 0.4071, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.4325, + "y": 0.4235, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.4377, + "y": 0.4167, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.4, + "y": 0.4143, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4114, + "y": 0.3198, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4391, + "y": 0.4737, + "confidence": 0.597 + }, + { + "name": "right_elbow", + "x": 0.3944, + "y": 0.2466, + "confidence": 0.877 + }, + { + "name": "left_wrist", + "x": 0.4415, + "y": 0.4496, + "confidence": 0.432 + }, + { + "name": "right_wrist", + "x": 0.4138, + "y": 0.1645, + "confidence": 0.946 + }, + { + "name": "left_pinky", + "x": 0.4438, + "y": 0.4446, + "confidence": 0.358 + }, + { + "name": "right_pinky", + "x": 0.4226, + "y": 0.1419, + "confidence": 0.917 + }, + { + "name": "left_index", + "x": 0.443, + "y": 0.4445, + "confidence": 0.351 + }, + { + "name": "right_index", + "x": 0.4287, + "y": 0.1402, + "confidence": 0.915 + }, + { + "name": "left_thumb", + "x": 0.4409, + "y": 0.4445, + "confidence": 0.346 + }, + { + "name": "right_thumb", + "x": 0.4246, + "y": 0.1488, + "confidence": 0.89 + }, + { + "name": "left_hip", + "x": 0.2673, + "y": 0.3416, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2814, + "y": 0.2654, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1631, + "y": 0.3587, + "confidence": 0.78 + }, + { + "name": "right_knee", + "x": 0.2157, + "y": 0.1707, + "confidence": 0.877 + }, + { + "name": "left_ankle", + "x": 0.056, + "y": 0.3626, + "confidence": 0.741 + }, + { + "name": "right_ankle", + "x": 0.119, + "y": 0.0944, + "confidence": 0.789 + }, + { + "name": "left_heel", + "x": 0.0378, + "y": 0.3494, + "confidence": 0.685 + }, + { + "name": "right_heel", + "x": 0.1019, + "y": 0.0957, + "confidence": 0.696 + }, + { + "name": "left_foot_index", + "x": 0.0244, + "y": 0.397, + "confidence": 0.726 + }, + { + "name": "right_foot_index", + "x": 0.092, + "y": 0.048, + "confidence": 0.742 + } + ] + } + ] + }, + { + "frame_index": 27, + "timestamp": 0.45, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.8361, + "acceleration": 40.0908, + "fluidity": 0, + "expansion": 0.28, + "total_displacement": 0.0399, + "center_displacement": { + "x": -0.0046, + "y": -0.0396 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2703, + "y": 0.229, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.2659, + "y": 0.2354, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.2658, + "y": 0.2395, + "confidence": 0.99 + }, + { + "name": "left_eye_outer", + "x": 0.2653, + "y": 0.2435, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.271, + "y": 0.2254, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.2736, + "y": 0.2236, + "confidence": 0.995 + }, + { + "name": "right_eye_outer", + "x": 0.2763, + "y": 0.2219, + "confidence": 0.997 + }, + { + "name": "left_ear", + "x": 0.287, + "y": 0.2718, + "confidence": 0.993 + }, + { + "name": "right_ear", + "x": 0.3058, + "y": 0.2306, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.2844, + "y": 0.243, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.2876, + "y": 0.2379, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.3478, + "y": 0.3598, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.3939, + "y": 0.2448, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4033, + "y": 0.3819, + "confidence": 0.63 + }, + { + "name": "right_elbow", + "x": 0.4007, + "y": 0.2464, + "confidence": 0.874 + }, + { + "name": "left_wrist", + "x": 0.4257, + "y": 0.3707, + "confidence": 0.486 + }, + { + "name": "right_wrist", + "x": 0.4161, + "y": 0.1659, + "confidence": 0.95 + }, + { + "name": "left_pinky", + "x": 0.4252, + "y": 0.37, + "confidence": 0.42 + }, + { + "name": "right_pinky", + "x": 0.423, + "y": 0.1428, + "confidence": 0.924 + }, + { + "name": "left_index", + "x": 0.4247, + "y": 0.3675, + "confidence": 0.413 + }, + { + "name": "right_index", + "x": 0.4284, + "y": 0.1406, + "confidence": 0.922 + }, + { + "name": "left_thumb", + "x": 0.4241, + "y": 0.3666, + "confidence": 0.408 + }, + { + "name": "right_thumb", + "x": 0.4244, + "y": 0.1493, + "confidence": 0.899 + }, + { + "name": "left_hip", + "x": 0.2876, + "y": 0.3235, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3125, + "y": 0.2546, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1769, + "y": 0.2982, + "confidence": 0.802 + }, + { + "name": "right_knee", + "x": 0.2444, + "y": 0.1485, + "confidence": 0.889 + }, + { + "name": "left_ankle", + "x": 0.069, + "y": 0.2522, + "confidence": 0.767 + }, + { + "name": "right_ankle", + "x": 0.151, + "y": 0.0741, + "confidence": 0.81 + }, + { + "name": "left_heel", + "x": 0.0523, + "y": 0.2349, + "confidence": 0.716 + }, + { + "name": "right_heel", + "x": 0.1317, + "y": 0.0766, + "confidence": 0.726 + }, + { + "name": "left_foot_index", + "x": 0.033, + "y": 0.2707, + "confidence": 0.753 + }, + { + "name": "right_foot_index", + "x": 0.1359, + "y": 0.015, + "confidence": 0.768 + } + ] + } + ] + }, + { + "frame_index": 28, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.5488, + "acceleration": -17.2328, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0325, + "center_displacement": { + "x": 0.0227, + "y": 0.0233 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4231, + "y": 0.4167, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4312, + "y": 0.4201, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4307, + "y": 0.4201, + "confidence": 0.987 + }, + { + "name": "left_eye_outer", + "x": 0.4297, + "y": 0.4202, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.4358, + "y": 0.4165, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4378, + "y": 0.4149, + "confidence": 0.995 + }, + { + "name": "right_eye_outer", + "x": 0.4398, + "y": 0.4129, + "confidence": 0.997 + }, + { + "name": "left_ear", + "x": 0.4331, + "y": 0.4076, + "confidence": 0.992 + }, + { + "name": "right_ear", + "x": 0.447, + "y": 0.3953, + "confidence": 0.994 + }, + { + "name": "mouth_left", + "x": 0.4178, + "y": 0.4006, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.4225, + "y": 0.3998, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.4084, + "y": 0.3954, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4248, + "y": 0.3112, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4133, + "y": 0.4265, + "confidence": 0.57 + }, + { + "name": "right_elbow", + "x": 0.4025, + "y": 0.2538, + "confidence": 0.846 + }, + { + "name": "left_wrist", + "x": 0.4239, + "y": 0.4073, + "confidence": 0.438 + }, + { + "name": "right_wrist", + "x": 0.4161, + "y": 0.1683, + "confidence": 0.946 + }, + { + "name": "left_pinky", + "x": 0.424, + "y": 0.4034, + "confidence": 0.378 + }, + { + "name": "right_pinky", + "x": 0.4229, + "y": 0.1459, + "confidence": 0.92 + }, + { + "name": "left_index", + "x": 0.4226, + "y": 0.3989, + "confidence": 0.373 + }, + { + "name": "right_index", + "x": 0.4279, + "y": 0.1437, + "confidence": 0.918 + }, + { + "name": "left_thumb", + "x": 0.4224, + "y": 0.3991, + "confidence": 0.368 + }, + { + "name": "right_thumb", + "x": 0.4239, + "y": 0.1516, + "confidence": 0.894 + }, + { + "name": "left_hip", + "x": 0.2877, + "y": 0.3177, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3116, + "y": 0.2515, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1803, + "y": 0.2956, + "confidence": 0.815 + }, + { + "name": "right_knee", + "x": 0.2444, + "y": 0.1447, + "confidence": 0.877 + }, + { + "name": "left_ankle", + "x": 0.0725, + "y": 0.2497, + "confidence": 0.781 + }, + { + "name": "right_ankle", + "x": 0.1565, + "y": 0.0718, + "confidence": 0.803 + }, + { + "name": "left_heel", + "x": 0.0558, + "y": 0.2321, + "confidence": 0.722 + }, + { + "name": "right_heel", + "x": 0.1356, + "y": 0.0753, + "confidence": 0.71 + }, + { + "name": "left_foot_index", + "x": 0.0333, + "y": 0.2688, + "confidence": 0.765 + }, + { + "name": "right_foot_index", + "x": 0.1412, + "y": 0.0115, + "confidence": 0.762 + } + ] + } + ] + }, + { + "frame_index": 29, + "timestamp": 0.48333333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.8889, + "acceleration": -39.5941, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0144, + "center_displacement": { + "x": 0.0082, + "y": 0.0118 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4578, + "y": 0.4545, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4644, + "y": 0.4623, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4635, + "y": 0.4631, + "confidence": 0.989 + }, + { + "name": "left_eye_outer", + "x": 0.4621, + "y": 0.4638, + "confidence": 0.991 + }, + { + "name": "right_eye_inner", + "x": 0.4683, + "y": 0.4584, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4697, + "y": 0.457, + "confidence": 0.996 + }, + { + "name": "right_eye_outer", + "x": 0.4712, + "y": 0.4554, + "confidence": 0.997 + }, + { + "name": "left_ear", + "x": 0.4597, + "y": 0.4542, + "confidence": 0.993 + }, + { + "name": "right_ear", + "x": 0.4726, + "y": 0.4414, + "confidence": 0.995 + }, + { + "name": "mouth_left", + "x": 0.4488, + "y": 0.4404, + "confidence": 0.993 + }, + { + "name": "mouth_right", + "x": 0.4532, + "y": 0.4379, + "confidence": 0.996 + }, + { + "name": "left_shoulder", + "x": 0.4215, + "y": 0.4116, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4333, + "y": 0.3493, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4472, + "y": 0.4302, + "confidence": 0.536 + }, + { + "name": "right_elbow", + "x": 0.4033, + "y": 0.2669, + "confidence": 0.828 + }, + { + "name": "left_wrist", + "x": 0.4304, + "y": 0.4208, + "confidence": 0.404 + }, + { + "name": "right_wrist", + "x": 0.4177, + "y": 0.1705, + "confidence": 0.947 + }, + { + "name": "left_pinky", + "x": 0.4282, + "y": 0.4164, + "confidence": 0.348 + }, + { + "name": "right_pinky", + "x": 0.4238, + "y": 0.1469, + "confidence": 0.922 + }, + { + "name": "left_index", + "x": 0.4253, + "y": 0.412, + "confidence": 0.343 + }, + { + "name": "right_index", + "x": 0.4285, + "y": 0.1446, + "confidence": 0.921 + }, + { + "name": "left_thumb", + "x": 0.4253, + "y": 0.4128, + "confidence": 0.338 + }, + { + "name": "right_thumb", + "x": 0.4251, + "y": 0.1525, + "confidence": 0.898 + }, + { + "name": "left_hip", + "x": 0.2919, + "y": 0.3114, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3184, + "y": 0.2507, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1846, + "y": 0.2778, + "confidence": 0.83 + }, + { + "name": "right_knee", + "x": 0.2569, + "y": 0.1394, + "confidence": 0.876 + }, + { + "name": "left_ankle", + "x": 0.073, + "y": 0.2181, + "confidence": 0.8 + }, + { + "name": "right_ankle", + "x": 0.1662, + "y": 0.0672, + "confidence": 0.812 + }, + { + "name": "left_heel", + "x": 0.0603, + "y": 0.1998, + "confidence": 0.733 + }, + { + "name": "right_heel", + "x": 0.1454, + "y": 0.0723, + "confidence": 0.711 + }, + { + "name": "left_foot_index", + "x": 0.0421, + "y": 0.2253, + "confidence": 0.783 + }, + { + "name": "right_foot_index", + "x": 0.1572, + "y": 0.0014, + "confidence": 0.771 + } + ] + } + ] + }, + { + "frame_index": 30, + "timestamp": 0.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.478, + "acceleration": -24.6554, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0043, + "center_displacement": { + "x": -0.0007, + "y": 0.0042 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4701, + "y": 0.4579, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4679, + "y": 0.4669, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4672, + "y": 0.4679, + "confidence": 0.989 + }, + { + "name": "left_eye_outer", + "x": 0.4663, + "y": 0.4687, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4693, + "y": 0.4675, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4681, + "y": 0.4678, + "confidence": 0.996 + }, + { + "name": "right_eye_outer", + "x": 0.4677, + "y": 0.4645, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.4597, + "y": 0.4649, + "confidence": 0.993 + }, + { + "name": "right_ear", + "x": 0.4702, + "y": 0.4554, + "confidence": 0.995 + }, + { + "name": "mouth_left", + "x": 0.4575, + "y": 0.4479, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.4595, + "y": 0.4479, + "confidence": 0.997 + }, + { + "name": "left_shoulder", + "x": 0.4166, + "y": 0.4236, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4299, + "y": 0.3593, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4517, + "y": 0.444, + "confidence": 0.52 + }, + { + "name": "right_elbow", + "x": 0.4023, + "y": 0.2695, + "confidence": 0.804 + }, + { + "name": "left_wrist", + "x": 0.4205, + "y": 0.4245, + "confidence": 0.374 + }, + { + "name": "right_wrist", + "x": 0.4182, + "y": 0.1713, + "confidence": 0.945 + }, + { + "name": "left_pinky", + "x": 0.4097, + "y": 0.4171, + "confidence": 0.321 + }, + { + "name": "right_pinky", + "x": 0.4237, + "y": 0.1465, + "confidence": 0.92 + }, + { + "name": "left_index", + "x": 0.4031, + "y": 0.4173, + "confidence": 0.315 + }, + { + "name": "right_index", + "x": 0.4284, + "y": 0.1441, + "confidence": 0.92 + }, + { + "name": "left_thumb", + "x": 0.4057, + "y": 0.4172, + "confidence": 0.311 + }, + { + "name": "right_thumb", + "x": 0.4254, + "y": 0.152, + "confidence": 0.897 + }, + { + "name": "left_hip", + "x": 0.295, + "y": 0.3082, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3208, + "y": 0.2488, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1867, + "y": 0.2776, + "confidence": 0.845 + }, + { + "name": "right_knee", + "x": 0.2614, + "y": 0.1369, + "confidence": 0.869 + }, + { + "name": "left_ankle", + "x": 0.0747, + "y": 0.2185, + "confidence": 0.816 + }, + { + "name": "right_ankle", + "x": 0.1675, + "y": 0.0676, + "confidence": 0.813 + }, + { + "name": "left_heel", + "x": 0.0627, + "y": 0.1995, + "confidence": 0.74 + }, + { + "name": "right_heel", + "x": 0.1457, + "y": 0.071, + "confidence": 0.705 + }, + { + "name": "left_foot_index", + "x": 0.0448, + "y": 0.2237, + "confidence": 0.797 + }, + { + "name": "right_foot_index", + "x": 0.1586, + "y": -0.0053, + "confidence": 0.769 + } + ] + } + ] + }, + { + "frame_index": 31, + "timestamp": 0.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3495, + "acceleration": -7.7125, + "fluidity": 0, + "expansion": 0.278, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0006, + "y": 0.0048 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4733, + "y": 0.4615, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.472, + "y": 0.4732, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4713, + "y": 0.4739, + "confidence": 0.99 + }, + { + "name": "left_eye_outer", + "x": 0.4687, + "y": 0.4727, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4714, + "y": 0.4728, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4701, + "y": 0.473, + "confidence": 0.997 + }, + { + "name": "right_eye_outer", + "x": 0.469, + "y": 0.4727, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.461, + "y": 0.4749, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.4718, + "y": 0.468, + "confidence": 0.996 + }, + { + "name": "mouth_left", + "x": 0.4627, + "y": 0.4526, + "confidence": 0.994 + }, + { + "name": "mouth_right", + "x": 0.4623, + "y": 0.4508, + "confidence": 0.997 + }, + { + "name": "left_shoulder", + "x": 0.4146, + "y": 0.4359, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4305, + "y": 0.3649, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4517, + "y": 0.4602, + "confidence": 0.552 + }, + { + "name": "right_elbow", + "x": 0.4041, + "y": 0.2741, + "confidence": 0.802 + }, + { + "name": "left_wrist", + "x": 0.4194, + "y": 0.4316, + "confidence": 0.388 + }, + { + "name": "right_wrist", + "x": 0.4185, + "y": 0.1723, + "confidence": 0.946 + }, + { + "name": "left_pinky", + "x": 0.4, + "y": 0.4209, + "confidence": 0.326 + }, + { + "name": "right_pinky", + "x": 0.4236, + "y": 0.1482, + "confidence": 0.922 + }, + { + "name": "left_index", + "x": 0.4018, + "y": 0.4205, + "confidence": 0.319 + }, + { + "name": "right_index", + "x": 0.4282, + "y": 0.1461, + "confidence": 0.922 + }, + { + "name": "left_thumb", + "x": 0.406, + "y": 0.4277, + "confidence": 0.313 + }, + { + "name": "right_thumb", + "x": 0.4252, + "y": 0.1539, + "confidence": 0.901 + }, + { + "name": "left_hip", + "x": 0.2965, + "y": 0.3096, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3233, + "y": 0.2485, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1868, + "y": 0.2775, + "confidence": 0.859 + }, + { + "name": "right_knee", + "x": 0.2621, + "y": 0.1383, + "confidence": 0.876 + }, + { + "name": "left_ankle", + "x": 0.076, + "y": 0.2174, + "confidence": 0.833 + }, + { + "name": "right_ankle", + "x": 0.167, + "y": 0.0672, + "confidence": 0.824 + }, + { + "name": "left_heel", + "x": 0.0634, + "y": 0.198, + "confidence": 0.755 + }, + { + "name": "right_heel", + "x": 0.1463, + "y": 0.0691, + "confidence": 0.712 + }, + { + "name": "left_foot_index", + "x": 0.0456, + "y": 0.2212, + "confidence": 0.815 + }, + { + "name": "right_foot_index", + "x": 0.1559, + "y": -0.0022, + "confidence": 0.782 + } + ] + } + ] + }, + { + "frame_index": 32, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3213, + "acceleration": -1.6905, + "fluidity": 0, + "expansion": 0.275, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0047, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4707, + "y": 0.4625, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4689, + "y": 0.4746, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4673, + "y": 0.4765, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.466, + "y": 0.4768, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4691, + "y": 0.4726, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4682, + "y": 0.4718, + "confidence": 0.997 + }, + { + "name": "right_eye_outer", + "x": 0.4675, + "y": 0.4712, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.4577, + "y": 0.4763, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.4719, + "y": 0.4696, + "confidence": 0.996 + }, + { + "name": "mouth_left", + "x": 0.4603, + "y": 0.4529, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.462, + "y": 0.4487, + "confidence": 0.997 + }, + { + "name": "left_shoulder", + "x": 0.4155, + "y": 0.438, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4343, + "y": 0.3695, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4595, + "y": 0.4743, + "confidence": 0.558 + }, + { + "name": "right_elbow", + "x": 0.4049, + "y": 0.2762, + "confidence": 0.794 + }, + { + "name": "left_wrist", + "x": 0.4216, + "y": 0.4465, + "confidence": 0.364 + }, + { + "name": "right_wrist", + "x": 0.4202, + "y": 0.174, + "confidence": 0.947 + }, + { + "name": "left_pinky", + "x": 0.411, + "y": 0.4416, + "confidence": 0.302 + }, + { + "name": "right_pinky", + "x": 0.425, + "y": 0.1493, + "confidence": 0.923 + }, + { + "name": "left_index", + "x": 0.4061, + "y": 0.4411, + "confidence": 0.296 + }, + { + "name": "right_index", + "x": 0.4289, + "y": 0.1474, + "confidence": 0.924 + }, + { + "name": "left_thumb", + "x": 0.4091, + "y": 0.4437, + "confidence": 0.29 + }, + { + "name": "right_thumb", + "x": 0.4262, + "y": 0.1553, + "confidence": 0.903 + }, + { + "name": "left_hip", + "x": 0.3026, + "y": 0.3042, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3313, + "y": 0.2459, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.1916, + "y": 0.2596, + "confidence": 0.872 + }, + { + "name": "right_knee", + "x": 0.2728, + "y": 0.1339, + "confidence": 0.876 + }, + { + "name": "left_ankle", + "x": 0.0887, + "y": 0.1881, + "confidence": 0.848 + }, + { + "name": "right_ankle", + "x": 0.178, + "y": 0.063, + "confidence": 0.833 + }, + { + "name": "left_heel", + "x": 0.0781, + "y": 0.1658, + "confidence": 0.767 + }, + { + "name": "right_heel", + "x": 0.1589, + "y": 0.0654, + "confidence": 0.716 + }, + { + "name": "left_foot_index", + "x": 0.048, + "y": 0.1836, + "confidence": 0.83 + }, + { + "name": "right_foot_index", + "x": 0.1693, + "y": -0.0067, + "confidence": 0.793 + } + ] + } + ] + }, + { + "frame_index": 33, + "timestamp": 0.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3059, + "acceleration": -0.9273, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0027, + "y": 0.0048 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4757, + "y": 0.4725, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4758, + "y": 0.4846, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4755, + "y": 0.4856, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4754, + "y": 0.4862, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4772, + "y": 0.4804, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4771, + "y": 0.4804, + "confidence": 0.997 + }, + { + "name": "right_eye_outer", + "x": 0.4772, + "y": 0.4804, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.4653, + "y": 0.4836, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4733, + "y": 0.4777, + "confidence": 0.996 + }, + { + "name": "mouth_left", + "x": 0.4662, + "y": 0.4639, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4653, + "y": 0.4565, + "confidence": 0.997 + }, + { + "name": "left_shoulder", + "x": 0.4217, + "y": 0.4459, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4359, + "y": 0.3801, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4238, + "y": 0.4436, + "confidence": 0.56 + }, + { + "name": "right_elbow", + "x": 0.4042, + "y": 0.2809, + "confidence": 0.791 + }, + { + "name": "left_wrist", + "x": 0.4205, + "y": 0.4313, + "confidence": 0.351 + }, + { + "name": "right_wrist", + "x": 0.4202, + "y": 0.1777, + "confidence": 0.951 + }, + { + "name": "left_pinky", + "x": 0.4133, + "y": 0.4293, + "confidence": 0.291 + }, + { + "name": "right_pinky", + "x": 0.4251, + "y": 0.1496, + "confidence": 0.928 + }, + { + "name": "left_index", + "x": 0.41, + "y": 0.4324, + "confidence": 0.284 + }, + { + "name": "right_index", + "x": 0.4289, + "y": 0.1477, + "confidence": 0.929 + }, + { + "name": "left_thumb", + "x": 0.411, + "y": 0.4333, + "confidence": 0.277 + }, + { + "name": "right_thumb", + "x": 0.4263, + "y": 0.1559, + "confidence": 0.91 + }, + { + "name": "left_hip", + "x": 0.3044, + "y": 0.3042, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3324, + "y": 0.2468, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.195, + "y": 0.2604, + "confidence": 0.884 + }, + { + "name": "right_knee", + "x": 0.2753, + "y": 0.1371, + "confidence": 0.887 + }, + { + "name": "left_ankle", + "x": 0.0939, + "y": 0.1877, + "confidence": 0.863 + }, + { + "name": "right_ankle", + "x": 0.181, + "y": 0.0619, + "confidence": 0.847 + }, + { + "name": "left_heel", + "x": 0.0818, + "y": 0.1668, + "confidence": 0.781 + }, + { + "name": "right_heel", + "x": 0.1622, + "y": 0.0621, + "confidence": 0.733 + }, + { + "name": "left_foot_index", + "x": 0.0529, + "y": 0.1798, + "confidence": 0.845 + }, + { + "name": "right_foot_index", + "x": 0.1726, + "y": -0.0083, + "confidence": 0.808 + } + ] + } + ] + }, + { + "frame_index": 34, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2312, + "acceleration": -4.4776, + "fluidity": 0, + "expansion": 0.282, + "total_displacement": 0.0044, + "center_displacement": { + "x": 0.0038, + "y": -0.0022 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4768, + "y": 0.4706, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4741, + "y": 0.4844, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4727, + "y": 0.4854, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.471, + "y": 0.4862, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4754, + "y": 0.481, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4754, + "y": 0.4815, + "confidence": 0.997 + }, + { + "name": "right_eye_outer", + "x": 0.4749, + "y": 0.4812, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.4613, + "y": 0.4864, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4734, + "y": 0.4823, + "confidence": 0.997 + }, + { + "name": "mouth_left", + "x": 0.4661, + "y": 0.4597, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4679, + "y": 0.4557, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4184, + "y": 0.4472, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4387, + "y": 0.3772, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4622, + "y": 0.4779, + "confidence": 0.575 + }, + { + "name": "right_elbow", + "x": 0.4068, + "y": 0.281, + "confidence": 0.792 + }, + { + "name": "left_wrist", + "x": 0.4177, + "y": 0.4816, + "confidence": 0.336 + }, + { + "name": "right_wrist", + "x": 0.4217, + "y": 0.1822, + "confidence": 0.952 + }, + { + "name": "left_pinky", + "x": 0.4091, + "y": 0.4859, + "confidence": 0.275 + }, + { + "name": "right_pinky", + "x": 0.4272, + "y": 0.1523, + "confidence": 0.929 + }, + { + "name": "left_index", + "x": 0.4003, + "y": 0.4876, + "confidence": 0.268 + }, + { + "name": "right_index", + "x": 0.4306, + "y": 0.1502, + "confidence": 0.931 + }, + { + "name": "left_thumb", + "x": 0.402, + "y": 0.486, + "confidence": 0.261 + }, + { + "name": "right_thumb", + "x": 0.4282, + "y": 0.1593, + "confidence": 0.912 + }, + { + "name": "left_hip", + "x": 0.3117, + "y": 0.2997, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3408, + "y": 0.2439, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2054, + "y": 0.2423, + "confidence": 0.894 + }, + { + "name": "right_knee", + "x": 0.2844, + "y": 0.1312, + "confidence": 0.887 + }, + { + "name": "left_ankle", + "x": 0.1081, + "y": 0.1624, + "confidence": 0.874 + }, + { + "name": "right_ankle", + "x": 0.1926, + "y": 0.0571, + "confidence": 0.853 + }, + { + "name": "left_heel", + "x": 0.0991, + "y": 0.1419, + "confidence": 0.789 + }, + { + "name": "right_heel", + "x": 0.1738, + "y": 0.0555, + "confidence": 0.735 + }, + { + "name": "left_foot_index", + "x": 0.0674, + "y": 0.1438, + "confidence": 0.857 + }, + { + "name": "right_foot_index", + "x": 0.1881, + "y": -0.0074, + "confidence": 0.816 + } + ] + } + ] + }, + { + "frame_index": 35, + "timestamp": 0.5833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1219, + "acceleration": -6.5586, + "fluidity": 0, + "expansion": 0.282, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4757, + "y": 0.4685, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4747, + "y": 0.4834, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4733, + "y": 0.4847, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4712, + "y": 0.4866, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4755, + "y": 0.4802, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4749, + "y": 0.4798, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4743, + "y": 0.4793, + "confidence": 0.998 + }, + { + "name": "left_ear", + "x": 0.4581, + "y": 0.4846, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4725, + "y": 0.4807, + "confidence": 0.997 + }, + { + "name": "mouth_left", + "x": 0.4657, + "y": 0.4581, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4674, + "y": 0.4542, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4177, + "y": 0.4471, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4387, + "y": 0.3735, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4665, + "y": 0.4866, + "confidence": 0.591 + }, + { + "name": "right_elbow", + "x": 0.407, + "y": 0.281, + "confidence": 0.791 + }, + { + "name": "left_wrist", + "x": 0.4235, + "y": 0.476, + "confidence": 0.328 + }, + { + "name": "right_wrist", + "x": 0.4223, + "y": 0.1845, + "confidence": 0.954 + }, + { + "name": "left_pinky", + "x": 0.418, + "y": 0.4781, + "confidence": 0.264 + }, + { + "name": "right_pinky", + "x": 0.4282, + "y": 0.1544, + "confidence": 0.932 + }, + { + "name": "left_index", + "x": 0.4096, + "y": 0.4769, + "confidence": 0.256 + }, + { + "name": "right_index", + "x": 0.4314, + "y": 0.1524, + "confidence": 0.934 + }, + { + "name": "left_thumb", + "x": 0.4109, + "y": 0.4761, + "confidence": 0.249 + }, + { + "name": "right_thumb", + "x": 0.4289, + "y": 0.1612, + "confidence": 0.916 + }, + { + "name": "left_hip", + "x": 0.3129, + "y": 0.297, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3403, + "y": 0.2422, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2049, + "y": 0.2402, + "confidence": 0.904 + }, + { + "name": "right_knee", + "x": 0.2844, + "y": 0.1282, + "confidence": 0.893 + }, + { + "name": "left_ankle", + "x": 0.1112, + "y": 0.1621, + "confidence": 0.886 + }, + { + "name": "right_ankle", + "x": 0.1924, + "y": 0.0553, + "confidence": 0.864 + }, + { + "name": "left_heel", + "x": 0.1023, + "y": 0.1453, + "confidence": 0.797 + }, + { + "name": "right_heel", + "x": 0.1732, + "y": 0.0551, + "confidence": 0.745 + }, + { + "name": "left_foot_index", + "x": 0.0722, + "y": 0.1404, + "confidence": 0.869 + }, + { + "name": "right_foot_index", + "x": 0.1879, + "y": -0.0117, + "confidence": 0.829 + } + ] + } + ] + }, + { + "frame_index": 36, + "timestamp": 0.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1297, + "acceleration": 0.4675, + "fluidity": 0, + "expansion": 0.28, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4725, + "y": 0.4667, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4723, + "y": 0.4812, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4705, + "y": 0.4831, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.468, + "y": 0.4836, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4734, + "y": 0.4778, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4729, + "y": 0.4768, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4726, + "y": 0.476, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4549, + "y": 0.4828, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.4716, + "y": 0.4763, + "confidence": 0.997 + }, + { + "name": "mouth_left", + "x": 0.4628, + "y": 0.457, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4649, + "y": 0.4529, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4177, + "y": 0.4471, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4378, + "y": 0.3722, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4704, + "y": 0.4901, + "confidence": 0.61 + }, + { + "name": "right_elbow", + "x": 0.4072, + "y": 0.2805, + "confidence": 0.796 + }, + { + "name": "left_wrist", + "x": 0.4224, + "y": 0.471, + "confidence": 0.318 + }, + { + "name": "right_wrist", + "x": 0.4224, + "y": 0.1845, + "confidence": 0.957 + }, + { + "name": "left_pinky", + "x": 0.4061, + "y": 0.4691, + "confidence": 0.251 + }, + { + "name": "right_pinky", + "x": 0.4284, + "y": 0.1548, + "confidence": 0.935 + }, + { + "name": "left_index", + "x": 0.3952, + "y": 0.4681, + "confidence": 0.244 + }, + { + "name": "right_index", + "x": 0.4318, + "y": 0.1531, + "confidence": 0.937 + }, + { + "name": "left_thumb", + "x": 0.398, + "y": 0.469, + "confidence": 0.236 + }, + { + "name": "right_thumb", + "x": 0.4293, + "y": 0.1615, + "confidence": 0.92 + }, + { + "name": "left_hip", + "x": 0.3136, + "y": 0.2976, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3406, + "y": 0.2421, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.207, + "y": 0.2415, + "confidence": 0.913 + }, + { + "name": "right_knee", + "x": 0.2869, + "y": 0.1289, + "confidence": 0.898 + }, + { + "name": "left_ankle", + "x": 0.1123, + "y": 0.162, + "confidence": 0.896 + }, + { + "name": "right_ankle", + "x": 0.1938, + "y": 0.0568, + "confidence": 0.873 + }, + { + "name": "left_heel", + "x": 0.1017, + "y": 0.1432, + "confidence": 0.806 + }, + { + "name": "right_heel", + "x": 0.1741, + "y": 0.0564, + "confidence": 0.753 + }, + { + "name": "left_foot_index", + "x": 0.0742, + "y": 0.1422, + "confidence": 0.88 + }, + { + "name": "right_foot_index", + "x": 0.1878, + "y": -0.0066, + "confidence": 0.84 + } + ] + } + ] + }, + { + "frame_index": 37, + "timestamp": 0.6166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1374, + "acceleration": 0.46, + "fluidity": 0, + "expansion": 0.283, + "total_displacement": 0.0043, + "center_displacement": { + "x": 0.0042, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4785, + "y": 0.4724, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4767, + "y": 0.4873, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4737, + "y": 0.4887, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4718, + "y": 0.4895, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4772, + "y": 0.4848, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4764, + "y": 0.4842, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4757, + "y": 0.484, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4623, + "y": 0.4885, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.4743, + "y": 0.4848, + "confidence": 0.997 + }, + { + "name": "mouth_left", + "x": 0.4685, + "y": 0.4623, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4702, + "y": 0.4585, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4197, + "y": 0.4459, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4406, + "y": 0.3765, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4662, + "y": 0.4894, + "confidence": 0.611 + }, + { + "name": "right_elbow", + "x": 0.4084, + "y": 0.2809, + "confidence": 0.788 + }, + { + "name": "left_wrist", + "x": 0.425, + "y": 0.4801, + "confidence": 0.303 + }, + { + "name": "right_wrist", + "x": 0.4242, + "y": 0.1892, + "confidence": 0.956 + }, + { + "name": "left_pinky", + "x": 0.4167, + "y": 0.4836, + "confidence": 0.237 + }, + { + "name": "right_pinky", + "x": 0.4312, + "y": 0.1591, + "confidence": 0.935 + }, + { + "name": "left_index", + "x": 0.4081, + "y": 0.4828, + "confidence": 0.23 + }, + { + "name": "right_index", + "x": 0.4344, + "y": 0.1577, + "confidence": 0.937 + }, + { + "name": "left_thumb", + "x": 0.4097, + "y": 0.482, + "confidence": 0.223 + }, + { + "name": "right_thumb", + "x": 0.4315, + "y": 0.1663, + "confidence": 0.92 + }, + { + "name": "left_hip", + "x": 0.3197, + "y": 0.2922, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3464, + "y": 0.2402, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2202, + "y": 0.2268, + "confidence": 0.92 + }, + { + "name": "right_knee", + "x": 0.2964, + "y": 0.1266, + "confidence": 0.9 + }, + { + "name": "left_ankle", + "x": 0.1277, + "y": 0.1436, + "confidence": 0.905 + }, + { + "name": "right_ankle", + "x": 0.2047, + "y": 0.0508, + "confidence": 0.879 + }, + { + "name": "left_heel", + "x": 0.1198, + "y": 0.1269, + "confidence": 0.811 + }, + { + "name": "right_heel", + "x": 0.1849, + "y": 0.0483, + "confidence": 0.758 + }, + { + "name": "left_foot_index", + "x": 0.0899, + "y": 0.1145, + "confidence": 0.889 + }, + { + "name": "right_foot_index", + "x": 0.2038, + "y": -0.0134, + "confidence": 0.847 + } + ] + } + ] + }, + { + "frame_index": 38, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1295, + "acceleration": -0.4735, + "fluidity": 0, + "expansion": 0.285, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4793, + "y": 0.472, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4764, + "y": 0.4862, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4738, + "y": 0.4883, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.472, + "y": 0.4895, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.477, + "y": 0.4832, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4762, + "y": 0.4825, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4755, + "y": 0.4821, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4592, + "y": 0.488, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4738, + "y": 0.4844, + "confidence": 0.997 + }, + { + "name": "mouth_left", + "x": 0.4677, + "y": 0.4614, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4697, + "y": 0.4573, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4195, + "y": 0.4485, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4418, + "y": 0.3767, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4649, + "y": 0.4899, + "confidence": 0.627 + }, + { + "name": "right_elbow", + "x": 0.4091, + "y": 0.2812, + "confidence": 0.787 + }, + { + "name": "left_wrist", + "x": 0.4332, + "y": 0.4933, + "confidence": 0.309 + }, + { + "name": "right_wrist", + "x": 0.4247, + "y": 0.1897, + "confidence": 0.958 + }, + { + "name": "left_pinky", + "x": 0.4296, + "y": 0.4985, + "confidence": 0.238 + }, + { + "name": "right_pinky", + "x": 0.4321, + "y": 0.16, + "confidence": 0.937 + }, + { + "name": "left_index", + "x": 0.4228, + "y": 0.4966, + "confidence": 0.23 + }, + { + "name": "right_index", + "x": 0.4356, + "y": 0.1589, + "confidence": 0.94 + }, + { + "name": "left_thumb", + "x": 0.4234, + "y": 0.4947, + "confidence": 0.222 + }, + { + "name": "right_thumb", + "x": 0.4325, + "y": 0.1676, + "confidence": 0.923 + }, + { + "name": "left_hip", + "x": 0.3185, + "y": 0.2903, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3461, + "y": 0.2378, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2209, + "y": 0.2242, + "confidence": 0.928 + }, + { + "name": "right_knee", + "x": 0.2943, + "y": 0.1236, + "confidence": 0.905 + }, + { + "name": "left_ankle", + "x": 0.1281, + "y": 0.1386, + "confidence": 0.913 + }, + { + "name": "right_ankle", + "x": 0.206, + "y": 0.049, + "confidence": 0.886 + }, + { + "name": "left_heel", + "x": 0.1202, + "y": 0.1198, + "confidence": 0.818 + }, + { + "name": "right_heel", + "x": 0.187, + "y": 0.0476, + "confidence": 0.762 + }, + { + "name": "left_foot_index", + "x": 0.0905, + "y": 0.1126, + "confidence": 0.898 + }, + { + "name": "right_foot_index", + "x": 0.2035, + "y": -0.0116, + "confidence": 0.856 + } + ] + } + ] + }, + { + "frame_index": 39, + "timestamp": 0.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1518, + "acceleration": 1.3418, + "fluidity": 0, + "expansion": 0.283, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0033, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4789, + "y": 0.471, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4763, + "y": 0.4847, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4745, + "y": 0.4861, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4729, + "y": 0.487, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4768, + "y": 0.4825, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4758, + "y": 0.4819, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4749, + "y": 0.4816, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4585, + "y": 0.4853, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4716, + "y": 0.4793, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4686, + "y": 0.4601, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4698, + "y": 0.4571, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4213, + "y": 0.4474, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4436, + "y": 0.3792, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4694, + "y": 0.4903, + "confidence": 0.65 + }, + { + "name": "right_elbow", + "x": 0.4109, + "y": 0.2809, + "confidence": 0.779 + }, + { + "name": "left_wrist", + "x": 0.4237, + "y": 0.4948, + "confidence": 0.326 + }, + { + "name": "right_wrist", + "x": 0.4274, + "y": 0.1919, + "confidence": 0.957 + }, + { + "name": "left_pinky", + "x": 0.4172, + "y": 0.5007, + "confidence": 0.249 + }, + { + "name": "right_pinky", + "x": 0.4353, + "y": 0.1636, + "confidence": 0.936 + }, + { + "name": "left_index", + "x": 0.4088, + "y": 0.5011, + "confidence": 0.241 + }, + { + "name": "right_index", + "x": 0.4395, + "y": 0.1625, + "confidence": 0.939 + }, + { + "name": "left_thumb", + "x": 0.4103, + "y": 0.4986, + "confidence": 0.232 + }, + { + "name": "right_thumb", + "x": 0.4361, + "y": 0.1712, + "confidence": 0.923 + }, + { + "name": "left_hip", + "x": 0.323, + "y": 0.2829, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3512, + "y": 0.2366, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2287, + "y": 0.2119, + "confidence": 0.933 + }, + { + "name": "right_knee", + "x": 0.307, + "y": 0.1215, + "confidence": 0.901 + }, + { + "name": "left_ankle", + "x": 0.1439, + "y": 0.1206, + "confidence": 0.919 + }, + { + "name": "right_ankle", + "x": 0.2164, + "y": 0.0437, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.1385, + "y": 0.1064, + "confidence": 0.818 + }, + { + "name": "right_heel", + "x": 0.1982, + "y": 0.0385, + "confidence": 0.763 + }, + { + "name": "left_foot_index", + "x": 0.1084, + "y": 0.0858, + "confidence": 0.903 + }, + { + "name": "right_foot_index", + "x": 0.2146, + "y": -0.021, + "confidence": 0.857 + } + ] + } + ] + }, + { + "frame_index": 40, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1741, + "acceleration": 1.3349, + "fluidity": 0, + "expansion": 0.286, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0017, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4773, + "y": 0.4692, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4756, + "y": 0.4826, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4741, + "y": 0.484, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4718, + "y": 0.4853, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4763, + "y": 0.4801, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4755, + "y": 0.4795, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4749, + "y": 0.4792, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4576, + "y": 0.4832, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4715, + "y": 0.4783, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4673, + "y": 0.4586, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4684, + "y": 0.4555, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4228, + "y": 0.4468, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4438, + "y": 0.3797, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4748, + "y": 0.4907, + "confidence": 0.665 + }, + { + "name": "right_elbow", + "x": 0.412, + "y": 0.2813, + "confidence": 0.762 + }, + { + "name": "left_wrist", + "x": 0.42, + "y": 0.4904, + "confidence": 0.332 + }, + { + "name": "right_wrist", + "x": 0.4286, + "y": 0.1933, + "confidence": 0.954 + }, + { + "name": "left_pinky", + "x": 0.4112, + "y": 0.4956, + "confidence": 0.252 + }, + { + "name": "right_pinky", + "x": 0.4363, + "y": 0.1657, + "confidence": 0.932 + }, + { + "name": "left_index", + "x": 0.402, + "y": 0.4951, + "confidence": 0.245 + }, + { + "name": "right_index", + "x": 0.441, + "y": 0.1643, + "confidence": 0.936 + }, + { + "name": "left_thumb", + "x": 0.4045, + "y": 0.4927, + "confidence": 0.235 + }, + { + "name": "right_thumb", + "x": 0.4373, + "y": 0.1734, + "confidence": 0.919 + }, + { + "name": "left_hip", + "x": 0.3259, + "y": 0.2832, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3533, + "y": 0.2356, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2336, + "y": 0.2118, + "confidence": 0.937 + }, + { + "name": "right_knee", + "x": 0.3079, + "y": 0.1207, + "confidence": 0.883 + }, + { + "name": "left_ankle", + "x": 0.1449, + "y": 0.1168, + "confidence": 0.923 + }, + { + "name": "right_ankle", + "x": 0.2168, + "y": 0.041, + "confidence": 0.878 + }, + { + "name": "left_heel", + "x": 0.1362, + "y": 0.1018, + "confidence": 0.813 + }, + { + "name": "right_heel", + "x": 0.198, + "y": 0.0352, + "confidence": 0.752 + }, + { + "name": "left_foot_index", + "x": 0.1119, + "y": 0.0827, + "confidence": 0.906 + }, + { + "name": "right_foot_index", + "x": 0.2223, + "y": -0.027, + "confidence": 0.849 + } + ] + } + ] + }, + { + "frame_index": 41, + "timestamp": 0.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1714, + "acceleration": -0.1617, + "fluidity": 0, + "expansion": 0.289, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0043, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4816, + "y": 0.4749, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4789, + "y": 0.4876, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4773, + "y": 0.4885, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4747, + "y": 0.489, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4798, + "y": 0.4857, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4788, + "y": 0.4852, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4779, + "y": 0.4851, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4598, + "y": 0.4873, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4699, + "y": 0.4814, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4719, + "y": 0.4629, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.473, + "y": 0.4606, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.427, + "y": 0.4473, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4425, + "y": 0.3874, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4756, + "y": 0.4942, + "confidence": 0.679 + }, + { + "name": "right_elbow", + "x": 0.4146, + "y": 0.2821, + "confidence": 0.745 + }, + { + "name": "left_wrist", + "x": 0.4252, + "y": 0.5192, + "confidence": 0.348 + }, + { + "name": "right_wrist", + "x": 0.4328, + "y": 0.1951, + "confidence": 0.954 + }, + { + "name": "left_pinky", + "x": 0.4174, + "y": 0.5305, + "confidence": 0.268 + }, + { + "name": "right_pinky", + "x": 0.441, + "y": 0.1692, + "confidence": 0.934 + }, + { + "name": "left_index", + "x": 0.4105, + "y": 0.5298, + "confidence": 0.261 + }, + { + "name": "right_index", + "x": 0.4454, + "y": 0.168, + "confidence": 0.938 + }, + { + "name": "left_thumb", + "x": 0.4123, + "y": 0.5254, + "confidence": 0.248 + }, + { + "name": "right_thumb", + "x": 0.4414, + "y": 0.1767, + "confidence": 0.921 + }, + { + "name": "left_hip", + "x": 0.3361, + "y": 0.2792, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3572, + "y": 0.2373, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.243, + "y": 0.1993, + "confidence": 0.938 + }, + { + "name": "right_knee", + "x": 0.3189, + "y": 0.1215, + "confidence": 0.857 + }, + { + "name": "left_ankle", + "x": 0.1592, + "y": 0.1007, + "confidence": 0.927 + }, + { + "name": "right_ankle", + "x": 0.2301, + "y": 0.0376, + "confidence": 0.868 + }, + { + "name": "left_heel", + "x": 0.1542, + "y": 0.092, + "confidence": 0.81 + }, + { + "name": "right_heel", + "x": 0.2119, + "y": 0.0308, + "confidence": 0.742 + }, + { + "name": "left_foot_index", + "x": 0.133, + "y": 0.0577, + "confidence": 0.91 + }, + { + "name": "right_foot_index", + "x": 0.2274, + "y": -0.0264, + "confidence": 0.844 + } + ] + } + ] + }, + { + "frame_index": 42, + "timestamp": 0.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0994, + "acceleration": -4.318, + "fluidity": 0, + "expansion": 0.288, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0008, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4814, + "y": 0.4733, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4794, + "y": 0.4869, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4771, + "y": 0.4881, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4747, + "y": 0.4889, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4805, + "y": 0.4847, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4795, + "y": 0.484, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4785, + "y": 0.4838, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4595, + "y": 0.4873, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.469, + "y": 0.4801, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4716, + "y": 0.4617, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4731, + "y": 0.459, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4273, + "y": 0.4475, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4446, + "y": 0.3846, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4796, + "y": 0.4952, + "confidence": 0.695 + }, + { + "name": "right_elbow", + "x": 0.4166, + "y": 0.2818, + "confidence": 0.729 + }, + { + "name": "left_wrist", + "x": 0.4259, + "y": 0.5053, + "confidence": 0.36 + }, + { + "name": "right_wrist", + "x": 0.4345, + "y": 0.1959, + "confidence": 0.953 + }, + { + "name": "left_pinky", + "x": 0.4181, + "y": 0.5118, + "confidence": 0.276 + }, + { + "name": "right_pinky", + "x": 0.4423, + "y": 0.1705, + "confidence": 0.933 + }, + { + "name": "left_index", + "x": 0.411, + "y": 0.5108, + "confidence": 0.27 + }, + { + "name": "right_index", + "x": 0.4471, + "y": 0.1697, + "confidence": 0.937 + }, + { + "name": "left_thumb", + "x": 0.4128, + "y": 0.5081, + "confidence": 0.254 + }, + { + "name": "right_thumb", + "x": 0.4431, + "y": 0.1787, + "confidence": 0.921 + }, + { + "name": "left_hip", + "x": 0.333, + "y": 0.2794, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.361, + "y": 0.2362, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2435, + "y": 0.1994, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.3189, + "y": 0.117, + "confidence": 0.853 + }, + { + "name": "left_ankle", + "x": 0.1604, + "y": 0.1008, + "confidence": 0.93 + }, + { + "name": "right_ankle", + "x": 0.2304, + "y": 0.0341, + "confidence": 0.868 + }, + { + "name": "left_heel", + "x": 0.1542, + "y": 0.0908, + "confidence": 0.802 + }, + { + "name": "right_heel", + "x": 0.2128, + "y": 0.027, + "confidence": 0.739 + }, + { + "name": "left_foot_index", + "x": 0.1331, + "y": 0.0551, + "confidence": 0.912 + }, + { + "name": "right_foot_index", + "x": 0.2327, + "y": -0.0363, + "confidence": 0.844 + } + ] + } + ] + }, + { + "frame_index": 43, + "timestamp": 0.7166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1343, + "acceleration": 2.0923, + "fluidity": 0, + "expansion": 0.288, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0005, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4817, + "y": 0.4731, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4795, + "y": 0.4872, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4773, + "y": 0.4886, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4748, + "y": 0.4896, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4815, + "y": 0.4844, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4808, + "y": 0.4836, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.48, + "y": 0.4832, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4592, + "y": 0.4883, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4688, + "y": 0.4797, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4718, + "y": 0.4615, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4738, + "y": 0.4585, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.427, + "y": 0.4503, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4461, + "y": 0.3832, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.479, + "y": 0.4953, + "confidence": 0.705 + }, + { + "name": "right_elbow", + "x": 0.418, + "y": 0.2816, + "confidence": 0.717 + }, + { + "name": "left_wrist", + "x": 0.4303, + "y": 0.5045, + "confidence": 0.367 + }, + { + "name": "right_wrist", + "x": 0.4356, + "y": 0.1954, + "confidence": 0.953 + }, + { + "name": "left_pinky", + "x": 0.4229, + "y": 0.5108, + "confidence": 0.282 + }, + { + "name": "right_pinky", + "x": 0.4429, + "y": 0.1704, + "confidence": 0.933 + }, + { + "name": "left_index", + "x": 0.4163, + "y": 0.5088, + "confidence": 0.276 + }, + { + "name": "right_index", + "x": 0.4476, + "y": 0.1698, + "confidence": 0.938 + }, + { + "name": "left_thumb", + "x": 0.4181, + "y": 0.5063, + "confidence": 0.257 + }, + { + "name": "right_thumb", + "x": 0.4438, + "y": 0.1789, + "confidence": 0.922 + }, + { + "name": "left_hip", + "x": 0.333, + "y": 0.2814, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3617, + "y": 0.2361, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2455, + "y": 0.1998, + "confidence": 0.944 + }, + { + "name": "right_knee", + "x": 0.3175, + "y": 0.115, + "confidence": 0.849 + }, + { + "name": "left_ankle", + "x": 0.1612, + "y": 0.1008, + "confidence": 0.934 + }, + { + "name": "right_ankle", + "x": 0.2317, + "y": 0.0336, + "confidence": 0.867 + }, + { + "name": "left_heel", + "x": 0.1536, + "y": 0.0898, + "confidence": 0.798 + }, + { + "name": "right_heel", + "x": 0.2132, + "y": 0.0261, + "confidence": 0.736 + }, + { + "name": "left_foot_index", + "x": 0.134, + "y": 0.0548, + "confidence": 0.916 + }, + { + "name": "right_foot_index", + "x": 0.2345, + "y": -0.0353, + "confidence": 0.846 + } + ] + } + ] + }, + { + "frame_index": 44, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.148, + "acceleration": 0.8238, + "fluidity": 0, + "expansion": 0.289, + "total_displacement": 0.0041, + "center_displacement": { + "x": 0.0041, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4818, + "y": 0.4743, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4802, + "y": 0.4888, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4778, + "y": 0.4905, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4753, + "y": 0.4917, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4823, + "y": 0.4858, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4818, + "y": 0.4849, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4812, + "y": 0.4842, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4603, + "y": 0.4909, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4702, + "y": 0.481, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4723, + "y": 0.4628, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4748, + "y": 0.4587, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4299, + "y": 0.4531, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4462, + "y": 0.3853, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4889, + "y": 0.4996, + "confidence": 0.712 + }, + { + "name": "right_elbow", + "x": 0.4194, + "y": 0.2824, + "confidence": 0.695 + }, + { + "name": "left_wrist", + "x": 0.4311, + "y": 0.5104, + "confidence": 0.373 + }, + { + "name": "right_wrist", + "x": 0.4384, + "y": 0.1996, + "confidence": 0.951 + }, + { + "name": "left_pinky", + "x": 0.4228, + "y": 0.5169, + "confidence": 0.287 + }, + { + "name": "right_pinky", + "x": 0.4466, + "y": 0.1745, + "confidence": 0.932 + }, + { + "name": "left_index", + "x": 0.4157, + "y": 0.5137, + "confidence": 0.281 + }, + { + "name": "right_index", + "x": 0.4518, + "y": 0.1741, + "confidence": 0.937 + }, + { + "name": "left_thumb", + "x": 0.4175, + "y": 0.5108, + "confidence": 0.26 + }, + { + "name": "right_thumb", + "x": 0.4474, + "y": 0.1835, + "confidence": 0.92 + }, + { + "name": "left_hip", + "x": 0.3399, + "y": 0.2792, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3681, + "y": 0.2355, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.257, + "y": 0.1933, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.3282, + "y": 0.1148, + "confidence": 0.847 + }, + { + "name": "left_ankle", + "x": 0.1762, + "y": 0.09, + "confidence": 0.938 + }, + { + "name": "right_ankle", + "x": 0.2428, + "y": 0.0287, + "confidence": 0.867 + }, + { + "name": "left_heel", + "x": 0.1701, + "y": 0.0801, + "confidence": 0.8 + }, + { + "name": "right_heel", + "x": 0.2272, + "y": 0.0232, + "confidence": 0.733 + }, + { + "name": "left_foot_index", + "x": 0.1513, + "y": 0.0414, + "confidence": 0.92 + }, + { + "name": "right_foot_index", + "x": 0.2418, + "y": -0.0351, + "confidence": 0.847 + } + ] + } + ] + }, + { + "frame_index": 45, + "timestamp": 0.75, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1681, + "acceleration": 1.2046, + "fluidity": 0, + "expansion": 0.297, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4808, + "y": 0.4747, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4792, + "y": 0.4891, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4769, + "y": 0.4905, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4745, + "y": 0.4917, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4813, + "y": 0.486, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4808, + "y": 0.485, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4803, + "y": 0.4844, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4598, + "y": 0.4912, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4698, + "y": 0.4812, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4715, + "y": 0.4635, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4741, + "y": 0.4593, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4304, + "y": 0.4555, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4473, + "y": 0.3861, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4928, + "y": 0.5021, + "confidence": 0.715 + }, + { + "name": "right_elbow", + "x": 0.4216, + "y": 0.2824, + "confidence": 0.673 + }, + { + "name": "left_wrist", + "x": 0.4314, + "y": 0.5144, + "confidence": 0.372 + }, + { + "name": "right_wrist", + "x": 0.4401, + "y": 0.2008, + "confidence": 0.948 + }, + { + "name": "left_pinky", + "x": 0.4224, + "y": 0.5211, + "confidence": 0.288 + }, + { + "name": "right_pinky", + "x": 0.4479, + "y": 0.1763, + "confidence": 0.929 + }, + { + "name": "left_index", + "x": 0.4152, + "y": 0.5171, + "confidence": 0.283 + }, + { + "name": "right_index", + "x": 0.4527, + "y": 0.1761, + "confidence": 0.935 + }, + { + "name": "left_thumb", + "x": 0.4171, + "y": 0.5142, + "confidence": 0.261 + }, + { + "name": "right_thumb", + "x": 0.4485, + "y": 0.1854, + "confidence": 0.917 + }, + { + "name": "left_hip", + "x": 0.3399, + "y": 0.2787, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.37, + "y": 0.2352, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2567, + "y": 0.1922, + "confidence": 0.949 + }, + { + "name": "right_knee", + "x": 0.3275, + "y": 0.1115, + "confidence": 0.842 + }, + { + "name": "left_ankle", + "x": 0.1781, + "y": 0.0897, + "confidence": 0.941 + }, + { + "name": "right_ankle", + "x": 0.2437, + "y": 0.0255, + "confidence": 0.869 + }, + { + "name": "left_heel", + "x": 0.1715, + "y": 0.0796, + "confidence": 0.798 + }, + { + "name": "right_heel", + "x": 0.2263, + "y": 0.0193, + "confidence": 0.734 + }, + { + "name": "left_foot_index", + "x": 0.1545, + "y": 0.0387, + "confidence": 0.923 + }, + { + "name": "right_foot_index", + "x": 0.2458, + "y": -0.0456, + "confidence": 0.85 + } + ] + } + ] + }, + { + "frame_index": 46, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1917, + "acceleration": 1.4134, + "fluidity": 0, + "expansion": 0.306, + "total_displacement": 0.0049, + "center_displacement": { + "x": 0.0037, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4814, + "y": 0.4763, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4793, + "y": 0.4907, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.477, + "y": 0.4922, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.4747, + "y": 0.4936, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4814, + "y": 0.4873, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4808, + "y": 0.4866, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4803, + "y": 0.486, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4605, + "y": 0.4945, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.4696, + "y": 0.485, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4726, + "y": 0.467, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.475, + "y": 0.4624, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4332, + "y": 0.4613, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.447, + "y": 0.3954, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4958, + "y": 0.5071, + "confidence": 0.722 + }, + { + "name": "right_elbow", + "x": 0.4232, + "y": 0.2851, + "confidence": 0.647 + }, + { + "name": "left_wrist", + "x": 0.4527, + "y": 0.5526, + "confidence": 0.395 + }, + { + "name": "right_wrist", + "x": 0.444, + "y": 0.2048, + "confidence": 0.945 + }, + { + "name": "left_pinky", + "x": 0.4458, + "y": 0.5651, + "confidence": 0.314 + }, + { + "name": "right_pinky", + "x": 0.4526, + "y": 0.1806, + "confidence": 0.928 + }, + { + "name": "left_index", + "x": 0.4395, + "y": 0.5624, + "confidence": 0.308 + }, + { + "name": "right_index", + "x": 0.4581, + "y": 0.1805, + "confidence": 0.934 + }, + { + "name": "left_thumb", + "x": 0.4407, + "y": 0.5576, + "confidence": 0.284 + }, + { + "name": "right_thumb", + "x": 0.4533, + "y": 0.1895, + "confidence": 0.916 + }, + { + "name": "left_hip", + "x": 0.3463, + "y": 0.276, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3758, + "y": 0.2358, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.27, + "y": 0.1825, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.3388, + "y": 0.1099, + "confidence": 0.847 + }, + { + "name": "left_ankle", + "x": 0.1949, + "y": 0.0755, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.2578, + "y": 0.0184, + "confidence": 0.875 + }, + { + "name": "left_heel", + "x": 0.188, + "y": 0.0658, + "confidence": 0.807 + }, + { + "name": "right_heel", + "x": 0.2446, + "y": 0.0156, + "confidence": 0.74 + }, + { + "name": "left_foot_index", + "x": 0.1753, + "y": 0.021, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.2491, + "y": -0.0458, + "confidence": 0.857 + } + ] + } + ] + }, + { + "frame_index": 47, + "timestamp": 0.7833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1118, + "acceleration": -4.793, + "fluidity": 0, + "expansion": 0.308, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0009, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4814, + "y": 0.482, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4788, + "y": 0.4983, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4766, + "y": 0.4993, + "confidence": 0.991 + }, + { + "name": "left_eye_outer", + "x": 0.4743, + "y": 0.4999, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4809, + "y": 0.4948, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4803, + "y": 0.4953, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4799, + "y": 0.4946, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4602, + "y": 0.5005, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.4675, + "y": 0.4918, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4728, + "y": 0.4717, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4748, + "y": 0.4677, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4339, + "y": 0.4628, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4468, + "y": 0.4034, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4954, + "y": 0.5088, + "confidence": 0.72 + }, + { + "name": "right_elbow", + "x": 0.4235, + "y": 0.2904, + "confidence": 0.625 + }, + { + "name": "left_wrist", + "x": 0.4501, + "y": 0.5607, + "confidence": 0.411 + }, + { + "name": "right_wrist", + "x": 0.4444, + "y": 0.2075, + "confidence": 0.944 + }, + { + "name": "left_pinky", + "x": 0.4383, + "y": 0.5683, + "confidence": 0.334 + }, + { + "name": "right_pinky", + "x": 0.453, + "y": 0.1837, + "confidence": 0.928 + }, + { + "name": "left_index", + "x": 0.4343, + "y": 0.5659, + "confidence": 0.329 + }, + { + "name": "right_index", + "x": 0.4582, + "y": 0.1839, + "confidence": 0.935 + }, + { + "name": "left_thumb", + "x": 0.4372, + "y": 0.5607, + "confidence": 0.301 + }, + { + "name": "right_thumb", + "x": 0.4538, + "y": 0.1924, + "confidence": 0.917 + }, + { + "name": "left_hip", + "x": 0.3485, + "y": 0.2731, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3765, + "y": 0.2357, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2685, + "y": 0.1787, + "confidence": 0.945 + }, + { + "name": "right_knee", + "x": 0.3425, + "y": 0.1115, + "confidence": 0.82 + }, + { + "name": "left_ankle", + "x": 0.1946, + "y": 0.0734, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.2599, + "y": 0.019, + "confidence": 0.864 + }, + { + "name": "left_heel", + "x": 0.1858, + "y": 0.0643, + "confidence": 0.793 + }, + { + "name": "right_heel", + "x": 0.2453, + "y": 0.0154, + "confidence": 0.727 + }, + { + "name": "left_foot_index", + "x": 0.1759, + "y": 0.0179, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.2564, + "y": -0.0469, + "confidence": 0.851 + } + ] + } + ] + }, + { + "frame_index": 48, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1452, + "acceleration": 2.0059, + "fluidity": 0, + "expansion": 0.305, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0003, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.481, + "y": 0.484, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4788, + "y": 0.5007, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4765, + "y": 0.5021, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4743, + "y": 0.503, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4806, + "y": 0.4966, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.48, + "y": 0.4963, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4797, + "y": 0.4956, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.46, + "y": 0.504, + "confidence": 0.994 + }, + { + "name": "right_ear", + "x": 0.4661, + "y": 0.4928, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4725, + "y": 0.4742, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4745, + "y": 0.4702, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4339, + "y": 0.4652, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4466, + "y": 0.4034, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4964, + "y": 0.5086, + "confidence": 0.728 + }, + { + "name": "right_elbow", + "x": 0.4249, + "y": 0.2905, + "confidence": 0.613 + }, + { + "name": "left_wrist", + "x": 0.446, + "y": 0.5477, + "confidence": 0.435 + }, + { + "name": "right_wrist", + "x": 0.4455, + "y": 0.2072, + "confidence": 0.944 + }, + { + "name": "left_pinky", + "x": 0.4326, + "y": 0.5532, + "confidence": 0.36 + }, + { + "name": "right_pinky", + "x": 0.4544, + "y": 0.1836, + "confidence": 0.929 + }, + { + "name": "left_index", + "x": 0.4246, + "y": 0.5493, + "confidence": 0.356 + }, + { + "name": "right_index", + "x": 0.4593, + "y": 0.1838, + "confidence": 0.936 + }, + { + "name": "left_thumb", + "x": 0.4329, + "y": 0.5495, + "confidence": 0.325 + }, + { + "name": "right_thumb", + "x": 0.4547, + "y": 0.1919, + "confidence": 0.918 + }, + { + "name": "left_hip", + "x": 0.3479, + "y": 0.2727, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.376, + "y": 0.2352, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2678, + "y": 0.1797, + "confidence": 0.945 + }, + { + "name": "right_knee", + "x": 0.3424, + "y": 0.1115, + "confidence": 0.817 + }, + { + "name": "left_ankle", + "x": 0.1973, + "y": 0.0764, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.2614, + "y": 0.0205, + "confidence": 0.859 + }, + { + "name": "left_heel", + "x": 0.19, + "y": 0.0675, + "confidence": 0.787 + }, + { + "name": "right_heel", + "x": 0.2472, + "y": 0.0177, + "confidence": 0.719 + }, + { + "name": "left_foot_index", + "x": 0.1767, + "y": 0.0203, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.2501, + "y": -0.0472, + "confidence": 0.847 + } + ] + } + ] + }, + { + "frame_index": 49, + "timestamp": 0.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1638, + "acceleration": 1.1143, + "fluidity": 0, + "expansion": 0.298, + "total_displacement": 0.0049, + "center_displacement": { + "x": 0.0048, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4818, + "y": 0.4848, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.479, + "y": 0.5008, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4768, + "y": 0.5021, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4745, + "y": 0.5034, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4807, + "y": 0.4979, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.48, + "y": 0.4977, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4795, + "y": 0.4974, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4611, + "y": 0.5038, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4664, + "y": 0.4946, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4736, + "y": 0.4755, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4757, + "y": 0.4717, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.434, + "y": 0.466, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4511, + "y": 0.4024, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.4987, + "y": 0.5114, + "confidence": 0.745 + }, + { + "name": "right_elbow", + "x": 0.4266, + "y": 0.2909, + "confidence": 0.587 + }, + { + "name": "left_wrist", + "x": 0.4435, + "y": 0.5462, + "confidence": 0.461 + }, + { + "name": "right_wrist", + "x": 0.4491, + "y": 0.2122, + "confidence": 0.934 + }, + { + "name": "left_pinky", + "x": 0.4313, + "y": 0.5552, + "confidence": 0.383 + }, + { + "name": "right_pinky", + "x": 0.4589, + "y": 0.1899, + "confidence": 0.92 + }, + { + "name": "left_index", + "x": 0.4239, + "y": 0.5509, + "confidence": 0.381 + }, + { + "name": "right_index", + "x": 0.4639, + "y": 0.1904, + "confidence": 0.929 + }, + { + "name": "left_thumb", + "x": 0.4321, + "y": 0.5479, + "confidence": 0.348 + }, + { + "name": "right_thumb", + "x": 0.4593, + "y": 0.198, + "confidence": 0.911 + }, + { + "name": "left_hip", + "x": 0.3543, + "y": 0.2701, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3843, + "y": 0.2347, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2787, + "y": 0.1688, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.351, + "y": 0.1113, + "confidence": 0.798 + }, + { + "name": "left_ankle", + "x": 0.2132, + "y": 0.0643, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.2764, + "y": 0.0193, + "confidence": 0.846 + }, + { + "name": "left_heel", + "x": 0.2034, + "y": 0.0554, + "confidence": 0.777 + }, + { + "name": "right_heel", + "x": 0.2648, + "y": 0.0156, + "confidence": 0.702 + }, + { + "name": "left_foot_index", + "x": 0.199, + "y": 0.0089, + "confidence": 0.926 + }, + { + "name": "right_foot_index", + "x": 0.2705, + "y": -0.0441, + "confidence": 0.836 + } + ] + } + ] + }, + { + "frame_index": 50, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1865, + "acceleration": 1.3605, + "fluidity": 0, + "expansion": 0.294, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0005, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4815, + "y": 0.4838, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4788, + "y": 0.4998, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4765, + "y": 0.501, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4743, + "y": 0.5022, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4805, + "y": 0.4966, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4798, + "y": 0.4962, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4793, + "y": 0.4958, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4612, + "y": 0.5021, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4664, + "y": 0.493, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4733, + "y": 0.4742, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4754, + "y": 0.4705, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4339, + "y": 0.4658, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4516, + "y": 0.4019, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5022, + "y": 0.5101, + "confidence": 0.765 + }, + { + "name": "right_elbow", + "x": 0.4289, + "y": 0.291, + "confidence": 0.579 + }, + { + "name": "left_wrist", + "x": 0.4428, + "y": 0.52, + "confidence": 0.479 + }, + { + "name": "right_wrist", + "x": 0.4512, + "y": 0.2127, + "confidence": 0.932 + }, + { + "name": "left_pinky", + "x": 0.4315, + "y": 0.5255, + "confidence": 0.395 + }, + { + "name": "right_pinky", + "x": 0.4606, + "y": 0.19, + "confidence": 0.918 + }, + { + "name": "left_index", + "x": 0.4234, + "y": 0.5184, + "confidence": 0.394 + }, + { + "name": "right_index", + "x": 0.4653, + "y": 0.1905, + "confidence": 0.928 + }, + { + "name": "left_thumb", + "x": 0.4307, + "y": 0.5158, + "confidence": 0.359 + }, + { + "name": "right_thumb", + "x": 0.4605, + "y": 0.1981, + "confidence": 0.909 + }, + { + "name": "left_hip", + "x": 0.3545, + "y": 0.2683, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3856, + "y": 0.2343, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2792, + "y": 0.166, + "confidence": 0.938 + }, + { + "name": "right_knee", + "x": 0.3536, + "y": 0.112, + "confidence": 0.773 + }, + { + "name": "left_ankle", + "x": 0.2125, + "y": 0.0617, + "confidence": 0.943 + }, + { + "name": "right_ankle", + "x": 0.2811, + "y": 0.0201, + "confidence": 0.825 + }, + { + "name": "left_heel", + "x": 0.2038, + "y": 0.0515, + "confidence": 0.765 + }, + { + "name": "right_heel", + "x": 0.2691, + "y": 0.0165, + "confidence": 0.682 + }, + { + "name": "left_foot_index", + "x": 0.198, + "y": 0.0104, + "confidence": 0.922 + }, + { + "name": "right_foot_index", + "x": 0.2789, + "y": -0.0433, + "confidence": 0.818 + } + ] + } + ] + }, + { + "frame_index": 51, + "timestamp": 0.85, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2065, + "acceleration": 1.204, + "fluidity": 0, + "expansion": 0.293, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0056, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4848, + "y": 0.4944, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4818, + "y": 0.5099, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4796, + "y": 0.5109, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4775, + "y": 0.5116, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4838, + "y": 0.5073, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4833, + "y": 0.5067, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.483, + "y": 0.506, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.464, + "y": 0.5111, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4717, + "y": 0.5002, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4759, + "y": 0.484, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4788, + "y": 0.4799, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4348, + "y": 0.47, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.458, + "y": 0.4054, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5048, + "y": 0.5122, + "confidence": 0.784 + }, + { + "name": "right_elbow", + "x": 0.4307, + "y": 0.2945, + "confidence": 0.577 + }, + { + "name": "left_wrist", + "x": 0.454, + "y": 0.5341, + "confidence": 0.478 + }, + { + "name": "right_wrist", + "x": 0.4542, + "y": 0.2184, + "confidence": 0.925 + }, + { + "name": "left_pinky", + "x": 0.4462, + "y": 0.5402, + "confidence": 0.389 + }, + { + "name": "right_pinky", + "x": 0.4654, + "y": 0.1963, + "confidence": 0.911 + }, + { + "name": "left_index", + "x": 0.4356, + "y": 0.5372, + "confidence": 0.389 + }, + { + "name": "right_index", + "x": 0.4703, + "y": 0.1971, + "confidence": 0.922 + }, + { + "name": "left_thumb", + "x": 0.4387, + "y": 0.5347, + "confidence": 0.356 + }, + { + "name": "right_thumb", + "x": 0.4653, + "y": 0.2041, + "confidence": 0.904 + }, + { + "name": "left_hip", + "x": 0.3589, + "y": 0.2668, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3961, + "y": 0.2336, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2899, + "y": 0.1584, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.3606, + "y": 0.1099, + "confidence": 0.778 + }, + { + "name": "left_ankle", + "x": 0.2295, + "y": 0.0573, + "confidence": 0.946 + }, + { + "name": "right_ankle", + "x": 0.2992, + "y": 0.0213, + "confidence": 0.829 + }, + { + "name": "left_heel", + "x": 0.2243, + "y": 0.0487, + "confidence": 0.773 + }, + { + "name": "right_heel", + "x": 0.2871, + "y": 0.0163, + "confidence": 0.687 + }, + { + "name": "left_foot_index", + "x": 0.2186, + "y": 0.0114, + "confidence": 0.925 + }, + { + "name": "right_foot_index", + "x": 0.2936, + "y": -0.0414, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 52, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2035, + "acceleration": -0.1793, + "fluidity": 0, + "expansion": 0.296, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0005, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4843, + "y": 0.4928, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4814, + "y": 0.5083, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4793, + "y": 0.5093, + "confidence": 0.992 + }, + { + "name": "left_eye_outer", + "x": 0.4772, + "y": 0.5113, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4834, + "y": 0.5058, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4829, + "y": 0.505, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4825, + "y": 0.5044, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4636, + "y": 0.5094, + "confidence": 0.995 + }, + { + "name": "right_ear", + "x": 0.4716, + "y": 0.4989, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4754, + "y": 0.4828, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4782, + "y": 0.4787, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4357, + "y": 0.4693, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4586, + "y": 0.4042, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5046, + "y": 0.5122, + "confidence": 0.803 + }, + { + "name": "right_elbow", + "x": 0.4307, + "y": 0.2943, + "confidence": 0.573 + }, + { + "name": "left_wrist", + "x": 0.4514, + "y": 0.5331, + "confidence": 0.487 + }, + { + "name": "right_wrist", + "x": 0.4554, + "y": 0.2226, + "confidence": 0.918 + }, + { + "name": "left_pinky", + "x": 0.4428, + "y": 0.5392, + "confidence": 0.393 + }, + { + "name": "right_pinky", + "x": 0.4658, + "y": 0.1991, + "confidence": 0.905 + }, + { + "name": "left_index", + "x": 0.4329, + "y": 0.5361, + "confidence": 0.396 + }, + { + "name": "right_index", + "x": 0.4711, + "y": 0.2004, + "confidence": 0.918 + }, + { + "name": "left_thumb", + "x": 0.4358, + "y": 0.5336, + "confidence": 0.363 + }, + { + "name": "right_thumb", + "x": 0.4664, + "y": 0.2081, + "confidence": 0.899 + }, + { + "name": "left_hip", + "x": 0.36, + "y": 0.2641, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3957, + "y": 0.2326, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.2909, + "y": 0.1586, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.3654, + "y": 0.1103, + "confidence": 0.768 + }, + { + "name": "left_ankle", + "x": 0.2303, + "y": 0.0563, + "confidence": 0.947 + }, + { + "name": "right_ankle", + "x": 0.2998, + "y": 0.0214, + "confidence": 0.821 + }, + { + "name": "left_heel", + "x": 0.2244, + "y": 0.0473, + "confidence": 0.773 + }, + { + "name": "right_heel", + "x": 0.2877, + "y": 0.016, + "confidence": 0.682 + }, + { + "name": "left_foot_index", + "x": 0.2218, + "y": 0.0101, + "confidence": 0.924 + }, + { + "name": "right_foot_index", + "x": 0.2983, + "y": -0.0412, + "confidence": 0.812 + } + ] + } + ] + }, + { + "frame_index": 53, + "timestamp": 0.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2071, + "acceleration": 0.2132, + "fluidity": 0, + "expansion": 0.302, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.004, + "y": 0.0034 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.485, + "y": 0.5009, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4825, + "y": 0.518, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4806, + "y": 0.519, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4788, + "y": 0.5199, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4842, + "y": 0.5154, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4836, + "y": 0.5147, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4833, + "y": 0.5142, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.465, + "y": 0.5198, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.4726, + "y": 0.5096, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4769, + "y": 0.4901, + "confidence": 0.995 + }, + { + "name": "mouth_right", + "x": 0.4794, + "y": 0.4867, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4374, + "y": 0.4721, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.46, + "y": 0.4144, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.509, + "y": 0.5166, + "confidence": 0.82 + }, + { + "name": "right_elbow", + "x": 0.4343, + "y": 0.3076, + "confidence": 0.574 + }, + { + "name": "left_wrist", + "x": 0.4681, + "y": 0.5612, + "confidence": 0.509 + }, + { + "name": "right_wrist", + "x": 0.4583, + "y": 0.2317, + "confidence": 0.916 + }, + { + "name": "left_pinky", + "x": 0.4543, + "y": 0.5644, + "confidence": 0.412 + }, + { + "name": "right_pinky", + "x": 0.4695, + "y": 0.2086, + "confidence": 0.903 + }, + { + "name": "left_index", + "x": 0.4444, + "y": 0.5617, + "confidence": 0.417 + }, + { + "name": "right_index", + "x": 0.475, + "y": 0.2096, + "confidence": 0.917 + }, + { + "name": "left_thumb", + "x": 0.4465, + "y": 0.5579, + "confidence": 0.385 + }, + { + "name": "right_thumb", + "x": 0.4699, + "y": 0.2174, + "confidence": 0.899 + }, + { + "name": "left_hip", + "x": 0.3669, + "y": 0.2643, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4016, + "y": 0.2329, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3054, + "y": 0.1558, + "confidence": 0.945 + }, + { + "name": "right_knee", + "x": 0.3776, + "y": 0.1105, + "confidence": 0.78 + }, + { + "name": "left_ankle", + "x": 0.2456, + "y": 0.0532, + "confidence": 0.951 + }, + { + "name": "right_ankle", + "x": 0.3197, + "y": 0.022, + "confidence": 0.83 + }, + { + "name": "left_heel", + "x": 0.2386, + "y": 0.0452, + "confidence": 0.785 + }, + { + "name": "right_heel", + "x": 0.3068, + "y": 0.0159, + "confidence": 0.695 + }, + { + "name": "left_foot_index", + "x": 0.2379, + "y": 0.0068, + "confidence": 0.929 + }, + { + "name": "right_foot_index", + "x": 0.3204, + "y": -0.0403, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 54, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1612, + "acceleration": -2.7525, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0012, + "y": 0.0012 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4853, + "y": 0.5016, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4829, + "y": 0.5181, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.481, + "y": 0.5194, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4791, + "y": 0.5204, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4846, + "y": 0.5159, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4841, + "y": 0.5155, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4838, + "y": 0.5151, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4655, + "y": 0.5218, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.473, + "y": 0.5117, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4779, + "y": 0.4911, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4801, + "y": 0.4887, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4377, + "y": 0.4744, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4611, + "y": 0.4159, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5103, + "y": 0.518, + "confidence": 0.837 + }, + { + "name": "right_elbow", + "x": 0.4343, + "y": 0.3099, + "confidence": 0.584 + }, + { + "name": "left_wrist", + "x": 0.4703, + "y": 0.5649, + "confidence": 0.54 + }, + { + "name": "right_wrist", + "x": 0.4599, + "y": 0.2309, + "confidence": 0.918 + }, + { + "name": "left_pinky", + "x": 0.4559, + "y": 0.5626, + "confidence": 0.442 + }, + { + "name": "right_pinky", + "x": 0.4711, + "y": 0.2091, + "confidence": 0.906 + }, + { + "name": "left_index", + "x": 0.4461, + "y": 0.5589, + "confidence": 0.448 + }, + { + "name": "right_index", + "x": 0.4763, + "y": 0.2115, + "confidence": 0.92 + }, + { + "name": "left_thumb", + "x": 0.4483, + "y": 0.5556, + "confidence": 0.416 + }, + { + "name": "right_thumb", + "x": 0.4713, + "y": 0.2189, + "confidence": 0.903 + }, + { + "name": "left_hip", + "x": 0.3681, + "y": 0.265, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4038, + "y": 0.2333, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.306, + "y": 0.1536, + "confidence": 0.949 + }, + { + "name": "right_knee", + "x": 0.3807, + "y": 0.1118, + "confidence": 0.793 + }, + { + "name": "left_ankle", + "x": 0.2451, + "y": 0.0502, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.3181, + "y": 0.0217, + "confidence": 0.839 + }, + { + "name": "left_heel", + "x": 0.2376, + "y": 0.0427, + "confidence": 0.797 + }, + { + "name": "right_heel", + "x": 0.3061, + "y": 0.0159, + "confidence": 0.709 + }, + { + "name": "left_foot_index", + "x": 0.2381, + "y": 0.0002, + "confidence": 0.933 + }, + { + "name": "right_foot_index", + "x": 0.317, + "y": -0.0399, + "confidence": 0.829 + } + ] + } + ] + }, + { + "frame_index": 55, + "timestamp": 0.9166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2283, + "acceleration": 4.0245, + "fluidity": 0, + "expansion": 0.302, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0004, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4853, + "y": 0.5027, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4828, + "y": 0.5196, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4807, + "y": 0.5207, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4787, + "y": 0.5214, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4844, + "y": 0.5174, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4839, + "y": 0.5171, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4837, + "y": 0.5167, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4652, + "y": 0.5211, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.4737, + "y": 0.5136, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4777, + "y": 0.4918, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.48, + "y": 0.4891, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4377, + "y": 0.4731, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4604, + "y": 0.4151, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5097, + "y": 0.5187, + "confidence": 0.85 + }, + { + "name": "right_elbow", + "x": 0.435, + "y": 0.3106, + "confidence": 0.586 + }, + { + "name": "left_wrist", + "x": 0.4657, + "y": 0.5564, + "confidence": 0.536 + }, + { + "name": "right_wrist", + "x": 0.4604, + "y": 0.2312, + "confidence": 0.914 + }, + { + "name": "left_pinky", + "x": 0.4552, + "y": 0.5588, + "confidence": 0.434 + }, + { + "name": "right_pinky", + "x": 0.4712, + "y": 0.2099, + "confidence": 0.903 + }, + { + "name": "left_index", + "x": 0.4438, + "y": 0.5557, + "confidence": 0.441 + }, + { + "name": "right_index", + "x": 0.476, + "y": 0.2118, + "confidence": 0.918 + }, + { + "name": "left_thumb", + "x": 0.4464, + "y": 0.5523, + "confidence": 0.411 + }, + { + "name": "right_thumb", + "x": 0.4707, + "y": 0.2195, + "confidence": 0.901 + }, + { + "name": "left_hip", + "x": 0.3676, + "y": 0.2581, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4034, + "y": 0.2308, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3044, + "y": 0.1495, + "confidence": 0.946 + }, + { + "name": "right_knee", + "x": 0.3756, + "y": 0.1119, + "confidence": 0.777 + }, + { + "name": "left_ankle", + "x": 0.2469, + "y": 0.0519, + "confidence": 0.954 + }, + { + "name": "right_ankle", + "x": 0.3186, + "y": 0.0203, + "confidence": 0.825 + }, + { + "name": "left_heel", + "x": 0.2409, + "y": 0.0438, + "confidence": 0.79 + }, + { + "name": "right_heel", + "x": 0.3089, + "y": 0.015, + "confidence": 0.693 + }, + { + "name": "left_foot_index", + "x": 0.2385, + "y": 0.0067, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.3158, + "y": -0.0379, + "confidence": 0.812 + } + ] + } + ] + }, + { + "frame_index": 56, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2221, + "acceleration": -0.3743, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0.0058, + "center_displacement": { + "x": 0.0042, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4861, + "y": 0.5108, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.484, + "y": 0.5287, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4825, + "y": 0.5296, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4813, + "y": 0.53, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4848, + "y": 0.5265, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4842, + "y": 0.526, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4838, + "y": 0.5254, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4679, + "y": 0.53, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.4736, + "y": 0.5225, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4797, + "y": 0.4993, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4811, + "y": 0.497, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4391, + "y": 0.4789, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4644, + "y": 0.425, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5121, + "y": 0.523, + "confidence": 0.862 + }, + { + "name": "right_elbow", + "x": 0.4403, + "y": 0.3171, + "confidence": 0.577 + }, + { + "name": "left_wrist", + "x": 0.4633, + "y": 0.5595, + "confidence": 0.536 + }, + { + "name": "right_wrist", + "x": 0.4653, + "y": 0.2375, + "confidence": 0.902 + }, + { + "name": "left_pinky", + "x": 0.4518, + "y": 0.5595, + "confidence": 0.432 + }, + { + "name": "right_pinky", + "x": 0.4769, + "y": 0.2161, + "confidence": 0.892 + }, + { + "name": "left_index", + "x": 0.4443, + "y": 0.5616, + "confidence": 0.44 + }, + { + "name": "right_index", + "x": 0.482, + "y": 0.218, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.4464, + "y": 0.5566, + "confidence": 0.409 + }, + { + "name": "right_thumb", + "x": 0.477, + "y": 0.2256, + "confidence": 0.89 + }, + { + "name": "left_hip", + "x": 0.3725, + "y": 0.2582, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.41, + "y": 0.2311, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3156, + "y": 0.1451, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.3897, + "y": 0.1127, + "confidence": 0.779 + }, + { + "name": "left_ankle", + "x": 0.2606, + "y": 0.0484, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.3374, + "y": 0.0205, + "confidence": 0.825 + }, + { + "name": "left_heel", + "x": 0.2553, + "y": 0.0419, + "confidence": 0.791 + }, + { + "name": "right_heel", + "x": 0.3236, + "y": 0.0151, + "confidence": 0.69 + }, + { + "name": "left_foot_index", + "x": 0.2515, + "y": 0.0052, + "confidence": 0.928 + }, + { + "name": "right_foot_index", + "x": 0.3413, + "y": -0.0381, + "confidence": 0.809 + } + ] + } + ] + }, + { + "frame_index": 57, + "timestamp": 0.95, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1527, + "acceleration": -4.1595, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0011, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4862, + "y": 0.516, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4839, + "y": 0.5345, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4825, + "y": 0.5354, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4813, + "y": 0.5356, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4846, + "y": 0.5318, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.484, + "y": 0.5311, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4836, + "y": 0.5302, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.468, + "y": 0.5344, + "confidence": 0.996 + }, + { + "name": "right_ear", + "x": 0.475, + "y": 0.5268, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.48, + "y": 0.5027, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4812, + "y": 0.5006, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.439, + "y": 0.4791, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.465, + "y": 0.428, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5126, + "y": 0.5248, + "confidence": 0.873 + }, + { + "name": "right_elbow", + "x": 0.4398, + "y": 0.3182, + "confidence": 0.581 + }, + { + "name": "left_wrist", + "x": 0.4642, + "y": 0.5693, + "confidence": 0.55 + }, + { + "name": "right_wrist", + "x": 0.4657, + "y": 0.2395, + "confidence": 0.903 + }, + { + "name": "left_pinky", + "x": 0.451, + "y": 0.5656, + "confidence": 0.443 + }, + { + "name": "right_pinky", + "x": 0.4777, + "y": 0.2181, + "confidence": 0.894 + }, + { + "name": "left_index", + "x": 0.4424, + "y": 0.5637, + "confidence": 0.453 + }, + { + "name": "right_index", + "x": 0.4827, + "y": 0.2203, + "confidence": 0.911 + }, + { + "name": "left_thumb", + "x": 0.4447, + "y": 0.5595, + "confidence": 0.423 + }, + { + "name": "right_thumb", + "x": 0.4775, + "y": 0.2279, + "confidence": 0.893 + }, + { + "name": "left_hip", + "x": 0.3747, + "y": 0.2583, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4119, + "y": 0.2314, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3171, + "y": 0.1448, + "confidence": 0.951 + }, + { + "name": "right_knee", + "x": 0.394, + "y": 0.1131, + "confidence": 0.787 + }, + { + "name": "left_ankle", + "x": 0.2595, + "y": 0.044, + "confidence": 0.958 + }, + { + "name": "right_ankle", + "x": 0.3379, + "y": 0.0206, + "confidence": 0.83 + }, + { + "name": "left_heel", + "x": 0.2534, + "y": 0.0382, + "confidence": 0.798 + }, + { + "name": "right_heel", + "x": 0.3258, + "y": 0.0147, + "confidence": 0.699 + }, + { + "name": "left_foot_index", + "x": 0.2528, + "y": -0.0008, + "confidence": 0.932 + }, + { + "name": "right_foot_index", + "x": 0.3451, + "y": -0.0379, + "confidence": 0.814 + } + ] + } + ] + }, + { + "frame_index": 58, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1226, + "acceleration": -1.8079, + "fluidity": 0, + "expansion": 0.3, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.0025, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.486, + "y": 0.5158, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4834, + "y": 0.5329, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4819, + "y": 0.5339, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4807, + "y": 0.5344, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4842, + "y": 0.5299, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4835, + "y": 0.5291, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4831, + "y": 0.5283, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4665, + "y": 0.5329, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4746, + "y": 0.5241, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.4796, + "y": 0.5022, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.481, + "y": 0.5, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4388, + "y": 0.481, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4665, + "y": 0.4287, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5121, + "y": 0.5256, + "confidence": 0.884 + }, + { + "name": "right_elbow", + "x": 0.4406, + "y": 0.3188, + "confidence": 0.571 + }, + { + "name": "left_wrist", + "x": 0.4631, + "y": 0.566, + "confidence": 0.563 + }, + { + "name": "right_wrist", + "x": 0.4705, + "y": 0.2456, + "confidence": 0.895 + }, + { + "name": "left_pinky", + "x": 0.4513, + "y": 0.5577, + "confidence": 0.456 + }, + { + "name": "right_pinky", + "x": 0.4836, + "y": 0.2259, + "confidence": 0.887 + }, + { + "name": "left_index", + "x": 0.4419, + "y": 0.551, + "confidence": 0.466 + }, + { + "name": "right_index", + "x": 0.4885, + "y": 0.2286, + "confidence": 0.906 + }, + { + "name": "left_thumb", + "x": 0.4449, + "y": 0.5482, + "confidence": 0.435 + }, + { + "name": "right_thumb", + "x": 0.4831, + "y": 0.2358, + "confidence": 0.888 + }, + { + "name": "left_hip", + "x": 0.3801, + "y": 0.2547, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.415, + "y": 0.2317, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3277, + "y": 0.14, + "confidence": 0.952 + }, + { + "name": "right_knee", + "x": 0.4052, + "y": 0.118, + "confidence": 0.797 + }, + { + "name": "left_ankle", + "x": 0.2783, + "y": 0.0478, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.3555, + "y": 0.0207, + "confidence": 0.836 + }, + { + "name": "left_heel", + "x": 0.2703, + "y": 0.0402, + "confidence": 0.798 + }, + { + "name": "right_heel", + "x": 0.3417, + "y": 0.0148, + "confidence": 0.707 + }, + { + "name": "left_foot_index", + "x": 0.272, + "y": 0.0016, + "confidence": 0.931 + }, + { + "name": "right_foot_index", + "x": 0.3706, + "y": -0.0386, + "confidence": 0.818 + } + ] + } + ] + }, + { + "frame_index": 59, + "timestamp": 0.9833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0847, + "acceleration": -2.274, + "fluidity": 0.255, + "expansion": 0.294, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4859, + "y": 0.5159, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4833, + "y": 0.5332, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4818, + "y": 0.5342, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4805, + "y": 0.5345, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4842, + "y": 0.5289, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4836, + "y": 0.5281, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4831, + "y": 0.5283, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4664, + "y": 0.5303, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4745, + "y": 0.5254, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4794, + "y": 0.502, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4808, + "y": 0.4997, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4391, + "y": 0.4806, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4658, + "y": 0.4305, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5123, + "y": 0.5256, + "confidence": 0.893 + }, + { + "name": "right_elbow", + "x": 0.4433, + "y": 0.3209, + "confidence": 0.564 + }, + { + "name": "left_wrist", + "x": 0.4642, + "y": 0.5552, + "confidence": 0.567 + }, + { + "name": "right_wrist", + "x": 0.4725, + "y": 0.247, + "confidence": 0.89 + }, + { + "name": "left_pinky", + "x": 0.4544, + "y": 0.5551, + "confidence": 0.457 + }, + { + "name": "right_pinky", + "x": 0.4853, + "y": 0.227, + "confidence": 0.884 + }, + { + "name": "left_index", + "x": 0.4439, + "y": 0.5485, + "confidence": 0.469 + }, + { + "name": "right_index", + "x": 0.4904, + "y": 0.2298, + "confidence": 0.903 + }, + { + "name": "left_thumb", + "x": 0.4468, + "y": 0.546, + "confidence": 0.438 + }, + { + "name": "right_thumb", + "x": 0.4853, + "y": 0.2372, + "confidence": 0.885 + }, + { + "name": "left_hip", + "x": 0.3833, + "y": 0.2512, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4162, + "y": 0.2318, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3283, + "y": 0.1381, + "confidence": 0.949 + }, + { + "name": "right_knee", + "x": 0.4059, + "y": 0.1191, + "confidence": 0.787 + }, + { + "name": "left_ankle", + "x": 0.2795, + "y": 0.0473, + "confidence": 0.957 + }, + { + "name": "right_ankle", + "x": 0.355, + "y": 0.02, + "confidence": 0.828 + }, + { + "name": "left_heel", + "x": 0.2706, + "y": 0.0402, + "confidence": 0.792 + }, + { + "name": "right_heel", + "x": 0.343, + "y": 0.013, + "confidence": 0.704 + }, + { + "name": "left_foot_index", + "x": 0.2793, + "y": 0.0045, + "confidence": 0.925 + }, + { + "name": "right_foot_index", + "x": 0.3693, + "y": -0.0393, + "confidence": 0.809 + } + ] + } + ] + }, + { + "frame_index": 60, + "timestamp": 1, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.1221, + "acceleration": 2.2429, + "fluidity": 0.34, + "expansion": 0.288, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0007, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.486, + "y": 0.5187, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4838, + "y": 0.5333, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4817, + "y": 0.5353, + "confidence": 0.994 + }, + { + "name": "left_eye_outer", + "x": 0.4804, + "y": 0.5357, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4846, + "y": 0.5295, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.484, + "y": 0.5286, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4836, + "y": 0.5281, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4676, + "y": 0.5298, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4744, + "y": 0.5246, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4795, + "y": 0.5044, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.481, + "y": 0.5022, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4401, + "y": 0.4814, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4655, + "y": 0.4293, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5129, + "y": 0.5257, + "confidence": 0.902 + }, + { + "name": "right_elbow", + "x": 0.4436, + "y": 0.3197, + "confidence": 0.559 + }, + { + "name": "left_wrist", + "x": 0.4661, + "y": 0.5326, + "confidence": 0.569 + }, + { + "name": "right_wrist", + "x": 0.4732, + "y": 0.2469, + "confidence": 0.888 + }, + { + "name": "left_pinky", + "x": 0.4571, + "y": 0.5355, + "confidence": 0.454 + }, + { + "name": "right_pinky", + "x": 0.4852, + "y": 0.2269, + "confidence": 0.882 + }, + { + "name": "left_index", + "x": 0.4527, + "y": 0.5311, + "confidence": 0.467 + }, + { + "name": "right_index", + "x": 0.4902, + "y": 0.2306, + "confidence": 0.902 + }, + { + "name": "left_thumb", + "x": 0.4487, + "y": 0.5272, + "confidence": 0.436 + }, + { + "name": "right_thumb", + "x": 0.4854, + "y": 0.2382, + "confidence": 0.883 + }, + { + "name": "left_hip", + "x": 0.3846, + "y": 0.2527, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4172, + "y": 0.234, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3303, + "y": 0.139, + "confidence": 0.946 + }, + { + "name": "right_knee", + "x": 0.4055, + "y": 0.1196, + "confidence": 0.774 + }, + { + "name": "left_ankle", + "x": 0.2787, + "y": 0.0472, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.3552, + "y": 0.0195, + "confidence": 0.814 + }, + { + "name": "left_heel", + "x": 0.2703, + "y": 0.0408, + "confidence": 0.783 + }, + { + "name": "right_heel", + "x": 0.3434, + "y": 0.012, + "confidence": 0.698 + }, + { + "name": "left_foot_index", + "x": 0.2782, + "y": 0.005, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.3723, + "y": -0.0394, + "confidence": 0.796 + } + ] + } + ] + }, + { + "frame_index": 61, + "timestamp": 1.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.155, + "acceleration": 1.9728, + "fluidity": 0.113, + "expansion": 0.284, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0014, + "y": 0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4845, + "y": 0.5173, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4816, + "y": 0.5335, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4794, + "y": 0.5352, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4778, + "y": 0.536, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4831, + "y": 0.53, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4827, + "y": 0.5293, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4825, + "y": 0.5288, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4642, + "y": 0.5297, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4735, + "y": 0.5245, + "confidence": 0.998 + }, + { + "name": "mouth_left", + "x": 0.478, + "y": 0.5044, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.48, + "y": 0.5021, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4376, + "y": 0.4845, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4685, + "y": 0.4285, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5125, + "y": 0.5261, + "confidence": 0.91 + }, + { + "name": "right_elbow", + "x": 0.4437, + "y": 0.3212, + "confidence": 0.564 + }, + { + "name": "left_wrist", + "x": 0.4718, + "y": 0.5342, + "confidence": 0.596 + }, + { + "name": "right_wrist", + "x": 0.4768, + "y": 0.2533, + "confidence": 0.894 + }, + { + "name": "left_pinky", + "x": 0.4655, + "y": 0.5372, + "confidence": 0.484 + }, + { + "name": "right_pinky", + "x": 0.4901, + "y": 0.2355, + "confidence": 0.888 + }, + { + "name": "left_index", + "x": 0.4591, + "y": 0.5307, + "confidence": 0.496 + }, + { + "name": "right_index", + "x": 0.495, + "y": 0.2387, + "confidence": 0.907 + }, + { + "name": "left_thumb", + "x": 0.46, + "y": 0.5279, + "confidence": 0.464 + }, + { + "name": "right_thumb", + "x": 0.4897, + "y": 0.2451, + "confidence": 0.888 + }, + { + "name": "left_hip", + "x": 0.3851, + "y": 0.2572, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4218, + "y": 0.2404, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3445, + "y": 0.1392, + "confidence": 0.951 + }, + { + "name": "right_knee", + "x": 0.4183, + "y": 0.1245, + "confidence": 0.793 + }, + { + "name": "left_ankle", + "x": 0.292, + "y": 0.0478, + "confidence": 0.955 + }, + { + "name": "right_ankle", + "x": 0.3717, + "y": 0.0194, + "confidence": 0.825 + }, + { + "name": "left_heel", + "x": 0.2815, + "y": 0.041, + "confidence": 0.783 + }, + { + "name": "right_heel", + "x": 0.3591, + "y": 0.0111, + "confidence": 0.711 + }, + { + "name": "left_foot_index", + "x": 0.2961, + "y": -0.0097, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.3934, + "y": -0.045, + "confidence": 0.807 + } + ] + } + ] + }, + { + "frame_index": 62, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1556, + "acceleration": 0.041, + "fluidity": 0.038, + "expansion": 0.281, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0015, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4842, + "y": 0.5171, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.481, + "y": 0.5338, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.479, + "y": 0.5355, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.4773, + "y": 0.5363, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.4831, + "y": 0.5297, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4827, + "y": 0.5291, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4826, + "y": 0.5286, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4636, + "y": 0.5302, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4733, + "y": 0.5247, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4778, + "y": 0.5047, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4799, + "y": 0.5024, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4363, + "y": 0.486, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4715, + "y": 0.4309, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5127, + "y": 0.5267, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.4459, + "y": 0.3249, + "confidence": 0.576 + }, + { + "name": "left_wrist", + "x": 0.4708, + "y": 0.5212, + "confidence": 0.615 + }, + { + "name": "right_wrist", + "x": 0.4788, + "y": 0.2556, + "confidence": 0.897 + }, + { + "name": "left_pinky", + "x": 0.4622, + "y": 0.5257, + "confidence": 0.5 + }, + { + "name": "right_pinky", + "x": 0.4915, + "y": 0.238, + "confidence": 0.891 + }, + { + "name": "left_index", + "x": 0.4566, + "y": 0.5193, + "confidence": 0.512 + }, + { + "name": "right_index", + "x": 0.4962, + "y": 0.2411, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.4573, + "y": 0.5196, + "confidence": 0.48 + }, + { + "name": "right_thumb", + "x": 0.4912, + "y": 0.2473, + "confidence": 0.891 + }, + { + "name": "left_hip", + "x": 0.3865, + "y": 0.2575, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4248, + "y": 0.242, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.344, + "y": 0.1377, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.4177, + "y": 0.1241, + "confidence": 0.807 + }, + { + "name": "left_ankle", + "x": 0.2941, + "y": 0.0474, + "confidence": 0.956 + }, + { + "name": "right_ankle", + "x": 0.3743, + "y": 0.0194, + "confidence": 0.834 + }, + { + "name": "left_heel", + "x": 0.2846, + "y": 0.0406, + "confidence": 0.786 + }, + { + "name": "right_heel", + "x": 0.3611, + "y": 0.0107, + "confidence": 0.723 + }, + { + "name": "left_foot_index", + "x": 0.3007, + "y": -0.0126, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.3985, + "y": -0.0452, + "confidence": 0.815 + } + ] + } + ] + }, + { + "frame_index": 63, + "timestamp": 1.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1581, + "acceleration": 0.1465, + "fluidity": 0.013, + "expansion": 0.28, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0011, + "y": 0.0029 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.484, + "y": 0.5161, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4803, + "y": 0.5329, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.478, + "y": 0.5345, + "confidence": 0.993 + }, + { + "name": "left_eye_outer", + "x": 0.476, + "y": 0.5354, + "confidence": 0.992 + }, + { + "name": "right_eye_inner", + "x": 0.483, + "y": 0.5288, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4825, + "y": 0.5282, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4825, + "y": 0.5277, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.461, + "y": 0.5319, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4711, + "y": 0.5239, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4777, + "y": 0.5043, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4799, + "y": 0.5018, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4358, + "y": 0.4886, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4704, + "y": 0.4318, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5133, + "y": 0.528, + "confidence": 0.923 + }, + { + "name": "right_elbow", + "x": 0.4464, + "y": 0.3265, + "confidence": 0.584 + }, + { + "name": "left_wrist", + "x": 0.4699, + "y": 0.5251, + "confidence": 0.627 + }, + { + "name": "right_wrist", + "x": 0.4823, + "y": 0.2627, + "confidence": 0.903 + }, + { + "name": "left_pinky", + "x": 0.4613, + "y": 0.5286, + "confidence": 0.515 + }, + { + "name": "right_pinky", + "x": 0.497, + "y": 0.2472, + "confidence": 0.898 + }, + { + "name": "left_index", + "x": 0.4584, + "y": 0.5237, + "confidence": 0.527 + }, + { + "name": "right_index", + "x": 0.5017, + "y": 0.2509, + "confidence": 0.915 + }, + { + "name": "left_thumb", + "x": 0.4564, + "y": 0.5212, + "confidence": 0.495 + }, + { + "name": "right_thumb", + "x": 0.4961, + "y": 0.2561, + "confidence": 0.897 + }, + { + "name": "left_hip", + "x": 0.3906, + "y": 0.2604, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4267, + "y": 0.2472, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.355, + "y": 0.135, + "confidence": 0.956 + }, + { + "name": "right_knee", + "x": 0.4264, + "y": 0.1238, + "confidence": 0.817 + }, + { + "name": "left_ankle", + "x": 0.3033, + "y": 0.0465, + "confidence": 0.956 + }, + { + "name": "right_ankle", + "x": 0.3897, + "y": 0.0165, + "confidence": 0.842 + }, + { + "name": "left_heel", + "x": 0.2918, + "y": 0.0407, + "confidence": 0.785 + }, + { + "name": "right_heel", + "x": 0.3784, + "y": 0.0072, + "confidence": 0.732 + }, + { + "name": "left_foot_index", + "x": 0.3044, + "y": -0.0077, + "confidence": 0.918 + }, + { + "name": "right_foot_index", + "x": 0.4216, + "y": -0.0498, + "confidence": 0.821 + } + ] + } + ] + }, + { + "frame_index": 64, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1974, + "acceleration": 2.3568, + "fluidity": 0.004, + "expansion": 0.278, + "total_displacement": 0.0022, + "center_displacement": { + "x": -0.001, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4824, + "y": 0.5161, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4775, + "y": 0.5331, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4753, + "y": 0.5347, + "confidence": 0.994 + }, + { + "name": "left_eye_outer", + "x": 0.4733, + "y": 0.5357, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4796, + "y": 0.5296, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4789, + "y": 0.5291, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4785, + "y": 0.5287, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4582, + "y": 0.5329, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.465, + "y": 0.5242, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4769, + "y": 0.5042, + "confidence": 0.996 + }, + { + "name": "mouth_right", + "x": 0.4788, + "y": 0.5019, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4359, + "y": 0.489, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.464, + "y": 0.4349, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.516, + "y": 0.5301, + "confidence": 0.928 + }, + { + "name": "right_elbow", + "x": 0.4457, + "y": 0.3296, + "confidence": 0.581 + }, + { + "name": "left_wrist", + "x": 0.4701, + "y": 0.517, + "confidence": 0.635 + }, + { + "name": "right_wrist", + "x": 0.484, + "y": 0.2638, + "confidence": 0.907 + }, + { + "name": "left_pinky", + "x": 0.4609, + "y": 0.5214, + "confidence": 0.524 + }, + { + "name": "right_pinky", + "x": 0.4988, + "y": 0.2489, + "confidence": 0.901 + }, + { + "name": "left_index", + "x": 0.4566, + "y": 0.5176, + "confidence": 0.536 + }, + { + "name": "right_index", + "x": 0.5037, + "y": 0.2525, + "confidence": 0.918 + }, + { + "name": "left_thumb", + "x": 0.4583, + "y": 0.5169, + "confidence": 0.503 + }, + { + "name": "right_thumb", + "x": 0.498, + "y": 0.2577, + "confidence": 0.901 + }, + { + "name": "left_hip", + "x": 0.394, + "y": 0.2617, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4256, + "y": 0.2503, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.3571, + "y": 0.134, + "confidence": 0.953 + }, + { + "name": "right_knee", + "x": 0.4297, + "y": 0.1268, + "confidence": 0.819 + }, + { + "name": "left_ankle", + "x": 0.3053, + "y": 0.0466, + "confidence": 0.95 + }, + { + "name": "right_ankle", + "x": 0.3918, + "y": 0.0167, + "confidence": 0.841 + }, + { + "name": "left_heel", + "x": 0.2941, + "y": 0.0411, + "confidence": 0.773 + }, + { + "name": "right_heel", + "x": 0.3792, + "y": 0.0059, + "confidence": 0.737 + }, + { + "name": "left_foot_index", + "x": 0.3202, + "y": -0.0163, + "confidence": 0.907 + }, + { + "name": "right_foot_index", + "x": 0.4194, + "y": -0.0516, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 65, + "timestamp": 1.0833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1744, + "acceleration": -1.3753, + "fluidity": 0.001, + "expansion": 0.279, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.0026, + "y": 0.0043 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4827, + "y": 0.5164, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4777, + "y": 0.5341, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4755, + "y": 0.536, + "confidence": 0.994 + }, + { + "name": "left_eye_outer", + "x": 0.4734, + "y": 0.5378, + "confidence": 0.993 + }, + { + "name": "right_eye_inner", + "x": 0.4797, + "y": 0.5309, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.479, + "y": 0.5308, + "confidence": 0.998 + }, + { + "name": "right_eye_outer", + "x": 0.4788, + "y": 0.5307, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4585, + "y": 0.5379, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4657, + "y": 0.5277, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4772, + "y": 0.5066, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.479, + "y": 0.5045, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4358, + "y": 0.4906, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.464, + "y": 0.4455, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5167, + "y": 0.5299, + "confidence": 0.933 + }, + { + "name": "right_elbow", + "x": 0.4482, + "y": 0.3358, + "confidence": 0.591 + }, + { + "name": "left_wrist", + "x": 0.4698, + "y": 0.5201, + "confidence": 0.649 + }, + { + "name": "right_wrist", + "x": 0.4883, + "y": 0.274, + "confidence": 0.912 + }, + { + "name": "left_pinky", + "x": 0.4595, + "y": 0.5296, + "confidence": 0.541 + }, + { + "name": "right_pinky", + "x": 0.5045, + "y": 0.2616, + "confidence": 0.907 + }, + { + "name": "left_index", + "x": 0.4565, + "y": 0.5249, + "confidence": 0.554 + }, + { + "name": "right_index", + "x": 0.5091, + "y": 0.2651, + "confidence": 0.923 + }, + { + "name": "left_thumb", + "x": 0.457, + "y": 0.5252, + "confidence": 0.522 + }, + { + "name": "right_thumb", + "x": 0.503, + "y": 0.2698, + "confidence": 0.906 + }, + { + "name": "left_hip", + "x": 0.3995, + "y": 0.2629, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4304, + "y": 0.2541, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.3716, + "y": 0.1351, + "confidence": 0.956 + }, + { + "name": "right_knee", + "x": 0.4403, + "y": 0.1264, + "confidence": 0.83 + }, + { + "name": "left_ankle", + "x": 0.32, + "y": 0.0485, + "confidence": 0.951 + }, + { + "name": "right_ankle", + "x": 0.4105, + "y": 0.0164, + "confidence": 0.851 + }, + { + "name": "left_heel", + "x": 0.3087, + "y": 0.045, + "confidence": 0.776 + }, + { + "name": "right_heel", + "x": 0.3995, + "y": 0.006, + "confidence": 0.752 + }, + { + "name": "left_foot_index", + "x": 0.3351, + "y": -0.0135, + "confidence": 0.909 + }, + { + "name": "right_foot_index", + "x": 0.4435, + "y": -0.0506, + "confidence": 0.831 + } + ] + } + ] + }, + { + "frame_index": 66, + "timestamp": 1.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0729, + "acceleration": -6.0936, + "fluidity": 0, + "expansion": 0.28, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4831, + "y": 0.5176, + "confidence": 0.996 + }, + { + "name": "left_eye_inner", + "x": 0.4782, + "y": 0.5362, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.476, + "y": 0.5382, + "confidence": 0.994 + }, + { + "name": "left_eye_outer", + "x": 0.474, + "y": 0.5399, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4802, + "y": 0.5331, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4795, + "y": 0.5331, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4793, + "y": 0.533, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4587, + "y": 0.5423, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4661, + "y": 0.5312, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4773, + "y": 0.5087, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4791, + "y": 0.5068, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4361, + "y": 0.492, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4612, + "y": 0.4467, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5171, + "y": 0.5308, + "confidence": 0.937 + }, + { + "name": "right_elbow", + "x": 0.4499, + "y": 0.3386, + "confidence": 0.565 + }, + { + "name": "left_wrist", + "x": 0.4695, + "y": 0.5313, + "confidence": 0.638 + }, + { + "name": "right_wrist", + "x": 0.4899, + "y": 0.2753, + "confidence": 0.899 + }, + { + "name": "left_pinky", + "x": 0.4587, + "y": 0.5442, + "confidence": 0.529 + }, + { + "name": "right_pinky", + "x": 0.5062, + "y": 0.2627, + "confidence": 0.897 + }, + { + "name": "left_index", + "x": 0.4562, + "y": 0.5385, + "confidence": 0.543 + }, + { + "name": "right_index", + "x": 0.511, + "y": 0.2666, + "confidence": 0.913 + }, + { + "name": "left_thumb", + "x": 0.4562, + "y": 0.5377, + "confidence": 0.511 + }, + { + "name": "right_thumb", + "x": 0.5048, + "y": 0.2711, + "confidence": 0.896 + }, + { + "name": "left_hip", + "x": 0.4026, + "y": 0.2602, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4294, + "y": 0.2528, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.3719, + "y": 0.1331, + "confidence": 0.95 + }, + { + "name": "right_knee", + "x": 0.4393, + "y": 0.1271, + "confidence": 0.827 + }, + { + "name": "left_ankle", + "x": 0.3229, + "y": 0.05, + "confidence": 0.948 + }, + { + "name": "right_ankle", + "x": 0.4108, + "y": 0.0164, + "confidence": 0.855 + }, + { + "name": "left_heel", + "x": 0.3106, + "y": 0.0479, + "confidence": 0.77 + }, + { + "name": "right_heel", + "x": 0.3996, + "y": 0.0054, + "confidence": 0.761 + }, + { + "name": "left_foot_index", + "x": 0.342, + "y": -0.0113, + "confidence": 0.902 + }, + { + "name": "right_foot_index", + "x": 0.4463, + "y": -0.0517, + "confidence": 0.835 + } + ] + } + ] + }, + { + "frame_index": 67, + "timestamp": 1.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1028, + "acceleration": 1.7929, + "fluidity": 0, + "expansion": 0.281, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0003, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4814, + "y": 0.5212, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4769, + "y": 0.5383, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4736, + "y": 0.5413, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4717, + "y": 0.5427, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4787, + "y": 0.5354, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4779, + "y": 0.5352, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4775, + "y": 0.5351, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4568, + "y": 0.5427, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4643, + "y": 0.5323, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4765, + "y": 0.5114, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4782, + "y": 0.5092, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4362, + "y": 0.4921, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4587, + "y": 0.4461, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5178, + "y": 0.5316, + "confidence": 0.939 + }, + { + "name": "right_elbow", + "x": 0.4495, + "y": 0.3384, + "confidence": 0.536 + }, + { + "name": "left_wrist", + "x": 0.4702, + "y": 0.5281, + "confidence": 0.617 + }, + { + "name": "right_wrist", + "x": 0.4909, + "y": 0.2757, + "confidence": 0.884 + }, + { + "name": "left_pinky", + "x": 0.4601, + "y": 0.5248, + "confidence": 0.509 + }, + { + "name": "right_pinky", + "x": 0.5072, + "y": 0.2636, + "confidence": 0.884 + }, + { + "name": "left_index", + "x": 0.458, + "y": 0.5262, + "confidence": 0.522 + }, + { + "name": "right_index", + "x": 0.5122, + "y": 0.2674, + "confidence": 0.902 + }, + { + "name": "left_thumb", + "x": 0.4584, + "y": 0.5272, + "confidence": 0.491 + }, + { + "name": "right_thumb", + "x": 0.5058, + "y": 0.2718, + "confidence": 0.884 + }, + { + "name": "left_hip", + "x": 0.4041, + "y": 0.2602, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4291, + "y": 0.253, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.3741, + "y": 0.1331, + "confidence": 0.939 + }, + { + "name": "right_knee", + "x": 0.4394, + "y": 0.1295, + "confidence": 0.812 + }, + { + "name": "left_ankle", + "x": 0.323, + "y": 0.0507, + "confidence": 0.937 + }, + { + "name": "right_ankle", + "x": 0.4094, + "y": 0.015, + "confidence": 0.847 + }, + { + "name": "left_heel", + "x": 0.31, + "y": 0.0489, + "confidence": 0.749 + }, + { + "name": "right_heel", + "x": 0.3986, + "y": 0.003, + "confidence": 0.759 + }, + { + "name": "left_foot_index", + "x": 0.3408, + "y": -0.0097, + "confidence": 0.881 + }, + { + "name": "right_foot_index", + "x": 0.4348, + "y": -0.0511, + "confidence": 0.825 + } + ] + } + ] + }, + { + "frame_index": 68, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1239, + "acceleration": 1.2681, + "fluidity": 0, + "expansion": 0.282, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0031, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4826, + "y": 0.5205, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4783, + "y": 0.5376, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4751, + "y": 0.5404, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.473, + "y": 0.5417, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4809, + "y": 0.5346, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4806, + "y": 0.5345, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4807, + "y": 0.5346, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4577, + "y": 0.5433, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4663, + "y": 0.5332, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4775, + "y": 0.5107, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4794, + "y": 0.5087, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4363, + "y": 0.4918, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.459, + "y": 0.4538, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5186, + "y": 0.5318, + "confidence": 0.943 + }, + { + "name": "right_elbow", + "x": 0.4519, + "y": 0.3419, + "confidence": 0.533 + }, + { + "name": "left_wrist", + "x": 0.4697, + "y": 0.5336, + "confidence": 0.615 + }, + { + "name": "right_wrist", + "x": 0.4946, + "y": 0.2847, + "confidence": 0.885 + }, + { + "name": "left_pinky", + "x": 0.4598, + "y": 0.5404, + "confidence": 0.505 + }, + { + "name": "right_pinky", + "x": 0.5105, + "y": 0.2748, + "confidence": 0.885 + }, + { + "name": "left_index", + "x": 0.457, + "y": 0.5381, + "confidence": 0.519 + }, + { + "name": "right_index", + "x": 0.5156, + "y": 0.2787, + "confidence": 0.902 + }, + { + "name": "left_thumb", + "x": 0.458, + "y": 0.5384, + "confidence": 0.489 + }, + { + "name": "right_thumb", + "x": 0.5095, + "y": 0.2825, + "confidence": 0.884 + }, + { + "name": "left_hip", + "x": 0.4076, + "y": 0.2601, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4376, + "y": 0.253, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3825, + "y": 0.1325, + "confidence": 0.941 + }, + { + "name": "right_knee", + "x": 0.4495, + "y": 0.1293, + "confidence": 0.82 + }, + { + "name": "left_ankle", + "x": 0.3332, + "y": 0.0521, + "confidence": 0.937 + }, + { + "name": "right_ankle", + "x": 0.4311, + "y": 0.0162, + "confidence": 0.855 + }, + { + "name": "left_heel", + "x": 0.3212, + "y": 0.0539, + "confidence": 0.751 + }, + { + "name": "right_heel", + "x": 0.4208, + "y": 0.0059, + "confidence": 0.769 + }, + { + "name": "left_foot_index", + "x": 0.3377, + "y": 0.0018, + "confidence": 0.883 + }, + { + "name": "right_foot_index", + "x": 0.4629, + "y": -0.0426, + "confidence": 0.834 + } + ] + } + ] + }, + { + "frame_index": 69, + "timestamp": 1.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1291, + "acceleration": 0.3109, + "fluidity": 0, + "expansion": 0.281, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4812, + "y": 0.5221, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4766, + "y": 0.5397, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4738, + "y": 0.5422, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4718, + "y": 0.544, + "confidence": 0.995 + }, + { + "name": "right_eye_inner", + "x": 0.4793, + "y": 0.5366, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4791, + "y": 0.5368, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4791, + "y": 0.5371, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4571, + "y": 0.5463, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4651, + "y": 0.5361, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4759, + "y": 0.5139, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4781, + "y": 0.5115, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4367, + "y": 0.4925, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4592, + "y": 0.4543, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5195, + "y": 0.5322, + "confidence": 0.947 + }, + { + "name": "right_elbow", + "x": 0.452, + "y": 0.3436, + "confidence": 0.52 + }, + { + "name": "left_wrist", + "x": 0.4693, + "y": 0.5328, + "confidence": 0.621 + }, + { + "name": "right_wrist", + "x": 0.4971, + "y": 0.2877, + "confidence": 0.882 + }, + { + "name": "left_pinky", + "x": 0.4595, + "y": 0.5403, + "confidence": 0.51 + }, + { + "name": "right_pinky", + "x": 0.5128, + "y": 0.2791, + "confidence": 0.883 + }, + { + "name": "left_index", + "x": 0.4562, + "y": 0.5378, + "confidence": 0.524 + }, + { + "name": "right_index", + "x": 0.5172, + "y": 0.2839, + "confidence": 0.9 + }, + { + "name": "left_thumb", + "x": 0.458, + "y": 0.5378, + "confidence": 0.495 + }, + { + "name": "right_thumb", + "x": 0.5114, + "y": 0.2871, + "confidence": 0.882 + }, + { + "name": "left_hip", + "x": 0.4087, + "y": 0.2598, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4392, + "y": 0.2526, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3847, + "y": 0.1323, + "confidence": 0.943 + }, + { + "name": "right_knee", + "x": 0.4523, + "y": 0.1292, + "confidence": 0.825 + }, + { + "name": "left_ankle", + "x": 0.3357, + "y": 0.0527, + "confidence": 0.935 + }, + { + "name": "right_ankle", + "x": 0.4312, + "y": 0.0164, + "confidence": 0.858 + }, + { + "name": "left_heel", + "x": 0.3223, + "y": 0.0549, + "confidence": 0.745 + }, + { + "name": "right_heel", + "x": 0.4211, + "y": 0.0059, + "confidence": 0.775 + }, + { + "name": "left_foot_index", + "x": 0.3505, + "y": -0.0013, + "confidence": 0.879 + }, + { + "name": "right_foot_index", + "x": 0.4703, + "y": -0.0424, + "confidence": 0.837 + } + ] + } + ] + }, + { + "frame_index": 70, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1673, + "acceleration": 2.2949, + "fluidity": 0, + "expansion": 0.281, + "total_displacement": 0.0035, + "center_displacement": { + "x": 0.0015, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4763, + "y": 0.5301, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.469, + "y": 0.5479, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4667, + "y": 0.55, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4648, + "y": 0.5515, + "confidence": 0.995 + }, + { + "name": "right_eye_inner", + "x": 0.4717, + "y": 0.545, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4712, + "y": 0.5451, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4709, + "y": 0.5454, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4522, + "y": 0.5513, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4585, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.472, + "y": 0.5222, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4742, + "y": 0.5201, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.437, + "y": 0.494, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4579, + "y": 0.4616, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5209, + "y": 0.5334, + "confidence": 0.949 + }, + { + "name": "right_elbow", + "x": 0.4525, + "y": 0.3485, + "confidence": 0.498 + }, + { + "name": "left_wrist", + "x": 0.4736, + "y": 0.5294, + "confidence": 0.596 + }, + { + "name": "right_wrist", + "x": 0.5002, + "y": 0.2961, + "confidence": 0.869 + }, + { + "name": "left_pinky", + "x": 0.462, + "y": 0.5367, + "confidence": 0.486 + }, + { + "name": "right_pinky", + "x": 0.5165, + "y": 0.2885, + "confidence": 0.871 + }, + { + "name": "left_index", + "x": 0.4596, + "y": 0.5341, + "confidence": 0.5 + }, + { + "name": "right_index", + "x": 0.5211, + "y": 0.2938, + "confidence": 0.89 + }, + { + "name": "left_thumb", + "x": 0.4624, + "y": 0.5342, + "confidence": 0.473 + }, + { + "name": "right_thumb", + "x": 0.515, + "y": 0.2965, + "confidence": 0.871 + }, + { + "name": "left_hip", + "x": 0.4117, + "y": 0.2605, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4433, + "y": 0.2558, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3971, + "y": 0.1327, + "confidence": 0.936 + }, + { + "name": "right_knee", + "x": 0.4626, + "y": 0.1319, + "confidence": 0.815 + }, + { + "name": "left_ankle", + "x": 0.3442, + "y": 0.0558, + "confidence": 0.918 + }, + { + "name": "right_ankle", + "x": 0.4497, + "y": 0.0168, + "confidence": 0.852 + }, + { + "name": "left_heel", + "x": 0.331, + "y": 0.0598, + "confidence": 0.716 + }, + { + "name": "right_heel", + "x": 0.4386, + "y": 0.0059, + "confidence": 0.771 + }, + { + "name": "left_foot_index", + "x": 0.3512, + "y": 0.0028, + "confidence": 0.852 + }, + { + "name": "right_foot_index", + "x": 0.4824, + "y": -0.0361, + "confidence": 0.831 + } + ] + } + ] + }, + { + "frame_index": 71, + "timestamp": 1.1833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.138, + "acceleration": -1.7573, + "fluidity": 0, + "expansion": 0.28, + "total_displacement": 0.0027, + "center_displacement": { + "x": -0.0008, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4393, + "y": 0.5618, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4381, + "y": 0.5744, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4378, + "y": 0.5744, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4374, + "y": 0.574, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4402, + "y": 0.5681, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.44, + "y": 0.5668, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4398, + "y": 0.5658, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4383, + "y": 0.5636, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4382, + "y": 0.5635, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4535, + "y": 0.5368, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4419, + "y": 0.5456, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4371, + "y": 0.4964, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4512, + "y": 0.4685, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5214, + "y": 0.5346, + "confidence": 0.933 + }, + { + "name": "right_elbow", + "x": 0.4521, + "y": 0.3516, + "confidence": 0.464 + }, + { + "name": "left_wrist", + "x": 0.4734, + "y": 0.5302, + "confidence": 0.543 + }, + { + "name": "right_wrist", + "x": 0.4992, + "y": 0.2977, + "confidence": 0.826 + }, + { + "name": "left_pinky", + "x": 0.466, + "y": 0.5309, + "confidence": 0.442 + }, + { + "name": "right_pinky", + "x": 0.516, + "y": 0.2925, + "confidence": 0.831 + }, + { + "name": "left_index", + "x": 0.4612, + "y": 0.532, + "confidence": 0.455 + }, + { + "name": "right_index", + "x": 0.5208, + "y": 0.2968, + "confidence": 0.852 + }, + { + "name": "left_thumb", + "x": 0.4631, + "y": 0.5327, + "confidence": 0.431 + }, + { + "name": "right_thumb", + "x": 0.5144, + "y": 0.2986, + "confidence": 0.83 + }, + { + "name": "left_hip", + "x": 0.4138, + "y": 0.2605, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4446, + "y": 0.2569, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3988, + "y": 0.1323, + "confidence": 0.907 + }, + { + "name": "right_knee", + "x": 0.4648, + "y": 0.1327, + "confidence": 0.775 + }, + { + "name": "left_ankle", + "x": 0.3463, + "y": 0.0599, + "confidence": 0.861 + }, + { + "name": "right_ankle", + "x": 0.4512, + "y": 0.0168, + "confidence": 0.816 + }, + { + "name": "left_heel", + "x": 0.3326, + "y": 0.0642, + "confidence": 0.659 + }, + { + "name": "right_heel", + "x": 0.4405, + "y": 0.006, + "confidence": 0.737 + }, + { + "name": "left_foot_index", + "x": 0.3508, + "y": 0.0047, + "confidence": 0.783 + }, + { + "name": "right_foot_index", + "x": 0.4825, + "y": -0.0369, + "confidence": 0.784 + } + ] + } + ] + }, + { + "frame_index": 72, + "timestamp": 1.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1503, + "acceleration": 0.736, + "fluidity": 0, + "expansion": 0.278, + "total_displacement": 0.0014, + "center_displacement": { + "x": -0.0014, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4524, + "y": 0.5548, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4486, + "y": 0.5697, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4478, + "y": 0.5698, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4471, + "y": 0.5698, + "confidence": 0.994 + }, + { + "name": "right_eye_inner", + "x": 0.4468, + "y": 0.5726, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4459, + "y": 0.5718, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.445, + "y": 0.5712, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4421, + "y": 0.5616, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.439, + "y": 0.5628, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4571, + "y": 0.537, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4526, + "y": 0.5389, + "confidence": 0.998 + }, + { + "name": "left_shoulder", + "x": 0.4374, + "y": 0.4969, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4446, + "y": 0.4679, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5215, + "y": 0.5346, + "confidence": 0.927 + }, + { + "name": "right_elbow", + "x": 0.4517, + "y": 0.3522, + "confidence": 0.43 + }, + { + "name": "left_wrist", + "x": 0.4763, + "y": 0.5278, + "confidence": 0.502 + }, + { + "name": "right_wrist", + "x": 0.5003, + "y": 0.2989, + "confidence": 0.789 + }, + { + "name": "left_pinky", + "x": 0.4659, + "y": 0.5313, + "confidence": 0.408 + }, + { + "name": "right_pinky", + "x": 0.5174, + "y": 0.2933, + "confidence": 0.798 + }, + { + "name": "left_index", + "x": 0.4618, + "y": 0.5309, + "confidence": 0.42 + }, + { + "name": "right_index", + "x": 0.5218, + "y": 0.2985, + "confidence": 0.821 + }, + { + "name": "left_thumb", + "x": 0.4638, + "y": 0.5318, + "confidence": 0.397 + }, + { + "name": "right_thumb", + "x": 0.5154, + "y": 0.3001, + "confidence": 0.798 + }, + { + "name": "left_hip", + "x": 0.4164, + "y": 0.2605, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4427, + "y": 0.2584, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.3994, + "y": 0.1329, + "confidence": 0.88 + }, + { + "name": "right_knee", + "x": 0.4656, + "y": 0.1359, + "confidence": 0.745 + }, + { + "name": "left_ankle", + "x": 0.3473, + "y": 0.0639, + "confidence": 0.815 + }, + { + "name": "right_ankle", + "x": 0.4517, + "y": 0.0161, + "confidence": 0.792 + }, + { + "name": "left_heel", + "x": 0.3318, + "y": 0.0679, + "confidence": 0.613 + }, + { + "name": "right_heel", + "x": 0.4406, + "y": 0.0036, + "confidence": 0.719 + }, + { + "name": "left_foot_index", + "x": 0.3529, + "y": 0.0088, + "confidence": 0.727 + }, + { + "name": "right_foot_index", + "x": 0.4891, + "y": -0.0378, + "confidence": 0.754 + } + ] + } + ] + }, + { + "frame_index": 73, + "timestamp": 1.2166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1641, + "acceleration": 0.8245, + "fluidity": 0, + "expansion": 0.276, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0037, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4532, + "y": 0.5483, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.4521, + "y": 0.5637, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4525, + "y": 0.5643, + "confidence": 0.995 + }, + { + "name": "left_eye_outer", + "x": 0.4517, + "y": 0.5648, + "confidence": 0.995 + }, + { + "name": "right_eye_inner", + "x": 0.45, + "y": 0.5646, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4518, + "y": 0.5638, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4515, + "y": 0.5633, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4435, + "y": 0.5586, + "confidence": 0.997 + }, + { + "name": "right_ear", + "x": 0.4444, + "y": 0.557, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4589, + "y": 0.534, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4542, + "y": 0.5343, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4386, + "y": 0.4966, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4472, + "y": 0.4644, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5215, + "y": 0.535, + "confidence": 0.921 + }, + { + "name": "right_elbow", + "x": 0.4544, + "y": 0.3526, + "confidence": 0.411 + }, + { + "name": "left_wrist", + "x": 0.4797, + "y": 0.524, + "confidence": 0.469 + }, + { + "name": "right_wrist", + "x": 0.5056, + "y": 0.3067, + "confidence": 0.787 + }, + { + "name": "left_pinky", + "x": 0.4717, + "y": 0.5253, + "confidence": 0.38 + }, + { + "name": "right_pinky", + "x": 0.5216, + "y": 0.3, + "confidence": 0.797 + }, + { + "name": "left_index", + "x": 0.4648, + "y": 0.5268, + "confidence": 0.391 + }, + { + "name": "right_index", + "x": 0.5256, + "y": 0.3072, + "confidence": 0.819 + }, + { + "name": "left_thumb", + "x": 0.4659, + "y": 0.5283, + "confidence": 0.37 + }, + { + "name": "right_thumb", + "x": 0.5197, + "y": 0.3097, + "confidence": 0.793 + }, + { + "name": "left_hip", + "x": 0.4226, + "y": 0.2606, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4477, + "y": 0.2589, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4122, + "y": 0.133, + "confidence": 0.883 + }, + { + "name": "right_knee", + "x": 0.4741, + "y": 0.1365, + "confidence": 0.75 + }, + { + "name": "left_ankle", + "x": 0.3579, + "y": 0.0721, + "confidence": 0.814 + }, + { + "name": "right_ankle", + "x": 0.4703, + "y": 0.0162, + "confidence": 0.803 + }, + { + "name": "left_heel", + "x": 0.3442, + "y": 0.0739, + "confidence": 0.607 + }, + { + "name": "right_heel", + "x": 0.4608, + "y": 0.0037, + "confidence": 0.729 + }, + { + "name": "left_foot_index", + "x": 0.3645, + "y": 0.0099, + "confidence": 0.724 + }, + { + "name": "right_foot_index", + "x": 0.5056, + "y": -0.0022, + "confidence": 0.766 + } + ] + } + ] + }, + { + "frame_index": 74, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1499, + "acceleration": -0.8519, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0017, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4611, + "y": 0.5474, + "confidence": 0.997 + }, + { + "name": "left_eye_inner", + "x": 0.455, + "y": 0.559, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4547, + "y": 0.5592, + "confidence": 0.996 + }, + { + "name": "left_eye_outer", + "x": 0.4527, + "y": 0.56, + "confidence": 0.995 + }, + { + "name": "right_eye_inner", + "x": 0.4555, + "y": 0.5593, + "confidence": 0.998 + }, + { + "name": "right_eye", + "x": 0.4569, + "y": 0.5589, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4565, + "y": 0.559, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4447, + "y": 0.5546, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4489, + "y": 0.5515, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4626, + "y": 0.5322, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4628, + "y": 0.5329, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4385, + "y": 0.4943, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.45, + "y": 0.463, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5223, + "y": 0.5356, + "confidence": 0.924 + }, + { + "name": "right_elbow", + "x": 0.4561, + "y": 0.3536, + "confidence": 0.407 + }, + { + "name": "left_wrist", + "x": 0.4862, + "y": 0.5212, + "confidence": 0.459 + }, + { + "name": "right_wrist", + "x": 0.5073, + "y": 0.3093, + "confidence": 0.794 + }, + { + "name": "left_pinky", + "x": 0.4793, + "y": 0.5211, + "confidence": 0.369 + }, + { + "name": "right_pinky", + "x": 0.5234, + "y": 0.3022, + "confidence": 0.803 + }, + { + "name": "left_index", + "x": 0.4709, + "y": 0.5238, + "confidence": 0.38 + }, + { + "name": "right_index", + "x": 0.5275, + "y": 0.3095, + "confidence": 0.824 + }, + { + "name": "left_thumb", + "x": 0.4712, + "y": 0.5249, + "confidence": 0.358 + }, + { + "name": "right_thumb", + "x": 0.5215, + "y": 0.3119, + "confidence": 0.797 + }, + { + "name": "left_hip", + "x": 0.4247, + "y": 0.2607, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4496, + "y": 0.259, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4128, + "y": 0.1331, + "confidence": 0.884 + }, + { + "name": "right_knee", + "x": 0.4766, + "y": 0.1373, + "confidence": 0.758 + }, + { + "name": "left_ankle", + "x": 0.3599, + "y": 0.0778, + "confidence": 0.793 + }, + { + "name": "right_ankle", + "x": 0.4711, + "y": 0.0164, + "confidence": 0.811 + }, + { + "name": "left_heel", + "x": 0.3463, + "y": 0.0811, + "confidence": 0.587 + }, + { + "name": "right_heel", + "x": 0.4608, + "y": 0.0038, + "confidence": 0.737 + }, + { + "name": "left_foot_index", + "x": 0.3658, + "y": 0.0136, + "confidence": 0.701 + }, + { + "name": "right_foot_index", + "x": 0.5063, + "y": 0.0006, + "confidence": 0.776 + } + ] + } + ] + }, + { + "frame_index": 75, + "timestamp": 1.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1683, + "acceleration": 1.1048, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0023, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4677, + "y": 0.5452, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4602, + "y": 0.5575, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4596, + "y": 0.558, + "confidence": 0.996 + }, + { + "name": "left_eye_outer", + "x": 0.4576, + "y": 0.5589, + "confidence": 0.996 + }, + { + "name": "right_eye_inner", + "x": 0.4591, + "y": 0.5572, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4592, + "y": 0.557, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4575, + "y": 0.5574, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4466, + "y": 0.5541, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4498, + "y": 0.5511, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4668, + "y": 0.5321, + "confidence": 0.997 + }, + { + "name": "mouth_right", + "x": 0.4671, + "y": 0.5321, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4428, + "y": 0.4947, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4466, + "y": 0.4656, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5238, + "y": 0.5374, + "confidence": 0.921 + }, + { + "name": "right_elbow", + "x": 0.4626, + "y": 0.3642, + "confidence": 0.382 + }, + { + "name": "left_wrist", + "x": 0.4838, + "y": 0.5233, + "confidence": 0.439 + }, + { + "name": "right_wrist", + "x": 0.5125, + "y": 0.3205, + "confidence": 0.773 + }, + { + "name": "left_pinky", + "x": 0.476, + "y": 0.5223, + "confidence": 0.352 + }, + { + "name": "right_pinky", + "x": 0.5297, + "y": 0.3129, + "confidence": 0.784 + }, + { + "name": "left_index", + "x": 0.4685, + "y": 0.5268, + "confidence": 0.361 + }, + { + "name": "right_index", + "x": 0.533, + "y": 0.3212, + "confidence": 0.804 + }, + { + "name": "left_thumb", + "x": 0.4693, + "y": 0.5279, + "confidence": 0.339 + }, + { + "name": "right_thumb", + "x": 0.5266, + "y": 0.3231, + "confidence": 0.775 + }, + { + "name": "left_hip", + "x": 0.4302, + "y": 0.2615, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4526, + "y": 0.2618, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4256, + "y": 0.1332, + "confidence": 0.892 + }, + { + "name": "right_knee", + "x": 0.4876, + "y": 0.15, + "confidence": 0.763 + }, + { + "name": "left_ankle", + "x": 0.3724, + "y": 0.0781, + "confidence": 0.809 + }, + { + "name": "right_ankle", + "x": 0.4898, + "y": 0.0229, + "confidence": 0.825 + }, + { + "name": "left_heel", + "x": 0.3597, + "y": 0.0801, + "confidence": 0.609 + }, + { + "name": "right_heel", + "x": 0.483, + "y": 0.0032, + "confidence": 0.753 + }, + { + "name": "left_foot_index", + "x": 0.3817, + "y": 0.0137, + "confidence": 0.722 + }, + { + "name": "right_foot_index", + "x": 0.5315, + "y": 0.0223, + "confidence": 0.791 + } + ] + } + ] + }, + { + "frame_index": 76, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.227, + "acceleration": 3.5246, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0031, + "center_displacement": { + "x": -0.0011, + "y": 0.0029 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4675, + "y": 0.5476, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4606, + "y": 0.5598, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4596, + "y": 0.5603, + "confidence": 0.996 + }, + { + "name": "left_eye_outer", + "x": 0.4572, + "y": 0.5616, + "confidence": 0.996 + }, + { + "name": "right_eye_inner", + "x": 0.4593, + "y": 0.5602, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4585, + "y": 0.5604, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4568, + "y": 0.5609, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4469, + "y": 0.5566, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4475, + "y": 0.5542, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.466, + "y": 0.5358, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4662, + "y": 0.5355, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4437, + "y": 0.4953, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4417, + "y": 0.4713, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5251, + "y": 0.538, + "confidence": 0.911 + }, + { + "name": "right_elbow", + "x": 0.4619, + "y": 0.3683, + "confidence": 0.356 + }, + { + "name": "left_wrist", + "x": 0.4833, + "y": 0.5285, + "confidence": 0.411 + }, + { + "name": "right_wrist", + "x": 0.5115, + "y": 0.3229, + "confidence": 0.751 + }, + { + "name": "left_pinky", + "x": 0.4744, + "y": 0.5237, + "confidence": 0.33 + }, + { + "name": "right_pinky", + "x": 0.5286, + "y": 0.3155, + "confidence": 0.764 + }, + { + "name": "left_index", + "x": 0.4675, + "y": 0.5269, + "confidence": 0.338 + }, + { + "name": "right_index", + "x": 0.5319, + "y": 0.3234, + "confidence": 0.783 + }, + { + "name": "left_thumb", + "x": 0.4682, + "y": 0.528, + "confidence": 0.317 + }, + { + "name": "right_thumb", + "x": 0.5255, + "y": 0.326, + "confidence": 0.751 + }, + { + "name": "left_hip", + "x": 0.431, + "y": 0.2631, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4514, + "y": 0.2653, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4287, + "y": 0.1333, + "confidence": 0.896 + }, + { + "name": "right_knee", + "x": 0.4903, + "y": 0.1542, + "confidence": 0.759 + }, + { + "name": "left_ankle", + "x": 0.3732, + "y": 0.0789, + "confidence": 0.819 + }, + { + "name": "right_ankle", + "x": 0.4916, + "y": 0.0235, + "confidence": 0.833 + }, + { + "name": "left_heel", + "x": 0.3608, + "y": 0.0813, + "confidence": 0.62 + }, + { + "name": "right_heel", + "x": 0.4849, + "y": 0.0018, + "confidence": 0.762 + }, + { + "name": "left_foot_index", + "x": 0.3832, + "y": 0.015, + "confidence": 0.733 + }, + { + "name": "right_foot_index", + "x": 0.5325, + "y": 0.0266, + "confidence": 0.801 + } + ] + } + ] + }, + { + "frame_index": 77, + "timestamp": 1.2833333333333332, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.204, + "acceleration": -1.38, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0054, + "y": -0.0012 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.482, + "y": 0.5447, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4754, + "y": 0.5545, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4733, + "y": 0.5546, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.4704, + "y": 0.5554, + "confidence": 0.996 + }, + { + "name": "right_eye_inner", + "x": 0.477, + "y": 0.5543, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.476, + "y": 0.5542, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4749, + "y": 0.5544, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4547, + "y": 0.5517, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4607, + "y": 0.5489, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4775, + "y": 0.5333, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4794, + "y": 0.5329, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4465, + "y": 0.4952, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4488, + "y": 0.4668, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5259, + "y": 0.538, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.4704, + "y": 0.3695, + "confidence": 0.339 + }, + { + "name": "left_wrist", + "x": 0.479, + "y": 0.5308, + "confidence": 0.425 + }, + { + "name": "right_wrist", + "x": 0.5142, + "y": 0.3345, + "confidence": 0.733 + }, + { + "name": "left_pinky", + "x": 0.4678, + "y": 0.5289, + "confidence": 0.337 + }, + { + "name": "right_pinky", + "x": 0.5309, + "y": 0.3271, + "confidence": 0.748 + }, + { + "name": "left_index", + "x": 0.4618, + "y": 0.53, + "confidence": 0.344 + }, + { + "name": "right_index", + "x": 0.5336, + "y": 0.3384, + "confidence": 0.766 + }, + { + "name": "left_thumb", + "x": 0.4633, + "y": 0.5311, + "confidence": 0.322 + }, + { + "name": "right_thumb", + "x": 0.5269, + "y": 0.3411, + "confidence": 0.734 + }, + { + "name": "left_hip", + "x": 0.4357, + "y": 0.2632, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4583, + "y": 0.2652, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4347, + "y": 0.1368, + "confidence": 0.903 + }, + { + "name": "right_knee", + "x": 0.5004, + "y": 0.1635, + "confidence": 0.775 + }, + { + "name": "left_ankle", + "x": 0.3844, + "y": 0.0817, + "confidence": 0.833 + }, + { + "name": "right_ankle", + "x": 0.5079, + "y": 0.0362, + "confidence": 0.847 + }, + { + "name": "left_heel", + "x": 0.3742, + "y": 0.0802, + "confidence": 0.636 + }, + { + "name": "right_heel", + "x": 0.5012, + "y": 0.0059, + "confidence": 0.777 + }, + { + "name": "left_foot_index", + "x": 0.3989, + "y": 0.0193, + "confidence": 0.752 + }, + { + "name": "right_foot_index", + "x": 0.5499, + "y": 0.0436, + "confidence": 0.817 + } + ] + } + ] + }, + { + "frame_index": 78, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0909, + "acceleration": -6.788, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0008, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4846, + "y": 0.5441, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.478, + "y": 0.5521, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4757, + "y": 0.5521, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.4732, + "y": 0.5526, + "confidence": 0.997 + }, + { + "name": "right_eye_inner", + "x": 0.4793, + "y": 0.5521, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4781, + "y": 0.552, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4768, + "y": 0.5523, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.4572, + "y": 0.5496, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.4623, + "y": 0.5473, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.48, + "y": 0.5323, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4813, + "y": 0.5324, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4486, + "y": 0.4952, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4491, + "y": 0.466, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5277, + "y": 0.5379, + "confidence": 0.92 + }, + { + "name": "right_elbow", + "x": 0.4721, + "y": 0.3787, + "confidence": 0.317 + }, + { + "name": "left_wrist", + "x": 0.4764, + "y": 0.536, + "confidence": 0.428 + }, + { + "name": "right_wrist", + "x": 0.517, + "y": 0.3377, + "confidence": 0.709 + }, + { + "name": "left_pinky", + "x": 0.4677, + "y": 0.5336, + "confidence": 0.338 + }, + { + "name": "right_pinky", + "x": 0.5333, + "y": 0.33, + "confidence": 0.726 + }, + { + "name": "left_index", + "x": 0.4609, + "y": 0.5329, + "confidence": 0.343 + }, + { + "name": "right_index", + "x": 0.5356, + "y": 0.3413, + "confidence": 0.743 + }, + { + "name": "left_thumb", + "x": 0.4633, + "y": 0.5337, + "confidence": 0.32 + }, + { + "name": "right_thumb", + "x": 0.5288, + "y": 0.3445, + "confidence": 0.711 + }, + { + "name": "left_hip", + "x": 0.4364, + "y": 0.2642, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4584, + "y": 0.2668, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4333, + "y": 0.1393, + "confidence": 0.909 + }, + { + "name": "right_knee", + "x": 0.5017, + "y": 0.1659, + "confidence": 0.787 + }, + { + "name": "left_ankle", + "x": 0.3861, + "y": 0.0851, + "confidence": 0.845 + }, + { + "name": "right_ankle", + "x": 0.51, + "y": 0.0405, + "confidence": 0.859 + }, + { + "name": "left_heel", + "x": 0.375, + "y": 0.0823, + "confidence": 0.651 + }, + { + "name": "right_heel", + "x": 0.5047, + "y": 0.0085, + "confidence": 0.791 + }, + { + "name": "left_foot_index", + "x": 0.3991, + "y": 0.0242, + "confidence": 0.768 + }, + { + "name": "right_foot_index", + "x": 0.5519, + "y": 0.0462, + "confidence": 0.831 + } + ] + } + ] + }, + { + "frame_index": 79, + "timestamp": 1.3166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1409, + "acceleration": 3.0028, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4843, + "y": 0.5437, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4779, + "y": 0.5514, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4756, + "y": 0.5514, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.4732, + "y": 0.5519, + "confidence": 0.997 + }, + { + "name": "right_eye_inner", + "x": 0.4791, + "y": 0.5513, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4778, + "y": 0.5512, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4765, + "y": 0.5514, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4574, + "y": 0.549, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.462, + "y": 0.5467, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4799, + "y": 0.5322, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4809, + "y": 0.5321, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4495, + "y": 0.4951, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4489, + "y": 0.4657, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5281, + "y": 0.5379, + "confidence": 0.919 + }, + { + "name": "right_elbow", + "x": 0.4812, + "y": 0.3841, + "confidence": 0.297 + }, + { + "name": "left_wrist", + "x": 0.4751, + "y": 0.5383, + "confidence": 0.427 + }, + { + "name": "right_wrist", + "x": 0.5171, + "y": 0.3385, + "confidence": 0.685 + }, + { + "name": "left_pinky", + "x": 0.4656, + "y": 0.5369, + "confidence": 0.338 + }, + { + "name": "right_pinky", + "x": 0.533, + "y": 0.3319, + "confidence": 0.705 + }, + { + "name": "left_index", + "x": 0.46, + "y": 0.5344, + "confidence": 0.341 + }, + { + "name": "right_index", + "x": 0.5354, + "y": 0.3425, + "confidence": 0.722 + }, + { + "name": "left_thumb", + "x": 0.4633, + "y": 0.5352, + "confidence": 0.317 + }, + { + "name": "right_thumb", + "x": 0.5288, + "y": 0.3457, + "confidence": 0.689 + }, + { + "name": "left_hip", + "x": 0.4356, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4579, + "y": 0.2675, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4301, + "y": 0.1394, + "confidence": 0.914 + }, + { + "name": "right_knee", + "x": 0.5023, + "y": 0.1677, + "confidence": 0.797 + }, + { + "name": "left_ankle", + "x": 0.3868, + "y": 0.0868, + "confidence": 0.853 + }, + { + "name": "right_ankle", + "x": 0.5113, + "y": 0.0417, + "confidence": 0.87 + }, + { + "name": "left_heel", + "x": 0.3743, + "y": 0.088, + "confidence": 0.659 + }, + { + "name": "right_heel", + "x": 0.5063, + "y": 0.0099, + "confidence": 0.803 + }, + { + "name": "left_foot_index", + "x": 0.3988, + "y": 0.0259, + "confidence": 0.778 + }, + { + "name": "right_foot_index", + "x": 0.5527, + "y": 0.0479, + "confidence": 0.843 + } + ] + } + ] + }, + { + "frame_index": 80, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2012, + "acceleration": 3.6158, + "fluidity": 0, + "expansion": 0.272, + "total_displacement": 0.0053, + "center_displacement": { + "x": 0.0051, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4829, + "y": 0.543, + "confidence": 0.998 + }, + { + "name": "left_eye_inner", + "x": 0.4777, + "y": 0.551, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.4752, + "y": 0.5507, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.4727, + "y": 0.5507, + "confidence": 0.997 + }, + { + "name": "right_eye_inner", + "x": 0.4787, + "y": 0.5509, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4772, + "y": 0.5506, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4755, + "y": 0.5505, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.457, + "y": 0.5444, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4616, + "y": 0.543, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4791, + "y": 0.5317, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4799, + "y": 0.5316, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4502, + "y": 0.493, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.453, + "y": 0.4625, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5293, + "y": 0.5379, + "confidence": 0.926 + }, + { + "name": "right_elbow", + "x": 0.4785, + "y": 0.3787, + "confidence": 0.291 + }, + { + "name": "left_wrist", + "x": 0.4748, + "y": 0.5428, + "confidence": 0.461 + }, + { + "name": "right_wrist", + "x": 0.5223, + "y": 0.3439, + "confidence": 0.677 + }, + { + "name": "left_pinky", + "x": 0.4644, + "y": 0.5395, + "confidence": 0.367 + }, + { + "name": "right_pinky", + "x": 0.5377, + "y": 0.3397, + "confidence": 0.697 + }, + { + "name": "left_index", + "x": 0.4597, + "y": 0.5369, + "confidence": 0.37 + }, + { + "name": "right_index", + "x": 0.54, + "y": 0.3509, + "confidence": 0.714 + }, + { + "name": "left_thumb", + "x": 0.4632, + "y": 0.5378, + "confidence": 0.345 + }, + { + "name": "right_thumb", + "x": 0.5338, + "y": 0.3521, + "confidence": 0.681 + }, + { + "name": "left_hip", + "x": 0.4404, + "y": 0.2647, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4688, + "y": 0.2674, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4376, + "y": 0.1404, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.5135, + "y": 0.178, + "confidence": 0.805 + }, + { + "name": "left_ankle", + "x": 0.3953, + "y": 0.0921, + "confidence": 0.858 + }, + { + "name": "right_ankle", + "x": 0.5286, + "y": 0.0532, + "confidence": 0.879 + }, + { + "name": "left_heel", + "x": 0.3873, + "y": 0.0919, + "confidence": 0.656 + }, + { + "name": "right_heel", + "x": 0.525, + "y": 0.0212, + "confidence": 0.814 + }, + { + "name": "left_foot_index", + "x": 0.4122, + "y": 0.0369, + "confidence": 0.784 + }, + { + "name": "right_foot_index", + "x": 0.5697, + "y": 0.0626, + "confidence": 0.854 + } + ] + } + ] + }, + { + "frame_index": 81, + "timestamp": 1.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1624, + "acceleration": -2.3292, + "fluidity": 0.125, + "expansion": 0.269, + "total_displacement": 0.0024, + "center_displacement": { + "x": -0.0017, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4824, + "y": 0.5425, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4759, + "y": 0.5509, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.4737, + "y": 0.5507, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.4716, + "y": 0.5506, + "confidence": 0.997 + }, + { + "name": "right_eye_inner", + "x": 0.4761, + "y": 0.5508, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4743, + "y": 0.5505, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4722, + "y": 0.5504, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4569, + "y": 0.5436, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.459, + "y": 0.5426, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4785, + "y": 0.5317, + "confidence": 0.998 + }, + { + "name": "mouth_right", + "x": 0.4793, + "y": 0.5313, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4514, + "y": 0.4925, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4478, + "y": 0.4679, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5293, + "y": 0.5377, + "confidence": 0.919 + }, + { + "name": "right_elbow", + "x": 0.4845, + "y": 0.4413, + "confidence": 0.265 + }, + { + "name": "left_wrist", + "x": 0.4754, + "y": 0.5426, + "confidence": 0.434 + }, + { + "name": "right_wrist", + "x": 0.503, + "y": 0.4365, + "confidence": 0.615 + }, + { + "name": "left_pinky", + "x": 0.466, + "y": 0.5402, + "confidence": 0.347 + }, + { + "name": "right_pinky", + "x": 0.503, + "y": 0.4323, + "confidence": 0.635 + }, + { + "name": "left_index", + "x": 0.4611, + "y": 0.5375, + "confidence": 0.348 + }, + { + "name": "right_index", + "x": 0.4993, + "y": 0.4313, + "confidence": 0.65 + }, + { + "name": "left_thumb", + "x": 0.4642, + "y": 0.5381, + "confidence": 0.324 + }, + { + "name": "right_thumb", + "x": 0.5002, + "y": 0.4325, + "confidence": 0.621 + }, + { + "name": "left_hip", + "x": 0.4404, + "y": 0.2649, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4661, + "y": 0.2691, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4429, + "y": 0.1406, + "confidence": 0.915 + }, + { + "name": "right_knee", + "x": 0.5137, + "y": 0.1807, + "confidence": 0.812 + }, + { + "name": "left_ankle", + "x": 0.3976, + "y": 0.0961, + "confidence": 0.852 + }, + { + "name": "right_ankle", + "x": 0.53, + "y": 0.058, + "confidence": 0.887 + }, + { + "name": "left_heel", + "x": 0.3873, + "y": 0.0956, + "confidence": 0.648 + }, + { + "name": "right_heel", + "x": 0.5263, + "y": 0.0256, + "confidence": 0.823 + }, + { + "name": "left_foot_index", + "x": 0.4126, + "y": 0.0451, + "confidence": 0.776 + }, + { + "name": "right_foot_index", + "x": 0.5722, + "y": 0.0666, + "confidence": 0.862 + } + ] + } + ] + }, + { + "frame_index": 82, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1249, + "acceleration": -2.2471, + "fluidity": 0.167, + "expansion": 0.266, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0019, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4799, + "y": 0.549, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4718, + "y": 0.5572, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.47, + "y": 0.5566, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.4682, + "y": 0.5562, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.4714, + "y": 0.558, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4695, + "y": 0.5578, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4674, + "y": 0.5578, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4559, + "y": 0.5477, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4558, + "y": 0.5481, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4777, + "y": 0.5363, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4779, + "y": 0.537, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4531, + "y": 0.493, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4441, + "y": 0.4709, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5311, + "y": 0.5377, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.4862, + "y": 0.4243, + "confidence": 0.248 + }, + { + "name": "left_wrist", + "x": 0.4787, + "y": 0.545, + "confidence": 0.437 + }, + { + "name": "right_wrist", + "x": 0.5142, + "y": 0.3867, + "confidence": 0.58 + }, + { + "name": "left_pinky", + "x": 0.469, + "y": 0.5439, + "confidence": 0.35 + }, + { + "name": "right_pinky", + "x": 0.524, + "y": 0.3854, + "confidence": 0.603 + }, + { + "name": "left_index", + "x": 0.4638, + "y": 0.5418, + "confidence": 0.351 + }, + { + "name": "right_index", + "x": 0.5259, + "y": 0.3874, + "confidence": 0.616 + }, + { + "name": "left_thumb", + "x": 0.4685, + "y": 0.5404, + "confidence": 0.327 + }, + { + "name": "right_thumb", + "x": 0.5188, + "y": 0.3909, + "confidence": 0.589 + }, + { + "name": "left_hip", + "x": 0.4468, + "y": 0.265, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4693, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4499, + "y": 0.1378, + "confidence": 0.914 + }, + { + "name": "right_knee", + "x": 0.5255, + "y": 0.1953, + "confidence": 0.804 + }, + { + "name": "left_ankle", + "x": 0.4111, + "y": 0.1105, + "confidence": 0.834 + }, + { + "name": "right_ankle", + "x": 0.5491, + "y": 0.0736, + "confidence": 0.888 + }, + { + "name": "left_heel", + "x": 0.4024, + "y": 0.1057, + "confidence": 0.629 + }, + { + "name": "right_heel", + "x": 0.5474, + "y": 0.0432, + "confidence": 0.823 + }, + { + "name": "left_foot_index", + "x": 0.426, + "y": 0.0691, + "confidence": 0.755 + }, + { + "name": "right_foot_index", + "x": 0.5927, + "y": 0.0899, + "confidence": 0.863 + } + ] + } + ] + }, + { + "frame_index": 83, + "timestamp": 1.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1108, + "acceleration": -0.8494, + "fluidity": 0.056, + "expansion": 0.266, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0011, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4781, + "y": 0.5503, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4699, + "y": 0.5589, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.4683, + "y": 0.5584, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.4666, + "y": 0.5579, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.4694, + "y": 0.5597, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4675, + "y": 0.5595, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4655, + "y": 0.5593, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4557, + "y": 0.5498, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4544, + "y": 0.5498, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4766, + "y": 0.5372, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4764, + "y": 0.5377, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4547, + "y": 0.4937, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4425, + "y": 0.4707, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5325, + "y": 0.5375, + "confidence": 0.913 + }, + { + "name": "right_elbow", + "x": 0.483, + "y": 0.4099, + "confidence": 0.229 + }, + { + "name": "left_wrist", + "x": 0.479, + "y": 0.5498, + "confidence": 0.453 + }, + { + "name": "right_wrist", + "x": 0.52, + "y": 0.371, + "confidence": 0.556 + }, + { + "name": "left_pinky", + "x": 0.4691, + "y": 0.5503, + "confidence": 0.367 + }, + { + "name": "right_pinky", + "x": 0.5345, + "y": 0.3687, + "confidence": 0.583 + }, + { + "name": "left_index", + "x": 0.4639, + "y": 0.5465, + "confidence": 0.367 + }, + { + "name": "right_index", + "x": 0.5375, + "y": 0.3748, + "confidence": 0.596 + }, + { + "name": "left_thumb", + "x": 0.4682, + "y": 0.5448, + "confidence": 0.342 + }, + { + "name": "right_thumb", + "x": 0.5291, + "y": 0.3764, + "confidence": 0.569 + }, + { + "name": "left_hip", + "x": 0.4501, + "y": 0.2649, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4705, + "y": 0.2719, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4534, + "y": 0.1381, + "confidence": 0.908 + }, + { + "name": "right_knee", + "x": 0.5278, + "y": 0.1975, + "confidence": 0.784 + }, + { + "name": "left_ankle", + "x": 0.4129, + "y": 0.1124, + "confidence": 0.815 + }, + { + "name": "right_ankle", + "x": 0.551, + "y": 0.0791, + "confidence": 0.885 + }, + { + "name": "left_heel", + "x": 0.4053, + "y": 0.1103, + "confidence": 0.609 + }, + { + "name": "right_heel", + "x": 0.55, + "y": 0.0485, + "confidence": 0.82 + }, + { + "name": "left_foot_index", + "x": 0.4251, + "y": 0.0741, + "confidence": 0.729 + }, + { + "name": "right_foot_index", + "x": 0.5941, + "y": 0.0923, + "confidence": 0.858 + } + ] + } + ] + }, + { + "frame_index": 84, + "timestamp": 1.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1722, + "acceleration": 3.6839, + "fluidity": 0.019, + "expansion": 0.254, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0021, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4781, + "y": 0.5496, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4699, + "y": 0.5583, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.4683, + "y": 0.5579, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.4667, + "y": 0.5576, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.4695, + "y": 0.5588, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4677, + "y": 0.5587, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4657, + "y": 0.5585, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.456, + "y": 0.5492, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4548, + "y": 0.5492, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4766, + "y": 0.5361, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4766, + "y": 0.5365, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.457, + "y": 0.4932, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4481, + "y": 0.4684, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5329, + "y": 0.5375, + "confidence": 0.915 + }, + { + "name": "right_elbow", + "x": 0.4821, + "y": 0.3916, + "confidence": 0.223 + }, + { + "name": "left_wrist", + "x": 0.4812, + "y": 0.552, + "confidence": 0.481 + }, + { + "name": "right_wrist", + "x": 0.5249, + "y": 0.3653, + "confidence": 0.565 + }, + { + "name": "left_pinky", + "x": 0.4719, + "y": 0.5547, + "confidence": 0.397 + }, + { + "name": "right_pinky", + "x": 0.5404, + "y": 0.3628, + "confidence": 0.594 + }, + { + "name": "left_index", + "x": 0.4667, + "y": 0.5504, + "confidence": 0.396 + }, + { + "name": "right_index", + "x": 0.5425, + "y": 0.3707, + "confidence": 0.607 + }, + { + "name": "left_thumb", + "x": 0.4711, + "y": 0.5486, + "confidence": 0.37 + }, + { + "name": "right_thumb", + "x": 0.5346, + "y": 0.372, + "confidence": 0.579 + }, + { + "name": "left_hip", + "x": 0.4495, + "y": 0.2648, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4718, + "y": 0.2715, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.4534, + "y": 0.1384, + "confidence": 0.914 + }, + { + "name": "right_knee", + "x": 0.5277, + "y": 0.197, + "confidence": 0.785 + }, + { + "name": "left_ankle", + "x": 0.4132, + "y": 0.1149, + "confidence": 0.82 + }, + { + "name": "right_ankle", + "x": 0.5513, + "y": 0.0798, + "confidence": 0.889 + }, + { + "name": "left_heel", + "x": 0.4049, + "y": 0.1132, + "confidence": 0.62 + }, + { + "name": "right_heel", + "x": 0.5504, + "y": 0.0487, + "confidence": 0.825 + }, + { + "name": "left_foot_index", + "x": 0.429, + "y": 0.0773, + "confidence": 0.736 + }, + { + "name": "right_foot_index", + "x": 0.5928, + "y": 0.0943, + "confidence": 0.863 + } + ] + } + ] + }, + { + "frame_index": 85, + "timestamp": 1.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1776, + "acceleration": 0.3241, + "fluidity": 0.006, + "expansion": 0.241, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0036, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.478, + "y": 0.5508, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4698, + "y": 0.5594, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4683, + "y": 0.5589, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.4666, + "y": 0.5586, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.4693, + "y": 0.5597, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4676, + "y": 0.5594, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4657, + "y": 0.5592, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4562, + "y": 0.5501, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4548, + "y": 0.5492, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4765, + "y": 0.5373, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4765, + "y": 0.5373, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4606, + "y": 0.4954, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.447, + "y": 0.468, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5338, + "y": 0.5378, + "confidence": 0.902 + }, + { + "name": "right_elbow", + "x": 0.4868, + "y": 0.3877, + "confidence": 0.212 + }, + { + "name": "left_wrist", + "x": 0.4833, + "y": 0.5549, + "confidence": 0.495 + }, + { + "name": "right_wrist", + "x": 0.5305, + "y": 0.3752, + "confidence": 0.57 + }, + { + "name": "left_pinky", + "x": 0.4736, + "y": 0.5585, + "confidence": 0.416 + }, + { + "name": "right_pinky", + "x": 0.5454, + "y": 0.3752, + "confidence": 0.601 + }, + { + "name": "left_index", + "x": 0.4691, + "y": 0.5535, + "confidence": 0.415 + }, + { + "name": "right_index", + "x": 0.5475, + "y": 0.3838, + "confidence": 0.614 + }, + { + "name": "left_thumb", + "x": 0.4725, + "y": 0.5514, + "confidence": 0.386 + }, + { + "name": "right_thumb", + "x": 0.5404, + "y": 0.3845, + "confidence": 0.584 + }, + { + "name": "left_hip", + "x": 0.4665, + "y": 0.2711, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4668, + "y": 0.2741, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5309, + "y": 0.2013, + "confidence": 0.89 + }, + { + "name": "right_knee", + "x": 0.5234, + "y": 0.2168, + "confidence": 0.741 + }, + { + "name": "left_ankle", + "x": 0.4764, + "y": 0.11, + "confidence": 0.816 + }, + { + "name": "right_ankle", + "x": 0.4976, + "y": 0.1097, + "confidence": 0.857 + }, + { + "name": "left_heel", + "x": 0.4622, + "y": 0.1076, + "confidence": 0.628 + }, + { + "name": "right_heel", + "x": 0.4874, + "y": 0.091, + "confidence": 0.808 + }, + { + "name": "left_foot_index", + "x": 0.4898, + "y": 0.0937, + "confidence": 0.73 + }, + { + "name": "right_foot_index", + "x": 0.5155, + "y": 0.0983, + "confidence": 0.832 + } + ] + } + ] + }, + { + "frame_index": 86, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3377, + "acceleration": 9.606, + "fluidity": 0.002, + "expansion": 0.246, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0014, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4779, + "y": 0.5509, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4693, + "y": 0.5591, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4678, + "y": 0.5587, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4664, + "y": 0.5583, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.4687, + "y": 0.5593, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.467, + "y": 0.559, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4652, + "y": 0.5587, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4562, + "y": 0.5493, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4547, + "y": 0.5483, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4766, + "y": 0.5371, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4765, + "y": 0.537, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4619, + "y": 0.4953, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4474, + "y": 0.4655, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5348, + "y": 0.5378, + "confidence": 0.886 + }, + { + "name": "right_elbow", + "x": 0.4899, + "y": 0.3871, + "confidence": 0.2 + }, + { + "name": "left_wrist", + "x": 0.4844, + "y": 0.5586, + "confidence": 0.505 + }, + { + "name": "right_wrist", + "x": 0.5314, + "y": 0.3783, + "confidence": 0.569 + }, + { + "name": "left_pinky", + "x": 0.4749, + "y": 0.563, + "confidence": 0.431 + }, + { + "name": "right_pinky", + "x": 0.5459, + "y": 0.3793, + "confidence": 0.603 + }, + { + "name": "left_index", + "x": 0.4705, + "y": 0.559, + "confidence": 0.43 + }, + { + "name": "right_index", + "x": 0.5471, + "y": 0.388, + "confidence": 0.615 + }, + { + "name": "left_thumb", + "x": 0.4737, + "y": 0.5558, + "confidence": 0.4 + }, + { + "name": "right_thumb", + "x": 0.5406, + "y": 0.3879, + "confidence": 0.583 + }, + { + "name": "left_hip", + "x": 0.4728, + "y": 0.271, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4646, + "y": 0.2747, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5296, + "y": 0.2002, + "confidence": 0.865 + }, + { + "name": "right_knee", + "x": 0.5274, + "y": 0.2181, + "confidence": 0.696 + }, + { + "name": "left_ankle", + "x": 0.4422, + "y": 0.1191, + "confidence": 0.795 + }, + { + "name": "right_ankle", + "x": 0.5005, + "y": 0.1091, + "confidence": 0.826 + }, + { + "name": "left_heel", + "x": 0.4322, + "y": 0.1157, + "confidence": 0.62 + }, + { + "name": "right_heel", + "x": 0.4901, + "y": 0.0886, + "confidence": 0.786 + }, + { + "name": "left_foot_index", + "x": 0.4527, + "y": 0.0946, + "confidence": 0.708 + }, + { + "name": "right_foot_index", + "x": 0.5265, + "y": 0.0974, + "confidence": 0.8 + } + ] + } + ] + }, + { + "frame_index": 87, + "timestamp": 1.45, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4349, + "acceleration": 5.8346, + "fluidity": 0.001, + "expansion": 0.255, + "total_displacement": 0.0124, + "center_displacement": { + "x": 0.0027, + "y": 0.0121 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4779, + "y": 0.5534, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4691, + "y": 0.5613, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4678, + "y": 0.5605, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4664, + "y": 0.5597, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4683, + "y": 0.5617, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4665, + "y": 0.5612, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4647, + "y": 0.5606, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4563, + "y": 0.5495, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4546, + "y": 0.549, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4767, + "y": 0.54, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4765, + "y": 0.54, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4663, + "y": 0.4997, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4464, + "y": 0.4681, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5381, + "y": 0.5397, + "confidence": 0.886 + }, + { + "name": "right_elbow", + "x": 0.4893, + "y": 0.3983, + "confidence": 0.209 + }, + { + "name": "left_wrist", + "x": 0.4842, + "y": 0.5648, + "confidence": 0.54 + }, + { + "name": "right_wrist", + "x": 0.5345, + "y": 0.3991, + "confidence": 0.594 + }, + { + "name": "left_pinky", + "x": 0.4753, + "y": 0.5751, + "confidence": 0.472 + }, + { + "name": "right_pinky", + "x": 0.5492, + "y": 0.401, + "confidence": 0.626 + }, + { + "name": "left_index", + "x": 0.4702, + "y": 0.5688, + "confidence": 0.472 + }, + { + "name": "right_index", + "x": 0.5494, + "y": 0.4101, + "confidence": 0.637 + }, + { + "name": "left_thumb", + "x": 0.4733, + "y": 0.5646, + "confidence": 0.442 + }, + { + "name": "right_thumb", + "x": 0.5425, + "y": 0.4097, + "confidence": 0.607 + }, + { + "name": "left_hip", + "x": 0.4847, + "y": 0.3007, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4599, + "y": 0.2863, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5602, + "y": 0.2471, + "confidence": 0.873 + }, + { + "name": "right_knee", + "x": 0.496, + "y": 0.2111, + "confidence": 0.718 + }, + { + "name": "left_ankle", + "x": 0.6012, + "y": 0.1417, + "confidence": 0.815 + }, + { + "name": "right_ankle", + "x": 0.4583, + "y": 0.1327, + "confidence": 0.839 + }, + { + "name": "left_heel", + "x": 0.6051, + "y": 0.1165, + "confidence": 0.656 + }, + { + "name": "right_heel", + "x": 0.4487, + "y": 0.1201, + "confidence": 0.803 + }, + { + "name": "left_foot_index", + "x": 0.6414, + "y": 0.1721, + "confidence": 0.735 + }, + { + "name": "right_foot_index", + "x": 0.4722, + "y": 0.1138, + "confidence": 0.813 + } + ] + } + ] + }, + { + "frame_index": 88, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.7678, + "acceleration": 19.9727, + "fluidity": 0, + "expansion": 0.249, + "total_displacement": 0.0037, + "center_displacement": { + "x": 0.0018, + "y": 0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4778, + "y": 0.5552, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4691, + "y": 0.5631, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4678, + "y": 0.5621, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4665, + "y": 0.5611, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4682, + "y": 0.5637, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4665, + "y": 0.5631, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4647, + "y": 0.5623, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4566, + "y": 0.5505, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4546, + "y": 0.5499, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.477, + "y": 0.5415, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4766, + "y": 0.5412, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4678, + "y": 0.5036, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4469, + "y": 0.4678, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5386, + "y": 0.5425, + "confidence": 0.887 + }, + { + "name": "right_elbow", + "x": 0.4888, + "y": 0.3961, + "confidence": 0.213 + }, + { + "name": "left_wrist", + "x": 0.4853, + "y": 0.5688, + "confidence": 0.576 + }, + { + "name": "right_wrist", + "x": 0.5375, + "y": 0.3994, + "confidence": 0.617 + }, + { + "name": "left_pinky", + "x": 0.4768, + "y": 0.5818, + "confidence": 0.514 + }, + { + "name": "right_pinky", + "x": 0.5517, + "y": 0.4027, + "confidence": 0.648 + }, + { + "name": "left_index", + "x": 0.471, + "y": 0.5749, + "confidence": 0.514 + }, + { + "name": "right_index", + "x": 0.5526, + "y": 0.4129, + "confidence": 0.658 + }, + { + "name": "left_thumb", + "x": 0.4737, + "y": 0.5695, + "confidence": 0.485 + }, + { + "name": "right_thumb", + "x": 0.5462, + "y": 0.4128, + "confidence": 0.629 + }, + { + "name": "left_hip", + "x": 0.4899, + "y": 0.3035, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4599, + "y": 0.2929, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5614, + "y": 0.2464, + "confidence": 0.88 + }, + { + "name": "right_knee", + "x": 0.4868, + "y": 0.2101, + "confidence": 0.736 + }, + { + "name": "left_ankle", + "x": 0.6046, + "y": 0.1441, + "confidence": 0.832 + }, + { + "name": "right_ankle", + "x": 0.4567, + "y": 0.1386, + "confidence": 0.849 + }, + { + "name": "left_heel", + "x": 0.6088, + "y": 0.1167, + "confidence": 0.689 + }, + { + "name": "right_heel", + "x": 0.4468, + "y": 0.128, + "confidence": 0.818 + }, + { + "name": "left_foot_index", + "x": 0.6438, + "y": 0.1768, + "confidence": 0.759 + }, + { + "name": "right_foot_index", + "x": 0.4666, + "y": 0.1233, + "confidence": 0.821 + } + ] + } + ] + }, + { + "frame_index": 89, + "timestamp": 1.4833333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.8745, + "acceleration": 6.4034, + "fluidity": 0, + "expansion": 0.238, + "total_displacement": 0.0274, + "center_displacement": { + "x": 0.025, + "y": 0.0112 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4767, + "y": 0.5736, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4678, + "y": 0.5774, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4668, + "y": 0.5755, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4657, + "y": 0.5736, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4676, + "y": 0.5785, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4663, + "y": 0.5773, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4647, + "y": 0.5761, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4566, + "y": 0.5585, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4557, + "y": 0.5606, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4774, + "y": 0.5585, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4776, + "y": 0.5596, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4678, + "y": 0.5049, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4898, + "y": 0.4878, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5419, + "y": 0.5435, + "confidence": 0.866 + }, + { + "name": "right_elbow", + "x": 0.5253, + "y": 0.4298, + "confidence": 0.214 + }, + { + "name": "left_wrist", + "x": 0.4925, + "y": 0.5789, + "confidence": 0.591 + }, + { + "name": "right_wrist", + "x": 0.5535, + "y": 0.4569, + "confidence": 0.611 + }, + { + "name": "left_pinky", + "x": 0.48, + "y": 0.5917, + "confidence": 0.535 + }, + { + "name": "right_pinky", + "x": 0.5645, + "y": 0.4632, + "confidence": 0.644 + }, + { + "name": "left_index", + "x": 0.4744, + "y": 0.5842, + "confidence": 0.533 + }, + { + "name": "right_index", + "x": 0.5623, + "y": 0.4684, + "confidence": 0.656 + }, + { + "name": "left_thumb", + "x": 0.478, + "y": 0.5785, + "confidence": 0.503 + }, + { + "name": "right_thumb", + "x": 0.5576, + "y": 0.4659, + "confidence": 0.627 + }, + { + "name": "left_hip", + "x": 0.4946, + "y": 0.2977, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5126, + "y": 0.3219, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.548, + "y": 0.2401, + "confidence": 0.861 + }, + { + "name": "right_knee", + "x": 0.5893, + "y": 0.3164, + "confidence": 0.693 + }, + { + "name": "left_ankle", + "x": 0.5277, + "y": 0.171, + "confidence": 0.755 + }, + { + "name": "right_ankle", + "x": 0.6584, + "y": 0.249, + "confidence": 0.808 + }, + { + "name": "left_heel", + "x": 0.5223, + "y": 0.1555, + "confidence": 0.626 + }, + { + "name": "right_heel", + "x": 0.6696, + "y": 0.2259, + "confidence": 0.772 + }, + { + "name": "left_foot_index", + "x": 0.5464, + "y": 0.1445, + "confidence": 0.689 + }, + { + "name": "right_foot_index", + "x": 0.6895, + "y": 0.2933, + "confidence": 0.781 + } + ] + } + ] + }, + { + "frame_index": 90, + "timestamp": 1.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4161, + "acceleration": -27.5038, + "fluidity": 0, + "expansion": 0.236, + "total_displacement": 0.0035, + "center_displacement": { + "x": 0.0024, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4755, + "y": 0.5756, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4663, + "y": 0.58, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4652, + "y": 0.5783, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.464, + "y": 0.5766, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4666, + "y": 0.5807, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4657, + "y": 0.5793, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4645, + "y": 0.5778, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4561, + "y": 0.5619, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.456, + "y": 0.5627, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4774, + "y": 0.5622, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4776, + "y": 0.5622, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.4668, + "y": 0.5041, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4891, + "y": 0.4917, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5429, + "y": 0.5435, + "confidence": 0.85 + }, + { + "name": "right_elbow", + "x": 0.5257, + "y": 0.4298, + "confidence": 0.209 + }, + { + "name": "left_wrist", + "x": 0.4933, + "y": 0.5796, + "confidence": 0.61 + }, + { + "name": "right_wrist", + "x": 0.5583, + "y": 0.4587, + "confidence": 0.6 + }, + { + "name": "left_pinky", + "x": 0.4817, + "y": 0.5929, + "confidence": 0.561 + }, + { + "name": "right_pinky", + "x": 0.5677, + "y": 0.4673, + "confidence": 0.639 + }, + { + "name": "left_index", + "x": 0.4766, + "y": 0.5872, + "confidence": 0.558 + }, + { + "name": "right_index", + "x": 0.5667, + "y": 0.4743, + "confidence": 0.651 + }, + { + "name": "left_thumb", + "x": 0.4798, + "y": 0.5804, + "confidence": 0.527 + }, + { + "name": "right_thumb", + "x": 0.5627, + "y": 0.4724, + "confidence": 0.624 + }, + { + "name": "left_hip", + "x": 0.4967, + "y": 0.3003, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5216, + "y": 0.3268, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5473, + "y": 0.1968, + "confidence": 0.861 + }, + { + "name": "right_knee", + "x": 0.5981, + "y": 0.3187, + "confidence": 0.677 + }, + { + "name": "left_ankle", + "x": 0.5133, + "y": 0.1817, + "confidence": 0.697 + }, + { + "name": "right_ankle", + "x": 0.6655, + "y": 0.256, + "confidence": 0.797 + }, + { + "name": "left_heel", + "x": 0.5059, + "y": 0.1824, + "confidence": 0.576 + }, + { + "name": "right_heel", + "x": 0.6777, + "y": 0.2296, + "confidence": 0.754 + }, + { + "name": "left_foot_index", + "x": 0.5256, + "y": 0.1421, + "confidence": 0.639 + }, + { + "name": "right_foot_index", + "x": 0.6942, + "y": 0.2992, + "confidence": 0.767 + } + ] + } + ] + }, + { + "frame_index": 91, + "timestamp": 1.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.6656, + "acceleration": 14.9687, + "fluidity": 0, + "expansion": 0.229, + "total_displacement": 0.0027, + "center_displacement": { + "x": -0.0006, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4741, + "y": 0.5806, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4649, + "y": 0.5821, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.464, + "y": 0.5801, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4628, + "y": 0.5782, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4656, + "y": 0.5827, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4651, + "y": 0.581, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.4643, + "y": 0.5793, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4561, + "y": 0.5625, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4577, + "y": 0.5635, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.4773, + "y": 0.5682, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4775, + "y": 0.568, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4674, + "y": 0.5037, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4897, + "y": 0.4929, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5439, + "y": 0.5433, + "confidence": 0.85 + }, + { + "name": "right_elbow", + "x": 0.5241, + "y": 0.4293, + "confidence": 0.208 + }, + { + "name": "left_wrist", + "x": 0.4937, + "y": 0.5776, + "confidence": 0.636 + }, + { + "name": "right_wrist", + "x": 0.5579, + "y": 0.4557, + "confidence": 0.598 + }, + { + "name": "left_pinky", + "x": 0.4819, + "y": 0.5895, + "confidence": 0.591 + }, + { + "name": "right_pinky", + "x": 0.5671, + "y": 0.4681, + "confidence": 0.642 + }, + { + "name": "left_index", + "x": 0.4774, + "y": 0.5846, + "confidence": 0.587 + }, + { + "name": "right_index", + "x": 0.5662, + "y": 0.4738, + "confidence": 0.655 + }, + { + "name": "left_thumb", + "x": 0.4814, + "y": 0.5783, + "confidence": 0.555 + }, + { + "name": "right_thumb", + "x": 0.5625, + "y": 0.4702, + "confidence": 0.63 + }, + { + "name": "left_hip", + "x": 0.4951, + "y": 0.3052, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5197, + "y": 0.3316, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5494, + "y": 0.1881, + "confidence": 0.87 + }, + { + "name": "right_knee", + "x": 0.5979, + "y": 0.323, + "confidence": 0.687 + }, + { + "name": "left_ankle", + "x": 0.5126, + "y": 0.1763, + "confidence": 0.658 + }, + { + "name": "right_ankle", + "x": 0.6657, + "y": 0.253, + "confidence": 0.805 + }, + { + "name": "left_heel", + "x": 0.5055, + "y": 0.1769, + "confidence": 0.54 + }, + { + "name": "right_heel", + "x": 0.6767, + "y": 0.2282, + "confidence": 0.755 + }, + { + "name": "left_foot_index", + "x": 0.5196, + "y": 0.1385, + "confidence": 0.607 + }, + { + "name": "right_foot_index", + "x": 0.6938, + "y": 0.2986, + "confidence": 0.775 + } + ] + } + ] + }, + { + "frame_index": 92, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.7633, + "acceleration": 5.8649, + "fluidity": 0, + "expansion": 0.221, + "total_displacement": 0.0236, + "center_displacement": { + "x": 0.0144, + "y": 0.0187 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4739, + "y": 0.5933, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4646, + "y": 0.5912, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4637, + "y": 0.5891, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4628, + "y": 0.5871, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.465, + "y": 0.5927, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4646, + "y": 0.5914, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.464, + "y": 0.5902, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4565, + "y": 0.5697, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4582, + "y": 0.5719, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4779, + "y": 0.5822, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4781, + "y": 0.5829, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4718, + "y": 0.5075, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5035, + "y": 0.5094, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5482, + "y": 0.5367, + "confidence": 0.861 + }, + { + "name": "right_elbow", + "x": 0.5521, + "y": 0.4903, + "confidence": 0.213 + }, + { + "name": "left_wrist", + "x": 0.5045, + "y": 0.583, + "confidence": 0.671 + }, + { + "name": "right_wrist", + "x": 0.5743, + "y": 0.507, + "confidence": 0.608 + }, + { + "name": "left_pinky", + "x": 0.489, + "y": 0.5991, + "confidence": 0.63 + }, + { + "name": "right_pinky", + "x": 0.5833, + "y": 0.5147, + "confidence": 0.654 + }, + { + "name": "left_index", + "x": 0.484, + "y": 0.5939, + "confidence": 0.626 + }, + { + "name": "right_index", + "x": 0.5815, + "y": 0.5197, + "confidence": 0.666 + }, + { + "name": "left_thumb", + "x": 0.4885, + "y": 0.5865, + "confidence": 0.596 + }, + { + "name": "right_thumb", + "x": 0.5786, + "y": 0.5167, + "confidence": 0.641 + }, + { + "name": "left_hip", + "x": 0.5183, + "y": 0.3223, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.536, + "y": 0.3691, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5949, + "y": 0.2265, + "confidence": 0.882 + }, + { + "name": "right_knee", + "x": 0.6012, + "y": 0.4106, + "confidence": 0.716 + }, + { + "name": "left_ankle", + "x": 0.5684, + "y": 0.219, + "confidence": 0.657 + }, + { + "name": "right_ankle", + "x": 0.7019, + "y": 0.3732, + "confidence": 0.822 + }, + { + "name": "left_heel", + "x": 0.5637, + "y": 0.2203, + "confidence": 0.549 + }, + { + "name": "right_heel", + "x": 0.7176, + "y": 0.3455, + "confidence": 0.778 + }, + { + "name": "left_foot_index", + "x": 0.5785, + "y": 0.1896, + "confidence": 0.614 + }, + { + "name": "right_foot_index", + "x": 0.7298, + "y": 0.4301, + "confidence": 0.796 + } + ] + } + ] + }, + { + "frame_index": 93, + "timestamp": 1.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.9659, + "acceleration": 12.1542, + "fluidity": 0, + "expansion": 0.207, + "total_displacement": 0.0034, + "center_displacement": { + "x": 0.003, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4739, + "y": 0.5963, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4647, + "y": 0.5942, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4638, + "y": 0.5921, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4628, + "y": 0.59, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.465, + "y": 0.5952, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4646, + "y": 0.5935, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.464, + "y": 0.5916, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4578, + "y": 0.5725, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.4596, + "y": 0.5736, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4787, + "y": 0.5846, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4789, + "y": 0.5842, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.474, + "y": 0.5085, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5019, + "y": 0.5062, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5504, + "y": 0.5333, + "confidence": 0.865 + }, + { + "name": "right_elbow", + "x": 0.5532, + "y": 0.4835, + "confidence": 0.205 + }, + { + "name": "left_wrist", + "x": 0.5065, + "y": 0.5862, + "confidence": 0.698 + }, + { + "name": "right_wrist", + "x": 0.5747, + "y": 0.5119, + "confidence": 0.586 + }, + { + "name": "left_pinky", + "x": 0.4918, + "y": 0.5991, + "confidence": 0.66 + }, + { + "name": "right_pinky", + "x": 0.5815, + "y": 0.5193, + "confidence": 0.635 + }, + { + "name": "left_index", + "x": 0.4871, + "y": 0.5943, + "confidence": 0.656 + }, + { + "name": "right_index", + "x": 0.5801, + "y": 0.5235, + "confidence": 0.647 + }, + { + "name": "left_thumb", + "x": 0.4916, + "y": 0.588, + "confidence": 0.624 + }, + { + "name": "right_thumb", + "x": 0.5778, + "y": 0.5202, + "confidence": 0.622 + }, + { + "name": "left_hip", + "x": 0.524, + "y": 0.3212, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5416, + "y": 0.3656, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5964, + "y": 0.232, + "confidence": 0.887 + }, + { + "name": "right_knee", + "x": 0.6049, + "y": 0.4119, + "confidence": 0.728 + }, + { + "name": "left_ankle", + "x": 0.5697, + "y": 0.2165, + "confidence": 0.629 + }, + { + "name": "right_ankle", + "x": 0.703, + "y": 0.382, + "confidence": 0.832 + }, + { + "name": "left_heel", + "x": 0.5629, + "y": 0.2172, + "confidence": 0.526 + }, + { + "name": "right_heel", + "x": 0.7182, + "y": 0.3614, + "confidence": 0.789 + }, + { + "name": "left_foot_index", + "x": 0.584, + "y": 0.1847, + "confidence": 0.591 + }, + { + "name": "right_foot_index", + "x": 0.7302, + "y": 0.4434, + "confidence": 0.809 + } + ] + } + ] + }, + { + "frame_index": 94, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.0238, + "acceleration": 3.4714, + "fluidity": 0, + "expansion": 0.187, + "total_displacement": 0.0321, + "center_displacement": { + "x": 0.011, + "y": 0.0302 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4805, + "y": 0.5983, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4702, + "y": 0.5995, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4692, + "y": 0.5977, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.468, + "y": 0.5957, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4701, + "y": 0.6005, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4693, + "y": 0.5994, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4683, + "y": 0.5982, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4616, + "y": 0.5785, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4627, + "y": 0.5807, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4844, + "y": 0.5856, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4846, + "y": 0.586, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4854, + "y": 0.5164, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5049, + "y": 0.5406, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5642, + "y": 0.5125, + "confidence": 0.875 + }, + { + "name": "right_elbow", + "x": 0.5556, + "y": 0.5181, + "confidence": 0.195 + }, + { + "name": "left_wrist", + "x": 0.5862, + "y": 0.5525, + "confidence": 0.718 + }, + { + "name": "right_wrist", + "x": 0.5661, + "y": 0.5574, + "confidence": 0.565 + }, + { + "name": "left_pinky", + "x": 0.596, + "y": 0.5617, + "confidence": 0.679 + }, + { + "name": "right_pinky", + "x": 0.5502, + "y": 0.5718, + "confidence": 0.622 + }, + { + "name": "left_index", + "x": 0.5919, + "y": 0.5735, + "confidence": 0.673 + }, + { + "name": "right_index", + "x": 0.548, + "y": 0.5721, + "confidence": 0.631 + }, + { + "name": "left_thumb", + "x": 0.5889, + "y": 0.5681, + "confidence": 0.634 + }, + { + "name": "right_thumb", + "x": 0.5516, + "y": 0.5697, + "confidence": 0.602 + }, + { + "name": "left_hip", + "x": 0.5449, + "y": 0.3578, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5504, + "y": 0.4075, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6396, + "y": 0.29, + "confidence": 0.896 + }, + { + "name": "right_knee", + "x": 0.6175, + "y": 0.4848, + "confidence": 0.751 + }, + { + "name": "left_ankle", + "x": 0.6099, + "y": 0.2741, + "confidence": 0.624 + }, + { + "name": "right_ankle", + "x": 0.7185, + "y": 0.5199, + "confidence": 0.846 + }, + { + "name": "left_heel", + "x": 0.5999, + "y": 0.2732, + "confidence": 0.519 + }, + { + "name": "right_heel", + "x": 0.7391, + "y": 0.5092, + "confidence": 0.807 + }, + { + "name": "left_foot_index", + "x": 0.6296, + "y": 0.2559, + "confidence": 0.589 + }, + { + "name": "right_foot_index", + "x": 0.7303, + "y": 0.5752, + "confidence": 0.826 + } + ] + } + ] + }, + { + "frame_index": 95, + "timestamp": 1.5833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4733, + "acceleration": -33.0285, + "fluidity": 0, + "expansion": 0.181, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0014, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4839, + "y": 0.5994, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4727, + "y": 0.602, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4717, + "y": 0.6003, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4706, + "y": 0.5984, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4724, + "y": 0.6027, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.4714, + "y": 0.6013, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4703, + "y": 0.5998, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4639, + "y": 0.5818, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4646, + "y": 0.5833, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4868, + "y": 0.5853, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4867, + "y": 0.5859, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4878, + "y": 0.5182, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.4989, + "y": 0.536, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5675, + "y": 0.5065, + "confidence": 0.86 + }, + { + "name": "right_elbow", + "x": 0.5513, + "y": 0.5207, + "confidence": 0.178 + }, + { + "name": "left_wrist", + "x": 0.5723, + "y": 0.5524, + "confidence": 0.689 + }, + { + "name": "right_wrist", + "x": 0.574, + "y": 0.5434, + "confidence": 0.521 + }, + { + "name": "left_pinky", + "x": 0.585, + "y": 0.5617, + "confidence": 0.647 + }, + { + "name": "right_pinky", + "x": 0.5795, + "y": 0.551, + "confidence": 0.577 + }, + { + "name": "left_index", + "x": 0.5797, + "y": 0.569, + "confidence": 0.638 + }, + { + "name": "right_index", + "x": 0.5785, + "y": 0.5513, + "confidence": 0.585 + }, + { + "name": "left_thumb", + "x": 0.5765, + "y": 0.5649, + "confidence": 0.595 + }, + { + "name": "right_thumb", + "x": 0.577, + "y": 0.5536, + "confidence": 0.558 + }, + { + "name": "left_hip", + "x": 0.5481, + "y": 0.3624, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5565, + "y": 0.4159, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6447, + "y": 0.2941, + "confidence": 0.897 + }, + { + "name": "right_knee", + "x": 0.6182, + "y": 0.4893, + "confidence": 0.769 + }, + { + "name": "left_ankle", + "x": 0.6108, + "y": 0.2826, + "confidence": 0.583 + }, + { + "name": "right_ankle", + "x": 0.7186, + "y": 0.5202, + "confidence": 0.855 + }, + { + "name": "left_heel", + "x": 0.5961, + "y": 0.2745, + "confidence": 0.487 + }, + { + "name": "right_heel", + "x": 0.7396, + "y": 0.5129, + "confidence": 0.819 + }, + { + "name": "left_foot_index", + "x": 0.6299, + "y": 0.2662, + "confidence": 0.555 + }, + { + "name": "right_foot_index", + "x": 0.7313, + "y": 0.575, + "confidence": 0.839 + } + ] + } + ] + }, + { + "frame_index": 96, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.7896, + "acceleration": 18.9809, + "fluidity": 0, + "expansion": 0.18, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0027, + "y": 0.0024 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4837, + "y": 0.6012, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4726, + "y": 0.6032, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4716, + "y": 0.6015, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4706, + "y": 0.5997, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4723, + "y": 0.6041, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4712, + "y": 0.603, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4702, + "y": 0.6019, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4645, + "y": 0.5827, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.465, + "y": 0.5847, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4869, + "y": 0.5877, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.4869, + "y": 0.5888, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4901, + "y": 0.5173, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.498, + "y": 0.5399, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5704, + "y": 0.5042, + "confidence": 0.863 + }, + { + "name": "right_elbow", + "x": 0.5482, + "y": 0.5249, + "confidence": 0.162 + }, + { + "name": "left_wrist", + "x": 0.5877, + "y": 0.5472, + "confidence": 0.693 + }, + { + "name": "right_wrist", + "x": 0.5539, + "y": 0.5611, + "confidence": 0.478 + }, + { + "name": "left_pinky", + "x": 0.5985, + "y": 0.5574, + "confidence": 0.646 + }, + { + "name": "right_pinky", + "x": 0.5419, + "y": 0.5635, + "confidence": 0.536 + }, + { + "name": "left_index", + "x": 0.592, + "y": 0.5678, + "confidence": 0.634 + }, + { + "name": "right_index", + "x": 0.5374, + "y": 0.569, + "confidence": 0.542 + }, + { + "name": "left_thumb", + "x": 0.5881, + "y": 0.5635, + "confidence": 0.58 + }, + { + "name": "right_thumb", + "x": 0.5405, + "y": 0.5682, + "confidence": 0.515 + }, + { + "name": "left_hip", + "x": 0.5554, + "y": 0.3637, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5588, + "y": 0.4212, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6433, + "y": 0.2895, + "confidence": 0.905 + }, + { + "name": "right_knee", + "x": 0.6223, + "y": 0.4935, + "confidence": 0.789 + }, + { + "name": "left_ankle", + "x": 0.6179, + "y": 0.2774, + "confidence": 0.558 + }, + { + "name": "right_ankle", + "x": 0.7181, + "y": 0.516, + "confidence": 0.866 + }, + { + "name": "left_heel", + "x": 0.6058, + "y": 0.2778, + "confidence": 0.47 + }, + { + "name": "right_heel", + "x": 0.7396, + "y": 0.5089, + "confidence": 0.831 + }, + { + "name": "left_foot_index", + "x": 0.6357, + "y": 0.2724, + "confidence": 0.54 + }, + { + "name": "right_foot_index", + "x": 0.7337, + "y": 0.5718, + "confidence": 0.852 + } + ] + } + ] + }, + { + "frame_index": 97, + "timestamp": 1.6166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.8704, + "acceleration": 4.8455, + "fluidity": 0, + "expansion": 0.175, + "total_displacement": 0.028, + "center_displacement": { + "x": 0.0074, + "y": 0.0269 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4918, + "y": 0.617, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.4807, + "y": 0.6173, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.4796, + "y": 0.6155, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4785, + "y": 0.6136, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4805, + "y": 0.6186, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4792, + "y": 0.6177, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.478, + "y": 0.617, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4733, + "y": 0.5974, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4736, + "y": 0.6005, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4951, + "y": 0.6013, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.4955, + "y": 0.6028, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4945, + "y": 0.523, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5097, + "y": 0.5647, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.565, + "y": 0.4671, + "confidence": 0.861 + }, + { + "name": "right_elbow", + "x": 0.5619, + "y": 0.5443, + "confidence": 0.15 + }, + { + "name": "left_wrist", + "x": 0.5712, + "y": 0.5439, + "confidence": 0.675 + }, + { + "name": "right_wrist", + "x": 0.5986, + "y": 0.5828, + "confidence": 0.463 + }, + { + "name": "left_pinky", + "x": 0.576, + "y": 0.5594, + "confidence": 0.617 + }, + { + "name": "right_pinky", + "x": 0.6022, + "y": 0.5933, + "confidence": 0.52 + }, + { + "name": "left_index", + "x": 0.5677, + "y": 0.5656, + "confidence": 0.6 + }, + { + "name": "right_index", + "x": 0.6021, + "y": 0.5983, + "confidence": 0.523 + }, + { + "name": "left_thumb", + "x": 0.5654, + "y": 0.5524, + "confidence": 0.544 + }, + { + "name": "right_thumb", + "x": 0.6005, + "y": 0.5942, + "confidence": 0.494 + }, + { + "name": "left_hip", + "x": 0.5629, + "y": 0.397, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5649, + "y": 0.4653, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6639, + "y": 0.3629, + "confidence": 0.912 + }, + { + "name": "right_knee", + "x": 0.6149, + "y": 0.5675, + "confidence": 0.808 + }, + { + "name": "left_ankle", + "x": 0.6871, + "y": 0.352, + "confidence": 0.569 + }, + { + "name": "right_ankle", + "x": 0.7116, + "y": 0.6467, + "confidence": 0.876 + }, + { + "name": "left_heel", + "x": 0.6815, + "y": 0.3321, + "confidence": 0.477 + }, + { + "name": "right_heel", + "x": 0.7339, + "y": 0.6497, + "confidence": 0.845 + }, + { + "name": "left_foot_index", + "x": 0.7324, + "y": 0.3505, + "confidence": 0.555 + }, + { + "name": "right_foot_index", + "x": 0.7171, + "y": 0.7076, + "confidence": 0.866 + } + ] + } + ] + }, + { + "frame_index": 98, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.054, + "acceleration": 11.0179, + "fluidity": 0, + "expansion": 0.16, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0008, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4939, + "y": 0.6126, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.4833, + "y": 0.6154, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.482, + "y": 0.6139, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.481, + "y": 0.6125, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.483, + "y": 0.6162, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4815, + "y": 0.6153, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4801, + "y": 0.6145, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4743, + "y": 0.5991, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4734, + "y": 0.601, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.4967, + "y": 0.5982, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.4971, + "y": 0.5988, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.4954, + "y": 0.5242, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5065, + "y": 0.5603, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.563, + "y": 0.4662, + "confidence": 0.866 + }, + { + "name": "right_elbow", + "x": 0.5589, + "y": 0.5444, + "confidence": 0.145 + }, + { + "name": "left_wrist", + "x": 0.5663, + "y": 0.5434, + "confidence": 0.687 + }, + { + "name": "right_wrist", + "x": 0.6006, + "y": 0.5814, + "confidence": 0.478 + }, + { + "name": "left_pinky", + "x": 0.5729, + "y": 0.5604, + "confidence": 0.621 + }, + { + "name": "right_pinky", + "x": 0.6066, + "y": 0.5913, + "confidence": 0.535 + }, + { + "name": "left_index", + "x": 0.5613, + "y": 0.5649, + "confidence": 0.601 + }, + { + "name": "right_index", + "x": 0.6066, + "y": 0.5986, + "confidence": 0.536 + }, + { + "name": "left_thumb", + "x": 0.5602, + "y": 0.5551, + "confidence": 0.539 + }, + { + "name": "right_thumb", + "x": 0.6044, + "y": 0.595, + "confidence": 0.506 + }, + { + "name": "left_hip", + "x": 0.5668, + "y": 0.4012, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5665, + "y": 0.4733, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6592, + "y": 0.3702, + "confidence": 0.92 + }, + { + "name": "right_knee", + "x": 0.623, + "y": 0.5572, + "confidence": 0.826 + }, + { + "name": "left_ankle", + "x": 0.6895, + "y": 0.3597, + "confidence": 0.595 + }, + { + "name": "right_ankle", + "x": 0.7065, + "y": 0.6479, + "confidence": 0.888 + }, + { + "name": "left_heel", + "x": 0.6887, + "y": 0.3605, + "confidence": 0.499 + }, + { + "name": "right_heel", + "x": 0.7266, + "y": 0.6511, + "confidence": 0.859 + }, + { + "name": "left_foot_index", + "x": 0.7384, + "y": 0.3417, + "confidence": 0.587 + }, + { + "name": "right_foot_index", + "x": 0.7101, + "y": 0.7101, + "confidence": 0.879 + } + ] + } + ] + }, + { + "frame_index": 99, + "timestamp": 1.65, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.1458, + "acceleration": 5.5066, + "fluidity": 0, + "expansion": 0.148, + "total_displacement": 0.0358, + "center_displacement": { + "x": 0.0007, + "y": 0.0358 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5001, + "y": 0.6315, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.4927, + "y": 0.6294, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.492, + "y": 0.6269, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4914, + "y": 0.6244, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4917, + "y": 0.631, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4904, + "y": 0.6299, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4887, + "y": 0.629, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4886, + "y": 0.605, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4844, + "y": 0.6123, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5044, + "y": 0.6203, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5042, + "y": 0.6224, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5061, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.508, + "y": 0.5933, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.533, + "y": 0.4404, + "confidence": 0.867 + }, + { + "name": "right_elbow", + "x": 0.554, + "y": 0.5829, + "confidence": 0.139 + }, + { + "name": "left_wrist", + "x": 0.5779, + "y": 0.4968, + "confidence": 0.708 + }, + { + "name": "right_wrist", + "x": 0.5897, + "y": 0.6139, + "confidence": 0.5 + }, + { + "name": "left_pinky", + "x": 0.5952, + "y": 0.5102, + "confidence": 0.641 + }, + { + "name": "right_pinky", + "x": 0.5989, + "y": 0.6266, + "confidence": 0.554 + }, + { + "name": "left_index", + "x": 0.586, + "y": 0.522, + "confidence": 0.621 + }, + { + "name": "right_index", + "x": 0.5988, + "y": 0.6293, + "confidence": 0.555 + }, + { + "name": "left_thumb", + "x": 0.5815, + "y": 0.5187, + "confidence": 0.554 + }, + { + "name": "right_thumb", + "x": 0.5951, + "y": 0.6239, + "confidence": 0.522 + }, + { + "name": "left_hip", + "x": 0.56, + "y": 0.4622, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5637, + "y": 0.51, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6408, + "y": 0.4858, + "confidence": 0.918 + }, + { + "name": "right_knee", + "x": 0.6161, + "y": 0.5928, + "confidence": 0.829 + }, + { + "name": "left_ankle", + "x": 0.6907, + "y": 0.439, + "confidence": 0.623 + }, + { + "name": "right_ankle", + "x": 0.667, + "y": 0.6442, + "confidence": 0.884 + }, + { + "name": "left_heel", + "x": 0.6976, + "y": 0.4243, + "confidence": 0.519 + }, + { + "name": "right_heel", + "x": 0.6807, + "y": 0.6354, + "confidence": 0.851 + }, + { + "name": "left_foot_index", + "x": 0.7275, + "y": 0.457, + "confidence": 0.618 + }, + { + "name": "right_foot_index", + "x": 0.6764, + "y": 0.6999, + "confidence": 0.883 + } + ] + } + ] + }, + { + "frame_index": 100, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.3677, + "acceleration": 13.3122, + "fluidity": 0, + "expansion": 0.153, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.0037, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5015, + "y": 0.6374, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.4926, + "y": 0.6328, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.492, + "y": 0.6303, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.4916, + "y": 0.6277, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.4917, + "y": 0.6343, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.4905, + "y": 0.633, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.4892, + "y": 0.6318, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.4899, + "y": 0.6073, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.4864, + "y": 0.6119, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.507, + "y": 0.6275, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5062, + "y": 0.6289, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5094, + "y": 0.5376, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5123, + "y": 0.5946, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5306, + "y": 0.4389, + "confidence": 0.873 + }, + { + "name": "right_elbow", + "x": 0.5545, + "y": 0.5819, + "confidence": 0.137 + }, + { + "name": "left_wrist", + "x": 0.5843, + "y": 0.494, + "confidence": 0.73 + }, + { + "name": "right_wrist", + "x": 0.5908, + "y": 0.626, + "confidence": 0.518 + }, + { + "name": "left_pinky", + "x": 0.6004, + "y": 0.5077, + "confidence": 0.661 + }, + { + "name": "right_pinky", + "x": 0.5969, + "y": 0.6447, + "confidence": 0.568 + }, + { + "name": "left_index", + "x": 0.5921, + "y": 0.5186, + "confidence": 0.642 + }, + { + "name": "right_index", + "x": 0.5967, + "y": 0.648, + "confidence": 0.57 + }, + { + "name": "left_thumb", + "x": 0.587, + "y": 0.5165, + "confidence": 0.574 + }, + { + "name": "right_thumb", + "x": 0.5932, + "y": 0.6403, + "confidence": 0.534 + }, + { + "name": "left_hip", + "x": 0.5633, + "y": 0.4529, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5675, + "y": 0.5118, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6476, + "y": 0.4835, + "confidence": 0.926 + }, + { + "name": "right_knee", + "x": 0.611, + "y": 0.596, + "confidence": 0.811 + }, + { + "name": "left_ankle", + "x": 0.7362, + "y": 0.4486, + "confidence": 0.658 + }, + { + "name": "right_ankle", + "x": 0.6599, + "y": 0.6663, + "confidence": 0.859 + }, + { + "name": "left_heel", + "x": 0.7418, + "y": 0.4515, + "confidence": 0.56 + }, + { + "name": "right_heel", + "x": 0.6741, + "y": 0.6601, + "confidence": 0.825 + }, + { + "name": "left_foot_index", + "x": 0.7799, + "y": 0.4846, + "confidence": 0.655 + }, + { + "name": "right_foot_index", + "x": 0.6702, + "y": 0.7249, + "confidence": 0.877 + } + ] + } + ] + }, + { + "frame_index": 101, + "timestamp": 1.6833333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.7294, + "acceleration": 21.7024, + "fluidity": 0, + "expansion": 0.161, + "total_displacement": 0.0454, + "center_displacement": { + "x": 0.0361, + "y": 0.0275 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5229, + "y": 0.6578, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5165, + "y": 0.6548, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5151, + "y": 0.651, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.5154, + "y": 0.6474, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5175, + "y": 0.6583, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5172, + "y": 0.6576, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5169, + "y": 0.6575, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5122, + "y": 0.6265, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5128, + "y": 0.6409, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5291, + "y": 0.6453, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.529, + "y": 0.6479, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5252, + "y": 0.5519, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5519, + "y": 0.6298, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5123, + "y": 0.4487, + "confidence": 0.884 + }, + { + "name": "right_elbow", + "x": 0.5722, + "y": 0.6174, + "confidence": 0.164 + }, + { + "name": "left_wrist", + "x": 0.5834, + "y": 0.4469, + "confidence": 0.755 + }, + { + "name": "right_wrist", + "x": 0.589, + "y": 0.6716, + "confidence": 0.552 + }, + { + "name": "left_pinky", + "x": 0.6022, + "y": 0.4481, + "confidence": 0.69 + }, + { + "name": "right_pinky", + "x": 0.5931, + "y": 0.6848, + "confidence": 0.599 + }, + { + "name": "left_index", + "x": 0.6001, + "y": 0.4636, + "confidence": 0.672 + }, + { + "name": "right_index", + "x": 0.5921, + "y": 0.6899, + "confidence": 0.602 + }, + { + "name": "left_thumb", + "x": 0.5953, + "y": 0.4654, + "confidence": 0.606 + }, + { + "name": "right_thumb", + "x": 0.5891, + "y": 0.6816, + "confidence": 0.564 + }, + { + "name": "left_hip", + "x": 0.6036, + "y": 0.4812, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6162, + "y": 0.5439, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6853, + "y": 0.4821, + "confidence": 0.933 + }, + { + "name": "right_knee", + "x": 0.656, + "y": 0.5796, + "confidence": 0.829 + }, + { + "name": "left_ankle", + "x": 0.7536, + "y": 0.5207, + "confidence": 0.69 + }, + { + "name": "right_ankle", + "x": 0.6944, + "y": 0.6248, + "confidence": 0.867 + }, + { + "name": "left_heel", + "x": 0.7608, + "y": 0.5205, + "confidence": 0.599 + }, + { + "name": "right_heel", + "x": 0.7042, + "y": 0.6165, + "confidence": 0.829 + }, + { + "name": "left_foot_index", + "x": 0.7819, + "y": 0.5814, + "confidence": 0.688 + }, + { + "name": "right_foot_index", + "x": 0.6997, + "y": 0.6689, + "confidence": 0.887 + } + ] + } + ] + }, + { + "frame_index": 102, + "timestamp": 1.7, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.336, + "acceleration": -23.6014, + "fluidity": 0, + "expansion": 0.192, + "total_displacement": 0.0183, + "center_displacement": { + "x": 0.0177, + "y": 0.0048 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5249, + "y": 0.6592, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5168, + "y": 0.6562, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5159, + "y": 0.6534, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5153, + "y": 0.6506, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5179, + "y": 0.6598, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5177, + "y": 0.6598, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5175, + "y": 0.6603, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5141, + "y": 0.6287, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5157, + "y": 0.6433, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5311, + "y": 0.6452, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5308, + "y": 0.65, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5263, + "y": 0.5535, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5596, + "y": 0.6325, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5091, + "y": 0.4503, + "confidence": 0.894 + }, + { + "name": "right_elbow", + "x": 0.5788, + "y": 0.6341, + "confidence": 0.203 + }, + { + "name": "left_wrist", + "x": 0.5801, + "y": 0.4416, + "confidence": 0.773 + }, + { + "name": "right_wrist", + "x": 0.5907, + "y": 0.6757, + "confidence": 0.579 + }, + { + "name": "left_pinky", + "x": 0.5999, + "y": 0.4415, + "confidence": 0.704 + }, + { + "name": "right_pinky", + "x": 0.5915, + "y": 0.6872, + "confidence": 0.618 + }, + { + "name": "left_index", + "x": 0.5993, + "y": 0.4582, + "confidence": 0.686 + }, + { + "name": "right_index", + "x": 0.5902, + "y": 0.6913, + "confidence": 0.62 + }, + { + "name": "left_thumb", + "x": 0.594, + "y": 0.4595, + "confidence": 0.618 + }, + { + "name": "right_thumb", + "x": 0.5892, + "y": 0.6884, + "confidence": 0.579 + }, + { + "name": "left_hip", + "x": 0.6342, + "y": 0.5013, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6477, + "y": 0.5385, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6893, + "y": 0.4966, + "confidence": 0.936 + }, + { + "name": "right_knee", + "x": 0.7042, + "y": 0.546, + "confidence": 0.839 + }, + { + "name": "left_ankle", + "x": 0.7466, + "y": 0.5329, + "confidence": 0.664 + }, + { + "name": "right_ankle", + "x": 0.7662, + "y": 0.5792, + "confidence": 0.837 + }, + { + "name": "left_heel", + "x": 0.7538, + "y": 0.5302, + "confidence": 0.572 + }, + { + "name": "right_heel", + "x": 0.7789, + "y": 0.5698, + "confidence": 0.79 + }, + { + "name": "left_foot_index", + "x": 0.7655, + "y": 0.5793, + "confidence": 0.674 + }, + { + "name": "right_foot_index", + "x": 0.7821, + "y": 0.6281, + "confidence": 0.861 + } + ] + } + ] + }, + { + "frame_index": 103, + "timestamp": 1.7166666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.8558, + "acceleration": 31.1883, + "fluidity": 0, + "expansion": 0.226, + "total_displacement": 0.0197, + "center_displacement": { + "x": -0.0008, + "y": 0.0196 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5225, + "y": 0.6575, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5138, + "y": 0.6558, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5129, + "y": 0.6531, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.512, + "y": 0.6505, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5155, + "y": 0.66, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5156, + "y": 0.6602, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5156, + "y": 0.661, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5112, + "y": 0.6298, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5182, + "y": 0.6497, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5278, + "y": 0.6429, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5287, + "y": 0.648, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5242, + "y": 0.5539, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5559, + "y": 0.6446, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.511, + "y": 0.4517, + "confidence": 0.904 + }, + { + "name": "right_elbow", + "x": 0.5872, + "y": 0.6388, + "confidence": 0.22 + }, + { + "name": "left_wrist", + "x": 0.5822, + "y": 0.4424, + "confidence": 0.794 + }, + { + "name": "right_wrist", + "x": 0.5903, + "y": 0.6838, + "confidence": 0.576 + }, + { + "name": "left_pinky", + "x": 0.6016, + "y": 0.4449, + "confidence": 0.731 + }, + { + "name": "right_pinky", + "x": 0.5902, + "y": 0.6951, + "confidence": 0.613 + }, + { + "name": "left_index", + "x": 0.602, + "y": 0.4593, + "confidence": 0.714 + }, + { + "name": "right_index", + "x": 0.5896, + "y": 0.6997, + "confidence": 0.613 + }, + { + "name": "left_thumb", + "x": 0.5987, + "y": 0.4609, + "confidence": 0.651 + }, + { + "name": "right_thumb", + "x": 0.5878, + "y": 0.6958, + "confidence": 0.569 + }, + { + "name": "left_hip", + "x": 0.6464, + "y": 0.5174, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6381, + "y": 0.5886, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6871, + "y": 0.484, + "confidence": 0.943 + }, + { + "name": "right_knee", + "x": 0.6601, + "y": 0.724, + "confidence": 0.855 + }, + { + "name": "left_ankle", + "x": 0.7559, + "y": 0.5544, + "confidence": 0.696 + }, + { + "name": "right_ankle", + "x": 0.7041, + "y": 0.8695, + "confidence": 0.852 + }, + { + "name": "left_heel", + "x": 0.7557, + "y": 0.564, + "confidence": 0.613 + }, + { + "name": "right_heel", + "x": 0.7171, + "y": 0.8718, + "confidence": 0.81 + }, + { + "name": "left_foot_index", + "x": 0.7862, + "y": 0.5941, + "confidence": 0.706 + }, + { + "name": "right_foot_index", + "x": 0.678, + "y": 0.9161, + "confidence": 0.875 + } + ] + } + ] + }, + { + "frame_index": 104, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.9279, + "acceleration": 4.3269, + "fluidity": 0, + "expansion": 0.25, + "total_displacement": 0.0509, + "center_displacement": { + "x": 0.046, + "y": 0.0217 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5386, + "y": 0.6756, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5281, + "y": 0.6687, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5277, + "y": 0.6653, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5276, + "y": 0.6619, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.528, + "y": 0.6724, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5276, + "y": 0.672, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5273, + "y": 0.672, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.53, + "y": 0.6414, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5302, + "y": 0.6552, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5474, + "y": 0.6657, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5466, + "y": 0.6701, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5746, + "y": 0.5759, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5834, + "y": 0.6677, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5239, + "y": 0.4579, + "confidence": 0.912 + }, + { + "name": "right_elbow", + "x": 0.5936, + "y": 0.702, + "confidence": 0.236 + }, + { + "name": "left_wrist", + "x": 0.6066, + "y": 0.4503, + "confidence": 0.81 + }, + { + "name": "right_wrist", + "x": 0.5911, + "y": 0.7588, + "confidence": 0.59 + }, + { + "name": "left_pinky", + "x": 0.6241, + "y": 0.4473, + "confidence": 0.745 + }, + { + "name": "right_pinky", + "x": 0.5878, + "y": 0.7795, + "confidence": 0.618 + }, + { + "name": "left_index", + "x": 0.622, + "y": 0.464, + "confidence": 0.729 + }, + { + "name": "right_index", + "x": 0.5883, + "y": 0.7802, + "confidence": 0.617 + }, + { + "name": "left_thumb", + "x": 0.6176, + "y": 0.4664, + "confidence": 0.67 + }, + { + "name": "right_thumb", + "x": 0.5878, + "y": 0.7736, + "confidence": 0.572 + }, + { + "name": "left_hip", + "x": 0.701, + "y": 0.5462, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6896, + "y": 0.6017, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7104, + "y": 0.6871, + "confidence": 0.944 + }, + { + "name": "right_knee", + "x": 0.6529, + "y": 0.7321, + "confidence": 0.832 + }, + { + "name": "left_ankle", + "x": 0.7983, + "y": 0.7717, + "confidence": 0.71 + }, + { + "name": "right_ankle", + "x": 0.7065, + "y": 0.8603, + "confidence": 0.805 + }, + { + "name": "left_heel", + "x": 0.8108, + "y": 0.767, + "confidence": 0.629 + }, + { + "name": "right_heel", + "x": 0.725, + "y": 0.8611, + "confidence": 0.779 + }, + { + "name": "left_foot_index", + "x": 0.8254, + "y": 0.8509, + "confidence": 0.726 + }, + { + "name": "right_foot_index", + "x": 0.6951, + "y": 0.9362, + "confidence": 0.858 + } + ] + } + ] + }, + { + "frame_index": 105, + "timestamp": 1.75, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.9409, + "acceleration": 0.7778, + "fluidity": 0, + "expansion": 0.268, + "total_displacement": 0.0146, + "center_displacement": { + "x": -0.0087, + "y": 0.0117 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.535, + "y": 0.6795, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5257, + "y": 0.6721, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5254, + "y": 0.6684, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5253, + "y": 0.6649, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5263, + "y": 0.6767, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5264, + "y": 0.6765, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5266, + "y": 0.6767, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.528, + "y": 0.6433, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5312, + "y": 0.6613, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5438, + "y": 0.6676, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.544, + "y": 0.6734, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5554, + "y": 0.5684, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5822, + "y": 0.682, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.5323, + "y": 0.4611, + "confidence": 0.92 + }, + { + "name": "right_elbow", + "x": 0.6034, + "y": 0.7459, + "confidence": 0.252 + }, + { + "name": "left_wrist", + "x": 0.6068, + "y": 0.4499, + "confidence": 0.828 + }, + { + "name": "right_wrist", + "x": 0.5897, + "y": 0.775, + "confidence": 0.616 + }, + { + "name": "left_pinky", + "x": 0.6255, + "y": 0.4445, + "confidence": 0.768 + }, + { + "name": "right_pinky", + "x": 0.5835, + "y": 0.7891, + "confidence": 0.64 + }, + { + "name": "left_index", + "x": 0.6258, + "y": 0.4575, + "confidence": 0.754 + }, + { + "name": "right_index", + "x": 0.5834, + "y": 0.7865, + "confidence": 0.639 + }, + { + "name": "left_thumb", + "x": 0.6209, + "y": 0.462, + "confidence": 0.701 + }, + { + "name": "right_thumb", + "x": 0.5877, + "y": 0.7815, + "confidence": 0.592 + }, + { + "name": "left_hip", + "x": 0.7046, + "y": 0.5603, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6716, + "y": 0.6277, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7955, + "y": 0.5978, + "confidence": 0.948 + }, + { + "name": "right_knee", + "x": 0.6489, + "y": 0.7796, + "confidence": 0.846 + }, + { + "name": "left_ankle", + "x": 0.8227, + "y": 0.7356, + "confidence": 0.731 + }, + { + "name": "right_ankle", + "x": 0.6719, + "y": 0.9422, + "confidence": 0.819 + }, + { + "name": "left_heel", + "x": 0.8209, + "y": 0.7471, + "confidence": 0.656 + }, + { + "name": "right_heel", + "x": 0.6932, + "y": 0.9507, + "confidence": 0.795 + }, + { + "name": "left_foot_index", + "x": 0.8645, + "y": 0.7735, + "confidence": 0.748 + }, + { + "name": "right_foot_index", + "x": 0.6633, + "y": 0.9921, + "confidence": 0.871 + } + ] + } + ] + }, + { + "frame_index": 106, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.6896, + "acceleration": -15.0791, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.0503, + "center_displacement": { + "x": 0.011, + "y": 0.0491 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5644, + "y": 0.6954, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5563, + "y": 0.6807, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5571, + "y": 0.6753, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5584, + "y": 0.67, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5509, + "y": 0.6897, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5486, + "y": 0.6911, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5464, + "y": 0.6927, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5617, + "y": 0.6439, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5468, + "y": 0.6796, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5752, + "y": 0.6866, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5699, + "y": 0.6987, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6009, + "y": 0.5988, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5881, + "y": 0.7165, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6009, + "y": 0.493, + "confidence": 0.863 + }, + { + "name": "right_elbow", + "x": 0.6082, + "y": 0.7911, + "confidence": 0.233 + }, + { + "name": "left_wrist", + "x": 0.6777, + "y": 0.4986, + "confidence": 0.769 + }, + { + "name": "right_wrist", + "x": 0.5924, + "y": 0.8518, + "confidence": 0.616 + }, + { + "name": "left_pinky", + "x": 0.6946, + "y": 0.4981, + "confidence": 0.704 + }, + { + "name": "right_pinky", + "x": 0.5835, + "y": 0.8692, + "confidence": 0.629 + }, + { + "name": "left_index", + "x": 0.6915, + "y": 0.5152, + "confidence": 0.691 + }, + { + "name": "right_index", + "x": 0.5832, + "y": 0.8693, + "confidence": 0.63 + }, + { + "name": "left_thumb", + "x": 0.6861, + "y": 0.5184, + "confidence": 0.642 + }, + { + "name": "right_thumb", + "x": 0.5871, + "y": 0.8631, + "confidence": 0.576 + }, + { + "name": "left_hip", + "x": 0.6948, + "y": 0.6211, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6742, + "y": 0.6982, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7609, + "y": 0.6962, + "confidence": 0.887 + }, + { + "name": "right_knee", + "x": 0.648, + "y": 0.8119, + "confidence": 0.807 + }, + { + "name": "left_ankle", + "x": 0.8493, + "y": 0.7667, + "confidence": 0.708 + }, + { + "name": "right_ankle", + "x": 0.6683, + "y": 0.9661, + "confidence": 0.798 + }, + { + "name": "left_heel", + "x": 0.857, + "y": 0.7726, + "confidence": 0.621 + }, + { + "name": "right_heel", + "x": 0.6842, + "y": 0.9689, + "confidence": 0.761 + }, + { + "name": "left_foot_index", + "x": 0.8886, + "y": 0.8159, + "confidence": 0.731 + }, + { + "name": "right_foot_index", + "x": 0.6661, + "y": 1.0062, + "confidence": 0.861 + } + ] + } + ] + }, + { + "frame_index": 107, + "timestamp": 1.7833333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.7213, + "acceleration": -58.0956, + "fluidity": 0, + "expansion": 0.257, + "total_displacement": 0.0018, + "center_displacement": { + "x": -0.0004, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.566, + "y": 0.7021, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5582, + "y": 0.6854, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5591, + "y": 0.6802, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5606, + "y": 0.6752, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5538, + "y": 0.6936, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.552, + "y": 0.6946, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.55, + "y": 0.696, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5629, + "y": 0.6487, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.549, + "y": 0.6807, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5762, + "y": 0.6945, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5726, + "y": 0.7036, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5851, + "y": 0.5863, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5903, + "y": 0.7173, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6065, + "y": 0.5008, + "confidence": 0.872 + }, + { + "name": "right_elbow", + "x": 0.6106, + "y": 0.795, + "confidence": 0.267 + }, + { + "name": "left_wrist", + "x": 0.6766, + "y": 0.5055, + "confidence": 0.781 + }, + { + "name": "right_wrist", + "x": 0.5944, + "y": 0.8592, + "confidence": 0.641 + }, + { + "name": "left_pinky", + "x": 0.6971, + "y": 0.506, + "confidence": 0.709 + }, + { + "name": "right_pinky", + "x": 0.5841, + "y": 0.8784, + "confidence": 0.647 + }, + { + "name": "left_index", + "x": 0.6945, + "y": 0.522, + "confidence": 0.698 + }, + { + "name": "right_index", + "x": 0.5831, + "y": 0.8759, + "confidence": 0.648 + }, + { + "name": "left_thumb", + "x": 0.6883, + "y": 0.5251, + "confidence": 0.653 + }, + { + "name": "right_thumb", + "x": 0.5868, + "y": 0.8681, + "confidence": 0.594 + }, + { + "name": "left_hip", + "x": 0.7018, + "y": 0.6254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.679, + "y": 0.6987, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7697, + "y": 0.7086, + "confidence": 0.893 + }, + { + "name": "right_knee", + "x": 0.6681, + "y": 0.7975, + "confidence": 0.816 + }, + { + "name": "left_ankle", + "x": 0.8304, + "y": 0.8172, + "confidence": 0.712 + }, + { + "name": "right_ankle", + "x": 0.6682, + "y": 0.9521, + "confidence": 0.805 + }, + { + "name": "left_heel", + "x": 0.8325, + "y": 0.8316, + "confidence": 0.616 + }, + { + "name": "right_heel", + "x": 0.6793, + "y": 0.9602, + "confidence": 0.759 + }, + { + "name": "left_foot_index", + "x": 0.8661, + "y": 0.8768, + "confidence": 0.735 + }, + { + "name": "right_foot_index", + "x": 0.6681, + "y": 0.9859, + "confidence": 0.867 + } + ] + } + ] + }, + { + "frame_index": 108, + "timestamp": 1.8, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.3683, + "acceleration": 38.8165, + "fluidity": 0, + "expansion": 0.244, + "total_displacement": 0.0061, + "center_displacement": { + "x": 0.0055, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5688, + "y": 0.6948, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5614, + "y": 0.6803, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5623, + "y": 0.6751, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.563, + "y": 0.6697, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5559, + "y": 0.6887, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5533, + "y": 0.6895, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5508, + "y": 0.6907, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5638, + "y": 0.6459, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5483, + "y": 0.6783, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.578, + "y": 0.6867, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.574, + "y": 0.6953, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.5816, + "y": 0.5831, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.5918, + "y": 0.7212, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.606, + "y": 0.5007, + "confidence": 0.884 + }, + { + "name": "right_elbow", + "x": 0.6135, + "y": 0.8051, + "confidence": 0.32 + }, + { + "name": "left_wrist", + "x": 0.675, + "y": 0.5069, + "confidence": 0.803 + }, + { + "name": "right_wrist", + "x": 0.5963, + "y": 0.8603, + "confidence": 0.667 + }, + { + "name": "left_pinky", + "x": 0.6953, + "y": 0.5073, + "confidence": 0.737 + }, + { + "name": "right_pinky", + "x": 0.5866, + "y": 0.8771, + "confidence": 0.666 + }, + { + "name": "left_index", + "x": 0.6927, + "y": 0.5242, + "confidence": 0.727 + }, + { + "name": "right_index", + "x": 0.5834, + "y": 0.8748, + "confidence": 0.669 + }, + { + "name": "left_thumb", + "x": 0.6867, + "y": 0.5279, + "confidence": 0.686 + }, + { + "name": "right_thumb", + "x": 0.5868, + "y": 0.8681, + "confidence": 0.616 + }, + { + "name": "left_hip", + "x": 0.7053, + "y": 0.6342, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6995, + "y": 0.6994, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7556, + "y": 0.6652, + "confidence": 0.883 + }, + { + "name": "right_knee", + "x": 0.7668, + "y": 0.7589, + "confidence": 0.826 + }, + { + "name": "left_ankle", + "x": 0.8078, + "y": 0.7723, + "confidence": 0.705 + }, + { + "name": "right_ankle", + "x": 0.8308, + "y": 0.8508, + "confidence": 0.81 + }, + { + "name": "left_heel", + "x": 0.8102, + "y": 0.7892, + "confidence": 0.605 + }, + { + "name": "right_heel", + "x": 0.8284, + "y": 0.865, + "confidence": 0.75 + }, + { + "name": "left_foot_index", + "x": 0.8447, + "y": 0.8041, + "confidence": 0.731 + }, + { + "name": "right_foot_index", + "x": 0.8539, + "y": 0.8978, + "confidence": 0.867 + } + ] + } + ] + }, + { + "frame_index": 109, + "timestamp": 1.8166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.5759, + "acceleration": 12.4594, + "fluidity": 0, + "expansion": 0.222, + "total_displacement": 0.0503, + "center_displacement": { + "x": 0.0323, + "y": 0.0386 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5895, + "y": 0.7109, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.5829, + "y": 0.6899, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.585, + "y": 0.6836, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5942, + "y": 0.6768, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5776, + "y": 0.7003, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5758, + "y": 0.7025, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5738, + "y": 0.704, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5974, + "y": 0.6586, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.576, + "y": 0.6968, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6084, + "y": 0.7052, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.5979, + "y": 0.7166, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6321, + "y": 0.6163, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.637, + "y": 0.7696, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6746, + "y": 0.5484, + "confidence": 0.892 + }, + { + "name": "right_elbow", + "x": 0.7267, + "y": 0.8311, + "confidence": 0.343 + }, + { + "name": "left_wrist", + "x": 0.7358, + "y": 0.5929, + "confidence": 0.816 + }, + { + "name": "right_wrist", + "x": 0.8146, + "y": 0.9249, + "confidence": 0.621 + }, + { + "name": "left_pinky", + "x": 0.7577, + "y": 0.5991, + "confidence": 0.744 + }, + { + "name": "right_pinky", + "x": 0.8283, + "y": 0.9606, + "confidence": 0.609 + }, + { + "name": "left_index", + "x": 0.7501, + "y": 0.6156, + "confidence": 0.736 + }, + { + "name": "right_index", + "x": 0.8393, + "y": 0.9571, + "confidence": 0.612 + }, + { + "name": "left_thumb", + "x": 0.7434, + "y": 0.6169, + "confidence": 0.699 + }, + { + "name": "right_thumb", + "x": 0.835, + "y": 0.9376, + "confidence": 0.565 + }, + { + "name": "left_hip", + "x": 0.7268, + "y": 0.665, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7115, + "y": 0.7412, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7474, + "y": 0.6961, + "confidence": 0.889 + }, + { + "name": "right_knee", + "x": 0.6998, + "y": 0.7973, + "confidence": 0.786 + }, + { + "name": "left_ankle", + "x": 0.813, + "y": 0.7896, + "confidence": 0.675 + }, + { + "name": "right_ankle", + "x": 0.6578, + "y": 0.9328, + "confidence": 0.755 + }, + { + "name": "left_heel", + "x": 0.816, + "y": 0.8023, + "confidence": 0.567 + }, + { + "name": "right_heel", + "x": 0.6646, + "y": 0.947, + "confidence": 0.698 + }, + { + "name": "left_foot_index", + "x": 0.8549, + "y": 0.8294, + "confidence": 0.706 + }, + { + "name": "right_foot_index", + "x": 0.6245, + "y": 0.962, + "confidence": 0.827 + } + ] + } + ] + }, + { + "frame_index": 110, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.0459, + "acceleration": -31.7999, + "fluidity": 0, + "expansion": 0.198, + "total_displacement": 0.0057, + "center_displacement": { + "x": -0.0054, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.58, + "y": 0.7147, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.577, + "y": 0.6954, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.5789, + "y": 0.6905, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.5819, + "y": 0.6853, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.5716, + "y": 0.7012, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.5705, + "y": 0.7012, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5693, + "y": 0.7012, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.5923, + "y": 0.6654, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.575, + "y": 0.6896, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.5952, + "y": 0.7114, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.589, + "y": 0.7187, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6322, + "y": 0.6284, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6128, + "y": 0.7399, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6804, + "y": 0.5529, + "confidence": 0.88 + }, + { + "name": "right_elbow", + "x": 0.6553, + "y": 0.8055, + "confidence": 0.314 + }, + { + "name": "left_wrist", + "x": 0.7378, + "y": 0.5967, + "confidence": 0.808 + }, + { + "name": "right_wrist", + "x": 0.704, + "y": 0.8597, + "confidence": 0.561 + }, + { + "name": "left_pinky", + "x": 0.7596, + "y": 0.6075, + "confidence": 0.727 + }, + { + "name": "right_pinky", + "x": 0.6681, + "y": 0.8764, + "confidence": 0.55 + }, + { + "name": "left_index", + "x": 0.7525, + "y": 0.6223, + "confidence": 0.723 + }, + { + "name": "right_index", + "x": 0.668, + "y": 0.8764, + "confidence": 0.553 + }, + { + "name": "left_thumb", + "x": 0.7463, + "y": 0.6225, + "confidence": 0.679 + }, + { + "name": "right_thumb", + "x": 0.6809, + "y": 0.8684, + "confidence": 0.51 + }, + { + "name": "left_hip", + "x": 0.7336, + "y": 0.6815, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7072, + "y": 0.7357, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7813, + "y": 0.7446, + "confidence": 0.804 + }, + { + "name": "right_knee", + "x": 0.6828, + "y": 0.8088, + "confidence": 0.726 + }, + { + "name": "left_ankle", + "x": 0.8197, + "y": 0.7901, + "confidence": 0.611 + }, + { + "name": "right_ankle", + "x": 0.6495, + "y": 0.9222, + "confidence": 0.696 + }, + { + "name": "left_heel", + "x": 0.8205, + "y": 0.7964, + "confidence": 0.515 + }, + { + "name": "right_heel", + "x": 0.6597, + "y": 0.9362, + "confidence": 0.652 + }, + { + "name": "left_foot_index", + "x": 0.8499, + "y": 0.81, + "confidence": 0.639 + }, + { + "name": "right_foot_index", + "x": 0.6216, + "y": 0.9664, + "confidence": 0.784 + } + ] + } + ] + }, + { + "frame_index": 111, + "timestamp": 1.8499999999999999, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.8968, + "acceleration": -8.9453, + "fluidity": 0, + "expansion": 0.188, + "total_displacement": 0.0203, + "center_displacement": { + "x": 0.0114, + "y": 0.0169 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6065, + "y": 0.7089, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6108, + "y": 0.6907, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6132, + "y": 0.6871, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.6152, + "y": 0.6823, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6018, + "y": 0.6988, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6005, + "y": 0.6996, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.597, + "y": 0.7006, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6259, + "y": 0.6718, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5997, + "y": 0.6962, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.6276, + "y": 0.7085, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.6135, + "y": 0.7209, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.6727, + "y": 0.6564, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6156, + "y": 0.7498, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7423, + "y": 0.6001, + "confidence": 0.81 + }, + { + "name": "right_elbow", + "x": 0.622, + "y": 0.8144, + "confidence": 0.294 + }, + { + "name": "left_wrist", + "x": 0.7889, + "y": 0.6803, + "confidence": 0.739 + }, + { + "name": "right_wrist", + "x": 0.6081, + "y": 0.9114, + "confidence": 0.534 + }, + { + "name": "left_pinky", + "x": 0.8059, + "y": 0.6963, + "confidence": 0.661 + }, + { + "name": "right_pinky", + "x": 0.5889, + "y": 0.9353, + "confidence": 0.513 + }, + { + "name": "left_index", + "x": 0.7975, + "y": 0.7083, + "confidence": 0.658 + }, + { + "name": "right_index", + "x": 0.5934, + "y": 0.9391, + "confidence": 0.518 + }, + { + "name": "left_thumb", + "x": 0.7903, + "y": 0.7059, + "confidence": 0.617 + }, + { + "name": "right_thumb", + "x": 0.6042, + "y": 0.9291, + "confidence": 0.476 + }, + { + "name": "left_hip", + "x": 0.7378, + "y": 0.6969, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7052, + "y": 0.7497, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7656, + "y": 0.7903, + "confidence": 0.726 + }, + { + "name": "right_knee", + "x": 0.69, + "y": 0.8224, + "confidence": 0.656 + }, + { + "name": "left_ankle", + "x": 0.8194, + "y": 0.8641, + "confidence": 0.552 + }, + { + "name": "right_ankle", + "x": 0.65, + "y": 0.934, + "confidence": 0.628 + }, + { + "name": "left_heel", + "x": 0.8257, + "y": 0.8668, + "confidence": 0.465 + }, + { + "name": "right_heel", + "x": 0.67, + "y": 0.9479, + "confidence": 0.589 + }, + { + "name": "left_foot_index", + "x": 0.8402, + "y": 0.9261, + "confidence": 0.577 + }, + { + "name": "right_foot_index", + "x": 0.6518, + "y": 0.9722, + "confidence": 0.71 + } + ] + } + ] + }, + { + "frame_index": 112, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.575, + "acceleration": -19.3073, + "fluidity": 0, + "expansion": 0.178, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.0005, + "y": 0.007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6166, + "y": 0.7108, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6142, + "y": 0.6941, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6168, + "y": 0.689, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.6187, + "y": 0.6863, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6045, + "y": 0.699, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.603, + "y": 0.7, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.5991, + "y": 0.703, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6232, + "y": 0.6679, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.5967, + "y": 0.6988, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.6309, + "y": 0.7092, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.6174, + "y": 0.7235, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.6753, + "y": 0.6575, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6143, + "y": 0.7542, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7444, + "y": 0.6058, + "confidence": 0.751 + }, + { + "name": "right_elbow", + "x": 0.612, + "y": 0.8191, + "confidence": 0.28 + }, + { + "name": "left_wrist", + "x": 0.7898, + "y": 0.6817, + "confidence": 0.682 + }, + { + "name": "right_wrist", + "x": 0.5945, + "y": 0.9134, + "confidence": 0.52 + }, + { + "name": "left_pinky", + "x": 0.8059, + "y": 0.6999, + "confidence": 0.605 + }, + { + "name": "right_pinky", + "x": 0.5808, + "y": 0.938, + "confidence": 0.484 + }, + { + "name": "left_index", + "x": 0.7974, + "y": 0.7113, + "confidence": 0.603 + }, + { + "name": "right_index", + "x": 0.582, + "y": 0.943, + "confidence": 0.492 + }, + { + "name": "left_thumb", + "x": 0.7917, + "y": 0.7091, + "confidence": 0.564 + }, + { + "name": "right_thumb", + "x": 0.5906, + "y": 0.9332, + "confidence": 0.45 + }, + { + "name": "left_hip", + "x": 0.7353, + "y": 0.7097, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7045, + "y": 0.7596, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7653, + "y": 0.793, + "confidence": 0.653 + }, + { + "name": "right_knee", + "x": 0.7337, + "y": 0.858, + "confidence": 0.593 + }, + { + "name": "left_ankle", + "x": 0.8075, + "y": 0.863, + "confidence": 0.497 + }, + { + "name": "right_ankle", + "x": 0.7606, + "y": 0.9524, + "confidence": 0.567 + }, + { + "name": "left_heel", + "x": 0.8128, + "y": 0.8685, + "confidence": 0.419 + }, + { + "name": "right_heel", + "x": 0.7668, + "y": 0.9618, + "confidence": 0.532 + }, + { + "name": "left_foot_index", + "x": 0.8256, + "y": 0.9109, + "confidence": 0.52 + }, + { + "name": "right_foot_index", + "x": 0.7755, + "y": 0.9887, + "confidence": 0.641 + } + ] + } + ] + }, + { + "frame_index": 113, + "timestamp": 1.8833333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4536, + "acceleration": -7.2894, + "fluidity": 0, + "expansion": 0.166, + "total_displacement": 0.0067, + "center_displacement": { + "x": -0.0015, + "y": -0.0066 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6417, + "y": 0.7025, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6339, + "y": 0.6902, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.6355, + "y": 0.6856, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.6374, + "y": 0.6824, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6277, + "y": 0.695, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6254, + "y": 0.6961, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.6229, + "y": 0.6993, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6378, + "y": 0.6653, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.6175, + "y": 0.7054, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.6515, + "y": 0.7072, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.6445, + "y": 0.7141, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.6919, + "y": 0.6455, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6147, + "y": 0.7565, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7839, + "y": 0.6463, + "confidence": 0.764 + }, + { + "name": "right_elbow", + "x": 0.608, + "y": 0.8174, + "confidence": 0.303 + }, + { + "name": "left_wrist", + "x": 0.8217, + "y": 0.7442, + "confidence": 0.702 + }, + { + "name": "right_wrist", + "x": 0.5723, + "y": 0.8907, + "confidence": 0.522 + }, + { + "name": "left_pinky", + "x": 0.8362, + "y": 0.7577, + "confidence": 0.622 + }, + { + "name": "right_pinky", + "x": 0.5591, + "y": 0.9096, + "confidence": 0.48 + }, + { + "name": "left_index", + "x": 0.8291, + "y": 0.768, + "confidence": 0.624 + }, + { + "name": "right_index", + "x": 0.5568, + "y": 0.9126, + "confidence": 0.492 + }, + { + "name": "left_thumb", + "x": 0.8228, + "y": 0.767, + "confidence": 0.577 + }, + { + "name": "right_thumb", + "x": 0.5646, + "y": 0.9057, + "confidence": 0.446 + }, + { + "name": "left_hip", + "x": 0.7231, + "y": 0.6952, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6938, + "y": 0.7577, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7989, + "y": 0.7467, + "confidence": 0.59 + }, + { + "name": "right_knee", + "x": 0.7073, + "y": 0.8238, + "confidence": 0.611 + }, + { + "name": "left_ankle", + "x": 0.8137, + "y": 0.7909, + "confidence": 0.45 + }, + { + "name": "right_ankle", + "x": 0.7752, + "y": 0.8735, + "confidence": 0.572 + }, + { + "name": "left_heel", + "x": 0.8138, + "y": 0.8008, + "confidence": 0.379 + }, + { + "name": "right_heel", + "x": 0.7866, + "y": 0.8646, + "confidence": 0.506 + }, + { + "name": "left_foot_index", + "x": 0.8344, + "y": 0.8497, + "confidence": 0.472 + }, + { + "name": "right_foot_index", + "x": 0.7996, + "y": 0.905, + "confidence": 0.65 + } + ] + } + ] + }, + { + "frame_index": 114, + "timestamp": 1.9, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3551, + "acceleration": -5.9088, + "fluidity": 0, + "expansion": 0.169, + "total_displacement": 0.0064, + "center_displacement": { + "x": -0.0008, + "y": 0.0063 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6541, + "y": 0.7018, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6475, + "y": 0.6871, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.6487, + "y": 0.6828, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.6503, + "y": 0.6796, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6424, + "y": 0.6929, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.6405, + "y": 0.6945, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.6385, + "y": 0.6973, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6491, + "y": 0.6726, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.6322, + "y": 0.7045, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.6612, + "y": 0.7003, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.6558, + "y": 0.709, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.6904, + "y": 0.658, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6245, + "y": 0.7539, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7854, + "y": 0.6487, + "confidence": 0.776 + }, + { + "name": "right_elbow", + "x": 0.6085, + "y": 0.8216, + "confidence": 0.327 + }, + { + "name": "left_wrist", + "x": 0.8209, + "y": 0.7406, + "confidence": 0.723 + }, + { + "name": "right_wrist", + "x": 0.573, + "y": 0.8873, + "confidence": 0.545 + }, + { + "name": "left_pinky", + "x": 0.8351, + "y": 0.7589, + "confidence": 0.644 + }, + { + "name": "right_pinky", + "x": 0.5562, + "y": 0.9052, + "confidence": 0.502 + }, + { + "name": "left_index", + "x": 0.8262, + "y": 0.7695, + "confidence": 0.648 + }, + { + "name": "right_index", + "x": 0.5538, + "y": 0.9084, + "confidence": 0.517 + }, + { + "name": "left_thumb", + "x": 0.8208, + "y": 0.7678, + "confidence": 0.597 + }, + { + "name": "right_thumb", + "x": 0.5602, + "y": 0.9018, + "confidence": 0.466 + }, + { + "name": "left_hip", + "x": 0.7151, + "y": 0.7087, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6902, + "y": 0.7592, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7805, + "y": 0.7987, + "confidence": 0.539 + }, + { + "name": "right_knee", + "x": 0.7006, + "y": 0.8294, + "confidence": 0.623 + }, + { + "name": "left_ankle", + "x": 0.807, + "y": 0.856, + "confidence": 0.417 + }, + { + "name": "right_ankle", + "x": 0.7417, + "y": 0.8732, + "confidence": 0.578 + }, + { + "name": "left_heel", + "x": 0.8081, + "y": 0.86, + "confidence": 0.349 + }, + { + "name": "right_heel", + "x": 0.7509, + "y": 0.8665, + "confidence": 0.487 + }, + { + "name": "left_foot_index", + "x": 0.8288, + "y": 0.8918, + "confidence": 0.442 + }, + { + "name": "right_foot_index", + "x": 0.7531, + "y": 0.8973, + "confidence": 0.657 + } + ] + } + ] + }, + { + "frame_index": 115, + "timestamp": 1.9166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1952, + "acceleration": -4.9832, + "fluidity": 0, + "expansion": 0.117, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0006, + "y": -0.0038 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6647, + "y": 0.6948, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6584, + "y": 0.6801, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.6603, + "y": 0.676, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.6626, + "y": 0.6725, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.6512, + "y": 0.6912, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6484, + "y": 0.6938, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6455, + "y": 0.6958, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.6624, + "y": 0.6684, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6384, + "y": 0.7029, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.6743, + "y": 0.6995, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.6663, + "y": 0.7067, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.7028, + "y": 0.6515, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6209, + "y": 0.7569, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.786, + "y": 0.6502, + "confidence": 0.769 + }, + { + "name": "right_elbow", + "x": 0.6034, + "y": 0.8161, + "confidence": 0.345 + }, + { + "name": "left_wrist", + "x": 0.8193, + "y": 0.7393, + "confidence": 0.736 + }, + { + "name": "right_wrist", + "x": 0.571, + "y": 0.8837, + "confidence": 0.56 + }, + { + "name": "left_pinky", + "x": 0.8349, + "y": 0.7572, + "confidence": 0.654 + }, + { + "name": "right_pinky", + "x": 0.555, + "y": 0.9003, + "confidence": 0.512 + }, + { + "name": "left_index", + "x": 0.8236, + "y": 0.77, + "confidence": 0.661 + }, + { + "name": "right_index", + "x": 0.5546, + "y": 0.9036, + "confidence": 0.53 + }, + { + "name": "left_thumb", + "x": 0.8181, + "y": 0.7679, + "confidence": 0.608 + }, + { + "name": "right_thumb", + "x": 0.562, + "y": 0.8973, + "confidence": 0.476 + }, + { + "name": "left_hip", + "x": 0.7167, + "y": 0.7034, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6821, + "y": 0.7529, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7787, + "y": 0.8097, + "confidence": 0.501 + }, + { + "name": "right_knee", + "x": 0.6538, + "y": 0.8209, + "confidence": 0.632 + }, + { + "name": "left_ankle", + "x": 0.8091, + "y": 0.9279, + "confidence": 0.405 + }, + { + "name": "right_ankle", + "x": 0.6253, + "y": 0.9215, + "confidence": 0.591 + }, + { + "name": "left_heel", + "x": 0.813, + "y": 0.941, + "confidence": 0.332 + }, + { + "name": "right_heel", + "x": 0.6426, + "y": 0.9467, + "confidence": 0.477 + }, + { + "name": "left_foot_index", + "x": 0.8144, + "y": 0.9771, + "confidence": 0.451 + }, + { + "name": "right_foot_index", + "x": 0.6152, + "y": 0.9604, + "confidence": 0.681 + } + ] + } + ] + }, + { + "frame_index": 116, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0651, + "acceleration": -1.6611, + "fluidity": 0, + "expansion": 0.108, + "total_displacement": 0 + } + }, + { + "frame_index": 117, + "timestamp": 1.95, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.3383, + "acceleration": 18.443, + "fluidity": 0, + "expansion": 0.176, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6894, + "y": 0.6643, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.6905, + "y": 0.6456, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.6942, + "y": 0.6427, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.6974, + "y": 0.6404, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.679, + "y": 0.6528, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.6753, + "y": 0.6539, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.6719, + "y": 0.6543, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7008, + "y": 0.6354, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6654, + "y": 0.6504, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.697, + "y": 0.6667, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.6853, + "y": 0.6735, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.7347, + "y": 0.6458, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6438, + "y": 0.693, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8071, + "y": 0.6779, + "confidence": 0.792 + }, + { + "name": "right_elbow", + "x": 0.6064, + "y": 0.7672, + "confidence": 0.409 + }, + { + "name": "left_wrist", + "x": 0.8336, + "y": 0.7606, + "confidence": 0.763 + }, + { + "name": "right_wrist", + "x": 0.5585, + "y": 0.8424, + "confidence": 0.603 + }, + { + "name": "left_pinky", + "x": 0.8463, + "y": 0.7756, + "confidence": 0.688 + }, + { + "name": "right_pinky", + "x": 0.5395, + "y": 0.8561, + "confidence": 0.559 + }, + { + "name": "left_index", + "x": 0.8369, + "y": 0.7823, + "confidence": 0.695 + }, + { + "name": "right_index", + "x": 0.5379, + "y": 0.8585, + "confidence": 0.576 + }, + { + "name": "left_thumb", + "x": 0.8291, + "y": 0.7799, + "confidence": 0.647 + }, + { + "name": "right_thumb", + "x": 0.5468, + "y": 0.8564, + "confidence": 0.527 + }, + { + "name": "left_hip", + "x": 0.7396, + "y": 0.7768, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6841, + "y": 0.7799, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8002, + "y": 0.8366, + "confidence": 0.55 + }, + { + "name": "right_knee", + "x": 0.6263, + "y": 0.8178, + "confidence": 0.668 + }, + { + "name": "left_ankle", + "x": 0.7932, + "y": 0.9717, + "confidence": 0.462 + }, + { + "name": "right_ankle", + "x": 0.6121, + "y": 0.9749, + "confidence": 0.628 + }, + { + "name": "left_heel", + "x": 0.7881, + "y": 0.9889, + "confidence": 0.394 + }, + { + "name": "right_heel", + "x": 0.6154, + "y": 0.9927, + "confidence": 0.516 + }, + { + "name": "left_foot_index", + "x": 0.8157, + "y": 0.9982, + "confidence": 0.503 + }, + { + "name": "right_foot_index", + "x": 0.5928, + "y": 1.027, + "confidence": 0.708 + } + ] + } + ] + }, + { + "frame_index": 118, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4927, + "acceleration": 9.9451, + "fluidity": 0, + "expansion": 0.201, + "total_displacement": 0.0158, + "center_displacement": { + "x": 0.0123, + "y": -0.01 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7258, + "y": 0.6387, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7253, + "y": 0.6241, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7265, + "y": 0.622, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.7276, + "y": 0.6202, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7177, + "y": 0.6278, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7136, + "y": 0.6284, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7096, + "y": 0.6286, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7201, + "y": 0.6181, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.6989, + "y": 0.6266, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7269, + "y": 0.6457, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.7194, + "y": 0.6495, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.753, + "y": 0.6387, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6591, + "y": 0.6634, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8231, + "y": 0.6777, + "confidence": 0.812 + }, + { + "name": "right_elbow", + "x": 0.6092, + "y": 0.7344, + "confidence": 0.468 + }, + { + "name": "left_wrist", + "x": 0.8376, + "y": 0.7606, + "confidence": 0.786 + }, + { + "name": "right_wrist", + "x": 0.5584, + "y": 0.7972, + "confidence": 0.642 + }, + { + "name": "left_pinky", + "x": 0.8464, + "y": 0.776, + "confidence": 0.719 + }, + { + "name": "right_pinky", + "x": 0.539, + "y": 0.8108, + "confidence": 0.602 + }, + { + "name": "left_index", + "x": 0.8375, + "y": 0.7813, + "confidence": 0.725 + }, + { + "name": "right_index", + "x": 0.5379, + "y": 0.8144, + "confidence": 0.617 + }, + { + "name": "left_thumb", + "x": 0.8306, + "y": 0.7786, + "confidence": 0.682 + }, + { + "name": "right_thumb", + "x": 0.5468, + "y": 0.8119, + "confidence": 0.572 + }, + { + "name": "left_hip", + "x": 0.7478, + "y": 0.7767, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6914, + "y": 0.7768, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7998, + "y": 0.8389, + "confidence": 0.595 + }, + { + "name": "right_knee", + "x": 0.6352, + "y": 0.8209, + "confidence": 0.701 + }, + { + "name": "left_ankle", + "x": 0.7841, + "y": 0.9721, + "confidence": 0.514 + }, + { + "name": "right_ankle", + "x": 0.6083, + "y": 0.9674, + "confidence": 0.664 + }, + { + "name": "left_heel", + "x": 0.7766, + "y": 0.9896, + "confidence": 0.45 + }, + { + "name": "right_heel", + "x": 0.6131, + "y": 0.9918, + "confidence": 0.559 + }, + { + "name": "left_foot_index", + "x": 0.8077, + "y": 0.9988, + "confidence": 0.55 + }, + { + "name": "right_foot_index", + "x": 0.5714, + "y": 0.9876, + "confidence": 0.735 + } + ] + } + ] + }, + { + "frame_index": 119, + "timestamp": 1.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2376, + "acceleration": -15.0768, + "fluidity": 0, + "expansion": 0.209, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0019, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7269, + "y": 0.6387, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7275, + "y": 0.6237, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7293, + "y": 0.6215, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.7308, + "y": 0.6197, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7194, + "y": 0.6275, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7155, + "y": 0.6278, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7119, + "y": 0.6277, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7248, + "y": 0.6159, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7007, + "y": 0.6241, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7279, + "y": 0.645, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.7209, + "y": 0.6485, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.758, + "y": 0.6364, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6617, + "y": 0.6576, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8268, + "y": 0.6773, + "confidence": 0.831 + }, + { + "name": "right_elbow", + "x": 0.61, + "y": 0.729, + "confidence": 0.521 + }, + { + "name": "left_wrist", + "x": 0.8384, + "y": 0.7602, + "confidence": 0.808 + }, + { + "name": "right_wrist", + "x": 0.558, + "y": 0.7945, + "confidence": 0.678 + }, + { + "name": "left_pinky", + "x": 0.8463, + "y": 0.7763, + "confidence": 0.747 + }, + { + "name": "right_pinky", + "x": 0.5383, + "y": 0.809, + "confidence": 0.641 + }, + { + "name": "left_index", + "x": 0.8371, + "y": 0.7809, + "confidence": 0.753 + }, + { + "name": "right_index", + "x": 0.5372, + "y": 0.8117, + "confidence": 0.655 + }, + { + "name": "left_thumb", + "x": 0.8306, + "y": 0.7777, + "confidence": 0.714 + }, + { + "name": "right_thumb", + "x": 0.5449, + "y": 0.8095, + "confidence": 0.614 + }, + { + "name": "left_hip", + "x": 0.7486, + "y": 0.7763, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6907, + "y": 0.7752, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7986, + "y": 0.8395, + "confidence": 0.635 + }, + { + "name": "right_knee", + "x": 0.6357, + "y": 0.83, + "confidence": 0.73 + }, + { + "name": "left_ankle", + "x": 0.7815, + "y": 0.9731, + "confidence": 0.561 + }, + { + "name": "right_ankle", + "x": 0.6071, + "y": 0.9651, + "confidence": 0.696 + }, + { + "name": "left_heel", + "x": 0.7734, + "y": 0.9911, + "confidence": 0.499 + }, + { + "name": "right_heel", + "x": 0.612, + "y": 0.9908, + "confidence": 0.596 + }, + { + "name": "left_foot_index", + "x": 0.8071, + "y": 1.0013, + "confidence": 0.592 + }, + { + "name": "right_foot_index", + "x": 0.5715, + "y": 0.9865, + "confidence": 0.758 + } + ] + } + ] + }, + { + "frame_index": 120, + "timestamp": 2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.4029, + "acceleration": 9.9919, + "fluidity": 0, + "expansion": 0.216, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0005, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7297, + "y": 0.6355, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7282, + "y": 0.6211, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7291, + "y": 0.6193, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7301, + "y": 0.6176, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7217, + "y": 0.6245, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7181, + "y": 0.6247, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7145, + "y": 0.6247, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7227, + "y": 0.6139, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7022, + "y": 0.6217, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7292, + "y": 0.6425, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.723, + "y": 0.6458, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.7581, + "y": 0.636, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6607, + "y": 0.6582, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8266, + "y": 0.6771, + "confidence": 0.848 + }, + { + "name": "right_elbow", + "x": 0.61, + "y": 0.73, + "confidence": 0.568 + }, + { + "name": "left_wrist", + "x": 0.8389, + "y": 0.7603, + "confidence": 0.827 + }, + { + "name": "right_wrist", + "x": 0.558, + "y": 0.7933, + "confidence": 0.71 + }, + { + "name": "left_pinky", + "x": 0.8465, + "y": 0.7765, + "confidence": 0.772 + }, + { + "name": "right_pinky", + "x": 0.5383, + "y": 0.8082, + "confidence": 0.676 + }, + { + "name": "left_index", + "x": 0.8369, + "y": 0.7809, + "confidence": 0.777 + }, + { + "name": "right_index", + "x": 0.5371, + "y": 0.8098, + "confidence": 0.689 + }, + { + "name": "left_thumb", + "x": 0.8306, + "y": 0.7777, + "confidence": 0.742 + }, + { + "name": "right_thumb", + "x": 0.5449, + "y": 0.8084, + "confidence": 0.652 + }, + { + "name": "left_hip", + "x": 0.748, + "y": 0.7765, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6903, + "y": 0.7754, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7982, + "y": 0.8402, + "confidence": 0.672 + }, + { + "name": "right_knee", + "x": 0.6367, + "y": 0.8313, + "confidence": 0.756 + }, + { + "name": "left_ankle", + "x": 0.7809, + "y": 0.9731, + "confidence": 0.603 + }, + { + "name": "right_ankle", + "x": 0.6057, + "y": 0.9632, + "confidence": 0.725 + }, + { + "name": "left_heel", + "x": 0.7726, + "y": 0.9918, + "confidence": 0.544 + }, + { + "name": "right_heel", + "x": 0.6106, + "y": 0.9905, + "confidence": 0.629 + }, + { + "name": "left_foot_index", + "x": 0.8064, + "y": 1.0013, + "confidence": 0.63 + }, + { + "name": "right_foot_index", + "x": 0.5678, + "y": 0.9822, + "confidence": 0.779 + } + ] + } + ] + }, + { + "frame_index": 121, + "timestamp": 2.0166666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.531, + "acceleration": 7.7134, + "fluidity": 0, + "expansion": 0.223, + "total_displacement": 0.0157, + "center_displacement": { + "x": 0.0097, + "y": -0.0123 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7578, + "y": 0.6082, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7541, + "y": 0.5965, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7536, + "y": 0.5952, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7531, + "y": 0.5939, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7507, + "y": 0.5984, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7476, + "y": 0.5988, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7443, + "y": 0.5991, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7397, + "y": 0.5941, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7284, + "y": 0.5989, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7531, + "y": 0.6194, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7497, + "y": 0.6201, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.7724, + "y": 0.6262, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6739, + "y": 0.6379, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8385, + "y": 0.6601, + "confidence": 0.863 + }, + { + "name": "right_elbow", + "x": 0.617, + "y": 0.6997, + "confidence": 0.611 + }, + { + "name": "left_wrist", + "x": 0.8451, + "y": 0.7421, + "confidence": 0.844 + }, + { + "name": "right_wrist", + "x": 0.5585, + "y": 0.7518, + "confidence": 0.739 + }, + { + "name": "left_pinky", + "x": 0.8577, + "y": 0.7565, + "confidence": 0.795 + }, + { + "name": "right_pinky", + "x": 0.5383, + "y": 0.7607, + "confidence": 0.708 + }, + { + "name": "left_index", + "x": 0.8463, + "y": 0.7639, + "confidence": 0.8 + }, + { + "name": "right_index", + "x": 0.5371, + "y": 0.7619, + "confidence": 0.72 + }, + { + "name": "left_thumb", + "x": 0.84, + "y": 0.7595, + "confidence": 0.768 + }, + { + "name": "right_thumb", + "x": 0.5452, + "y": 0.7617, + "confidence": 0.686 + }, + { + "name": "left_hip", + "x": 0.754, + "y": 0.7699, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6955, + "y": 0.7627, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7928, + "y": 0.8367, + "confidence": 0.705 + }, + { + "name": "right_knee", + "x": 0.6478, + "y": 0.8109, + "confidence": 0.78 + }, + { + "name": "left_ankle", + "x": 0.7705, + "y": 0.971, + "confidence": 0.642 + }, + { + "name": "right_ankle", + "x": 0.6066, + "y": 0.9569, + "confidence": 0.752 + }, + { + "name": "left_heel", + "x": 0.761, + "y": 0.9905, + "confidence": 0.588 + }, + { + "name": "right_heel", + "x": 0.6119, + "y": 0.988, + "confidence": 0.665 + }, + { + "name": "left_foot_index", + "x": 0.7918, + "y": 1.0019, + "confidence": 0.666 + }, + { + "name": "right_foot_index", + "x": 0.5726, + "y": 0.9718, + "confidence": 0.801 + } + ] + } + ] + }, + { + "frame_index": 122, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.6081, + "acceleration": 4.6357, + "fluidity": 0, + "expansion": 0.228, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0013, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7569, + "y": 0.6076, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7547, + "y": 0.5968, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7546, + "y": 0.5954, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7546, + "y": 0.5939, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7504, + "y": 0.5987, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.747, + "y": 0.5989, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7436, + "y": 0.5988, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7425, + "y": 0.5913, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7299, + "y": 0.5967, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7548, + "y": 0.617, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7496, + "y": 0.6185, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.774, + "y": 0.6233, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6759, + "y": 0.6363, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8408, + "y": 0.657, + "confidence": 0.877 + }, + { + "name": "right_elbow", + "x": 0.6172, + "y": 0.6952, + "confidence": 0.65 + }, + { + "name": "left_wrist", + "x": 0.8479, + "y": 0.7412, + "confidence": 0.86 + }, + { + "name": "right_wrist", + "x": 0.5586, + "y": 0.7515, + "confidence": 0.765 + }, + { + "name": "left_pinky", + "x": 0.8607, + "y": 0.7581, + "confidence": 0.815 + }, + { + "name": "right_pinky", + "x": 0.5383, + "y": 0.7589, + "confidence": 0.737 + }, + { + "name": "left_index", + "x": 0.8495, + "y": 0.7648, + "confidence": 0.82 + }, + { + "name": "right_index", + "x": 0.5372, + "y": 0.7614, + "confidence": 0.747 + }, + { + "name": "left_thumb", + "x": 0.8433, + "y": 0.7601, + "confidence": 0.791 + }, + { + "name": "right_thumb", + "x": 0.5456, + "y": 0.7618, + "confidence": 0.718 + }, + { + "name": "left_hip", + "x": 0.7548, + "y": 0.7631, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6962, + "y": 0.7583, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7901, + "y": 0.8325, + "confidence": 0.734 + }, + { + "name": "right_knee", + "x": 0.6491, + "y": 0.8099, + "confidence": 0.802 + }, + { + "name": "left_ankle", + "x": 0.769, + "y": 0.9696, + "confidence": 0.676 + }, + { + "name": "right_ankle", + "x": 0.6078, + "y": 0.957, + "confidence": 0.776 + }, + { + "name": "left_heel", + "x": 0.7598, + "y": 0.9905, + "confidence": 0.625 + }, + { + "name": "right_heel", + "x": 0.6132, + "y": 0.9868, + "confidence": 0.693 + }, + { + "name": "left_foot_index", + "x": 0.7895, + "y": 1.002, + "confidence": 0.697 + }, + { + "name": "right_foot_index", + "x": 0.5738, + "y": 0.972, + "confidence": 0.819 + } + ] + } + ] + }, + { + "frame_index": 123, + "timestamp": 2.05, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.6421, + "acceleration": 2.0421, + "fluidity": 0, + "expansion": 0.233, + "total_displacement": 0.0174, + "center_displacement": { + "x": 0.0089, + "y": -0.0149 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.772, + "y": 0.5917, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7702, + "y": 0.5809, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7696, + "y": 0.5798, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.769, + "y": 0.5786, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7668, + "y": 0.5815, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7635, + "y": 0.581, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.76, + "y": 0.5802, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7557, + "y": 0.5736, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7434, + "y": 0.5778, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7665, + "y": 0.6019, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.762, + "y": 0.6031, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.7848, + "y": 0.6008, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.687, + "y": 0.6185, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8451, + "y": 0.628, + "confidence": 0.889 + }, + { + "name": "right_elbow", + "x": 0.6277, + "y": 0.6714, + "confidence": 0.685 + }, + { + "name": "left_wrist", + "x": 0.851, + "y": 0.7063, + "confidence": 0.874 + }, + { + "name": "right_wrist", + "x": 0.5684, + "y": 0.6977, + "confidence": 0.787 + }, + { + "name": "left_pinky", + "x": 0.8649, + "y": 0.7258, + "confidence": 0.833 + }, + { + "name": "right_pinky", + "x": 0.5486, + "y": 0.7017, + "confidence": 0.761 + }, + { + "name": "left_index", + "x": 0.8571, + "y": 0.732, + "confidence": 0.837 + }, + { + "name": "right_index", + "x": 0.547, + "y": 0.7007, + "confidence": 0.77 + }, + { + "name": "left_thumb", + "x": 0.8497, + "y": 0.7256, + "confidence": 0.811 + }, + { + "name": "right_thumb", + "x": 0.5535, + "y": 0.7012, + "confidence": 0.743 + }, + { + "name": "left_hip", + "x": 0.7619, + "y": 0.7542, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7031, + "y": 0.7478, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.786, + "y": 0.8197, + "confidence": 0.76 + }, + { + "name": "right_knee", + "x": 0.6609, + "y": 0.8003, + "confidence": 0.821 + }, + { + "name": "left_ankle", + "x": 0.7567, + "y": 0.9687, + "confidence": 0.707 + }, + { + "name": "right_ankle", + "x": 0.6338, + "y": 0.9478, + "confidence": 0.797 + }, + { + "name": "left_heel", + "x": 0.7478, + "y": 0.99, + "confidence": 0.66 + }, + { + "name": "right_heel", + "x": 0.6417, + "y": 0.9696, + "confidence": 0.719 + }, + { + "name": "left_foot_index", + "x": 0.7745, + "y": 1.0016, + "confidence": 0.727 + }, + { + "name": "right_foot_index", + "x": 0.6063, + "y": 0.9722, + "confidence": 0.836 + } + ] + } + ] + }, + { + "frame_index": 124, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.6958, + "acceleration": 3.2251, + "fluidity": 0, + "expansion": 0.235, + "total_displacement": 0.0046, + "center_displacement": { + "x": 0.0018, + "y": -0.0042 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7714, + "y": 0.5895, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7715, + "y": 0.5772, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7717, + "y": 0.5758, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7718, + "y": 0.5745, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7672, + "y": 0.5784, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7639, + "y": 0.5779, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7603, + "y": 0.5772, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7599, + "y": 0.5689, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7451, + "y": 0.5727, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.7684, + "y": 0.5976, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7627, + "y": 0.5996, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.7874, + "y": 0.5976, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.6907, + "y": 0.6126, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.845, + "y": 0.626, + "confidence": 0.9 + }, + { + "name": "right_elbow", + "x": 0.6333, + "y": 0.6675, + "confidence": 0.716 + }, + { + "name": "left_wrist", + "x": 0.8522, + "y": 0.7046, + "confidence": 0.886 + }, + { + "name": "right_wrist", + "x": 0.569, + "y": 0.6949, + "confidence": 0.807 + }, + { + "name": "left_pinky", + "x": 0.8666, + "y": 0.7223, + "confidence": 0.85 + }, + { + "name": "right_pinky", + "x": 0.5508, + "y": 0.7003, + "confidence": 0.783 + }, + { + "name": "left_index", + "x": 0.8589, + "y": 0.7287, + "confidence": 0.853 + }, + { + "name": "right_index", + "x": 0.5494, + "y": 0.6957, + "confidence": 0.792 + }, + { + "name": "left_thumb", + "x": 0.8499, + "y": 0.7232, + "confidence": 0.83 + }, + { + "name": "right_thumb", + "x": 0.555, + "y": 0.6959, + "confidence": 0.767 + }, + { + "name": "left_hip", + "x": 0.7618, + "y": 0.7509, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7041, + "y": 0.7434, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7856, + "y": 0.8123, + "confidence": 0.784 + }, + { + "name": "right_knee", + "x": 0.6627, + "y": 0.7999, + "confidence": 0.838 + }, + { + "name": "left_ankle", + "x": 0.7547, + "y": 0.9681, + "confidence": 0.736 + }, + { + "name": "right_ankle", + "x": 0.637, + "y": 0.9444, + "confidence": 0.816 + }, + { + "name": "left_heel", + "x": 0.7453, + "y": 0.9898, + "confidence": 0.691 + }, + { + "name": "right_heel", + "x": 0.6444, + "y": 0.9662, + "confidence": 0.743 + }, + { + "name": "left_foot_index", + "x": 0.7719, + "y": 1.0017, + "confidence": 0.754 + }, + { + "name": "right_foot_index", + "x": 0.6121, + "y": 0.9738, + "confidence": 0.851 + } + ] + } + ] + }, + { + "frame_index": 125, + "timestamp": 2.0833333333333335, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.7074, + "acceleration": 0.6968, + "fluidity": 0, + "expansion": 0.234, + "total_displacement": 0.0195, + "center_displacement": { + "x": 0.009, + "y": -0.0173 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7754, + "y": 0.5799, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7768, + "y": 0.5676, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7778, + "y": 0.5665, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7788, + "y": 0.5654, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7713, + "y": 0.567, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.768, + "y": 0.5653, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7647, + "y": 0.5634, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7723, + "y": 0.5579, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.752, + "y": 0.5575, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.7739, + "y": 0.5846, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7676, + "y": 0.5861, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.793, + "y": 0.5792, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7027, + "y": 0.5986, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8425, + "y": 0.5989, + "confidence": 0.909 + }, + { + "name": "right_elbow", + "x": 0.645, + "y": 0.6416, + "confidence": 0.74 + }, + { + "name": "left_wrist", + "x": 0.8468, + "y": 0.6714, + "confidence": 0.897 + }, + { + "name": "right_wrist", + "x": 0.5974, + "y": 0.6412, + "confidence": 0.819 + }, + { + "name": "left_pinky", + "x": 0.8588, + "y": 0.6926, + "confidence": 0.864 + }, + { + "name": "right_pinky", + "x": 0.5841, + "y": 0.6326, + "confidence": 0.795 + }, + { + "name": "left_index", + "x": 0.8495, + "y": 0.6968, + "confidence": 0.867 + }, + { + "name": "right_index", + "x": 0.5863, + "y": 0.6244, + "confidence": 0.804 + }, + { + "name": "left_thumb", + "x": 0.8424, + "y": 0.692, + "confidence": 0.846 + }, + { + "name": "right_thumb", + "x": 0.5926, + "y": 0.6298, + "confidence": 0.777 + }, + { + "name": "left_hip", + "x": 0.7707, + "y": 0.7322, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7135, + "y": 0.7252, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7837, + "y": 0.8115, + "confidence": 0.801 + }, + { + "name": "right_knee", + "x": 0.681, + "y": 0.7962, + "confidence": 0.828 + }, + { + "name": "left_ankle", + "x": 0.7463, + "y": 0.9671, + "confidence": 0.757 + }, + { + "name": "right_ankle", + "x": 0.6753, + "y": 0.931, + "confidence": 0.817 + }, + { + "name": "left_heel", + "x": 0.735, + "y": 0.989, + "confidence": 0.708 + }, + { + "name": "right_heel", + "x": 0.6846, + "y": 0.9482, + "confidence": 0.736 + }, + { + "name": "left_foot_index", + "x": 0.757, + "y": 1.0017, + "confidence": 0.774 + }, + { + "name": "right_foot_index", + "x": 0.6555, + "y": 0.9714, + "confidence": 0.849 + } + ] + } + ] + }, + { + "frame_index": 126, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3545, + "acceleration": -21.1752, + "fluidity": 0, + "expansion": 0.233, + "total_displacement": 0.0043, + "center_displacement": { + "x": 0.0028, + "y": -0.0032 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7802, + "y": 0.5752, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7822, + "y": 0.5628, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7836, + "y": 0.5617, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.785, + "y": 0.5606, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7756, + "y": 0.5626, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7726, + "y": 0.5615, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7697, + "y": 0.5601, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7783, + "y": 0.5533, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7579, + "y": 0.5539, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.7787, + "y": 0.5804, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7721, + "y": 0.5808, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.7989, + "y": 0.5783, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7061, + "y": 0.5942, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8416, + "y": 0.6002, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.6468, + "y": 0.6383, + "confidence": 0.762 + }, + { + "name": "left_wrist", + "x": 0.8442, + "y": 0.6708, + "confidence": 0.907 + }, + { + "name": "right_wrist", + "x": 0.6017, + "y": 0.6404, + "confidence": 0.83 + }, + { + "name": "left_pinky", + "x": 0.8543, + "y": 0.6927, + "confidence": 0.875 + }, + { + "name": "right_pinky", + "x": 0.5857, + "y": 0.6302, + "confidence": 0.804 + }, + { + "name": "left_index", + "x": 0.8475, + "y": 0.6969, + "confidence": 0.878 + }, + { + "name": "right_index", + "x": 0.5895, + "y": 0.6221, + "confidence": 0.813 + }, + { + "name": "left_thumb", + "x": 0.8414, + "y": 0.6914, + "confidence": 0.859 + }, + { + "name": "right_thumb", + "x": 0.597, + "y": 0.6273, + "confidence": 0.785 + }, + { + "name": "left_hip", + "x": 0.7706, + "y": 0.7302, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7155, + "y": 0.7198, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7829, + "y": 0.8083, + "confidence": 0.818 + }, + { + "name": "right_knee", + "x": 0.6836, + "y": 0.792, + "confidence": 0.822 + }, + { + "name": "left_ankle", + "x": 0.7456, + "y": 0.9653, + "confidence": 0.778 + }, + { + "name": "right_ankle", + "x": 0.677, + "y": 0.9272, + "confidence": 0.819 + }, + { + "name": "left_heel", + "x": 0.7351, + "y": 0.9869, + "confidence": 0.725 + }, + { + "name": "right_heel", + "x": 0.6859, + "y": 0.9444, + "confidence": 0.732 + }, + { + "name": "left_foot_index", + "x": 0.7546, + "y": 1.0012, + "confidence": 0.794 + }, + { + "name": "right_foot_index", + "x": 0.6568, + "y": 0.9702, + "confidence": 0.849 + } + ] + } + ] + }, + { + "frame_index": 127, + "timestamp": 2.1166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4287, + "acceleration": 4.4516, + "fluidity": 0, + "expansion": 0.229, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0006, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7826, + "y": 0.58, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7839, + "y": 0.5656, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7847, + "y": 0.5639, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7857, + "y": 0.5625, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7787, + "y": 0.5662, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7758, + "y": 0.565, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.773, + "y": 0.5637, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7762, + "y": 0.5537, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.7595, + "y": 0.556, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.7794, + "y": 0.5862, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7737, + "y": 0.5854, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.7966, + "y": 0.576, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.704, + "y": 0.5966, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8406, + "y": 0.6014, + "confidence": 0.923 + }, + { + "name": "right_elbow", + "x": 0.6458, + "y": 0.6412, + "confidence": 0.782 + }, + { + "name": "left_wrist", + "x": 0.8432, + "y": 0.6724, + "confidence": 0.915 + }, + { + "name": "right_wrist", + "x": 0.6015, + "y": 0.6406, + "confidence": 0.838 + }, + { + "name": "left_pinky", + "x": 0.8529, + "y": 0.6934, + "confidence": 0.885 + }, + { + "name": "right_pinky", + "x": 0.5864, + "y": 0.6334, + "confidence": 0.811 + }, + { + "name": "left_index", + "x": 0.847, + "y": 0.6976, + "confidence": 0.888 + }, + { + "name": "right_index", + "x": 0.59, + "y": 0.6221, + "confidence": 0.82 + }, + { + "name": "left_thumb", + "x": 0.8412, + "y": 0.692, + "confidence": 0.871 + }, + { + "name": "right_thumb", + "x": 0.5968, + "y": 0.6263, + "confidence": 0.791 + }, + { + "name": "left_hip", + "x": 0.7719, + "y": 0.7323, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7163, + "y": 0.7238, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7819, + "y": 0.8098, + "confidence": 0.833 + }, + { + "name": "right_knee", + "x": 0.6855, + "y": 0.7879, + "confidence": 0.82 + }, + { + "name": "left_ankle", + "x": 0.7451, + "y": 0.9644, + "confidence": 0.795 + }, + { + "name": "right_ankle", + "x": 0.6775, + "y": 0.9266, + "confidence": 0.82 + }, + { + "name": "left_heel", + "x": 0.7339, + "y": 0.9858, + "confidence": 0.736 + }, + { + "name": "right_heel", + "x": 0.6856, + "y": 0.945, + "confidence": 0.728 + }, + { + "name": "left_foot_index", + "x": 0.7549, + "y": 1.0009, + "confidence": 0.81 + }, + { + "name": "right_foot_index", + "x": 0.6579, + "y": 0.9699, + "confidence": 0.849 + } + ] + } + ] + }, + { + "frame_index": 128, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.51, + "acceleration": 4.8774, + "fluidity": 0, + "expansion": 0.224, + "total_displacement": 0.0138, + "center_displacement": { + "x": 0.0095, + "y": -0.0101 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7952, + "y": 0.5529, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7959, + "y": 0.5415, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7962, + "y": 0.5407, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7966, + "y": 0.54, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7919, + "y": 0.541, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7889, + "y": 0.5399, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7856, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7871, + "y": 0.5358, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.771, + "y": 0.5351, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.791, + "y": 0.5617, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7861, + "y": 0.56, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8016, + "y": 0.5793, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.724, + "y": 0.5749, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8204, + "y": 0.6121, + "confidence": 0.897 + }, + { + "name": "right_elbow", + "x": 0.6725, + "y": 0.6073, + "confidence": 0.799 + }, + { + "name": "left_wrist", + "x": 0.8322, + "y": 0.6808, + "confidence": 0.902 + }, + { + "name": "right_wrist", + "x": 0.6474, + "y": 0.5761, + "confidence": 0.851 + }, + { + "name": "left_pinky", + "x": 0.8366, + "y": 0.6941, + "confidence": 0.862 + }, + { + "name": "right_pinky", + "x": 0.6373, + "y": 0.5542, + "confidence": 0.824 + }, + { + "name": "left_index", + "x": 0.8354, + "y": 0.6948, + "confidence": 0.868 + }, + { + "name": "right_index", + "x": 0.6415, + "y": 0.5465, + "confidence": 0.833 + }, + { + "name": "left_thumb", + "x": 0.8321, + "y": 0.6923, + "confidence": 0.851 + }, + { + "name": "right_thumb", + "x": 0.6454, + "y": 0.555, + "confidence": 0.804 + }, + { + "name": "left_hip", + "x": 0.7767, + "y": 0.7232, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7245, + "y": 0.7111, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7832, + "y": 0.8069, + "confidence": 0.842 + }, + { + "name": "right_knee", + "x": 0.7002, + "y": 0.7901, + "confidence": 0.775 + }, + { + "name": "left_ankle", + "x": 0.7457, + "y": 0.9508, + "confidence": 0.807 + }, + { + "name": "right_ankle", + "x": 0.7061, + "y": 0.9071, + "confidence": 0.779 + }, + { + "name": "left_heel", + "x": 0.736, + "y": 0.9723, + "confidence": 0.736 + }, + { + "name": "right_heel", + "x": 0.7117, + "y": 0.9122, + "confidence": 0.677 + }, + { + "name": "left_foot_index", + "x": 0.7358, + "y": 0.9839, + "confidence": 0.821 + }, + { + "name": "right_foot_index", + "x": 0.7048, + "y": 0.9612, + "confidence": 0.81 + } + ] + } + ] + }, + { + "frame_index": 129, + "timestamp": 2.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4969, + "acceleration": -0.7854, + "fluidity": 0, + "expansion": 0.221, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0011, + "y": -0.0044 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7953, + "y": 0.5543, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.7965, + "y": 0.5428, + "confidence": 1 + }, + { + "name": "left_eye", + "x": 0.7968, + "y": 0.5417, + "confidence": 1 + }, + { + "name": "left_eye_outer", + "x": 0.7972, + "y": 0.5407, + "confidence": 1 + }, + { + "name": "right_eye_inner", + "x": 0.7919, + "y": 0.5428, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.7888, + "y": 0.5417, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.7859, + "y": 0.5404, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7887, + "y": 0.5351, + "confidence": 1 + }, + { + "name": "right_ear", + "x": 0.774, + "y": 0.5345, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.791, + "y": 0.562, + "confidence": 1 + }, + { + "name": "mouth_right", + "x": 0.7851, + "y": 0.5622, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8033, + "y": 0.5744, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7256, + "y": 0.5716, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8162, + "y": 0.6134, + "confidence": 0.882 + }, + { + "name": "right_elbow", + "x": 0.67, + "y": 0.6088, + "confidence": 0.816 + }, + { + "name": "left_wrist", + "x": 0.8285, + "y": 0.6788, + "confidence": 0.894 + }, + { + "name": "right_wrist", + "x": 0.6486, + "y": 0.5769, + "confidence": 0.863 + }, + { + "name": "left_pinky", + "x": 0.8324, + "y": 0.6922, + "confidence": 0.847 + }, + { + "name": "right_pinky", + "x": 0.6395, + "y": 0.5534, + "confidence": 0.837 + }, + { + "name": "left_index", + "x": 0.8329, + "y": 0.6928, + "confidence": 0.855 + }, + { + "name": "right_index", + "x": 0.6432, + "y": 0.5451, + "confidence": 0.846 + }, + { + "name": "left_thumb", + "x": 0.8294, + "y": 0.6898, + "confidence": 0.839 + }, + { + "name": "right_thumb", + "x": 0.6471, + "y": 0.5534, + "confidence": 0.816 + }, + { + "name": "left_hip", + "x": 0.7773, + "y": 0.7183, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.725, + "y": 0.7067, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7839, + "y": 0.8029, + "confidence": 0.854 + }, + { + "name": "right_knee", + "x": 0.7034, + "y": 0.7934, + "confidence": 0.761 + }, + { + "name": "left_ankle", + "x": 0.7467, + "y": 0.9468, + "confidence": 0.822 + }, + { + "name": "right_ankle", + "x": 0.7091, + "y": 0.9045, + "confidence": 0.763 + }, + { + "name": "left_heel", + "x": 0.7365, + "y": 0.9699, + "confidence": 0.747 + }, + { + "name": "right_heel", + "x": 0.7151, + "y": 0.9106, + "confidence": 0.648 + }, + { + "name": "left_foot_index", + "x": 0.7361, + "y": 0.9802, + "confidence": 0.835 + }, + { + "name": "right_foot_index", + "x": 0.7065, + "y": 0.9586, + "confidence": 0.792 + } + ] + } + ] + }, + { + "frame_index": 130, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4551, + "acceleration": -2.5087, + "fluidity": 0, + "expansion": 0.228, + "total_displacement": 0.0118, + "center_displacement": { + "x": 0.0082, + "y": -0.0085 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8114, + "y": 0.5359, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.8114, + "y": 0.5238, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8107, + "y": 0.5232, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.8101, + "y": 0.5225, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8093, + "y": 0.5237, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.8066, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.8036, + "y": 0.5225, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.7982, + "y": 0.5195, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.7872, + "y": 0.5202, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.8049, + "y": 0.5457, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8019, + "y": 0.5452, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8076, + "y": 0.561, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7416, + "y": 0.5553, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7878, + "y": 0.603, + "confidence": 0.795 + }, + { + "name": "right_elbow", + "x": 0.6992, + "y": 0.574, + "confidence": 0.824 + }, + { + "name": "left_wrist", + "x": 0.763, + "y": 0.5971, + "confidence": 0.805 + }, + { + "name": "right_wrist", + "x": 0.6994, + "y": 0.5131, + "confidence": 0.872 + }, + { + "name": "left_pinky", + "x": 0.7549, + "y": 0.5964, + "confidence": 0.764 + }, + { + "name": "right_pinky", + "x": 0.6973, + "y": 0.489, + "confidence": 0.848 + }, + { + "name": "left_index", + "x": 0.7575, + "y": 0.588, + "confidence": 0.771 + }, + { + "name": "right_index", + "x": 0.701, + "y": 0.4824, + "confidence": 0.856 + }, + { + "name": "left_thumb", + "x": 0.7612, + "y": 0.588, + "confidence": 0.757 + }, + { + "name": "right_thumb", + "x": 0.7038, + "y": 0.4934, + "confidence": 0.826 + }, + { + "name": "left_hip", + "x": 0.7823, + "y": 0.716, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7325, + "y": 0.7046, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7882, + "y": 0.7886, + "confidence": 0.845 + }, + { + "name": "right_knee", + "x": 0.7235, + "y": 0.8007, + "confidence": 0.743 + }, + { + "name": "left_ankle", + "x": 0.7512, + "y": 0.9396, + "confidence": 0.809 + }, + { + "name": "right_ankle", + "x": 0.724, + "y": 0.9111, + "confidence": 0.744 + }, + { + "name": "left_heel", + "x": 0.7426, + "y": 0.9527, + "confidence": 0.719 + }, + { + "name": "right_heel", + "x": 0.7269, + "y": 0.9229, + "confidence": 0.605 + }, + { + "name": "left_foot_index", + "x": 0.7462, + "y": 0.9738, + "confidence": 0.825 + }, + { + "name": "right_foot_index", + "x": 0.7386, + "y": 0.9631, + "confidence": 0.767 + } + ] + } + ] + }, + { + "frame_index": 131, + "timestamp": 2.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2165, + "acceleration": -14.317, + "fluidity": 0, + "expansion": 0.233, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0024, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8158, + "y": 0.525, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.8124, + "y": 0.5123, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8116, + "y": 0.5117, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.8111, + "y": 0.5111, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8098, + "y": 0.513, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.8071, + "y": 0.513, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.8044, + "y": 0.513, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.799, + "y": 0.5125, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.7899, + "y": 0.5146, + "confidence": 1 + }, + { + "name": "mouth_left", + "x": 0.8108, + "y": 0.5357, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8082, + "y": 0.5358, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8124, + "y": 0.5658, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7443, + "y": 0.5567, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7983, + "y": 0.5742, + "confidence": 0.73 + }, + { + "name": "right_elbow", + "x": 0.6999, + "y": 0.573, + "confidence": 0.832 + }, + { + "name": "left_wrist", + "x": 0.7984, + "y": 0.5187, + "confidence": 0.737 + }, + { + "name": "right_wrist", + "x": 0.7022, + "y": 0.511, + "confidence": 0.876 + }, + { + "name": "left_pinky", + "x": 0.8004, + "y": 0.5056, + "confidence": 0.706 + }, + { + "name": "right_pinky", + "x": 0.6993, + "y": 0.4875, + "confidence": 0.855 + }, + { + "name": "left_index", + "x": 0.797, + "y": 0.4985, + "confidence": 0.712 + }, + { + "name": "right_index", + "x": 0.7031, + "y": 0.4802, + "confidence": 0.861 + }, + { + "name": "left_thumb", + "x": 0.7917, + "y": 0.5021, + "confidence": 0.701 + }, + { + "name": "right_thumb", + "x": 0.7065, + "y": 0.4891, + "confidence": 0.832 + }, + { + "name": "left_hip", + "x": 0.7841, + "y": 0.7158, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.733, + "y": 0.7029, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7892, + "y": 0.7894, + "confidence": 0.858 + }, + { + "name": "right_knee", + "x": 0.7257, + "y": 0.7955, + "confidence": 0.766 + }, + { + "name": "left_ankle", + "x": 0.7527, + "y": 0.9433, + "confidence": 0.808 + }, + { + "name": "right_ankle", + "x": 0.7244, + "y": 0.9073, + "confidence": 0.75 + }, + { + "name": "left_heel", + "x": 0.745, + "y": 0.9589, + "confidence": 0.734 + }, + { + "name": "right_heel", + "x": 0.7265, + "y": 0.9205, + "confidence": 0.619 + }, + { + "name": "left_foot_index", + "x": 0.747, + "y": 0.9751, + "confidence": 0.836 + }, + { + "name": "right_foot_index", + "x": 0.739, + "y": 0.9622, + "confidence": 0.783 + } + ] + } + ] + }, + { + "frame_index": 132, + "timestamp": 2.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2782, + "acceleration": 3.7053, + "fluidity": 0, + "expansion": 0.233, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.817, + "y": 0.5257, + "confidence": 1 + }, + { + "name": "left_eye_inner", + "x": 0.8135, + "y": 0.5131, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8128, + "y": 0.5124, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8123, + "y": 0.5117, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8111, + "y": 0.5137, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.8087, + "y": 0.5135, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.806, + "y": 0.5134, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8, + "y": 0.5125, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.7917, + "y": 0.5138, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8113, + "y": 0.5357, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8087, + "y": 0.5361, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8128, + "y": 0.5654, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7455, + "y": 0.5538, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7934, + "y": 0.5949, + "confidence": 0.658 + }, + { + "name": "right_elbow", + "x": 0.6985, + "y": 0.5738, + "confidence": 0.841 + }, + { + "name": "left_wrist", + "x": 0.7926, + "y": 0.6104, + "confidence": 0.664 + }, + { + "name": "right_wrist", + "x": 0.7006, + "y": 0.5147, + "confidence": 0.887 + }, + { + "name": "left_pinky", + "x": 0.7915, + "y": 0.609, + "confidence": 0.636 + }, + { + "name": "right_pinky", + "x": 0.6989, + "y": 0.4889, + "confidence": 0.868 + }, + { + "name": "left_index", + "x": 0.7941, + "y": 0.5872, + "confidence": 0.642 + }, + { + "name": "right_index", + "x": 0.7025, + "y": 0.4795, + "confidence": 0.873 + }, + { + "name": "left_thumb", + "x": 0.7936, + "y": 0.5753, + "confidence": 0.632 + }, + { + "name": "right_thumb", + "x": 0.7055, + "y": 0.4898, + "confidence": 0.844 + }, + { + "name": "left_hip", + "x": 0.7849, + "y": 0.7163, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7325, + "y": 0.7044, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7898, + "y": 0.7928, + "confidence": 0.862 + }, + { + "name": "right_knee", + "x": 0.7253, + "y": 0.7962, + "confidence": 0.763 + }, + { + "name": "left_ankle", + "x": 0.7535, + "y": 0.9457, + "confidence": 0.81 + }, + { + "name": "right_ankle", + "x": 0.725, + "y": 0.9075, + "confidence": 0.728 + }, + { + "name": "left_heel", + "x": 0.7455, + "y": 0.963, + "confidence": 0.727 + }, + { + "name": "right_heel", + "x": 0.7283, + "y": 0.9242, + "confidence": 0.578 + }, + { + "name": "left_foot_index", + "x": 0.7478, + "y": 0.9728, + "confidence": 0.838 + }, + { + "name": "right_foot_index", + "x": 0.7388, + "y": 0.9601, + "confidence": 0.758 + } + ] + } + ] + }, + { + "frame_index": 133, + "timestamp": 2.216666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3539, + "acceleration": 4.5399, + "fluidity": 0, + "expansion": 0.237, + "total_displacement": 0.0097, + "center_displacement": { + "x": 0.0091, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8262, + "y": 0.5185, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8225, + "y": 0.5071, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8212, + "y": 0.5065, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8198, + "y": 0.5059, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8214, + "y": 0.5071, + "confidence": 1 + }, + { + "name": "right_eye", + "x": 0.8191, + "y": 0.5065, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.8168, + "y": 0.5059, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8057, + "y": 0.5071, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8023, + "y": 0.5068, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8195, + "y": 0.5293, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.818, + "y": 0.529, + "confidence": 1 + }, + { + "name": "left_shoulder", + "x": 0.8152, + "y": 0.5559, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7598, + "y": 0.5498, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7991, + "y": 0.6014, + "confidence": 0.594 + }, + { + "name": "right_elbow", + "x": 0.7247, + "y": 0.551, + "confidence": 0.856 + }, + { + "name": "left_wrist", + "x": 0.7925, + "y": 0.6306, + "confidence": 0.599 + }, + { + "name": "right_wrist", + "x": 0.7551, + "y": 0.4726, + "confidence": 0.898 + }, + { + "name": "left_pinky", + "x": 0.7896, + "y": 0.6319, + "confidence": 0.574 + }, + { + "name": "right_pinky", + "x": 0.7605, + "y": 0.4454, + "confidence": 0.88 + }, + { + "name": "left_index", + "x": 0.7903, + "y": 0.6217, + "confidence": 0.58 + }, + { + "name": "right_index", + "x": 0.7603, + "y": 0.4413, + "confidence": 0.885 + }, + { + "name": "left_thumb", + "x": 0.791, + "y": 0.6192, + "confidence": 0.571 + }, + { + "name": "right_thumb", + "x": 0.7602, + "y": 0.4512, + "confidence": 0.858 + }, + { + "name": "left_hip", + "x": 0.7915, + "y": 0.7141, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7457, + "y": 0.7067, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8055, + "y": 0.7947, + "confidence": 0.874 + }, + { + "name": "right_knee", + "x": 0.7405, + "y": 0.8228, + "confidence": 0.769 + }, + { + "name": "left_ankle", + "x": 0.7584, + "y": 0.9371, + "confidence": 0.825 + }, + { + "name": "right_ankle", + "x": 0.7214, + "y": 0.9082, + "confidence": 0.745 + }, + { + "name": "left_heel", + "x": 0.7458, + "y": 0.9468, + "confidence": 0.746 + }, + { + "name": "right_heel", + "x": 0.7212, + "y": 0.9278, + "confidence": 0.582 + }, + { + "name": "left_foot_index", + "x": 0.7498, + "y": 0.9737, + "confidence": 0.851 + }, + { + "name": "right_foot_index", + "x": 0.7331, + "y": 0.9607, + "confidence": 0.77 + } + ] + } + ] + }, + { + "frame_index": 134, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.3232, + "acceleration": -1.8416, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.0034, + "center_displacement": { + "x": 0.0023, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8278, + "y": 0.5185, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8232, + "y": 0.5088, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8218, + "y": 0.5083, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.8205, + "y": 0.5076, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.822, + "y": 0.5088, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8199, + "y": 0.5082, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8179, + "y": 0.5076, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8077, + "y": 0.508, + "confidence": 0.998 + }, + { + "name": "right_ear", + "x": 0.8047, + "y": 0.5077, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8217, + "y": 0.5294, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8202, + "y": 0.5291, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8149, + "y": 0.5567, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7624, + "y": 0.5477, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7985, + "y": 0.6052, + "confidence": 0.536 + }, + { + "name": "right_elbow", + "x": 0.7292, + "y": 0.5493, + "confidence": 0.869 + }, + { + "name": "left_wrist", + "x": 0.7911, + "y": 0.6582, + "confidence": 0.54 + }, + { + "name": "right_wrist", + "x": 0.7586, + "y": 0.4697, + "confidence": 0.907 + }, + { + "name": "left_pinky", + "x": 0.7869, + "y": 0.6721, + "confidence": 0.518 + }, + { + "name": "right_pinky", + "x": 0.7634, + "y": 0.4448, + "confidence": 0.89 + }, + { + "name": "left_index", + "x": 0.7882, + "y": 0.6688, + "confidence": 0.523 + }, + { + "name": "right_index", + "x": 0.7627, + "y": 0.4399, + "confidence": 0.895 + }, + { + "name": "left_thumb", + "x": 0.7893, + "y": 0.6617, + "confidence": 0.515 + }, + { + "name": "right_thumb", + "x": 0.7622, + "y": 0.4495, + "confidence": 0.868 + }, + { + "name": "left_hip", + "x": 0.7947, + "y": 0.7083, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7493, + "y": 0.7039, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8093, + "y": 0.7934, + "confidence": 0.883 + }, + { + "name": "right_knee", + "x": 0.7428, + "y": 0.826, + "confidence": 0.762 + }, + { + "name": "left_ankle", + "x": 0.7623, + "y": 0.9329, + "confidence": 0.835 + }, + { + "name": "right_ankle", + "x": 0.7211, + "y": 0.9119, + "confidence": 0.751 + }, + { + "name": "left_heel", + "x": 0.7479, + "y": 0.9406, + "confidence": 0.752 + }, + { + "name": "right_heel", + "x": 0.7204, + "y": 0.9285, + "confidence": 0.561 + }, + { + "name": "left_foot_index", + "x": 0.7514, + "y": 0.9723, + "confidence": 0.859 + }, + { + "name": "right_foot_index", + "x": 0.733, + "y": 0.9599, + "confidence": 0.767 + } + ] + } + ] + }, + { + "frame_index": 135, + "timestamp": 2.25, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.269, + "acceleration": -3.2557, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0069, + "center_displacement": { + "x": 0.0067, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8402, + "y": 0.5203, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8366, + "y": 0.5103, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8353, + "y": 0.5099, + "confidence": 0.997 + }, + { + "name": "left_eye_outer", + "x": 0.834, + "y": 0.5095, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.8351, + "y": 0.5095, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.833, + "y": 0.5085, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8308, + "y": 0.5076, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8206, + "y": 0.5077, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8159, + "y": 0.5063, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8321, + "y": 0.5302, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8306, + "y": 0.529, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8204, + "y": 0.5586, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7705, + "y": 0.5469, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7995, + "y": 0.6279, + "confidence": 0.488 + }, + { + "name": "right_elbow", + "x": 0.7561, + "y": 0.5276, + "confidence": 0.882 + }, + { + "name": "left_wrist", + "x": 0.7944, + "y": 0.6977, + "confidence": 0.49 + }, + { + "name": "right_wrist", + "x": 0.8005, + "y": 0.4673, + "confidence": 0.915 + }, + { + "name": "left_pinky", + "x": 0.7923, + "y": 0.719, + "confidence": 0.472 + }, + { + "name": "right_pinky", + "x": 0.8133, + "y": 0.4482, + "confidence": 0.9 + }, + { + "name": "left_index", + "x": 0.7938, + "y": 0.718, + "confidence": 0.477 + }, + { + "name": "right_index", + "x": 0.8118, + "y": 0.4443, + "confidence": 0.904 + }, + { + "name": "left_thumb", + "x": 0.7943, + "y": 0.7105, + "confidence": 0.469 + }, + { + "name": "right_thumb", + "x": 0.8083, + "y": 0.4527, + "confidence": 0.878 + }, + { + "name": "left_hip", + "x": 0.8003, + "y": 0.7116, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7569, + "y": 0.7068, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8299, + "y": 0.7928, + "confidence": 0.894 + }, + { + "name": "right_knee", + "x": 0.7524, + "y": 0.8398, + "confidence": 0.784 + }, + { + "name": "left_ankle", + "x": 0.78, + "y": 0.9122, + "confidence": 0.849 + }, + { + "name": "right_ankle", + "x": 0.7167, + "y": 0.9219, + "confidence": 0.774 + }, + { + "name": "left_heel", + "x": 0.7644, + "y": 0.9207, + "confidence": 0.772 + }, + { + "name": "right_heel", + "x": 0.7144, + "y": 0.9343, + "confidence": 0.586 + }, + { + "name": "left_foot_index", + "x": 0.779, + "y": 0.9605, + "confidence": 0.871 + }, + { + "name": "right_foot_index", + "x": 0.7249, + "y": 0.9652, + "confidence": 0.788 + } + ] + } + ] + }, + { + "frame_index": 136, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2375, + "acceleration": -1.8879, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8402, + "y": 0.5212, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8366, + "y": 0.5109, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8354, + "y": 0.5105, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8341, + "y": 0.5102, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.8354, + "y": 0.5099, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8334, + "y": 0.509, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8311, + "y": 0.5081, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8208, + "y": 0.5087, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8169, + "y": 0.507, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8329, + "y": 0.5312, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8317, + "y": 0.5301, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8211, + "y": 0.5578, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7727, + "y": 0.5445, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7984, + "y": 0.6283, + "confidence": 0.444 + }, + { + "name": "right_elbow", + "x": 0.7593, + "y": 0.5265, + "confidence": 0.893 + }, + { + "name": "left_wrist", + "x": 0.7923, + "y": 0.6983, + "confidence": 0.445 + }, + { + "name": "right_wrist", + "x": 0.8019, + "y": 0.4651, + "confidence": 0.922 + }, + { + "name": "left_pinky", + "x": 0.7911, + "y": 0.7195, + "confidence": 0.43 + }, + { + "name": "right_pinky", + "x": 0.8144, + "y": 0.4479, + "confidence": 0.907 + }, + { + "name": "left_index", + "x": 0.7948, + "y": 0.7196, + "confidence": 0.433 + }, + { + "name": "right_index", + "x": 0.8127, + "y": 0.4438, + "confidence": 0.909 + }, + { + "name": "left_thumb", + "x": 0.7936, + "y": 0.7119, + "confidence": 0.427 + }, + { + "name": "right_thumb", + "x": 0.8096, + "y": 0.4512, + "confidence": 0.881 + }, + { + "name": "left_hip", + "x": 0.8013, + "y": 0.7131, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7575, + "y": 0.7084, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8321, + "y": 0.793, + "confidence": 0.904 + }, + { + "name": "right_knee", + "x": 0.7543, + "y": 0.8429, + "confidence": 0.802 + }, + { + "name": "left_ankle", + "x": 0.7827, + "y": 0.9093, + "confidence": 0.86 + }, + { + "name": "right_ankle", + "x": 0.7154, + "y": 0.9257, + "confidence": 0.793 + }, + { + "name": "left_heel", + "x": 0.7668, + "y": 0.9163, + "confidence": 0.785 + }, + { + "name": "right_heel", + "x": 0.7116, + "y": 0.9364, + "confidence": 0.599 + }, + { + "name": "left_foot_index", + "x": 0.782, + "y": 0.9596, + "confidence": 0.881 + }, + { + "name": "right_foot_index", + "x": 0.7236, + "y": 0.967, + "confidence": 0.804 + } + ] + } + ] + }, + { + "frame_index": 137, + "timestamp": 2.283333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2354, + "acceleration": -0.1248, + "fluidity": 0, + "expansion": 0.247, + "total_displacement": 0.0062, + "center_displacement": { + "x": 0.0057, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8487, + "y": 0.5147, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8458, + "y": 0.5049, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8445, + "y": 0.5046, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8434, + "y": 0.5043, + "confidence": 0.998 + }, + { + "name": "right_eye_inner", + "x": 0.844, + "y": 0.5034, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8415, + "y": 0.502, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8385, + "y": 0.5003, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8314, + "y": 0.5045, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8252, + "y": 0.5004, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8402, + "y": 0.5246, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8385, + "y": 0.5223, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.827, + "y": 0.5646, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.776, + "y": 0.545, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7995, + "y": 0.6469, + "confidence": 0.423 + }, + { + "name": "right_elbow", + "x": 0.7906, + "y": 0.5156, + "confidence": 0.904 + }, + { + "name": "left_wrist", + "x": 0.799, + "y": 0.7248, + "confidence": 0.418 + }, + { + "name": "right_wrist", + "x": 0.8335, + "y": 0.4719, + "confidence": 0.929 + }, + { + "name": "left_pinky", + "x": 0.7984, + "y": 0.7377, + "confidence": 0.406 + }, + { + "name": "right_pinky", + "x": 0.848, + "y": 0.4638, + "confidence": 0.914 + }, + { + "name": "left_index", + "x": 0.8029, + "y": 0.7369, + "confidence": 0.409 + }, + { + "name": "right_index", + "x": 0.8487, + "y": 0.4622, + "confidence": 0.915 + }, + { + "name": "left_thumb", + "x": 0.805, + "y": 0.7304, + "confidence": 0.403 + }, + { + "name": "right_thumb", + "x": 0.8445, + "y": 0.467, + "confidence": 0.888 + }, + { + "name": "left_hip", + "x": 0.8065, + "y": 0.7142, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7658, + "y": 0.7105, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8545, + "y": 0.7936, + "confidence": 0.913 + }, + { + "name": "right_knee", + "x": 0.7595, + "y": 0.8417, + "confidence": 0.822 + }, + { + "name": "left_ankle", + "x": 0.7971, + "y": 0.8918, + "confidence": 0.871 + }, + { + "name": "right_ankle", + "x": 0.7135, + "y": 0.9307, + "confidence": 0.814 + }, + { + "name": "left_heel", + "x": 0.7799, + "y": 0.8997, + "confidence": 0.802 + }, + { + "name": "right_heel", + "x": 0.696, + "y": 0.9407, + "confidence": 0.633 + }, + { + "name": "left_foot_index", + "x": 0.8109, + "y": 0.9434, + "confidence": 0.891 + }, + { + "name": "right_foot_index", + "x": 0.7181, + "y": 0.9688, + "confidence": 0.823 + } + ] + } + ] + }, + { + "frame_index": 138, + "timestamp": 2.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.143, + "acceleration": -5.5434, + "fluidity": 0, + "expansion": 0.249, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0015, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8508, + "y": 0.5106, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8482, + "y": 0.5008, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8471, + "y": 0.5006, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8461, + "y": 0.5004, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.846, + "y": 0.4993, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8434, + "y": 0.498, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.8406, + "y": 0.4964, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8338, + "y": 0.5007, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.828, + "y": 0.4964, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8428, + "y": 0.5205, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8411, + "y": 0.5183, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8273, + "y": 0.5653, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7783, + "y": 0.541, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8004, + "y": 0.6432, + "confidence": 0.394 + }, + { + "name": "right_elbow", + "x": 0.7957, + "y": 0.5152, + "confidence": 0.913 + }, + { + "name": "left_wrist", + "x": 0.7997, + "y": 0.7199, + "confidence": 0.385 + }, + { + "name": "right_wrist", + "x": 0.8372, + "y": 0.4714, + "confidence": 0.935 + }, + { + "name": "left_pinky", + "x": 0.7997, + "y": 0.734, + "confidence": 0.375 + }, + { + "name": "right_pinky", + "x": 0.852, + "y": 0.4645, + "confidence": 0.92 + }, + { + "name": "left_index", + "x": 0.8037, + "y": 0.7316, + "confidence": 0.379 + }, + { + "name": "right_index", + "x": 0.8524, + "y": 0.4639, + "confidence": 0.921 + }, + { + "name": "left_thumb", + "x": 0.806, + "y": 0.7248, + "confidence": 0.373 + }, + { + "name": "right_thumb", + "x": 0.8475, + "y": 0.4685, + "confidence": 0.893 + }, + { + "name": "left_hip", + "x": 0.808, + "y": 0.7152, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7678, + "y": 0.7115, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8565, + "y": 0.7942, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.7601, + "y": 0.8411, + "confidence": 0.839 + }, + { + "name": "left_ankle", + "x": 0.7982, + "y": 0.8907, + "confidence": 0.875 + }, + { + "name": "right_ankle", + "x": 0.71, + "y": 0.9338, + "confidence": 0.831 + }, + { + "name": "left_heel", + "x": 0.7802, + "y": 0.8975, + "confidence": 0.812 + }, + { + "name": "right_heel", + "x": 0.6913, + "y": 0.9444, + "confidence": 0.658 + }, + { + "name": "left_foot_index", + "x": 0.8125, + "y": 0.9419, + "confidence": 0.896 + }, + { + "name": "right_foot_index", + "x": 0.7156, + "y": 0.9711, + "confidence": 0.84 + } + ] + } + ] + }, + { + "frame_index": 139, + "timestamp": 2.3166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2091, + "acceleration": 3.9631, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0007, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.849, + "y": 0.5107, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8468, + "y": 0.5012, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8457, + "y": 0.5008, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8448, + "y": 0.5005, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8446, + "y": 0.4999, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8421, + "y": 0.4987, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.8397, + "y": 0.4972, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8332, + "y": 0.5006, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8278, + "y": 0.4968, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8414, + "y": 0.5203, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8397, + "y": 0.518, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.828, + "y": 0.5677, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7786, + "y": 0.5419, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8035, + "y": 0.6454, + "confidence": 0.37 + }, + { + "name": "right_elbow", + "x": 0.7964, + "y": 0.5151, + "confidence": 0.922 + }, + { + "name": "left_wrist", + "x": 0.8034, + "y": 0.715, + "confidence": 0.356 + }, + { + "name": "right_wrist", + "x": 0.838, + "y": 0.4722, + "confidence": 0.939 + }, + { + "name": "left_pinky", + "x": 0.8032, + "y": 0.733, + "confidence": 0.35 + }, + { + "name": "right_pinky", + "x": 0.8511, + "y": 0.4664, + "confidence": 0.923 + }, + { + "name": "left_index", + "x": 0.8074, + "y": 0.7309, + "confidence": 0.352 + }, + { + "name": "right_index", + "x": 0.8519, + "y": 0.4654, + "confidence": 0.923 + }, + { + "name": "left_thumb", + "x": 0.8087, + "y": 0.7261, + "confidence": 0.348 + }, + { + "name": "right_thumb", + "x": 0.8471, + "y": 0.47, + "confidence": 0.895 + }, + { + "name": "left_hip", + "x": 0.8096, + "y": 0.7155, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7683, + "y": 0.7139, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8571, + "y": 0.7944, + "confidence": 0.927 + }, + { + "name": "right_knee", + "x": 0.7595, + "y": 0.8413, + "confidence": 0.854 + }, + { + "name": "left_ankle", + "x": 0.7979, + "y": 0.8906, + "confidence": 0.877 + }, + { + "name": "right_ankle", + "x": 0.7071, + "y": 0.9345, + "confidence": 0.847 + }, + { + "name": "left_heel", + "x": 0.78, + "y": 0.8967, + "confidence": 0.818 + }, + { + "name": "right_heel", + "x": 0.6907, + "y": 0.9451, + "confidence": 0.676 + }, + { + "name": "left_foot_index", + "x": 0.8134, + "y": 0.9411, + "confidence": 0.9 + }, + { + "name": "right_foot_index", + "x": 0.7143, + "y": 0.9728, + "confidence": 0.853 + } + ] + } + ] + }, + { + "frame_index": 140, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2247, + "acceleration": 0.9361, + "fluidity": 0, + "expansion": 0.258, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0057, + "y": -0.003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8588, + "y": 0.5126, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8569, + "y": 0.5011, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8558, + "y": 0.5003, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8548, + "y": 0.4995, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8554, + "y": 0.5002, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8533, + "y": 0.4989, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8511, + "y": 0.4974, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.8442, + "y": 0.4971, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8377, + "y": 0.4944, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8509, + "y": 0.5211, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8493, + "y": 0.5193, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8284, + "y": 0.5671, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7962, + "y": 0.5301, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8051, + "y": 0.6589, + "confidence": 0.334 + }, + { + "name": "right_elbow", + "x": 0.808, + "y": 0.5421, + "confidence": 0.924 + }, + { + "name": "left_wrist", + "x": 0.8036, + "y": 0.729, + "confidence": 0.321 + }, + { + "name": "right_wrist", + "x": 0.847, + "y": 0.5195, + "confidence": 0.899 + }, + { + "name": "left_pinky", + "x": 0.8036, + "y": 0.7512, + "confidence": 0.316 + }, + { + "name": "right_pinky", + "x": 0.8576, + "y": 0.5133, + "confidence": 0.877 + }, + { + "name": "left_index", + "x": 0.8078, + "y": 0.7387, + "confidence": 0.318 + }, + { + "name": "right_index", + "x": 0.8551, + "y": 0.5056, + "confidence": 0.873 + }, + { + "name": "left_thumb", + "x": 0.8089, + "y": 0.7352, + "confidence": 0.314 + }, + { + "name": "right_thumb", + "x": 0.85, + "y": 0.509, + "confidence": 0.834 + }, + { + "name": "left_hip", + "x": 0.8102, + "y": 0.7161, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7723, + "y": 0.7136, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.874, + "y": 0.7905, + "confidence": 0.921 + }, + { + "name": "right_knee", + "x": 0.7552, + "y": 0.8394, + "confidence": 0.866 + }, + { + "name": "left_ankle", + "x": 0.8126, + "y": 0.8796, + "confidence": 0.854 + }, + { + "name": "right_ankle", + "x": 0.6912, + "y": 0.934, + "confidence": 0.857 + }, + { + "name": "left_heel", + "x": 0.7932, + "y": 0.8914, + "confidence": 0.811 + }, + { + "name": "right_heel", + "x": 0.6759, + "y": 0.9449, + "confidence": 0.67 + }, + { + "name": "left_foot_index", + "x": 0.8408, + "y": 0.9281, + "confidence": 0.884 + }, + { + "name": "right_foot_index", + "x": 0.7041, + "y": 0.973, + "confidence": 0.858 + } + ] + } + ] + }, + { + "frame_index": 141, + "timestamp": 2.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3354, + "acceleration": 6.6451, + "fluidity": 0, + "expansion": 0.281, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0013, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8593, + "y": 0.5158, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.858, + "y": 0.5042, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.857, + "y": 0.5034, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8562, + "y": 0.5025, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8566, + "y": 0.5034, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8547, + "y": 0.5021, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8528, + "y": 0.5005, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.8452, + "y": 0.499, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8393, + "y": 0.4965, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8523, + "y": 0.5242, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8507, + "y": 0.5226, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8298, + "y": 0.5669, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.7992, + "y": 0.5304, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.804, + "y": 0.6521, + "confidence": 0.303 + }, + { + "name": "right_elbow", + "x": 0.8213, + "y": 0.5335, + "confidence": 0.925 + }, + { + "name": "left_wrist", + "x": 0.8024, + "y": 0.7343, + "confidence": 0.29 + }, + { + "name": "right_wrist", + "x": 0.86, + "y": 0.5186, + "confidence": 0.851 + }, + { + "name": "left_pinky", + "x": 0.802, + "y": 0.758, + "confidence": 0.286 + }, + { + "name": "right_pinky", + "x": 0.8717, + "y": 0.5111, + "confidence": 0.823 + }, + { + "name": "left_index", + "x": 0.8045, + "y": 0.7462, + "confidence": 0.288 + }, + { + "name": "right_index", + "x": 0.8676, + "y": 0.5104, + "confidence": 0.816 + }, + { + "name": "left_thumb", + "x": 0.8054, + "y": 0.7435, + "confidence": 0.284 + }, + { + "name": "right_thumb", + "x": 0.8703, + "y": 0.5089, + "confidence": 0.772 + }, + { + "name": "left_hip", + "x": 0.8106, + "y": 0.7165, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7727, + "y": 0.7137, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.875, + "y": 0.7888, + "confidence": 0.916 + }, + { + "name": "right_knee", + "x": 0.7553, + "y": 0.8382, + "confidence": 0.878 + }, + { + "name": "left_ankle", + "x": 0.814, + "y": 0.8774, + "confidence": 0.839 + }, + { + "name": "right_ankle", + "x": 0.6875, + "y": 0.9336, + "confidence": 0.868 + }, + { + "name": "left_heel", + "x": 0.7939, + "y": 0.8911, + "confidence": 0.807 + }, + { + "name": "right_heel", + "x": 0.6731, + "y": 0.944, + "confidence": 0.673 + }, + { + "name": "left_foot_index", + "x": 0.8413, + "y": 0.9263, + "confidence": 0.875 + }, + { + "name": "right_foot_index", + "x": 0.7004, + "y": 0.9728, + "confidence": 0.867 + } + ] + } + ] + }, + { + "frame_index": 142, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3835, + "acceleration": 2.886, + "fluidity": 0, + "expansion": 0.286, + "total_displacement": 0.0117, + "center_displacement": { + "x": 0.0103, + "y": -0.0056 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8728, + "y": 0.5127, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8711, + "y": 0.5002, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8697, + "y": 0.4997, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8683, + "y": 0.4992, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8702, + "y": 0.4993, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.868, + "y": 0.4983, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8655, + "y": 0.4974, + "confidence": 0.999 + }, + { + "name": "left_ear", + "x": 0.8574, + "y": 0.4981, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8524, + "y": 0.4966, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8651, + "y": 0.5222, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8634, + "y": 0.5213, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8434, + "y": 0.5587, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8143, + "y": 0.5309, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8118, + "y": 0.6416, + "confidence": 0.274 + }, + { + "name": "right_elbow", + "x": 0.8267, + "y": 0.5343, + "confidence": 0.932 + }, + { + "name": "left_wrist", + "x": 0.8066, + "y": 0.6953, + "confidence": 0.262 + }, + { + "name": "right_wrist", + "x": 0.869, + "y": 0.5407, + "confidence": 0.864 + }, + { + "name": "left_pinky", + "x": 0.8033, + "y": 0.7292, + "confidence": 0.259 + }, + { + "name": "right_pinky", + "x": 0.8793, + "y": 0.5498, + "confidence": 0.837 + }, + { + "name": "left_index", + "x": 0.8071, + "y": 0.722, + "confidence": 0.261 + }, + { + "name": "right_index", + "x": 0.8801, + "y": 0.5512, + "confidence": 0.83 + }, + { + "name": "left_thumb", + "x": 0.8089, + "y": 0.7126, + "confidence": 0.258 + }, + { + "name": "right_thumb", + "x": 0.8759, + "y": 0.5488, + "confidence": 0.786 + }, + { + "name": "left_hip", + "x": 0.8156, + "y": 0.7122, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7802, + "y": 0.7034, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8758, + "y": 0.7893, + "confidence": 0.916 + }, + { + "name": "right_knee", + "x": 0.7555, + "y": 0.8345, + "confidence": 0.89 + }, + { + "name": "left_ankle", + "x": 0.8209, + "y": 0.8849, + "confidence": 0.839 + }, + { + "name": "right_ankle", + "x": 0.6792, + "y": 0.928, + "confidence": 0.88 + }, + { + "name": "left_heel", + "x": 0.802, + "y": 0.898, + "confidence": 0.816 + }, + { + "name": "right_heel", + "x": 0.6609, + "y": 0.9289, + "confidence": 0.693 + }, + { + "name": "left_foot_index", + "x": 0.8533, + "y": 0.9299, + "confidence": 0.878 + }, + { + "name": "right_foot_index", + "x": 0.6856, + "y": 0.9728, + "confidence": 0.878 + } + ] + } + ] + }, + { + "frame_index": 143, + "timestamp": 2.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1984, + "acceleration": -11.107, + "fluidity": 0, + "expansion": 0.288, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0011, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8754, + "y": 0.5119, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8733, + "y": 0.4998, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.8721, + "y": 0.4992, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.871, + "y": 0.4987, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8723, + "y": 0.4988, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8704, + "y": 0.4977, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8682, + "y": 0.4966, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8598, + "y": 0.498, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8546, + "y": 0.4962, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.87, + "y": 0.5211, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8687, + "y": 0.5205, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8423, + "y": 0.5602, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8169, + "y": 0.5314, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8135, + "y": 0.642, + "confidence": 0.25 + }, + { + "name": "right_elbow", + "x": 0.8328, + "y": 0.5333, + "confidence": 0.939 + }, + { + "name": "left_wrist", + "x": 0.8087, + "y": 0.7204, + "confidence": 0.24 + }, + { + "name": "right_wrist", + "x": 0.8703, + "y": 0.5443, + "confidence": 0.875 + }, + { + "name": "left_pinky", + "x": 0.8062, + "y": 0.745, + "confidence": 0.239 + }, + { + "name": "right_pinky", + "x": 0.8781, + "y": 0.5543, + "confidence": 0.849 + }, + { + "name": "left_index", + "x": 0.8113, + "y": 0.7414, + "confidence": 0.24 + }, + { + "name": "right_index", + "x": 0.8795, + "y": 0.5561, + "confidence": 0.842 + }, + { + "name": "left_thumb", + "x": 0.8126, + "y": 0.7318, + "confidence": 0.237 + }, + { + "name": "right_thumb", + "x": 0.8755, + "y": 0.5541, + "confidence": 0.796 + }, + { + "name": "left_hip", + "x": 0.8172, + "y": 0.709, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7816, + "y": 0.6984, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8759, + "y": 0.7898, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.7565, + "y": 0.831, + "confidence": 0.9 + }, + { + "name": "left_ankle", + "x": 0.8222, + "y": 0.8874, + "confidence": 0.84 + }, + { + "name": "right_ankle", + "x": 0.6769, + "y": 0.9262, + "confidence": 0.891 + }, + { + "name": "left_heel", + "x": 0.8035, + "y": 0.9006, + "confidence": 0.824 + }, + { + "name": "right_heel", + "x": 0.6589, + "y": 0.9271, + "confidence": 0.715 + }, + { + "name": "left_foot_index", + "x": 0.855, + "y": 0.9295, + "confidence": 0.88 + }, + { + "name": "right_foot_index", + "x": 0.6833, + "y": 0.9727, + "confidence": 0.889 + } + ] + } + ] + }, + { + "frame_index": 144, + "timestamp": 2.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3587, + "acceleration": 9.6163, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0015, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8741, + "y": 0.5113, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8727, + "y": 0.498, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8717, + "y": 0.4974, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8707, + "y": 0.4968, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8712, + "y": 0.4974, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8689, + "y": 0.4965, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8663, + "y": 0.4957, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8587, + "y": 0.4974, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.852, + "y": 0.496, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8684, + "y": 0.5207, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8665, + "y": 0.5202, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8468, + "y": 0.559, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8156, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8174, + "y": 0.631, + "confidence": 0.228 + }, + { + "name": "right_elbow", + "x": 0.8277, + "y": 0.5351, + "confidence": 0.945 + }, + { + "name": "left_wrist", + "x": 0.8092, + "y": 0.7066, + "confidence": 0.217 + }, + { + "name": "right_wrist", + "x": 0.8687, + "y": 0.5437, + "confidence": 0.886 + }, + { + "name": "left_pinky", + "x": 0.8064, + "y": 0.7312, + "confidence": 0.217 + }, + { + "name": "right_pinky", + "x": 0.8773, + "y": 0.555, + "confidence": 0.862 + }, + { + "name": "left_index", + "x": 0.8111, + "y": 0.731, + "confidence": 0.219 + }, + { + "name": "right_index", + "x": 0.8789, + "y": 0.5561, + "confidence": 0.855 + }, + { + "name": "left_thumb", + "x": 0.8123, + "y": 0.7192, + "confidence": 0.216 + }, + { + "name": "right_thumb", + "x": 0.8748, + "y": 0.5547, + "confidence": 0.811 + }, + { + "name": "left_hip", + "x": 0.8188, + "y": 0.708, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7828, + "y": 0.6963, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.876, + "y": 0.7901, + "confidence": 0.92 + }, + { + "name": "right_knee", + "x": 0.757, + "y": 0.8284, + "confidence": 0.91 + }, + { + "name": "left_ankle", + "x": 0.8226, + "y": 0.889, + "confidence": 0.845 + }, + { + "name": "right_ankle", + "x": 0.6771, + "y": 0.924, + "confidence": 0.902 + }, + { + "name": "left_heel", + "x": 0.8037, + "y": 0.9023, + "confidence": 0.833 + }, + { + "name": "right_heel", + "x": 0.6597, + "y": 0.9249, + "confidence": 0.736 + }, + { + "name": "left_foot_index", + "x": 0.856, + "y": 0.9311, + "confidence": 0.886 + }, + { + "name": "right_foot_index", + "x": 0.6828, + "y": 0.9726, + "confidence": 0.899 + } + ] + } + ] + }, + { + "frame_index": 145, + "timestamp": 2.4166666666666665, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4139, + "acceleration": 3.3118, + "fluidity": 0, + "expansion": 0.262, + "total_displacement": 0.013, + "center_displacement": { + "x": 0.0121, + "y": -0.0048 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8896, + "y": 0.5093, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.885, + "y": 0.4972, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8835, + "y": 0.4966, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.882, + "y": 0.4961, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8844, + "y": 0.4968, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8826, + "y": 0.4961, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8806, + "y": 0.4955, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8702, + "y": 0.4968, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8674, + "y": 0.4962, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8836, + "y": 0.5189, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8827, + "y": 0.5183, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8517, + "y": 0.5496, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8409, + "y": 0.529, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8241, + "y": 0.6234, + "confidence": 0.206 + }, + { + "name": "right_elbow", + "x": 0.8343, + "y": 0.557, + "confidence": 0.95 + }, + { + "name": "left_wrist", + "x": 0.8231, + "y": 0.7016, + "confidence": 0.198 + }, + { + "name": "right_wrist", + "x": 0.8808, + "y": 0.5956, + "confidence": 0.897 + }, + { + "name": "left_pinky", + "x": 0.8225, + "y": 0.7241, + "confidence": 0.199 + }, + { + "name": "right_pinky", + "x": 0.8892, + "y": 0.6076, + "confidence": 0.874 + }, + { + "name": "left_index", + "x": 0.828, + "y": 0.7267, + "confidence": 0.2 + }, + { + "name": "right_index", + "x": 0.8911, + "y": 0.6055, + "confidence": 0.868 + }, + { + "name": "left_thumb", + "x": 0.8286, + "y": 0.7154, + "confidence": 0.198 + }, + { + "name": "right_thumb", + "x": 0.8882, + "y": 0.6026, + "confidence": 0.826 + }, + { + "name": "left_hip", + "x": 0.8221, + "y": 0.7033, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7974, + "y": 0.6949, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8691, + "y": 0.7911, + "confidence": 0.906 + }, + { + "name": "right_knee", + "x": 0.766, + "y": 0.8225, + "confidence": 0.917 + }, + { + "name": "left_ankle", + "x": 0.8208, + "y": 0.8964, + "confidence": 0.84 + }, + { + "name": "right_ankle", + "x": 0.6806, + "y": 0.9088, + "confidence": 0.91 + }, + { + "name": "left_heel", + "x": 0.8028, + "y": 0.9102, + "confidence": 0.835 + }, + { + "name": "right_heel", + "x": 0.6647, + "y": 0.9025, + "confidence": 0.748 + }, + { + "name": "left_foot_index", + "x": 0.8494, + "y": 0.9394, + "confidence": 0.884 + }, + { + "name": "right_foot_index", + "x": 0.6822, + "y": 0.9691, + "confidence": 0.907 + } + ] + } + ] + }, + { + "frame_index": 146, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4656, + "acceleration": 3.1024, + "fluidity": 0, + "expansion": 0.236, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0017, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.8909, + "y": 0.5077, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8857, + "y": 0.4963, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8843, + "y": 0.4959, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8829, + "y": 0.4955, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8851, + "y": 0.496, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8833, + "y": 0.4954, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8814, + "y": 0.4948, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8722, + "y": 0.496, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8688, + "y": 0.4952, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8859, + "y": 0.5182, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8848, + "y": 0.5174, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8548, + "y": 0.5507, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8411, + "y": 0.5286, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8282, + "y": 0.6254, + "confidence": 0.19 + }, + { + "name": "right_elbow", + "x": 0.8356, + "y": 0.5639, + "confidence": 0.955 + }, + { + "name": "left_wrist", + "x": 0.8269, + "y": 0.7001, + "confidence": 0.185 + }, + { + "name": "right_wrist", + "x": 0.8829, + "y": 0.6008, + "confidence": 0.907 + }, + { + "name": "left_pinky", + "x": 0.8256, + "y": 0.7215, + "confidence": 0.189 + }, + { + "name": "right_pinky", + "x": 0.8907, + "y": 0.6144, + "confidence": 0.886 + }, + { + "name": "left_index", + "x": 0.8321, + "y": 0.7155, + "confidence": 0.191 + }, + { + "name": "right_index", + "x": 0.8935, + "y": 0.6115, + "confidence": 0.88 + }, + { + "name": "left_thumb", + "x": 0.8314, + "y": 0.713, + "confidence": 0.188 + }, + { + "name": "right_thumb", + "x": 0.8905, + "y": 0.6079, + "confidence": 0.841 + }, + { + "name": "left_hip", + "x": 0.8241, + "y": 0.7038, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7987, + "y": 0.6957, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8664, + "y": 0.7917, + "confidence": 0.905 + }, + { + "name": "right_knee", + "x": 0.768, + "y": 0.8188, + "confidence": 0.925 + }, + { + "name": "left_ankle", + "x": 0.8207, + "y": 0.8999, + "confidence": 0.848 + }, + { + "name": "right_ankle", + "x": 0.6817, + "y": 0.9035, + "confidence": 0.918 + }, + { + "name": "left_heel", + "x": 0.8032, + "y": 0.9137, + "confidence": 0.844 + }, + { + "name": "right_heel", + "x": 0.6674, + "y": 0.9005, + "confidence": 0.767 + }, + { + "name": "left_foot_index", + "x": 0.849, + "y": 0.9431, + "confidence": 0.891 + }, + { + "name": "right_foot_index", + "x": 0.6834, + "y": 0.9661, + "confidence": 0.916 + } + ] + } + ] + }, + { + "frame_index": 147, + "timestamp": 2.45, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4849, + "acceleration": 1.1576, + "fluidity": 0, + "expansion": 0.207, + "total_displacement": 0.0147, + "center_displacement": { + "x": 0.0142, + "y": -0.0036 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.9014, + "y": 0.5114, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8991, + "y": 0.5001, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.8977, + "y": 0.4998, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.8962, + "y": 0.4995, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8986, + "y": 0.4983, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8971, + "y": 0.4972, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.8957, + "y": 0.4963, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8851, + "y": 0.4972, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.885, + "y": 0.4954, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.896, + "y": 0.5205, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8954, + "y": 0.5187, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8557, + "y": 0.5454, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8717, + "y": 0.5261, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8376, + "y": 0.6358, + "confidence": 0.176 + }, + { + "name": "right_elbow", + "x": 0.8475, + "y": 0.5864, + "confidence": 0.957 + }, + { + "name": "left_wrist", + "x": 0.8655, + "y": 0.6897, + "confidence": 0.197 + }, + { + "name": "right_wrist", + "x": 0.8841, + "y": 0.6526, + "confidence": 0.911 + }, + { + "name": "left_pinky", + "x": 0.872, + "y": 0.7025, + "confidence": 0.208 + }, + { + "name": "right_pinky", + "x": 0.8915, + "y": 0.6746, + "confidence": 0.891 + }, + { + "name": "left_index", + "x": 0.8803, + "y": 0.6995, + "confidence": 0.211 + }, + { + "name": "right_index", + "x": 0.897, + "y": 0.67, + "confidence": 0.885 + }, + { + "name": "left_thumb", + "x": 0.8761, + "y": 0.6933, + "confidence": 0.205 + }, + { + "name": "right_thumb", + "x": 0.8932, + "y": 0.6625, + "confidence": 0.843 + }, + { + "name": "left_hip", + "x": 0.8257, + "y": 0.7002, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.8225, + "y": 0.6928, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8482, + "y": 0.8057, + "confidence": 0.834 + }, + { + "name": "right_knee", + "x": 0.8061, + "y": 0.8187, + "confidence": 0.93 + }, + { + "name": "left_ankle", + "x": 0.805, + "y": 0.9071, + "confidence": 0.821 + }, + { + "name": "right_ankle", + "x": 0.7061, + "y": 0.8808, + "confidence": 0.923 + }, + { + "name": "left_heel", + "x": 0.7876, + "y": 0.9267, + "confidence": 0.838 + }, + { + "name": "right_heel", + "x": 0.6852, + "y": 0.8726, + "confidence": 0.778 + }, + { + "name": "left_foot_index", + "x": 0.8455, + "y": 0.9446, + "confidence": 0.875 + }, + { + "name": "right_foot_index", + "x": 0.7016, + "y": 0.9425, + "confidence": 0.92 + } + ] + } + ] + }, + { + "frame_index": 148, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.4157, + "acceleration": -4.1539, + "fluidity": 0, + "expansion": 0.179, + "total_displacement": 0.0018, + "center_displacement": { + "x": -0.0017, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.9014, + "y": 0.5148, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.8988, + "y": 0.5025, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.897, + "y": 0.5017, + "confidence": 0.998 + }, + { + "name": "left_eye_outer", + "x": 0.8952, + "y": 0.501, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.8993, + "y": 0.501, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.8981, + "y": 0.4995, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.897, + "y": 0.4982, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.8848, + "y": 0.4973, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8872, + "y": 0.4958, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.8955, + "y": 0.5231, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.8957, + "y": 0.5216, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8533, + "y": 0.5456, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8707, + "y": 0.5273, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.842, + "y": 0.6387, + "confidence": 0.164 + }, + { + "name": "right_elbow", + "x": 0.849, + "y": 0.5915, + "confidence": 0.96 + }, + { + "name": "left_wrist", + "x": 0.8729, + "y": 0.6798, + "confidence": 0.215 + }, + { + "name": "right_wrist", + "x": 0.8832, + "y": 0.6574, + "confidence": 0.914 + }, + { + "name": "left_pinky", + "x": 0.8816, + "y": 0.6923, + "confidence": 0.233 + }, + { + "name": "right_pinky", + "x": 0.8912, + "y": 0.679, + "confidence": 0.894 + }, + { + "name": "left_index", + "x": 0.8875, + "y": 0.6876, + "confidence": 0.238 + }, + { + "name": "right_index", + "x": 0.8966, + "y": 0.6736, + "confidence": 0.889 + }, + { + "name": "left_thumb", + "x": 0.8842, + "y": 0.6824, + "confidence": 0.227 + }, + { + "name": "right_thumb", + "x": 0.893, + "y": 0.6666, + "confidence": 0.843 + }, + { + "name": "left_hip", + "x": 0.8236, + "y": 0.7001, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.8212, + "y": 0.6944, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8445, + "y": 0.8059, + "confidence": 0.777 + }, + { + "name": "right_knee", + "x": 0.8004, + "y": 0.8208, + "confidence": 0.935 + }, + { + "name": "left_ankle", + "x": 0.8001, + "y": 0.9082, + "confidence": 0.808 + }, + { + "name": "right_ankle", + "x": 0.7094, + "y": 0.8767, + "confidence": 0.928 + }, + { + "name": "left_heel", + "x": 0.7848, + "y": 0.9279, + "confidence": 0.837 + }, + { + "name": "right_heel", + "x": 0.6898, + "y": 0.8706, + "confidence": 0.788 + }, + { + "name": "left_foot_index", + "x": 0.8409, + "y": 0.9443, + "confidence": 0.867 + }, + { + "name": "right_foot_index", + "x": 0.7068, + "y": 0.9387, + "confidence": 0.924 + } + ] + } + ] + }, + { + "frame_index": 149, + "timestamp": 2.4833333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3925, + "acceleration": -1.3883, + "fluidity": 0, + "expansion": 0.153, + "total_displacement": 0.0109, + "center_displacement": { + "x": 0.0101, + "y": 0.0039 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.9154, + "y": 0.5212, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.912, + "y": 0.51, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.9107, + "y": 0.5089, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.9094, + "y": 0.5079, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.9119, + "y": 0.5091, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.9105, + "y": 0.5074, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.9093, + "y": 0.5058, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.9001, + "y": 0.5041, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.8995, + "y": 0.5027, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.9098, + "y": 0.5293, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.9097, + "y": 0.5283, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8632, + "y": 0.5464, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8891, + "y": 0.5405, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8758, + "y": 0.6389, + "confidence": 0.162 + }, + { + "name": "right_elbow", + "x": 0.8579, + "y": 0.6122, + "confidence": 0.962 + }, + { + "name": "left_wrist", + "x": 0.9155, + "y": 0.6573, + "confidence": 0.251 + }, + { + "name": "right_wrist", + "x": 0.8735, + "y": 0.6968, + "confidence": 0.92 + }, + { + "name": "left_pinky", + "x": 0.9282, + "y": 0.6561, + "confidence": 0.268 + }, + { + "name": "right_pinky", + "x": 0.8817, + "y": 0.7157, + "confidence": 0.9 + }, + { + "name": "left_index", + "x": 0.9303, + "y": 0.6547, + "confidence": 0.274 + }, + { + "name": "right_index", + "x": 0.8849, + "y": 0.7155, + "confidence": 0.895 + }, + { + "name": "left_thumb", + "x": 0.9255, + "y": 0.6555, + "confidence": 0.262 + }, + { + "name": "right_thumb", + "x": 0.8812, + "y": 0.7096, + "confidence": 0.85 + }, + { + "name": "left_hip", + "x": 0.8223, + "y": 0.7001, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.8347, + "y": 0.6961, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8298, + "y": 0.8073, + "confidence": 0.717 + }, + { + "name": "right_knee", + "x": 0.8361, + "y": 0.8236, + "confidence": 0.939 + }, + { + "name": "left_ankle", + "x": 0.787, + "y": 0.9173, + "confidence": 0.803 + }, + { + "name": "right_ankle", + "x": 0.7414, + "y": 0.8668, + "confidence": 0.933 + }, + { + "name": "left_heel", + "x": 0.7707, + "y": 0.9395, + "confidence": 0.839 + }, + { + "name": "right_heel", + "x": 0.7222, + "y": 0.8588, + "confidence": 0.805 + }, + { + "name": "left_foot_index", + "x": 0.8256, + "y": 0.9445, + "confidence": 0.867 + }, + { + "name": "right_foot_index", + "x": 0.7356, + "y": 0.9249, + "confidence": 0.93 + } + ] + } + ] + }, + { + "frame_index": 150, + "timestamp": 2.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1926, + "acceleration": -11.992, + "fluidity": 0, + "expansion": 0.151, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0018, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.9148, + "y": 0.5252, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.9125, + "y": 0.5143, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.9113, + "y": 0.5134, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.9101, + "y": 0.5127, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.9131, + "y": 0.5132, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.9125, + "y": 0.5117, + "confidence": 0.999 + }, + { + "name": "right_eye_outer", + "x": 0.912, + "y": 0.5103, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.9008, + "y": 0.508, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.9043, + "y": 0.5066, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.9095, + "y": 0.5328, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.9103, + "y": 0.5315, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8649, + "y": 0.5467, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8926, + "y": 0.5426, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8825, + "y": 0.6388, + "confidence": 0.164 + }, + { + "name": "right_elbow", + "x": 0.8603, + "y": 0.6163, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.9205, + "y": 0.6517, + "confidence": 0.295 + }, + { + "name": "right_wrist", + "x": 0.8707, + "y": 0.698, + "confidence": 0.927 + }, + { + "name": "left_pinky", + "x": 0.9348, + "y": 0.6499, + "confidence": 0.311 + }, + { + "name": "right_pinky", + "x": 0.8769, + "y": 0.7175, + "confidence": 0.908 + }, + { + "name": "left_index", + "x": 0.9392, + "y": 0.6483, + "confidence": 0.318 + }, + { + "name": "right_index", + "x": 0.8801, + "y": 0.7191, + "confidence": 0.903 + }, + { + "name": "left_thumb", + "x": 0.9338, + "y": 0.6504, + "confidence": 0.305 + }, + { + "name": "right_thumb", + "x": 0.8769, + "y": 0.7112, + "confidence": 0.861 + }, + { + "name": "left_hip", + "x": 0.8226, + "y": 0.6983, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.8364, + "y": 0.6968, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8327, + "y": 0.8075, + "confidence": 0.67 + }, + { + "name": "right_knee", + "x": 0.8367, + "y": 0.8263, + "confidence": 0.944 + }, + { + "name": "left_ankle", + "x": 0.7869, + "y": 0.9212, + "confidence": 0.808 + }, + { + "name": "right_ankle", + "x": 0.7454, + "y": 0.8649, + "confidence": 0.939 + }, + { + "name": "left_heel", + "x": 0.7697, + "y": 0.9413, + "confidence": 0.848 + }, + { + "name": "right_heel", + "x": 0.727, + "y": 0.8574, + "confidence": 0.822 + }, + { + "name": "left_foot_index", + "x": 0.8216, + "y": 0.9453, + "confidence": 0.873 + }, + { + "name": "right_foot_index", + "x": 0.7406, + "y": 0.9238, + "confidence": 0.935 + } + ] + } + ] + }, + { + "frame_index": 151, + "timestamp": 2.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1342, + "acceleration": -7.0121, + "fluidity": 0, + "expansion": 0.157, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0012, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.9164, + "y": 0.5256, + "confidence": 0.999 + }, + { + "name": "left_eye_inner", + "x": 0.914, + "y": 0.5143, + "confidence": 0.999 + }, + { + "name": "left_eye", + "x": 0.9127, + "y": 0.5136, + "confidence": 0.999 + }, + { + "name": "left_eye_outer", + "x": 0.9113, + "y": 0.513, + "confidence": 0.999 + }, + { + "name": "right_eye_inner", + "x": 0.9139, + "y": 0.5133, + "confidence": 0.999 + }, + { + "name": "right_eye", + "x": 0.9128, + "y": 0.5119, + "confidence": 1 + }, + { + "name": "right_eye_outer", + "x": 0.9116, + "y": 0.5106, + "confidence": 1 + }, + { + "name": "left_ear", + "x": 0.9014, + "y": 0.5095, + "confidence": 0.999 + }, + { + "name": "right_ear", + "x": 0.9021, + "y": 0.5073, + "confidence": 0.999 + }, + { + "name": "mouth_left", + "x": 0.9111, + "y": 0.5338, + "confidence": 0.999 + }, + { + "name": "mouth_right", + "x": 0.9115, + "y": 0.5328, + "confidence": 0.999 + }, + { + "name": "left_shoulder", + "x": 0.8687, + "y": 0.5528, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.8904, + "y": 0.5451, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8829, + "y": 0.6391, + "confidence": 0.172 + }, + { + "name": "right_elbow", + "x": 0.8614, + "y": 0.6142, + "confidence": 0.968 + }, + { + "name": "left_wrist", + "x": 0.9207, + "y": 0.653, + "confidence": 0.343 + }, + { + "name": "right_wrist", + "x": 0.8705, + "y": 0.6957, + "confidence": 0.933 + }, + { + "name": "left_pinky", + "x": 0.9338, + "y": 0.6519, + "confidence": 0.357 + }, + { + "name": "right_pinky", + "x": 0.8746, + "y": 0.7183, + "confidence": 0.916 + }, + { + "name": "left_index", + "x": 0.9376, + "y": 0.6504, + "confidence": 0.365 + }, + { + "name": "right_index", + "x": 0.8782, + "y": 0.7188, + "confidence": 0.911 + }, + { + "name": "left_thumb", + "x": 0.9311, + "y": 0.6509, + "confidence": 0.352 + }, + { + "name": "right_thumb", + "x": 0.8762, + "y": 0.7119, + "confidence": 0.872 + }, + { + "name": "left_hip", + "x": 0.8237, + "y": 0.6938, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.8385, + "y": 0.6945, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.8341, + "y": 0.8071, + "confidence": 0.624 + }, + { + "name": "right_knee", + "x": 0.8373, + "y": 0.8264, + "confidence": 0.949 + }, + { + "name": "left_ankle", + "x": 0.787, + "y": 0.9213, + "confidence": 0.808 + }, + { + "name": "right_ankle", + "x": 0.7449, + "y": 0.8644, + "confidence": 0.944 + }, + { + "name": "left_heel", + "x": 0.7708, + "y": 0.9424, + "confidence": 0.854 + }, + { + "name": "right_heel", + "x": 0.7262, + "y": 0.8572, + "confidence": 0.838 + }, + { + "name": "left_foot_index", + "x": 0.8211, + "y": 0.9464, + "confidence": 0.876 + }, + { + "name": "right_foot_index", + "x": 0.7394, + "y": 0.9259, + "confidence": 0.941 + } + ] + } + ] + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 96, + "right": 30, + "up": 11, + "down": 14, + "left": 1 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 4, + "high": 147, + "medium": 1 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 4, + "fast": 120, + "moderate": 28 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 0.5448, + "std": 0.4844, + "min": 0, + "max": 1.9409 + }, + "acceleration": { + "mean": 0.1209, + "std": 14.6676, + "min": -58.0956, + "max": 62.3837 + }, + "fluidity": { + "mean": 0.008, + "std": 0.039 + }, + "expansion": { + "mean": 0.252, + "std": 0.059 + }, + "movement_segments": [ + { + "start_frame": 60, + "start_time": 1, + "peak_velocity": 0.1221, + "dominant_direction": "stationary", + "end_frame": 60, + "end_time": 1, + "duration": 0 + } + ] + } + } + } \ No newline at end of file diff --git a/src/files/movenet_thunder_kp_skate.json b/src/files/movenet_thunder_kp_skate.json new file mode 100644 index 0000000000000000000000000000000000000000..ad05a8e790521e1f55a65f993e9e38d287565e97 --- /dev/null +++ b/src/files/movenet_thunder_kp_skate.json @@ -0,0 +1,27137 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-10T00:03:07.891486", + "version": "1.0.0", + "model_info": { + "name": "movenet-thunder", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 60, + "duration_seconds": 3.55, + "width": 2438, + "height": 1786, + "frame_count": 213 + }, + "movement_analysis": { + "frame_count": 213, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.5419, + "acceleration": 32.5147, + "fluidity": 0, + "expansion": 0.307, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2826, + "y": 0.2811, + "confidence": 0.366 + }, + { + "name": "left_eye", + "x": 0.2923, + "y": 0.2729, + "confidence": 0.55 + }, + { + "name": "right_eye", + "x": 0.2717, + "y": 0.2742, + "confidence": 0.582 + }, + { + "name": "left_ear", + "x": 0.3087, + "y": 0.2638, + "confidence": 0.549 + }, + { + "name": "right_ear", + "x": 0.2613, + "y": 0.2646, + "confidence": 0.571 + }, + { + "name": "left_shoulder", + "x": 0.3337, + "y": 0.2749, + "confidence": 0.677 + }, + { + "name": "right_shoulder", + "x": 0.2311, + "y": 0.2821, + "confidence": 0.52 + }, + { + "name": "left_elbow", + "x": 0.4021, + "y": 0.2431, + "confidence": 0.753 + }, + { + "name": "right_elbow", + "x": 0.18, + "y": 0.2877, + "confidence": 0.735 + }, + { + "name": "left_wrist", + "x": 0.4525, + "y": 0.2327, + "confidence": 0.689 + }, + { + "name": "right_wrist", + "x": 0.1237, + "y": 0.3164, + "confidence": 0.588 + }, + { + "name": "left_hip", + "x": 0.3386, + "y": 0.4198, + "confidence": 0.541 + }, + { + "name": "right_hip", + "x": 0.2791, + "y": 0.4316, + "confidence": 0.419 + }, + { + "name": "left_knee", + "x": 0.3863, + "y": 0.338, + "confidence": 0.504 + }, + { + "name": "right_knee", + "x": 0.2268, + "y": 0.4725, + "confidence": 0.554 + }, + { + "name": "left_ankle", + "x": 0.3309, + "y": 0.4798, + "confidence": 0.359 + }, + { + "name": "right_ankle", + "x": 0.241, + "y": 0.6016, + "confidence": 0.314 + } + ] + } + ] + }, + { + "frame_index": 1, + "timestamp": 0.016666666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.5431, + "acceleration": 10.9067, + "fluidity": 0, + "expansion": 0.332, + "total_displacement": 0.0181, + "center_displacement": { + "x": 0.017, + "y": -0.0061 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.29, + "y": 0.2751, + "confidence": 0.611 + }, + { + "name": "left_eye", + "x": 0.304, + "y": 0.2679, + "confidence": 0.467 + }, + { + "name": "right_eye", + "x": 0.2807, + "y": 0.2674, + "confidence": 0.403 + }, + { + "name": "left_ear", + "x": 0.3165, + "y": 0.2585, + "confidence": 0.637 + }, + { + "name": "right_ear", + "x": 0.2692, + "y": 0.2594, + "confidence": 0.622 + }, + { + "name": "left_shoulder", + "x": 0.3429, + "y": 0.2642, + "confidence": 0.641 + }, + { + "name": "right_shoulder", + "x": 0.2481, + "y": 0.284, + "confidence": 0.598 + }, + { + "name": "left_elbow", + "x": 0.4147, + "y": 0.2441, + "confidence": 0.747 + }, + { + "name": "right_elbow", + "x": 0.1867, + "y": 0.2822, + "confidence": 0.755 + }, + { + "name": "left_wrist", + "x": 0.4698, + "y": 0.2358, + "confidence": 0.859 + }, + { + "name": "right_wrist", + "x": 0.1322, + "y": 0.3051, + "confidence": 0.727 + }, + { + "name": "left_hip", + "x": 0.3634, + "y": 0.4104, + "confidence": 0.523 + }, + { + "name": "right_hip", + "x": 0.3136, + "y": 0.4275, + "confidence": 0.465 + }, + { + "name": "left_knee", + "x": 0.3933, + "y": 0.325, + "confidence": 0.542 + }, + { + "name": "right_knee", + "x": 0.2325, + "y": 0.4537, + "confidence": 0.574 + }, + { + "name": "left_ankle", + "x": 0.3129, + "y": 0.4976, + "confidence": 0.208 + }, + { + "name": "right_ankle", + "x": 0.2457, + "y": 0.578, + "confidence": 0.2 + } + ] + } + ] + }, + { + "frame_index": 2, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1852, + "acceleration": -17.8591, + "fluidity": 0, + "expansion": 0.34, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2902, + "y": 0.2749, + "confidence": 0.609 + }, + { + "name": "left_eye", + "x": 0.3042, + "y": 0.2678, + "confidence": 0.463 + }, + { + "name": "right_eye", + "x": 0.2809, + "y": 0.2673, + "confidence": 0.408 + }, + { + "name": "left_ear", + "x": 0.3166, + "y": 0.2586, + "confidence": 0.637 + }, + { + "name": "right_ear", + "x": 0.2693, + "y": 0.2594, + "confidence": 0.623 + }, + { + "name": "left_shoulder", + "x": 0.3428, + "y": 0.2643, + "confidence": 0.637 + }, + { + "name": "right_shoulder", + "x": 0.2483, + "y": 0.284, + "confidence": 0.599 + }, + { + "name": "left_elbow", + "x": 0.4149, + "y": 0.244, + "confidence": 0.746 + }, + { + "name": "right_elbow", + "x": 0.1867, + "y": 0.2823, + "confidence": 0.753 + }, + { + "name": "left_wrist", + "x": 0.4696, + "y": 0.2358, + "confidence": 0.851 + }, + { + "name": "right_wrist", + "x": 0.1323, + "y": 0.3052, + "confidence": 0.729 + }, + { + "name": "left_hip", + "x": 0.3632, + "y": 0.4101, + "confidence": 0.526 + }, + { + "name": "right_hip", + "x": 0.3135, + "y": 0.4277, + "confidence": 0.462 + }, + { + "name": "left_knee", + "x": 0.3934, + "y": 0.3249, + "confidence": 0.545 + }, + { + "name": "right_knee", + "x": 0.2325, + "y": 0.4538, + "confidence": 0.565 + }, + { + "name": "left_ankle", + "x": 0.3129, + "y": 0.497, + "confidence": 0.201 + }, + { + "name": "right_ankle", + "x": 0.2459, + "y": 0.5782, + "confidence": 0.201 + } + ] + } + ] + }, + { + "frame_index": 3, + "timestamp": 0.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4806, + "acceleration": 18.9312, + "fluidity": 0, + "expansion": 0.348, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.2901, + "y": 0.2752, + "confidence": 0.609 + }, + { + "name": "left_eye", + "x": 0.3042, + "y": 0.2679, + "confidence": 0.465 + }, + { + "name": "right_eye", + "x": 0.2808, + "y": 0.2675, + "confidence": 0.404 + }, + { + "name": "left_ear", + "x": 0.3166, + "y": 0.2584, + "confidence": 0.634 + }, + { + "name": "right_ear", + "x": 0.2693, + "y": 0.2595, + "confidence": 0.619 + }, + { + "name": "left_shoulder", + "x": 0.3429, + "y": 0.2643, + "confidence": 0.638 + }, + { + "name": "right_shoulder", + "x": 0.2482, + "y": 0.284, + "confidence": 0.594 + }, + { + "name": "left_elbow", + "x": 0.4151, + "y": 0.244, + "confidence": 0.739 + }, + { + "name": "right_elbow", + "x": 0.1867, + "y": 0.2822, + "confidence": 0.752 + }, + { + "name": "left_wrist", + "x": 0.4697, + "y": 0.2358, + "confidence": 0.853 + }, + { + "name": "right_wrist", + "x": 0.1324, + "y": 0.305, + "confidence": 0.725 + }, + { + "name": "left_hip", + "x": 0.3634, + "y": 0.4099, + "confidence": 0.532 + }, + { + "name": "right_hip", + "x": 0.3137, + "y": 0.4274, + "confidence": 0.467 + }, + { + "name": "left_knee", + "x": 0.3931, + "y": 0.3252, + "confidence": 0.542 + }, + { + "name": "right_knee", + "x": 0.2325, + "y": 0.4538, + "confidence": 0.568 + }, + { + "name": "left_ankle", + "x": 0.313, + "y": 0.4974, + "confidence": 0.205 + }, + { + "name": "right_ankle", + "x": 0.2457, + "y": 0.5782, + "confidence": 0.2 + } + ] + } + ] + }, + { + "frame_index": 4, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.0779, + "acceleration": 36.2355, + "fluidity": 0, + "expansion": 0.343, + "total_displacement": 0.0208, + "center_displacement": { + "x": 0.0057, + "y": 0.02 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3086, + "y": 0.2689, + "confidence": 0.479 + }, + { + "name": "left_eye", + "x": 0.317, + "y": 0.2604, + "confidence": 0.601 + }, + { + "name": "right_eye", + "x": 0.2942, + "y": 0.261, + "confidence": 0.439 + }, + { + "name": "left_ear", + "x": 0.3251, + "y": 0.2516, + "confidence": 0.345 + }, + { + "name": "right_ear", + "x": 0.2825, + "y": 0.2542, + "confidence": 0.427 + }, + { + "name": "left_shoulder", + "x": 0.3596, + "y": 0.265, + "confidence": 0.581 + }, + { + "name": "right_shoulder", + "x": 0.2526, + "y": 0.2818, + "confidence": 0.525 + }, + { + "name": "left_elbow", + "x": 0.4304, + "y": 0.2443, + "confidence": 0.542 + }, + { + "name": "right_elbow", + "x": 0.195, + "y": 0.2759, + "confidence": 0.656 + }, + { + "name": "left_wrist", + "x": 0.4874, + "y": 0.2355, + "confidence": 0.664 + }, + { + "name": "right_wrist", + "x": 0.1353, + "y": 0.3025, + "confidence": 0.462 + }, + { + "name": "left_hip", + "x": 0.365, + "y": 0.3995, + "confidence": 0.63 + }, + { + "name": "right_hip", + "x": 0.3185, + "y": 0.4113, + "confidence": 0.546 + }, + { + "name": "left_knee", + "x": 0.4078, + "y": 0.3113, + "confidence": 0.386 + }, + { + "name": "right_knee", + "x": 0.2286, + "y": 0.439, + "confidence": 0.621 + }, + { + "name": "left_ankle", + "x": 0.4437, + "y": 0.4371, + "confidence": 0.201 + }, + { + "name": "right_ankle", + "x": 0.2616, + "y": 0.5544, + "confidence": 0.174 + } + ] + } + ] + }, + { + "frame_index": 5, + "timestamp": 0.08333333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.8621, + "acceleration": -12.8154, + "fluidity": 0, + "expansion": 0.329, + "total_displacement": 0.0251, + "center_displacement": { + "x": -0.0249, + "y": 0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3247, + "y": 0.2661, + "confidence": 0.503 + }, + { + "name": "left_eye", + "x": 0.3357, + "y": 0.2565, + "confidence": 0.558 + }, + { + "name": "right_eye", + "x": 0.3116, + "y": 0.2585, + "confidence": 0.402 + }, + { + "name": "left_ear", + "x": 0.3458, + "y": 0.246, + "confidence": 0.395 + }, + { + "name": "right_ear", + "x": 0.2968, + "y": 0.2498, + "confidence": 0.352 + }, + { + "name": "left_shoulder", + "x": 0.3795, + "y": 0.262, + "confidence": 0.44 + }, + { + "name": "right_shoulder", + "x": 0.2695, + "y": 0.2747, + "confidence": 0.58 + }, + { + "name": "left_elbow", + "x": 0.4438, + "y": 0.2454, + "confidence": 0.432 + }, + { + "name": "right_elbow", + "x": 0.2049, + "y": 0.2699, + "confidence": 0.704 + }, + { + "name": "left_wrist", + "x": 0.5099, + "y": 0.2373, + "confidence": 0.681 + }, + { + "name": "right_wrist", + "x": 0.1456, + "y": 0.298, + "confidence": 0.535 + }, + { + "name": "left_hip", + "x": 0.3748, + "y": 0.3946, + "confidence": 0.471 + }, + { + "name": "right_hip", + "x": 0.3286, + "y": 0.4107, + "confidence": 0.52 + }, + { + "name": "left_knee", + "x": 0.4155, + "y": 0.3028, + "confidence": 0.299 + }, + { + "name": "right_knee", + "x": 0.2337, + "y": 0.4181, + "confidence": 0.663 + }, + { + "name": "left_ankle", + "x": 0.4701, + "y": 0.4223, + "confidence": 0.297 + }, + { + "name": "right_ankle", + "x": 0.2764, + "y": 0.5408, + "confidence": 0.528 + } + ] + } + ] + }, + { + "frame_index": 6, + "timestamp": 0.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.2953, + "acceleration": 26.0401, + "fluidity": 0, + "expansion": 0.302, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3246, + "y": 0.2661, + "confidence": 0.502 + }, + { + "name": "left_eye", + "x": 0.3356, + "y": 0.2566, + "confidence": 0.558 + }, + { + "name": "right_eye", + "x": 0.3116, + "y": 0.2585, + "confidence": 0.401 + }, + { + "name": "left_ear", + "x": 0.3457, + "y": 0.246, + "confidence": 0.395 + }, + { + "name": "right_ear", + "x": 0.2969, + "y": 0.2498, + "confidence": 0.352 + }, + { + "name": "left_shoulder", + "x": 0.3734, + "y": 0.2581, + "confidence": 0.491 + }, + { + "name": "right_shoulder", + "x": 0.2695, + "y": 0.2747, + "confidence": 0.58 + }, + { + "name": "left_elbow", + "x": 0.4436, + "y": 0.2454, + "confidence": 0.431 + }, + { + "name": "right_elbow", + "x": 0.205, + "y": 0.27, + "confidence": 0.705 + }, + { + "name": "left_wrist", + "x": 0.5099, + "y": 0.2374, + "confidence": 0.68 + }, + { + "name": "right_wrist", + "x": 0.1454, + "y": 0.298, + "confidence": 0.533 + }, + { + "name": "left_hip", + "x": 0.3747, + "y": 0.3949, + "confidence": 0.474 + }, + { + "name": "right_hip", + "x": 0.3285, + "y": 0.4107, + "confidence": 0.519 + }, + { + "name": "left_knee", + "x": 0.4154, + "y": 0.3029, + "confidence": 0.297 + }, + { + "name": "right_knee", + "x": 0.2336, + "y": 0.4177, + "confidence": 0.659 + }, + { + "name": "left_ankle", + "x": 0.4703, + "y": 0.4228, + "confidence": 0.299 + }, + { + "name": "right_ankle", + "x": 0.2762, + "y": 0.5404, + "confidence": 0.531 + } + ] + } + ] + }, + { + "frame_index": 7, + "timestamp": 0.11666666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.4412, + "acceleration": 8.7698, + "fluidity": 0, + "expansion": 0.271, + "total_displacement": 0.0503, + "center_displacement": { + "x": 0.0497, + "y": -0.0078 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3357, + "y": 0.2592, + "confidence": 0.521 + }, + { + "name": "left_eye", + "x": 0.3478, + "y": 0.2503, + "confidence": 0.362 + }, + { + "name": "right_eye", + "x": 0.3275, + "y": 0.2502, + "confidence": 0.405 + }, + { + "name": "left_ear", + "x": 0.358, + "y": 0.2437, + "confidence": 0.557 + }, + { + "name": "right_ear", + "x": 0.3134, + "y": 0.2452, + "confidence": 0.544 + }, + { + "name": "left_shoulder", + "x": 0.3826, + "y": 0.2552, + "confidence": 0.668 + }, + { + "name": "right_shoulder", + "x": 0.2794, + "y": 0.2721, + "confidence": 0.545 + }, + { + "name": "left_elbow", + "x": 0.4432, + "y": 0.2485, + "confidence": 0.481 + }, + { + "name": "right_elbow", + "x": 0.2124, + "y": 0.2651, + "confidence": 0.769 + }, + { + "name": "left_wrist", + "x": 0.5186, + "y": 0.2431, + "confidence": 0.609 + }, + { + "name": "right_wrist", + "x": 0.1502, + "y": 0.2979, + "confidence": 0.518 + }, + { + "name": "left_hip", + "x": 0.3891, + "y": 0.3989, + "confidence": 0.62 + }, + { + "name": "right_hip", + "x": 0.344, + "y": 0.4135, + "confidence": 0.533 + }, + { + "name": "left_knee", + "x": 0.43, + "y": 0.2956, + "confidence": 0.407 + }, + { + "name": "right_knee", + "x": 0.2385, + "y": 0.4011, + "confidence": 0.62 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.4122, + "confidence": 0.5 + }, + { + "name": "right_ankle", + "x": 0.289, + "y": 0.5081, + "confidence": 0.437 + } + ] + } + ] + }, + { + "frame_index": 8, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4849, + "acceleration": -57.3725, + "fluidity": 0.206, + "expansion": 0.261, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3358, + "y": 0.2593, + "confidence": 0.522 + }, + { + "name": "left_eye", + "x": 0.3478, + "y": 0.2504, + "confidence": 0.367 + }, + { + "name": "right_eye", + "x": 0.3276, + "y": 0.2503, + "confidence": 0.406 + }, + { + "name": "left_ear", + "x": 0.3581, + "y": 0.2438, + "confidence": 0.554 + }, + { + "name": "right_ear", + "x": 0.3135, + "y": 0.2453, + "confidence": 0.54 + }, + { + "name": "left_shoulder", + "x": 0.3826, + "y": 0.2553, + "confidence": 0.67 + }, + { + "name": "right_shoulder", + "x": 0.2793, + "y": 0.2721, + "confidence": 0.545 + }, + { + "name": "left_elbow", + "x": 0.4433, + "y": 0.2485, + "confidence": 0.476 + }, + { + "name": "right_elbow", + "x": 0.2125, + "y": 0.2652, + "confidence": 0.769 + }, + { + "name": "left_wrist", + "x": 0.5187, + "y": 0.2431, + "confidence": 0.605 + }, + { + "name": "right_wrist", + "x": 0.1502, + "y": 0.298, + "confidence": 0.515 + }, + { + "name": "left_hip", + "x": 0.3892, + "y": 0.3985, + "confidence": 0.621 + }, + { + "name": "right_hip", + "x": 0.344, + "y": 0.4133, + "confidence": 0.536 + }, + { + "name": "left_knee", + "x": 0.4299, + "y": 0.2956, + "confidence": 0.404 + }, + { + "name": "right_knee", + "x": 0.2385, + "y": 0.4011, + "confidence": 0.62 + }, + { + "name": "left_ankle", + "x": 0.4951, + "y": 0.4121, + "confidence": 0.502 + }, + { + "name": "right_ankle", + "x": 0.289, + "y": 0.5085, + "confidence": 0.435 + } + ] + } + ] + }, + { + "frame_index": 9, + "timestamp": 0.15, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 1.6356, + "acceleration": 69.0398, + "fluidity": 0.274, + "expansion": 0.253, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3356, + "y": 0.2593, + "confidence": 0.521 + }, + { + "name": "left_eye", + "x": 0.3477, + "y": 0.2503, + "confidence": 0.358 + }, + { + "name": "right_eye", + "x": 0.3273, + "y": 0.2502, + "confidence": 0.406 + }, + { + "name": "left_ear", + "x": 0.3581, + "y": 0.2437, + "confidence": 0.554 + }, + { + "name": "right_ear", + "x": 0.3134, + "y": 0.2452, + "confidence": 0.541 + }, + { + "name": "left_shoulder", + "x": 0.383, + "y": 0.2552, + "confidence": 0.675 + }, + { + "name": "right_shoulder", + "x": 0.2795, + "y": 0.272, + "confidence": 0.548 + }, + { + "name": "left_elbow", + "x": 0.4436, + "y": 0.2486, + "confidence": 0.475 + }, + { + "name": "right_elbow", + "x": 0.2125, + "y": 0.265, + "confidence": 0.769 + }, + { + "name": "left_wrist", + "x": 0.5186, + "y": 0.2433, + "confidence": 0.603 + }, + { + "name": "right_wrist", + "x": 0.1505, + "y": 0.2979, + "confidence": 0.508 + }, + { + "name": "left_hip", + "x": 0.3891, + "y": 0.3987, + "confidence": 0.621 + }, + { + "name": "right_hip", + "x": 0.3439, + "y": 0.4134, + "confidence": 0.535 + }, + { + "name": "left_knee", + "x": 0.43, + "y": 0.2957, + "confidence": 0.406 + }, + { + "name": "right_knee", + "x": 0.2385, + "y": 0.4011, + "confidence": 0.621 + }, + { + "name": "left_ankle", + "x": 0.4952, + "y": 0.4121, + "confidence": 0.502 + }, + { + "name": "right_ankle", + "x": 0.2891, + "y": 0.5084, + "confidence": 0.434 + } + ] + } + ] + }, + { + "frame_index": 10, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.0193, + "acceleration": 23.0269, + "fluidity": 0.091, + "expansion": 0.247, + "total_displacement": 0.0736, + "center_displacement": { + "x": -0.0076, + "y": -0.0732 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3479, + "y": 0.2602, + "confidence": 0.49 + }, + { + "name": "left_eye", + "x": 0.3584, + "y": 0.2495, + "confidence": 0.304 + }, + { + "name": "right_eye", + "x": 0.3387, + "y": 0.2485, + "confidence": 0.434 + }, + { + "name": "left_ear", + "x": 0.3655, + "y": 0.2407, + "confidence": 0.594 + }, + { + "name": "right_ear", + "x": 0.3204, + "y": 0.2394, + "confidence": 0.595 + }, + { + "name": "left_shoulder", + "x": 0.3912, + "y": 0.2541, + "confidence": 0.551 + }, + { + "name": "right_shoulder", + "x": 0.2913, + "y": 0.2692, + "confidence": 0.576 + }, + { + "name": "left_elbow", + "x": 0.4447, + "y": 0.2516, + "confidence": 0.495 + }, + { + "name": "right_elbow", + "x": 0.2071, + "y": 0.2658, + "confidence": 0.703 + }, + { + "name": "left_wrist", + "x": 0.5204, + "y": 0.2499, + "confidence": 0.5 + }, + { + "name": "right_wrist", + "x": 0.1529, + "y": 0.2937, + "confidence": 0.506 + }, + { + "name": "left_hip", + "x": 0.3915, + "y": 0.4032, + "confidence": 0.497 + }, + { + "name": "right_hip", + "x": 0.345, + "y": 0.4153, + "confidence": 0.493 + }, + { + "name": "left_knee", + "x": 0.4402, + "y": 0.2926, + "confidence": 0.544 + }, + { + "name": "right_knee", + "x": 0.25, + "y": 0.3786, + "confidence": 0.576 + }, + { + "name": "left_ankle", + "x": 0.5088, + "y": 0.3909, + "confidence": 0.379 + }, + { + "name": "right_ankle", + "x": 0.2962, + "y": 0.4787, + "confidence": 0.493 + } + ] + } + ] + }, + { + "frame_index": 11, + "timestamp": 0.18333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.1332, + "acceleration": 6.8339, + "fluidity": 0.03, + "expansion": 0.244, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3479, + "y": 0.2599, + "confidence": 0.492 + }, + { + "name": "left_eye", + "x": 0.3585, + "y": 0.2492, + "confidence": 0.301 + }, + { + "name": "right_eye", + "x": 0.3388, + "y": 0.2482, + "confidence": 0.431 + }, + { + "name": "left_ear", + "x": 0.3654, + "y": 0.2406, + "confidence": 0.593 + }, + { + "name": "right_ear", + "x": 0.3204, + "y": 0.2394, + "confidence": 0.594 + }, + { + "name": "left_shoulder", + "x": 0.3911, + "y": 0.254, + "confidence": 0.552 + }, + { + "name": "right_shoulder", + "x": 0.2912, + "y": 0.2692, + "confidence": 0.577 + }, + { + "name": "left_elbow", + "x": 0.4444, + "y": 0.2516, + "confidence": 0.481 + }, + { + "name": "right_elbow", + "x": 0.2071, + "y": 0.2659, + "confidence": 0.701 + }, + { + "name": "left_wrist", + "x": 0.5204, + "y": 0.2497, + "confidence": 0.511 + }, + { + "name": "right_wrist", + "x": 0.1527, + "y": 0.2938, + "confidence": 0.505 + }, + { + "name": "left_hip", + "x": 0.3915, + "y": 0.4034, + "confidence": 0.497 + }, + { + "name": "right_hip", + "x": 0.3452, + "y": 0.4154, + "confidence": 0.491 + }, + { + "name": "left_knee", + "x": 0.4402, + "y": 0.2924, + "confidence": 0.542 + }, + { + "name": "right_knee", + "x": 0.2499, + "y": 0.3786, + "confidence": 0.573 + }, + { + "name": "left_ankle", + "x": 0.5088, + "y": 0.391, + "confidence": 0.379 + }, + { + "name": "right_ankle", + "x": 0.2962, + "y": 0.4785, + "confidence": 0.489 + } + ] + } + ] + }, + { + "frame_index": 12, + "timestamp": 0.2, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.1696, + "acceleration": 2.1835, + "fluidity": 0.01, + "expansion": 0.242, + "total_displacement": 0.0729, + "center_displacement": { + "x": 0.0207, + "y": 0.0699 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3603, + "y": 0.2628, + "confidence": 0.439 + }, + { + "name": "left_eye", + "x": 0.3724, + "y": 0.2499, + "confidence": 0.336 + }, + { + "name": "right_eye", + "x": 0.3482, + "y": 0.2509, + "confidence": 0.387 + }, + { + "name": "left_ear", + "x": 0.3772, + "y": 0.2398, + "confidence": 0.524 + }, + { + "name": "right_ear", + "x": 0.3282, + "y": 0.2401, + "confidence": 0.388 + }, + { + "name": "left_shoulder", + "x": 0.4087, + "y": 0.2516, + "confidence": 0.596 + }, + { + "name": "right_shoulder", + "x": 0.2955, + "y": 0.2599, + "confidence": 0.621 + }, + { + "name": "left_elbow", + "x": 0.4617, + "y": 0.2565, + "confidence": 0.512 + }, + { + "name": "right_elbow", + "x": 0.2075, + "y": 0.2638, + "confidence": 0.605 + }, + { + "name": "left_wrist", + "x": 0.5384, + "y": 0.2525, + "confidence": 0.532 + }, + { + "name": "right_wrist", + "x": 0.1632, + "y": 0.295, + "confidence": 0.608 + }, + { + "name": "left_hip", + "x": 0.3991, + "y": 0.4022, + "confidence": 0.528 + }, + { + "name": "right_hip", + "x": 0.344, + "y": 0.4122, + "confidence": 0.603 + }, + { + "name": "left_knee", + "x": 0.4501, + "y": 0.291, + "confidence": 0.604 + }, + { + "name": "right_knee", + "x": 0.2597, + "y": 0.3662, + "confidence": 0.531 + }, + { + "name": "left_ankle", + "x": 0.533, + "y": 0.3843, + "confidence": 0.433 + }, + { + "name": "right_ankle", + "x": 0.3055, + "y": 0.4586, + "confidence": 0.431 + } + ] + } + ] + }, + { + "frame_index": 13, + "timestamp": 0.21666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7258, + "acceleration": -86.631, + "fluidity": 0.003, + "expansion": 0.242, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3604, + "y": 0.263, + "confidence": 0.44 + }, + { + "name": "left_eye", + "x": 0.3725, + "y": 0.2501, + "confidence": 0.339 + }, + { + "name": "right_eye", + "x": 0.3483, + "y": 0.2511, + "confidence": 0.391 + }, + { + "name": "left_ear", + "x": 0.3773, + "y": 0.2399, + "confidence": 0.527 + }, + { + "name": "right_ear", + "x": 0.3283, + "y": 0.2402, + "confidence": 0.391 + }, + { + "name": "left_shoulder", + "x": 0.4087, + "y": 0.2517, + "confidence": 0.595 + }, + { + "name": "right_shoulder", + "x": 0.2956, + "y": 0.2599, + "confidence": 0.621 + }, + { + "name": "left_elbow", + "x": 0.4621, + "y": 0.2562, + "confidence": 0.521 + }, + { + "name": "right_elbow", + "x": 0.2074, + "y": 0.2638, + "confidence": 0.605 + }, + { + "name": "left_wrist", + "x": 0.5379, + "y": 0.2528, + "confidence": 0.534 + }, + { + "name": "right_wrist", + "x": 0.1633, + "y": 0.2949, + "confidence": 0.604 + }, + { + "name": "left_hip", + "x": 0.3991, + "y": 0.402, + "confidence": 0.529 + }, + { + "name": "right_hip", + "x": 0.3439, + "y": 0.4122, + "confidence": 0.605 + }, + { + "name": "left_knee", + "x": 0.4502, + "y": 0.2911, + "confidence": 0.61 + }, + { + "name": "right_knee", + "x": 0.2596, + "y": 0.366, + "confidence": 0.536 + }, + { + "name": "left_ankle", + "x": 0.533, + "y": 0.3841, + "confidence": 0.429 + }, + { + "name": "right_ankle", + "x": 0.3056, + "y": 0.4589, + "confidence": 0.433 + } + ] + } + ] + }, + { + "frame_index": 14, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7288, + "acceleration": 0.1797, + "fluidity": 0.001, + "expansion": 0.24, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3603, + "y": 0.2627, + "confidence": 0.439 + }, + { + "name": "left_eye", + "x": 0.3724, + "y": 0.2498, + "confidence": 0.332 + }, + { + "name": "right_eye", + "x": 0.3482, + "y": 0.2508, + "confidence": 0.386 + }, + { + "name": "left_ear", + "x": 0.3773, + "y": 0.2398, + "confidence": 0.523 + }, + { + "name": "right_ear", + "x": 0.3283, + "y": 0.24, + "confidence": 0.386 + }, + { + "name": "left_shoulder", + "x": 0.4089, + "y": 0.2515, + "confidence": 0.599 + }, + { + "name": "right_shoulder", + "x": 0.2955, + "y": 0.2599, + "confidence": 0.622 + }, + { + "name": "left_elbow", + "x": 0.4619, + "y": 0.2564, + "confidence": 0.513 + }, + { + "name": "right_elbow", + "x": 0.2077, + "y": 0.2638, + "confidence": 0.606 + }, + { + "name": "left_wrist", + "x": 0.5382, + "y": 0.2526, + "confidence": 0.538 + }, + { + "name": "right_wrist", + "x": 0.1633, + "y": 0.2949, + "confidence": 0.608 + }, + { + "name": "left_hip", + "x": 0.3992, + "y": 0.4022, + "confidence": 0.528 + }, + { + "name": "right_hip", + "x": 0.344, + "y": 0.4123, + "confidence": 0.602 + }, + { + "name": "left_knee", + "x": 0.4502, + "y": 0.2912, + "confidence": 0.608 + }, + { + "name": "right_knee", + "x": 0.2597, + "y": 0.3661, + "confidence": 0.535 + }, + { + "name": "left_ankle", + "x": 0.5331, + "y": 0.3842, + "confidence": 0.433 + }, + { + "name": "right_ankle", + "x": 0.3054, + "y": 0.4591, + "confidence": 0.432 + } + ] + } + ] + }, + { + "frame_index": 15, + "timestamp": 0.25, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.7294, + "acceleration": 0.0344, + "fluidity": 0, + "expansion": 0.239, + "total_displacement": 0.0242, + "center_displacement": { + "x": -0.0014, + "y": -0.0242 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3705, + "y": 0.2578, + "confidence": 0.515 + }, + { + "name": "left_eye", + "x": 0.3783, + "y": 0.2461, + "confidence": 0.524 + }, + { + "name": "right_eye", + "x": 0.3556, + "y": 0.2487, + "confidence": 0.397 + }, + { + "name": "left_ear", + "x": 0.3878, + "y": 0.2375, + "confidence": 0.44 + }, + { + "name": "right_ear", + "x": 0.3384, + "y": 0.239, + "confidence": 0.549 + }, + { + "name": "left_shoulder", + "x": 0.4238, + "y": 0.2512, + "confidence": 0.579 + }, + { + "name": "right_shoulder", + "x": 0.3047, + "y": 0.2603, + "confidence": 0.67 + }, + { + "name": "left_elbow", + "x": 0.473, + "y": 0.2575, + "confidence": 0.356 + }, + { + "name": "right_elbow", + "x": 0.2265, + "y": 0.2636, + "confidence": 0.594 + }, + { + "name": "left_wrist", + "x": 0.5516, + "y": 0.2537, + "confidence": 0.568 + }, + { + "name": "right_wrist", + "x": 0.1637, + "y": 0.3028, + "confidence": 0.611 + }, + { + "name": "left_hip", + "x": 0.4082, + "y": 0.3989, + "confidence": 0.496 + }, + { + "name": "right_hip", + "x": 0.353, + "y": 0.4103, + "confidence": 0.661 + }, + { + "name": "left_knee", + "x": 0.4613, + "y": 0.2905, + "confidence": 0.568 + }, + { + "name": "right_knee", + "x": 0.2605, + "y": 0.3497, + "confidence": 0.595 + }, + { + "name": "left_ankle", + "x": 0.5495, + "y": 0.3708, + "confidence": 0.392 + }, + { + "name": "right_ankle", + "x": 0.3259, + "y": 0.4379, + "confidence": 0.321 + } + ] + } + ] + }, + { + "frame_index": 16, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.5054, + "acceleration": -13.4341, + "fluidity": 0, + "expansion": 0.232, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3707, + "y": 0.2577, + "confidence": 0.51 + }, + { + "name": "left_eye", + "x": 0.3784, + "y": 0.246, + "confidence": 0.525 + }, + { + "name": "right_eye", + "x": 0.3557, + "y": 0.2486, + "confidence": 0.397 + }, + { + "name": "left_ear", + "x": 0.3877, + "y": 0.2374, + "confidence": 0.439 + }, + { + "name": "right_ear", + "x": 0.3384, + "y": 0.2389, + "confidence": 0.545 + }, + { + "name": "left_shoulder", + "x": 0.4238, + "y": 0.251, + "confidence": 0.575 + }, + { + "name": "right_shoulder", + "x": 0.3045, + "y": 0.2602, + "confidence": 0.671 + }, + { + "name": "left_elbow", + "x": 0.4728, + "y": 0.2574, + "confidence": 0.355 + }, + { + "name": "right_elbow", + "x": 0.2263, + "y": 0.2636, + "confidence": 0.596 + }, + { + "name": "left_wrist", + "x": 0.5516, + "y": 0.2537, + "confidence": 0.57 + }, + { + "name": "right_wrist", + "x": 0.1638, + "y": 0.3027, + "confidence": 0.613 + }, + { + "name": "left_hip", + "x": 0.4081, + "y": 0.3996, + "confidence": 0.492 + }, + { + "name": "right_hip", + "x": 0.353, + "y": 0.4107, + "confidence": 0.661 + }, + { + "name": "left_knee", + "x": 0.4613, + "y": 0.2906, + "confidence": 0.568 + }, + { + "name": "right_knee", + "x": 0.2606, + "y": 0.3498, + "confidence": 0.597 + }, + { + "name": "left_ankle", + "x": 0.5496, + "y": 0.371, + "confidence": 0.384 + }, + { + "name": "right_ankle", + "x": 0.3262, + "y": 0.4377, + "confidence": 0.323 + } + ] + } + ] + }, + { + "frame_index": 17, + "timestamp": 0.2833333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4317, + "acceleration": -4.4278, + "fluidity": 0, + "expansion": 0.224, + "total_displacement": 0.013, + "center_displacement": { + "x": 0.0092, + "y": -0.0092 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3822, + "y": 0.2552, + "confidence": 0.482 + }, + { + "name": "left_eye", + "x": 0.3909, + "y": 0.2439, + "confidence": 0.478 + }, + { + "name": "right_eye", + "x": 0.3699, + "y": 0.2471, + "confidence": 0.538 + }, + { + "name": "left_ear", + "x": 0.3972, + "y": 0.2343, + "confidence": 0.384 + }, + { + "name": "right_ear", + "x": 0.3493, + "y": 0.2364, + "confidence": 0.373 + }, + { + "name": "left_shoulder", + "x": 0.4371, + "y": 0.2495, + "confidence": 0.506 + }, + { + "name": "right_shoulder", + "x": 0.3168, + "y": 0.254, + "confidence": 0.573 + }, + { + "name": "left_elbow", + "x": 0.496, + "y": 0.2549, + "confidence": 0.344 + }, + { + "name": "right_elbow", + "x": 0.2402, + "y": 0.2561, + "confidence": 0.687 + }, + { + "name": "left_wrist", + "x": 0.5542, + "y": 0.2622, + "confidence": 0.605 + }, + { + "name": "right_wrist", + "x": 0.192, + "y": 0.2853, + "confidence": 0.385 + }, + { + "name": "left_hip", + "x": 0.421, + "y": 0.3852, + "confidence": 0.421 + }, + { + "name": "right_hip", + "x": 0.355, + "y": 0.3907, + "confidence": 0.62 + }, + { + "name": "left_knee", + "x": 0.4765, + "y": 0.285, + "confidence": 0.434 + }, + { + "name": "right_knee", + "x": 0.2739, + "y": 0.3431, + "confidence": 0.535 + }, + { + "name": "left_ankle", + "x": 0.5588, + "y": 0.3588, + "confidence": 0.354 + }, + { + "name": "right_ankle", + "x": 0.3384, + "y": 0.4114, + "confidence": 0.491 + } + ] + } + ] + }, + { + "frame_index": 18, + "timestamp": 0.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1496, + "acceleration": -16.9217, + "fluidity": 0, + "expansion": 0.221, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3822, + "y": 0.2552, + "confidence": 0.482 + }, + { + "name": "left_eye", + "x": 0.391, + "y": 0.2439, + "confidence": 0.477 + }, + { + "name": "right_eye", + "x": 0.37, + "y": 0.2472, + "confidence": 0.538 + }, + { + "name": "left_ear", + "x": 0.3973, + "y": 0.2344, + "confidence": 0.384 + }, + { + "name": "right_ear", + "x": 0.3493, + "y": 0.2363, + "confidence": 0.373 + }, + { + "name": "left_shoulder", + "x": 0.4371, + "y": 0.2494, + "confidence": 0.506 + }, + { + "name": "right_shoulder", + "x": 0.3168, + "y": 0.2539, + "confidence": 0.573 + }, + { + "name": "left_elbow", + "x": 0.4959, + "y": 0.255, + "confidence": 0.345 + }, + { + "name": "right_elbow", + "x": 0.2402, + "y": 0.256, + "confidence": 0.687 + }, + { + "name": "left_wrist", + "x": 0.5542, + "y": 0.2622, + "confidence": 0.601 + }, + { + "name": "right_wrist", + "x": 0.1919, + "y": 0.2853, + "confidence": 0.387 + }, + { + "name": "left_hip", + "x": 0.4211, + "y": 0.3851, + "confidence": 0.426 + }, + { + "name": "right_hip", + "x": 0.3554, + "y": 0.3909, + "confidence": 0.619 + }, + { + "name": "left_knee", + "x": 0.4765, + "y": 0.2849, + "confidence": 0.432 + }, + { + "name": "right_knee", + "x": 0.2739, + "y": 0.3431, + "confidence": 0.535 + }, + { + "name": "left_ankle", + "x": 0.5587, + "y": 0.3588, + "confidence": 0.356 + }, + { + "name": "right_ankle", + "x": 0.3386, + "y": 0.4114, + "confidence": 0.491 + } + ] + } + ] + }, + { + "frame_index": 19, + "timestamp": 0.31666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.5119, + "acceleration": 21.7395, + "fluidity": 0, + "expansion": 0.218, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3822, + "y": 0.2551, + "confidence": 0.48 + }, + { + "name": "left_eye", + "x": 0.3909, + "y": 0.2438, + "confidence": 0.475 + }, + { + "name": "right_eye", + "x": 0.37, + "y": 0.247, + "confidence": 0.539 + }, + { + "name": "left_ear", + "x": 0.3972, + "y": 0.2342, + "confidence": 0.383 + }, + { + "name": "right_ear", + "x": 0.3493, + "y": 0.2363, + "confidence": 0.369 + }, + { + "name": "left_shoulder", + "x": 0.4371, + "y": 0.2494, + "confidence": 0.506 + }, + { + "name": "right_shoulder", + "x": 0.3168, + "y": 0.2538, + "confidence": 0.573 + }, + { + "name": "left_elbow", + "x": 0.496, + "y": 0.2549, + "confidence": 0.344 + }, + { + "name": "right_elbow", + "x": 0.2403, + "y": 0.256, + "confidence": 0.686 + }, + { + "name": "left_wrist", + "x": 0.5545, + "y": 0.2622, + "confidence": 0.606 + }, + { + "name": "right_wrist", + "x": 0.1919, + "y": 0.2853, + "confidence": 0.386 + }, + { + "name": "left_hip", + "x": 0.4213, + "y": 0.3849, + "confidence": 0.427 + }, + { + "name": "right_hip", + "x": 0.3551, + "y": 0.3906, + "confidence": 0.62 + }, + { + "name": "left_knee", + "x": 0.4765, + "y": 0.2848, + "confidence": 0.432 + }, + { + "name": "right_knee", + "x": 0.2738, + "y": 0.3429, + "confidence": 0.537 + }, + { + "name": "left_ankle", + "x": 0.559, + "y": 0.3588, + "confidence": 0.356 + }, + { + "name": "right_ankle", + "x": 0.3383, + "y": 0.4116, + "confidence": 0.493 + } + ] + } + ] + }, + { + "frame_index": 20, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.632, + "acceleration": 7.2005, + "fluidity": 0, + "expansion": 0.214, + "total_displacement": 0.0229, + "center_displacement": { + "x": -0.0196, + "y": 0.0119 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3931, + "y": 0.2563, + "confidence": 0.418 + }, + { + "name": "left_eye", + "x": 0.4036, + "y": 0.2452, + "confidence": 0.514 + }, + { + "name": "right_eye", + "x": 0.3792, + "y": 0.2489, + "confidence": 0.486 + }, + { + "name": "left_ear", + "x": 0.4104, + "y": 0.2325, + "confidence": 0.372 + }, + { + "name": "right_ear", + "x": 0.3626, + "y": 0.2348, + "confidence": 0.491 + }, + { + "name": "left_shoulder", + "x": 0.4466, + "y": 0.2438, + "confidence": 0.346 + }, + { + "name": "right_shoulder", + "x": 0.3303, + "y": 0.2474, + "confidence": 0.668 + }, + { + "name": "left_elbow", + "x": 0.5163, + "y": 0.2503, + "confidence": 0.273 + }, + { + "name": "right_elbow", + "x": 0.2501, + "y": 0.2573, + "confidence": 0.618 + }, + { + "name": "left_wrist", + "x": 0.5682, + "y": 0.2637, + "confidence": 0.487 + }, + { + "name": "right_wrist", + "x": 0.2186, + "y": 0.2799, + "confidence": 0.417 + }, + { + "name": "left_hip", + "x": 0.4306, + "y": 0.3708, + "confidence": 0.486 + }, + { + "name": "right_hip", + "x": 0.3698, + "y": 0.3722, + "confidence": 0.574 + }, + { + "name": "left_knee", + "x": 0.4883, + "y": 0.2899, + "confidence": 0.389 + }, + { + "name": "right_knee", + "x": 0.2889, + "y": 0.3347, + "confidence": 0.521 + }, + { + "name": "left_ankle", + "x": 0.5719, + "y": 0.3609, + "confidence": 0.34 + }, + { + "name": "right_ankle", + "x": 0.3485, + "y": 0.3958, + "confidence": 0.384 + } + ] + } + ] + }, + { + "frame_index": 21, + "timestamp": 0.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4994, + "acceleration": -7.9515, + "fluidity": 0, + "expansion": 0.209, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.3929, + "y": 0.2565, + "confidence": 0.418 + }, + { + "name": "left_eye", + "x": 0.4035, + "y": 0.2454, + "confidence": 0.514 + }, + { + "name": "right_eye", + "x": 0.379, + "y": 0.249, + "confidence": 0.479 + }, + { + "name": "left_ear", + "x": 0.4105, + "y": 0.2327, + "confidence": 0.377 + }, + { + "name": "right_ear", + "x": 0.3626, + "y": 0.2349, + "confidence": 0.489 + }, + { + "name": "left_shoulder", + "x": 0.4467, + "y": 0.244, + "confidence": 0.351 + }, + { + "name": "right_shoulder", + "x": 0.3305, + "y": 0.2475, + "confidence": 0.666 + }, + { + "name": "left_elbow", + "x": 0.5167, + "y": 0.2505, + "confidence": 0.271 + }, + { + "name": "right_elbow", + "x": 0.2501, + "y": 0.2573, + "confidence": 0.614 + }, + { + "name": "left_wrist", + "x": 0.5683, + "y": 0.2638, + "confidence": 0.493 + }, + { + "name": "right_wrist", + "x": 0.2189, + "y": 0.2798, + "confidence": 0.423 + }, + { + "name": "left_hip", + "x": 0.4304, + "y": 0.3709, + "confidence": 0.487 + }, + { + "name": "right_hip", + "x": 0.3697, + "y": 0.3724, + "confidence": 0.576 + }, + { + "name": "left_knee", + "x": 0.4883, + "y": 0.29, + "confidence": 0.388 + }, + { + "name": "right_knee", + "x": 0.289, + "y": 0.3349, + "confidence": 0.521 + }, + { + "name": "left_ankle", + "x": 0.572, + "y": 0.3609, + "confidence": 0.337 + }, + { + "name": "right_ankle", + "x": 0.3483, + "y": 0.3958, + "confidence": 0.388 + } + ] + } + ] + }, + { + "frame_index": 22, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4539, + "acceleration": -2.7308, + "fluidity": 0, + "expansion": 0.205, + "total_displacement": 0.0143, + "center_displacement": { + "x": 0.0143, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4033, + "y": 0.2538, + "confidence": 0.399 + }, + { + "name": "left_eye", + "x": 0.4146, + "y": 0.2404, + "confidence": 0.594 + }, + { + "name": "right_eye", + "x": 0.3917, + "y": 0.2444, + "confidence": 0.432 + }, + { + "name": "left_ear", + "x": 0.4197, + "y": 0.2311, + "confidence": 0.408 + }, + { + "name": "right_ear", + "x": 0.3748, + "y": 0.2323, + "confidence": 0.354 + }, + { + "name": "left_shoulder", + "x": 0.4505, + "y": 0.2458, + "confidence": 0.497 + }, + { + "name": "right_shoulder", + "x": 0.344, + "y": 0.2446, + "confidence": 0.727 + }, + { + "name": "left_elbow", + "x": 0.528, + "y": 0.2471, + "confidence": 0.484 + }, + { + "name": "right_elbow", + "x": 0.2679, + "y": 0.2586, + "confidence": 0.645 + }, + { + "name": "left_wrist", + "x": 0.5821, + "y": 0.2651, + "confidence": 0.53 + }, + { + "name": "right_wrist", + "x": 0.2324, + "y": 0.2902, + "confidence": 0.423 + }, + { + "name": "left_hip", + "x": 0.4364, + "y": 0.3699, + "confidence": 0.386 + }, + { + "name": "right_hip", + "x": 0.3848, + "y": 0.3738, + "confidence": 0.559 + }, + { + "name": "left_knee", + "x": 0.5056, + "y": 0.2825, + "confidence": 0.364 + }, + { + "name": "right_knee", + "x": 0.3036, + "y": 0.3143, + "confidence": 0.45 + }, + { + "name": "left_ankle", + "x": 0.5784, + "y": 0.3501, + "confidence": 0.394 + }, + { + "name": "right_ankle", + "x": 0.3605, + "y": 0.3783, + "confidence": 0.339 + } + ] + } + ] + }, + { + "frame_index": 23, + "timestamp": 0.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1542, + "acceleration": -17.982, + "fluidity": 0.272, + "expansion": 0.204, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4033, + "y": 0.2538, + "confidence": 0.398 + }, + { + "name": "left_eye", + "x": 0.4145, + "y": 0.2404, + "confidence": 0.595 + }, + { + "name": "right_eye", + "x": 0.3918, + "y": 0.2445, + "confidence": 0.434 + }, + { + "name": "left_ear", + "x": 0.4197, + "y": 0.2311, + "confidence": 0.405 + }, + { + "name": "right_ear", + "x": 0.3748, + "y": 0.2323, + "confidence": 0.356 + }, + { + "name": "left_shoulder", + "x": 0.4505, + "y": 0.246, + "confidence": 0.496 + }, + { + "name": "right_shoulder", + "x": 0.344, + "y": 0.2446, + "confidence": 0.726 + }, + { + "name": "left_elbow", + "x": 0.5282, + "y": 0.2472, + "confidence": 0.48 + }, + { + "name": "right_elbow", + "x": 0.2679, + "y": 0.2586, + "confidence": 0.646 + }, + { + "name": "left_wrist", + "x": 0.5823, + "y": 0.2652, + "confidence": 0.535 + }, + { + "name": "right_wrist", + "x": 0.2324, + "y": 0.2901, + "confidence": 0.418 + }, + { + "name": "left_hip", + "x": 0.4364, + "y": 0.3697, + "confidence": 0.387 + }, + { + "name": "right_hip", + "x": 0.3847, + "y": 0.3737, + "confidence": 0.558 + }, + { + "name": "left_knee", + "x": 0.5057, + "y": 0.2825, + "confidence": 0.365 + }, + { + "name": "right_knee", + "x": 0.3036, + "y": 0.3143, + "confidence": 0.451 + }, + { + "name": "left_ankle", + "x": 0.5784, + "y": 0.35, + "confidence": 0.393 + }, + { + "name": "right_ankle", + "x": 0.3606, + "y": 0.3785, + "confidence": 0.338 + } + ] + } + ] + }, + { + "frame_index": 24, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.2652, + "acceleration": 6.6564, + "fluidity": 0.363, + "expansion": 0.199, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4032, + "y": 0.2538, + "confidence": 0.399 + }, + { + "name": "left_eye", + "x": 0.4145, + "y": 0.2404, + "confidence": 0.596 + }, + { + "name": "right_eye", + "x": 0.3917, + "y": 0.2444, + "confidence": 0.431 + }, + { + "name": "left_ear", + "x": 0.4196, + "y": 0.2311, + "confidence": 0.406 + }, + { + "name": "right_ear", + "x": 0.3748, + "y": 0.2322, + "confidence": 0.356 + }, + { + "name": "left_shoulder", + "x": 0.4504, + "y": 0.2458, + "confidence": 0.496 + }, + { + "name": "right_shoulder", + "x": 0.344, + "y": 0.2445, + "confidence": 0.725 + }, + { + "name": "left_elbow", + "x": 0.5281, + "y": 0.2471, + "confidence": 0.482 + }, + { + "name": "right_elbow", + "x": 0.2679, + "y": 0.2586, + "confidence": 0.646 + }, + { + "name": "left_wrist", + "x": 0.5822, + "y": 0.2651, + "confidence": 0.536 + }, + { + "name": "right_wrist", + "x": 0.2322, + "y": 0.2903, + "confidence": 0.42 + }, + { + "name": "left_hip", + "x": 0.4362, + "y": 0.37, + "confidence": 0.38 + }, + { + "name": "right_hip", + "x": 0.3846, + "y": 0.3739, + "confidence": 0.558 + }, + { + "name": "left_knee", + "x": 0.5057, + "y": 0.2825, + "confidence": 0.363 + }, + { + "name": "right_knee", + "x": 0.3036, + "y": 0.3141, + "confidence": 0.45 + }, + { + "name": "left_ankle", + "x": 0.5783, + "y": 0.35, + "confidence": 0.396 + }, + { + "name": "right_ankle", + "x": 0.3605, + "y": 0.3785, + "confidence": 0.339 + } + ] + } + ] + }, + { + "frame_index": 25, + "timestamp": 0.4166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3057, + "acceleration": 2.4335, + "fluidity": 0.121, + "expansion": 0.193, + "total_displacement": 0.0106, + "center_displacement": { + "x": 0.0105, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4188, + "y": 0.2513, + "confidence": 0.346 + }, + { + "name": "left_eye", + "x": 0.4271, + "y": 0.2419, + "confidence": 0.57 + }, + { + "name": "right_eye", + "x": 0.4084, + "y": 0.2447, + "confidence": 0.515 + }, + { + "name": "left_ear", + "x": 0.434, + "y": 0.2334, + "confidence": 0.413 + }, + { + "name": "right_ear", + "x": 0.3897, + "y": 0.234, + "confidence": 0.534 + }, + { + "name": "left_shoulder", + "x": 0.4623, + "y": 0.2442, + "confidence": 0.37 + }, + { + "name": "right_shoulder", + "x": 0.3541, + "y": 0.243, + "confidence": 0.656 + }, + { + "name": "left_elbow", + "x": 0.5372, + "y": 0.2474, + "confidence": 0.452 + }, + { + "name": "right_elbow", + "x": 0.2834, + "y": 0.2613, + "confidence": 0.612 + }, + { + "name": "left_wrist", + "x": 0.5854, + "y": 0.2655, + "confidence": 0.463 + }, + { + "name": "right_wrist", + "x": 0.2627, + "y": 0.2906, + "confidence": 0.35 + }, + { + "name": "left_hip", + "x": 0.4484, + "y": 0.3668, + "confidence": 0.498 + }, + { + "name": "right_hip", + "x": 0.3956, + "y": 0.3725, + "confidence": 0.536 + }, + { + "name": "left_knee", + "x": 0.5201, + "y": 0.2803, + "confidence": 0.372 + }, + { + "name": "right_knee", + "x": 0.3131, + "y": 0.3202, + "confidence": 0.379 + }, + { + "name": "left_ankle", + "x": 0.5917, + "y": 0.3459, + "confidence": 0.347 + }, + { + "name": "right_ankle", + "x": 0.3759, + "y": 0.3715, + "confidence": 0.355 + } + ] + } + ] + }, + { + "frame_index": 26, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.328, + "acceleration": 1.3362, + "fluidity": 0.04, + "expansion": 0.191, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4185, + "y": 0.2513, + "confidence": 0.348 + }, + { + "name": "left_eye", + "x": 0.4269, + "y": 0.2418, + "confidence": 0.567 + }, + { + "name": "right_eye", + "x": 0.4082, + "y": 0.2447, + "confidence": 0.518 + }, + { + "name": "left_ear", + "x": 0.4339, + "y": 0.2334, + "confidence": 0.413 + }, + { + "name": "right_ear", + "x": 0.3896, + "y": 0.234, + "confidence": 0.534 + }, + { + "name": "left_shoulder", + "x": 0.4622, + "y": 0.2444, + "confidence": 0.373 + }, + { + "name": "right_shoulder", + "x": 0.3543, + "y": 0.2429, + "confidence": 0.656 + }, + { + "name": "left_elbow", + "x": 0.5373, + "y": 0.2475, + "confidence": 0.453 + }, + { + "name": "right_elbow", + "x": 0.2837, + "y": 0.2612, + "confidence": 0.62 + }, + { + "name": "left_wrist", + "x": 0.5857, + "y": 0.2656, + "confidence": 0.461 + }, + { + "name": "right_wrist", + "x": 0.2631, + "y": 0.2902, + "confidence": 0.348 + }, + { + "name": "left_hip", + "x": 0.4482, + "y": 0.3666, + "confidence": 0.498 + }, + { + "name": "right_hip", + "x": 0.3953, + "y": 0.372, + "confidence": 0.537 + }, + { + "name": "left_knee", + "x": 0.5201, + "y": 0.2804, + "confidence": 0.371 + }, + { + "name": "right_knee", + "x": 0.313, + "y": 0.32, + "confidence": 0.379 + }, + { + "name": "left_ankle", + "x": 0.5918, + "y": 0.346, + "confidence": 0.346 + }, + { + "name": "right_ankle", + "x": 0.3754, + "y": 0.3715, + "confidence": 0.355 + } + ] + } + ] + }, + { + "frame_index": 27, + "timestamp": 0.45, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3347, + "acceleration": 0.404, + "fluidity": 0.013, + "expansion": 0.191, + "total_displacement": 0.011, + "center_displacement": { + "x": 0.0101, + "y": 0.0044 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4272, + "y": 0.2475, + "confidence": 0.528 + }, + { + "name": "left_eye", + "x": 0.4368, + "y": 0.2365, + "confidence": 0.386 + }, + { + "name": "right_eye", + "x": 0.4207, + "y": 0.2336, + "confidence": 0.442 + }, + { + "name": "left_ear", + "x": 0.4447, + "y": 0.2308, + "confidence": 0.525 + }, + { + "name": "right_ear", + "x": 0.3976, + "y": 0.2252, + "confidence": 0.643 + }, + { + "name": "left_shoulder", + "x": 0.4701, + "y": 0.2459, + "confidence": 0.434 + }, + { + "name": "right_shoulder", + "x": 0.3668, + "y": 0.2443, + "confidence": 0.564 + }, + { + "name": "left_elbow", + "x": 0.5367, + "y": 0.2512, + "confidence": 0.328 + }, + { + "name": "right_elbow", + "x": 0.31, + "y": 0.2612, + "confidence": 0.608 + }, + { + "name": "left_wrist", + "x": 0.5937, + "y": 0.2648, + "confidence": 0.394 + }, + { + "name": "right_wrist", + "x": 0.2959, + "y": 0.2833, + "confidence": 0.355 + }, + { + "name": "left_hip", + "x": 0.4565, + "y": 0.3787, + "confidence": 0.472 + }, + { + "name": "right_hip", + "x": 0.4031, + "y": 0.3794, + "confidence": 0.536 + }, + { + "name": "left_knee", + "x": 0.5232, + "y": 0.2863, + "confidence": 0.268 + }, + { + "name": "right_knee", + "x": 0.3517, + "y": 0.3126, + "confidence": 0.167 + }, + { + "name": "left_ankle", + "x": 0.6015, + "y": 0.3482, + "confidence": 0.428 + }, + { + "name": "right_ankle", + "x": 0.3925, + "y": 0.3658, + "confidence": 0.197 + } + ] + } + ] + }, + { + "frame_index": 28, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.118, + "acceleration": -13.0047, + "fluidity": 0.004, + "expansion": 0.191, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4271, + "y": 0.2477, + "confidence": 0.526 + }, + { + "name": "left_eye", + "x": 0.4368, + "y": 0.2366, + "confidence": 0.39 + }, + { + "name": "right_eye", + "x": 0.4207, + "y": 0.2339, + "confidence": 0.445 + }, + { + "name": "left_ear", + "x": 0.4449, + "y": 0.2308, + "confidence": 0.524 + }, + { + "name": "right_ear", + "x": 0.3977, + "y": 0.2252, + "confidence": 0.642 + }, + { + "name": "left_shoulder", + "x": 0.4703, + "y": 0.2458, + "confidence": 0.436 + }, + { + "name": "right_shoulder", + "x": 0.3669, + "y": 0.2441, + "confidence": 0.568 + }, + { + "name": "left_elbow", + "x": 0.5368, + "y": 0.2512, + "confidence": 0.33 + }, + { + "name": "right_elbow", + "x": 0.31, + "y": 0.2611, + "confidence": 0.611 + }, + { + "name": "left_wrist", + "x": 0.5936, + "y": 0.265, + "confidence": 0.395 + }, + { + "name": "right_wrist", + "x": 0.2959, + "y": 0.2834, + "confidence": 0.357 + }, + { + "name": "left_hip", + "x": 0.4567, + "y": 0.3787, + "confidence": 0.474 + }, + { + "name": "right_hip", + "x": 0.4033, + "y": 0.3793, + "confidence": 0.537 + }, + { + "name": "left_knee", + "x": 0.5231, + "y": 0.2862, + "confidence": 0.265 + }, + { + "name": "right_knee", + "x": 0.3518, + "y": 0.3125, + "confidence": 0.167 + }, + { + "name": "left_ankle", + "x": 0.6016, + "y": 0.3481, + "confidence": 0.429 + }, + { + "name": "right_ankle", + "x": 0.3923, + "y": 0.3659, + "confidence": 0.195 + } + ] + } + ] + }, + { + "frame_index": 29, + "timestamp": 0.48333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7849, + "acceleration": 40.0131, + "fluidity": 0.001, + "expansion": 0.173, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4272, + "y": 0.2477, + "confidence": 0.527 + }, + { + "name": "left_eye", + "x": 0.4368, + "y": 0.2366, + "confidence": 0.39 + }, + { + "name": "right_eye", + "x": 0.4208, + "y": 0.2338, + "confidence": 0.443 + }, + { + "name": "left_ear", + "x": 0.4448, + "y": 0.2307, + "confidence": 0.526 + }, + { + "name": "right_ear", + "x": 0.3978, + "y": 0.2251, + "confidence": 0.641 + }, + { + "name": "left_shoulder", + "x": 0.4702, + "y": 0.2457, + "confidence": 0.437 + }, + { + "name": "right_shoulder", + "x": 0.3669, + "y": 0.244, + "confidence": 0.57 + }, + { + "name": "left_elbow", + "x": 0.5367, + "y": 0.2511, + "confidence": 0.333 + }, + { + "name": "right_elbow", + "x": 0.3101, + "y": 0.2612, + "confidence": 0.612 + }, + { + "name": "left_wrist", + "x": 0.5937, + "y": 0.2649, + "confidence": 0.399 + }, + { + "name": "right_wrist", + "x": 0.296, + "y": 0.2834, + "confidence": 0.359 + }, + { + "name": "left_hip", + "x": 0.4565, + "y": 0.379, + "confidence": 0.469 + }, + { + "name": "right_hip", + "x": 0.4033, + "y": 0.3796, + "confidence": 0.532 + }, + { + "name": "left_knee", + "x": 0.5225, + "y": 0.279, + "confidence": 0.345 + }, + { + "name": "right_knee", + "x": 0.3517, + "y": 0.3123, + "confidence": 0.168 + }, + { + "name": "left_ankle", + "x": 0.6017, + "y": 0.3481, + "confidence": 0.431 + }, + { + "name": "right_ankle", + "x": 0.3925, + "y": 0.366, + "confidence": 0.194 + } + ] + } + ] + }, + { + "frame_index": 30, + "timestamp": 0.5, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.0094, + "acceleration": 13.4728, + "fluidity": 0, + "expansion": 0.15, + "total_displacement": 0.0372, + "center_displacement": { + "x": 0.0368, + "y": 0.005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4437, + "y": 0.2504, + "confidence": 0.491 + }, + { + "name": "left_eye", + "x": 0.4528, + "y": 0.2355, + "confidence": 0.352 + }, + { + "name": "right_eye", + "x": 0.4346, + "y": 0.2374, + "confidence": 0.533 + }, + { + "name": "left_ear", + "x": 0.4548, + "y": 0.2271, + "confidence": 0.406 + }, + { + "name": "right_ear", + "x": 0.4109, + "y": 0.2263, + "confidence": 0.525 + }, + { + "name": "left_shoulder", + "x": 0.4894, + "y": 0.2408, + "confidence": 0.339 + }, + { + "name": "right_shoulder", + "x": 0.374, + "y": 0.2416, + "confidence": 0.691 + }, + { + "name": "left_elbow", + "x": 0.5459, + "y": 0.2472, + "confidence": 0.545 + }, + { + "name": "right_elbow", + "x": 0.3285, + "y": 0.2688, + "confidence": 0.308 + }, + { + "name": "left_wrist", + "x": 0.6071, + "y": 0.2691, + "confidence": 0.485 + }, + { + "name": "right_wrist", + "x": 0.3379, + "y": 0.3051, + "confidence": 0.28 + }, + { + "name": "left_hip", + "x": 0.4698, + "y": 0.392, + "confidence": 0.561 + }, + { + "name": "right_hip", + "x": 0.4122, + "y": 0.3868, + "confidence": 0.428 + }, + { + "name": "left_knee", + "x": 0.536, + "y": 0.2699, + "confidence": 0.479 + }, + { + "name": "right_knee", + "x": 0.382, + "y": 0.3104, + "confidence": 0.084 + }, + { + "name": "left_ankle", + "x": 0.6027, + "y": 0.3511, + "confidence": 0.446 + }, + { + "name": "right_ankle", + "x": 0.4083, + "y": 0.3601, + "confidence": 0.308 + } + ] + } + ] + }, + { + "frame_index": 31, + "timestamp": 0.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.0443, + "acceleration": 62.0937, + "fluidity": 0, + "expansion": 0.127, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4437, + "y": 0.2503, + "confidence": 0.492 + }, + { + "name": "left_eye", + "x": 0.4527, + "y": 0.2352, + "confidence": 0.348 + }, + { + "name": "right_eye", + "x": 0.4345, + "y": 0.2372, + "confidence": 0.533 + }, + { + "name": "left_ear", + "x": 0.4549, + "y": 0.227, + "confidence": 0.409 + }, + { + "name": "right_ear", + "x": 0.4108, + "y": 0.2261, + "confidence": 0.522 + }, + { + "name": "left_shoulder", + "x": 0.4897, + "y": 0.2409, + "confidence": 0.339 + }, + { + "name": "right_shoulder", + "x": 0.3738, + "y": 0.2415, + "confidence": 0.688 + }, + { + "name": "left_elbow", + "x": 0.546, + "y": 0.2473, + "confidence": 0.541 + }, + { + "name": "right_elbow", + "x": 0.3284, + "y": 0.2687, + "confidence": 0.312 + }, + { + "name": "left_wrist", + "x": 0.6073, + "y": 0.2692, + "confidence": 0.491 + }, + { + "name": "right_wrist", + "x": 0.3379, + "y": 0.3046, + "confidence": 0.28 + }, + { + "name": "left_hip", + "x": 0.47, + "y": 0.3925, + "confidence": 0.557 + }, + { + "name": "right_hip", + "x": 0.4121, + "y": 0.3874, + "confidence": 0.422 + }, + { + "name": "left_knee", + "x": 0.5361, + "y": 0.2699, + "confidence": 0.477 + }, + { + "name": "right_knee", + "x": 0.3819, + "y": 0.3104, + "confidence": 0.083 + }, + { + "name": "left_ankle", + "x": 0.6028, + "y": 0.3515, + "confidence": 0.45 + }, + { + "name": "right_ankle", + "x": 0.4083, + "y": 0.36, + "confidence": 0.31 + } + ] + } + ] + }, + { + "frame_index": 32, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.3889, + "acceleration": 20.677, + "fluidity": 0, + "expansion": 0.105, + "total_displacement": 0.0852, + "center_displacement": { + "x": -0.0416, + "y": -0.0743 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4552, + "y": 0.2516, + "confidence": 0.454 + }, + { + "name": "left_eye", + "x": 0.4666, + "y": 0.2372, + "confidence": 0.437 + }, + { + "name": "right_eye", + "x": 0.4419, + "y": 0.2395, + "confidence": 0.467 + }, + { + "name": "left_ear", + "x": 0.4685, + "y": 0.2306, + "confidence": 0.434 + }, + { + "name": "right_ear", + "x": 0.4295, + "y": 0.2265, + "confidence": 0.551 + }, + { + "name": "left_shoulder", + "x": 0.5058, + "y": 0.2439, + "confidence": 0.393 + }, + { + "name": "right_shoulder", + "x": 0.3803, + "y": 0.2427, + "confidence": 0.581 + }, + { + "name": "left_elbow", + "x": 0.5663, + "y": 0.2532, + "confidence": 0.306 + }, + { + "name": "right_elbow", + "x": 0.3458, + "y": 0.2995, + "confidence": 0.289 + }, + { + "name": "left_wrist", + "x": 0.6118, + "y": 0.2672, + "confidence": 0.534 + }, + { + "name": "right_wrist", + "x": 0.399, + "y": 0.3468, + "confidence": 0.17 + }, + { + "name": "left_hip", + "x": 0.4825, + "y": 0.3905, + "confidence": 0.461 + }, + { + "name": "right_hip", + "x": 0.4236, + "y": 0.3868, + "confidence": 0.476 + }, + { + "name": "left_knee", + "x": 0.5488, + "y": 0.277, + "confidence": 0.609 + }, + { + "name": "right_knee", + "x": 0.3563, + "y": 0.3117, + "confidence": 0.436 + }, + { + "name": "left_ankle", + "x": 0.6068, + "y": 0.3607, + "confidence": 0.413 + }, + { + "name": "right_ankle", + "x": 0.4146, + "y": 0.3691, + "confidence": 0.246 + } + ] + } + ] + }, + { + "frame_index": 33, + "timestamp": 0.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.5961, + "acceleration": 12.428, + "fluidity": 0, + "expansion": 0.098, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4553, + "y": 0.2512, + "confidence": 0.454 + }, + { + "name": "left_eye", + "x": 0.4666, + "y": 0.237, + "confidence": 0.431 + }, + { + "name": "right_eye", + "x": 0.4419, + "y": 0.2391, + "confidence": 0.465 + }, + { + "name": "left_ear", + "x": 0.4686, + "y": 0.2305, + "confidence": 0.437 + }, + { + "name": "right_ear", + "x": 0.4293, + "y": 0.2263, + "confidence": 0.553 + }, + { + "name": "left_shoulder", + "x": 0.506, + "y": 0.244, + "confidence": 0.398 + }, + { + "name": "right_shoulder", + "x": 0.3803, + "y": 0.2425, + "confidence": 0.581 + }, + { + "name": "left_elbow", + "x": 0.5669, + "y": 0.253, + "confidence": 0.307 + }, + { + "name": "right_elbow", + "x": 0.3458, + "y": 0.2994, + "confidence": 0.295 + }, + { + "name": "left_wrist", + "x": 0.6117, + "y": 0.2669, + "confidence": 0.525 + }, + { + "name": "right_wrist", + "x": 0.3989, + "y": 0.3469, + "confidence": 0.171 + }, + { + "name": "left_hip", + "x": 0.4827, + "y": 0.3905, + "confidence": 0.463 + }, + { + "name": "right_hip", + "x": 0.4238, + "y": 0.3866, + "confidence": 0.481 + }, + { + "name": "left_knee", + "x": 0.5491, + "y": 0.2769, + "confidence": 0.609 + }, + { + "name": "right_knee", + "x": 0.3563, + "y": 0.3119, + "confidence": 0.435 + }, + { + "name": "left_ankle", + "x": 0.6074, + "y": 0.3612, + "confidence": 0.41 + }, + { + "name": "right_ankle", + "x": 0.4145, + "y": 0.3691, + "confidence": 0.246 + } + ] + } + ] + }, + { + "frame_index": 34, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 3.2692, + "acceleration": 40.3913, + "fluidity": 0, + "expansion": 0.102, + "total_displacement": 0.0898, + "center_displacement": { + "x": 0.0519, + "y": 0.0733 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4551, + "y": 0.2518, + "confidence": 0.456 + }, + { + "name": "left_eye", + "x": 0.4666, + "y": 0.2375, + "confidence": 0.441 + }, + { + "name": "right_eye", + "x": 0.4417, + "y": 0.2398, + "confidence": 0.467 + }, + { + "name": "left_ear", + "x": 0.4687, + "y": 0.2307, + "confidence": 0.437 + }, + { + "name": "right_ear", + "x": 0.4292, + "y": 0.2267, + "confidence": 0.557 + }, + { + "name": "left_shoulder", + "x": 0.5061, + "y": 0.2441, + "confidence": 0.394 + }, + { + "name": "right_shoulder", + "x": 0.3805, + "y": 0.2427, + "confidence": 0.578 + }, + { + "name": "left_elbow", + "x": 0.5596, + "y": 0.2491, + "confidence": 0.412 + }, + { + "name": "right_elbow", + "x": 0.3458, + "y": 0.2995, + "confidence": 0.3 + }, + { + "name": "left_wrist", + "x": 0.6114, + "y": 0.2667, + "confidence": 0.514 + }, + { + "name": "right_wrist", + "x": 0.3991, + "y": 0.3467, + "confidence": 0.174 + }, + { + "name": "left_hip", + "x": 0.4839, + "y": 0.3889, + "confidence": 0.547 + }, + { + "name": "right_hip", + "x": 0.4238, + "y": 0.3854, + "confidence": 0.489 + }, + { + "name": "left_knee", + "x": 0.5494, + "y": 0.2772, + "confidence": 0.607 + }, + { + "name": "right_knee", + "x": 0.3563, + "y": 0.3122, + "confidence": 0.438 + }, + { + "name": "left_ankle", + "x": 0.6072, + "y": 0.3609, + "confidence": 0.411 + }, + { + "name": "right_ankle", + "x": 0.4144, + "y": 0.3693, + "confidence": 0.25 + } + ] + } + ] + }, + { + "frame_index": 35, + "timestamp": 0.5833333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.7165, + "acceleration": -93.1639, + "fluidity": 0, + "expansion": 0.11, + "total_displacement": 0.0304, + "center_displacement": { + "x": 0.0301, + "y": -0.0041 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4626, + "y": 0.2538, + "confidence": 0.495 + }, + { + "name": "left_eye", + "x": 0.4746, + "y": 0.2389, + "confidence": 0.494 + }, + { + "name": "right_eye", + "x": 0.4543, + "y": 0.2427, + "confidence": 0.468 + }, + { + "name": "left_ear", + "x": 0.4828, + "y": 0.229, + "confidence": 0.489 + }, + { + "name": "right_ear", + "x": 0.4421, + "y": 0.228, + "confidence": 0.549 + }, + { + "name": "left_shoulder", + "x": 0.5158, + "y": 0.2395, + "confidence": 0.576 + }, + { + "name": "right_shoulder", + "x": 0.3981, + "y": 0.2411, + "confidence": 0.526 + }, + { + "name": "left_elbow", + "x": 0.5754, + "y": 0.2449, + "confidence": 0.69 + }, + { + "name": "right_elbow", + "x": 0.3601, + "y": 0.2885, + "confidence": 0.298 + }, + { + "name": "left_wrist", + "x": 0.6316, + "y": 0.2651, + "confidence": 0.57 + }, + { + "name": "right_wrist", + "x": 0.3932, + "y": 0.3225, + "confidence": 0.187 + }, + { + "name": "left_hip", + "x": 0.4976, + "y": 0.3825, + "confidence": 0.64 + }, + { + "name": "right_hip", + "x": 0.4379, + "y": 0.3837, + "confidence": 0.558 + }, + { + "name": "left_knee", + "x": 0.5557, + "y": 0.2792, + "confidence": 0.649 + }, + { + "name": "right_knee", + "x": 0.3638, + "y": 0.3125, + "confidence": 0.544 + }, + { + "name": "left_ankle", + "x": 0.6075, + "y": 0.3762, + "confidence": 0.451 + }, + { + "name": "right_ankle", + "x": 0.4335, + "y": 0.3746, + "confidence": 0.272 + } + ] + } + ] + }, + { + "frame_index": 36, + "timestamp": 0.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.0095, + "acceleration": 17.5788, + "fluidity": 0, + "expansion": 0.124, + "total_displacement": 0.0009, + "center_displacement": { + "x": -0.0005, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4625, + "y": 0.2539, + "confidence": 0.494 + }, + { + "name": "left_eye", + "x": 0.4745, + "y": 0.2391, + "confidence": 0.499 + }, + { + "name": "right_eye", + "x": 0.4541, + "y": 0.2429, + "confidence": 0.473 + }, + { + "name": "left_ear", + "x": 0.4829, + "y": 0.2292, + "confidence": 0.486 + }, + { + "name": "right_ear", + "x": 0.4421, + "y": 0.2282, + "confidence": 0.546 + }, + { + "name": "left_shoulder", + "x": 0.5155, + "y": 0.2396, + "confidence": 0.571 + }, + { + "name": "right_shoulder", + "x": 0.3982, + "y": 0.2413, + "confidence": 0.525 + }, + { + "name": "left_elbow", + "x": 0.5754, + "y": 0.2449, + "confidence": 0.688 + }, + { + "name": "right_elbow", + "x": 0.36, + "y": 0.2887, + "confidence": 0.301 + }, + { + "name": "left_wrist", + "x": 0.6315, + "y": 0.2651, + "confidence": 0.569 + }, + { + "name": "right_wrist", + "x": 0.3932, + "y": 0.3226, + "confidence": 0.185 + }, + { + "name": "left_hip", + "x": 0.4957, + "y": 0.3801, + "confidence": 0.514 + }, + { + "name": "right_hip", + "x": 0.4378, + "y": 0.3827, + "confidence": 0.554 + }, + { + "name": "left_knee", + "x": 0.5557, + "y": 0.2794, + "confidence": 0.647 + }, + { + "name": "right_knee", + "x": 0.364, + "y": 0.3129, + "confidence": 0.543 + }, + { + "name": "left_ankle", + "x": 0.6076, + "y": 0.3762, + "confidence": 0.456 + }, + { + "name": "right_ankle", + "x": 0.4335, + "y": 0.3746, + "confidence": 0.277 + } + ] + } + ] + }, + { + "frame_index": 37, + "timestamp": 0.6166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.0956, + "acceleration": 5.1694, + "fluidity": 0, + "expansion": 0.139, + "total_displacement": 0.0709, + "center_displacement": { + "x": 0.0166, + "y": 0.069 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4794, + "y": 0.2341, + "confidence": 0.396 + }, + { + "name": "left_eye", + "x": 0.4847, + "y": 0.2238, + "confidence": 0.501 + }, + { + "name": "right_eye", + "x": 0.4699, + "y": 0.2238, + "confidence": 0.42 + }, + { + "name": "left_ear", + "x": 0.4911, + "y": 0.2202, + "confidence": 0.405 + }, + { + "name": "right_ear", + "x": 0.4496, + "y": 0.2182, + "confidence": 0.478 + }, + { + "name": "left_shoulder", + "x": 0.5218, + "y": 0.2418, + "confidence": 0.489 + }, + { + "name": "right_shoulder", + "x": 0.4115, + "y": 0.2398, + "confidence": 0.468 + }, + { + "name": "left_elbow", + "x": 0.5844, + "y": 0.2448, + "confidence": 0.647 + }, + { + "name": "right_elbow", + "x": 0.3872, + "y": 0.2633, + "confidence": 0.437 + }, + { + "name": "left_wrist", + "x": 0.6456, + "y": 0.2624, + "confidence": 0.48 + }, + { + "name": "right_wrist", + "x": 0.4174, + "y": 0.2785, + "confidence": 0.252 + }, + { + "name": "left_hip", + "x": 0.5056, + "y": 0.3783, + "confidence": 0.532 + }, + { + "name": "right_hip", + "x": 0.4512, + "y": 0.3814, + "confidence": 0.586 + }, + { + "name": "left_knee", + "x": 0.5662, + "y": 0.277, + "confidence": 0.636 + }, + { + "name": "right_knee", + "x": 0.3696, + "y": 0.3016, + "confidence": 0.707 + }, + { + "name": "left_ankle", + "x": 0.6129, + "y": 0.3821, + "confidence": 0.613 + }, + { + "name": "right_ankle", + "x": 0.4433, + "y": 0.3671, + "confidence": 0.302 + } + ] + } + ] + }, + { + "frame_index": 38, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.7153, + "acceleration": -82.8201, + "fluidity": 0, + "expansion": 0.145, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4794, + "y": 0.2342, + "confidence": 0.398 + }, + { + "name": "left_eye", + "x": 0.4846, + "y": 0.2238, + "confidence": 0.502 + }, + { + "name": "right_eye", + "x": 0.4699, + "y": 0.2239, + "confidence": 0.422 + }, + { + "name": "left_ear", + "x": 0.4912, + "y": 0.2203, + "confidence": 0.405 + }, + { + "name": "right_ear", + "x": 0.4496, + "y": 0.2183, + "confidence": 0.48 + }, + { + "name": "left_shoulder", + "x": 0.5218, + "y": 0.2418, + "confidence": 0.486 + }, + { + "name": "right_shoulder", + "x": 0.4115, + "y": 0.2399, + "confidence": 0.468 + }, + { + "name": "left_elbow", + "x": 0.5845, + "y": 0.2447, + "confidence": 0.644 + }, + { + "name": "right_elbow", + "x": 0.3873, + "y": 0.2634, + "confidence": 0.436 + }, + { + "name": "left_wrist", + "x": 0.6456, + "y": 0.2623, + "confidence": 0.479 + }, + { + "name": "right_wrist", + "x": 0.4175, + "y": 0.2783, + "confidence": 0.251 + }, + { + "name": "left_hip", + "x": 0.5053, + "y": 0.378, + "confidence": 0.534 + }, + { + "name": "right_hip", + "x": 0.4511, + "y": 0.3811, + "confidence": 0.583 + }, + { + "name": "left_knee", + "x": 0.5662, + "y": 0.2771, + "confidence": 0.634 + }, + { + "name": "right_knee", + "x": 0.3696, + "y": 0.3016, + "confidence": 0.707 + }, + { + "name": "left_ankle", + "x": 0.6129, + "y": 0.3823, + "confidence": 0.617 + }, + { + "name": "right_ankle", + "x": 0.4434, + "y": 0.3672, + "confidence": 0.303 + } + ] + } + ] + }, + { + "frame_index": 39, + "timestamp": 0.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.5492, + "acceleration": 50.0334, + "fluidity": 0, + "expansion": 0.153, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0001, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4794, + "y": 0.2342, + "confidence": 0.395 + }, + { + "name": "left_eye", + "x": 0.4846, + "y": 0.2238, + "confidence": 0.499 + }, + { + "name": "right_eye", + "x": 0.4698, + "y": 0.2239, + "confidence": 0.421 + }, + { + "name": "left_ear", + "x": 0.4912, + "y": 0.2202, + "confidence": 0.402 + }, + { + "name": "right_ear", + "x": 0.4496, + "y": 0.2182, + "confidence": 0.477 + }, + { + "name": "left_shoulder", + "x": 0.5219, + "y": 0.2418, + "confidence": 0.487 + }, + { + "name": "right_shoulder", + "x": 0.4115, + "y": 0.24, + "confidence": 0.467 + }, + { + "name": "left_elbow", + "x": 0.5846, + "y": 0.2447, + "confidence": 0.642 + }, + { + "name": "right_elbow", + "x": 0.3871, + "y": 0.2635, + "confidence": 0.433 + }, + { + "name": "left_wrist", + "x": 0.6454, + "y": 0.2623, + "confidence": 0.476 + }, + { + "name": "right_wrist", + "x": 0.4177, + "y": 0.2785, + "confidence": 0.251 + }, + { + "name": "left_hip", + "x": 0.5054, + "y": 0.3774, + "confidence": 0.538 + }, + { + "name": "right_hip", + "x": 0.4513, + "y": 0.3808, + "confidence": 0.583 + }, + { + "name": "left_knee", + "x": 0.5663, + "y": 0.2771, + "confidence": 0.635 + }, + { + "name": "right_knee", + "x": 0.3695, + "y": 0.3018, + "confidence": 0.709 + }, + { + "name": "left_ankle", + "x": 0.6129, + "y": 0.3821, + "confidence": 0.615 + }, + { + "name": "right_ankle", + "x": 0.4436, + "y": 0.3674, + "confidence": 0.306 + } + ] + } + ] + }, + { + "frame_index": 40, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.8188, + "acceleration": 16.1748, + "fluidity": 0, + "expansion": 0.163, + "total_displacement": 0.0651, + "center_displacement": { + "x": 0.0072, + "y": -0.0647 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4884, + "y": 0.2358, + "confidence": 0.344 + }, + { + "name": "left_eye", + "x": 0.498, + "y": 0.2238, + "confidence": 0.439 + }, + { + "name": "right_eye", + "x": 0.4785, + "y": 0.226, + "confidence": 0.541 + }, + { + "name": "left_ear", + "x": 0.5007, + "y": 0.22, + "confidence": 0.425 + }, + { + "name": "right_ear", + "x": 0.4567, + "y": 0.2231, + "confidence": 0.514 + }, + { + "name": "left_shoulder", + "x": 0.5353, + "y": 0.2402, + "confidence": 0.541 + }, + { + "name": "right_shoulder", + "x": 0.4135, + "y": 0.2452, + "confidence": 0.572 + }, + { + "name": "left_elbow", + "x": 0.5926, + "y": 0.2442, + "confidence": 0.514 + }, + { + "name": "right_elbow", + "x": 0.4016, + "y": 0.2621, + "confidence": 0.305 + }, + { + "name": "left_wrist", + "x": 0.6586, + "y": 0.2587, + "confidence": 0.652 + }, + { + "name": "right_wrist", + "x": 0.4621, + "y": 0.2604, + "confidence": 0.34 + }, + { + "name": "left_hip", + "x": 0.5276, + "y": 0.382, + "confidence": 0.67 + }, + { + "name": "right_hip", + "x": 0.4655, + "y": 0.3904, + "confidence": 0.533 + }, + { + "name": "left_knee", + "x": 0.5711, + "y": 0.2788, + "confidence": 0.655 + }, + { + "name": "right_knee", + "x": 0.3771, + "y": 0.2931, + "confidence": 0.717 + }, + { + "name": "left_ankle", + "x": 0.6153, + "y": 0.3896, + "confidence": 0.608 + }, + { + "name": "right_ankle", + "x": 0.4569, + "y": 0.3765, + "confidence": 0.178 + } + ] + } + ] + }, + { + "frame_index": 41, + "timestamp": 0.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.8386, + "acceleration": -58.8085, + "fluidity": 0, + "expansion": 0.169, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4883, + "y": 0.2355, + "confidence": 0.341 + }, + { + "name": "left_eye", + "x": 0.498, + "y": 0.2235, + "confidence": 0.431 + }, + { + "name": "right_eye", + "x": 0.4785, + "y": 0.2257, + "confidence": 0.543 + }, + { + "name": "left_ear", + "x": 0.5007, + "y": 0.2198, + "confidence": 0.42 + }, + { + "name": "right_ear", + "x": 0.4567, + "y": 0.223, + "confidence": 0.51 + }, + { + "name": "left_shoulder", + "x": 0.5355, + "y": 0.2404, + "confidence": 0.541 + }, + { + "name": "right_shoulder", + "x": 0.4136, + "y": 0.2452, + "confidence": 0.572 + }, + { + "name": "left_elbow", + "x": 0.5928, + "y": 0.2442, + "confidence": 0.525 + }, + { + "name": "right_elbow", + "x": 0.4007, + "y": 0.262, + "confidence": 0.299 + }, + { + "name": "left_wrist", + "x": 0.6587, + "y": 0.2588, + "confidence": 0.642 + }, + { + "name": "right_wrist", + "x": 0.4617, + "y": 0.2602, + "confidence": 0.338 + }, + { + "name": "left_hip", + "x": 0.5274, + "y": 0.3819, + "confidence": 0.669 + }, + { + "name": "right_hip", + "x": 0.4655, + "y": 0.3901, + "confidence": 0.534 + }, + { + "name": "left_knee", + "x": 0.5714, + "y": 0.2789, + "confidence": 0.657 + }, + { + "name": "right_knee", + "x": 0.377, + "y": 0.2933, + "confidence": 0.713 + }, + { + "name": "left_ankle", + "x": 0.6153, + "y": 0.3898, + "confidence": 0.611 + }, + { + "name": "right_ankle", + "x": 0.4567, + "y": 0.3763, + "confidence": 0.174 + } + ] + } + ] + }, + { + "frame_index": 42, + "timestamp": 0.7, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.5163, + "acceleration": -19.3422, + "fluidity": 0, + "expansion": 0.174, + "total_displacement": 0.0116, + "center_displacement": { + "x": 0.0109, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4987, + "y": 0.2377, + "confidence": 0.415 + }, + { + "name": "left_eye", + "x": 0.5075, + "y": 0.2249, + "confidence": 0.532 + }, + { + "name": "right_eye", + "x": 0.4875, + "y": 0.2289, + "confidence": 0.491 + }, + { + "name": "left_ear", + "x": 0.51, + "y": 0.2198, + "confidence": 0.306 + }, + { + "name": "right_ear", + "x": 0.4729, + "y": 0.2256, + "confidence": 0.605 + }, + { + "name": "left_shoulder", + "x": 0.5489, + "y": 0.2418, + "confidence": 0.57 + }, + { + "name": "right_shoulder", + "x": 0.4263, + "y": 0.2425, + "confidence": 0.576 + }, + { + "name": "left_elbow", + "x": 0.5971, + "y": 0.245, + "confidence": 0.579 + }, + { + "name": "right_elbow", + "x": 0.402, + "y": 0.2495, + "confidence": 0.352 + }, + { + "name": "left_wrist", + "x": 0.6697, + "y": 0.2518, + "confidence": 0.616 + }, + { + "name": "right_wrist", + "x": 0.4673, + "y": 0.2541, + "confidence": 0.361 + }, + { + "name": "left_hip", + "x": 0.533, + "y": 0.3907, + "confidence": 0.599 + }, + { + "name": "right_hip", + "x": 0.4778, + "y": 0.3976, + "confidence": 0.72 + }, + { + "name": "left_knee", + "x": 0.5811, + "y": 0.2785, + "confidence": 0.699 + }, + { + "name": "right_knee", + "x": 0.3889, + "y": 0.2936, + "confidence": 0.689 + }, + { + "name": "left_ankle", + "x": 0.6196, + "y": 0.394, + "confidence": 0.514 + }, + { + "name": "right_ankle", + "x": 0.473, + "y": 0.3899, + "confidence": 0.201 + } + ] + } + ] + }, + { + "frame_index": 43, + "timestamp": 0.7166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1813, + "acceleration": -20.0977, + "fluidity": 0, + "expansion": 0.176, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4987, + "y": 0.2377, + "confidence": 0.415 + }, + { + "name": "left_eye", + "x": 0.5075, + "y": 0.2249, + "confidence": 0.532 + }, + { + "name": "right_eye", + "x": 0.4875, + "y": 0.2289, + "confidence": 0.491 + }, + { + "name": "left_ear", + "x": 0.51, + "y": 0.2198, + "confidence": 0.304 + }, + { + "name": "right_ear", + "x": 0.473, + "y": 0.2255, + "confidence": 0.603 + }, + { + "name": "left_shoulder", + "x": 0.5488, + "y": 0.2416, + "confidence": 0.565 + }, + { + "name": "right_shoulder", + "x": 0.4263, + "y": 0.2424, + "confidence": 0.574 + }, + { + "name": "left_elbow", + "x": 0.597, + "y": 0.2448, + "confidence": 0.579 + }, + { + "name": "right_elbow", + "x": 0.402, + "y": 0.2496, + "confidence": 0.353 + }, + { + "name": "left_wrist", + "x": 0.6697, + "y": 0.2516, + "confidence": 0.618 + }, + { + "name": "right_wrist", + "x": 0.4672, + "y": 0.2542, + "confidence": 0.36 + }, + { + "name": "left_hip", + "x": 0.5328, + "y": 0.3904, + "confidence": 0.598 + }, + { + "name": "right_hip", + "x": 0.4776, + "y": 0.3972, + "confidence": 0.719 + }, + { + "name": "left_knee", + "x": 0.5811, + "y": 0.2786, + "confidence": 0.7 + }, + { + "name": "right_knee", + "x": 0.3889, + "y": 0.2935, + "confidence": 0.688 + }, + { + "name": "left_ankle", + "x": 0.6195, + "y": 0.394, + "confidence": 0.521 + }, + { + "name": "right_ankle", + "x": 0.473, + "y": 0.3898, + "confidence": 0.204 + } + ] + } + ] + }, + { + "frame_index": 44, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.8793, + "acceleration": 41.8796, + "fluidity": 0, + "expansion": 0.176, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4987, + "y": 0.2373, + "confidence": 0.41 + }, + { + "name": "left_eye", + "x": 0.5075, + "y": 0.2246, + "confidence": 0.523 + }, + { + "name": "right_eye", + "x": 0.4875, + "y": 0.2284, + "confidence": 0.488 + }, + { + "name": "left_ear", + "x": 0.5101, + "y": 0.2196, + "confidence": 0.305 + }, + { + "name": "right_ear", + "x": 0.4729, + "y": 0.2253, + "confidence": 0.604 + }, + { + "name": "left_shoulder", + "x": 0.5489, + "y": 0.2417, + "confidence": 0.567 + }, + { + "name": "right_shoulder", + "x": 0.4264, + "y": 0.2425, + "confidence": 0.575 + }, + { + "name": "left_elbow", + "x": 0.5973, + "y": 0.2448, + "confidence": 0.575 + }, + { + "name": "right_elbow", + "x": 0.402, + "y": 0.2497, + "confidence": 0.351 + }, + { + "name": "left_wrist", + "x": 0.6696, + "y": 0.2517, + "confidence": 0.609 + }, + { + "name": "right_wrist", + "x": 0.4673, + "y": 0.2541, + "confidence": 0.36 + }, + { + "name": "left_hip", + "x": 0.5329, + "y": 0.3906, + "confidence": 0.598 + }, + { + "name": "right_hip", + "x": 0.478, + "y": 0.3972, + "confidence": 0.719 + }, + { + "name": "left_knee", + "x": 0.5813, + "y": 0.2785, + "confidence": 0.699 + }, + { + "name": "right_knee", + "x": 0.389, + "y": 0.2936, + "confidence": 0.686 + }, + { + "name": "left_ankle", + "x": 0.6196, + "y": 0.3941, + "confidence": 0.518 + }, + { + "name": "right_ankle", + "x": 0.4729, + "y": 0.3899, + "confidence": 0.2 + } + ] + } + ] + }, + { + "frame_index": 45, + "timestamp": 0.75, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.1123, + "acceleration": 13.9796, + "fluidity": 0, + "expansion": 0.176, + "total_displacement": 0.0408, + "center_displacement": { + "x": -0.0406, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5137, + "y": 0.2577, + "confidence": 0.416 + }, + { + "name": "left_eye", + "x": 0.5243, + "y": 0.243, + "confidence": 0.579 + }, + { + "name": "right_eye", + "x": 0.5016, + "y": 0.2474, + "confidence": 0.384 + }, + { + "name": "left_ear", + "x": 0.5261, + "y": 0.2355, + "confidence": 0.371 + }, + { + "name": "right_ear", + "x": 0.4846, + "y": 0.2366, + "confidence": 0.533 + }, + { + "name": "left_shoulder", + "x": 0.5607, + "y": 0.2456, + "confidence": 0.498 + }, + { + "name": "right_shoulder", + "x": 0.4308, + "y": 0.2444, + "confidence": 0.654 + }, + { + "name": "left_elbow", + "x": 0.6192, + "y": 0.2371, + "confidence": 0.364 + }, + { + "name": "right_elbow", + "x": 0.4068, + "y": 0.2418, + "confidence": 0.355 + }, + { + "name": "left_wrist", + "x": 0.6865, + "y": 0.2427, + "confidence": 0.606 + }, + { + "name": "right_wrist", + "x": 0.4754, + "y": 0.2268, + "confidence": 0.337 + }, + { + "name": "left_hip", + "x": 0.5365, + "y": 0.3826, + "confidence": 0.454 + }, + { + "name": "right_hip", + "x": 0.481, + "y": 0.385, + "confidence": 0.586 + }, + { + "name": "left_knee", + "x": 0.5909, + "y": 0.286, + "confidence": 0.648 + }, + { + "name": "right_knee", + "x": 0.4034, + "y": 0.2911, + "confidence": 0.479 + }, + { + "name": "left_ankle", + "x": 0.6252, + "y": 0.4043, + "confidence": 0.471 + }, + { + "name": "right_ankle", + "x": 0.4715, + "y": 0.393, + "confidence": 0.364 + } + ] + } + ] + }, + { + "frame_index": 46, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.2847, + "acceleration": 10.3444, + "fluidity": 0, + "expansion": 0.18, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5137, + "y": 0.258, + "confidence": 0.418 + }, + { + "name": "left_eye", + "x": 0.5242, + "y": 0.2431, + "confidence": 0.578 + }, + { + "name": "right_eye", + "x": 0.5016, + "y": 0.2476, + "confidence": 0.38 + }, + { + "name": "left_ear", + "x": 0.5261, + "y": 0.2356, + "confidence": 0.371 + }, + { + "name": "right_ear", + "x": 0.4846, + "y": 0.2368, + "confidence": 0.53 + }, + { + "name": "left_shoulder", + "x": 0.5609, + "y": 0.2457, + "confidence": 0.499 + }, + { + "name": "right_shoulder", + "x": 0.4307, + "y": 0.2444, + "confidence": 0.656 + }, + { + "name": "left_elbow", + "x": 0.6189, + "y": 0.2371, + "confidence": 0.367 + }, + { + "name": "right_elbow", + "x": 0.4068, + "y": 0.2416, + "confidence": 0.354 + }, + { + "name": "left_wrist", + "x": 0.6864, + "y": 0.2428, + "confidence": 0.601 + }, + { + "name": "right_wrist", + "x": 0.4754, + "y": 0.2267, + "confidence": 0.337 + }, + { + "name": "left_hip", + "x": 0.5362, + "y": 0.3831, + "confidence": 0.449 + }, + { + "name": "right_hip", + "x": 0.4809, + "y": 0.3853, + "confidence": 0.581 + }, + { + "name": "left_knee", + "x": 0.5909, + "y": 0.2859, + "confidence": 0.65 + }, + { + "name": "right_knee", + "x": 0.4033, + "y": 0.2911, + "confidence": 0.473 + }, + { + "name": "left_ankle", + "x": 0.6251, + "y": 0.4044, + "confidence": 0.475 + }, + { + "name": "right_ankle", + "x": 0.4714, + "y": 0.3932, + "confidence": 0.361 + } + ] + } + ] + }, + { + "frame_index": 47, + "timestamp": 0.7833333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.3396, + "acceleration": 3.2929, + "fluidity": 0, + "expansion": 0.186, + "total_displacement": 0.0455, + "center_displacement": { + "x": 0.0317, + "y": 0.0326 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5203, + "y": 0.262, + "confidence": 0.464 + }, + { + "name": "left_eye", + "x": 0.5315, + "y": 0.2476, + "confidence": 0.48 + }, + { + "name": "right_eye", + "x": 0.5122, + "y": 0.2494, + "confidence": 0.334 + }, + { + "name": "left_ear", + "x": 0.5338, + "y": 0.2391, + "confidence": 0.536 + }, + { + "name": "right_ear", + "x": 0.4924, + "y": 0.2365, + "confidence": 0.465 + }, + { + "name": "left_shoulder", + "x": 0.5659, + "y": 0.2453, + "confidence": 0.402 + }, + { + "name": "right_shoulder", + "x": 0.4351, + "y": 0.2465, + "confidence": 0.589 + }, + { + "name": "left_elbow", + "x": 0.6303, + "y": 0.2298, + "confidence": 0.532 + }, + { + "name": "right_elbow", + "x": 0.4094, + "y": 0.2327, + "confidence": 0.269 + }, + { + "name": "left_wrist", + "x": 0.7083, + "y": 0.2347, + "confidence": 0.504 + }, + { + "name": "right_wrist", + "x": 0.4874, + "y": 0.2132, + "confidence": 0.376 + }, + { + "name": "left_hip", + "x": 0.5415, + "y": 0.3977, + "confidence": 0.54 + }, + { + "name": "right_hip", + "x": 0.4862, + "y": 0.3981, + "confidence": 0.691 + }, + { + "name": "left_knee", + "x": 0.596, + "y": 0.2844, + "confidence": 0.51 + }, + { + "name": "right_knee", + "x": 0.4119, + "y": 0.289, + "confidence": 0.644 + }, + { + "name": "left_ankle", + "x": 0.6312, + "y": 0.4104, + "confidence": 0.301 + }, + { + "name": "right_ankle", + "x": 0.4712, + "y": 0.3927, + "confidence": 0.399 + } + ] + } + ] + }, + { + "frame_index": 48, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4543, + "acceleration": -53.1186, + "fluidity": 0, + "expansion": 0.188, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5201, + "y": 0.2617, + "confidence": 0.465 + }, + { + "name": "left_eye", + "x": 0.5313, + "y": 0.2473, + "confidence": 0.479 + }, + { + "name": "right_eye", + "x": 0.5122, + "y": 0.2492, + "confidence": 0.334 + }, + { + "name": "left_ear", + "x": 0.5338, + "y": 0.2391, + "confidence": 0.536 + }, + { + "name": "right_ear", + "x": 0.4922, + "y": 0.2365, + "confidence": 0.461 + }, + { + "name": "left_shoulder", + "x": 0.566, + "y": 0.2453, + "confidence": 0.407 + }, + { + "name": "right_shoulder", + "x": 0.4351, + "y": 0.2465, + "confidence": 0.592 + }, + { + "name": "left_elbow", + "x": 0.6306, + "y": 0.2297, + "confidence": 0.54 + }, + { + "name": "right_elbow", + "x": 0.4094, + "y": 0.2328, + "confidence": 0.268 + }, + { + "name": "left_wrist", + "x": 0.7084, + "y": 0.2347, + "confidence": 0.506 + }, + { + "name": "right_wrist", + "x": 0.4875, + "y": 0.2131, + "confidence": 0.379 + }, + { + "name": "left_hip", + "x": 0.5415, + "y": 0.3976, + "confidence": 0.543 + }, + { + "name": "right_hip", + "x": 0.486, + "y": 0.3979, + "confidence": 0.693 + }, + { + "name": "left_knee", + "x": 0.596, + "y": 0.2842, + "confidence": 0.512 + }, + { + "name": "right_knee", + "x": 0.4119, + "y": 0.289, + "confidence": 0.652 + }, + { + "name": "left_ankle", + "x": 0.6312, + "y": 0.4104, + "confidence": 0.303 + }, + { + "name": "right_ankle", + "x": 0.471, + "y": 0.3927, + "confidence": 0.398 + } + ] + } + ] + }, + { + "frame_index": 49, + "timestamp": 0.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.355, + "acceleration": 54.0463, + "fluidity": 0, + "expansion": 0.194, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0002, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5198, + "y": 0.2618, + "confidence": 0.46 + }, + { + "name": "left_eye", + "x": 0.5311, + "y": 0.2476, + "confidence": 0.469 + }, + { + "name": "right_eye", + "x": 0.5118, + "y": 0.2494, + "confidence": 0.338 + }, + { + "name": "left_ear", + "x": 0.5338, + "y": 0.2395, + "confidence": 0.542 + }, + { + "name": "right_ear", + "x": 0.4921, + "y": 0.2367, + "confidence": 0.458 + }, + { + "name": "left_shoulder", + "x": 0.566, + "y": 0.2457, + "confidence": 0.403 + }, + { + "name": "right_shoulder", + "x": 0.4351, + "y": 0.2467, + "confidence": 0.587 + }, + { + "name": "left_elbow", + "x": 0.6308, + "y": 0.2296, + "confidence": 0.531 + }, + { + "name": "right_elbow", + "x": 0.4094, + "y": 0.2328, + "confidence": 0.264 + }, + { + "name": "left_wrist", + "x": 0.7084, + "y": 0.2347, + "confidence": 0.494 + }, + { + "name": "right_wrist", + "x": 0.4876, + "y": 0.2131, + "confidence": 0.376 + }, + { + "name": "left_hip", + "x": 0.5417, + "y": 0.3971, + "confidence": 0.544 + }, + { + "name": "right_hip", + "x": 0.4864, + "y": 0.3976, + "confidence": 0.69 + }, + { + "name": "left_knee", + "x": 0.5961, + "y": 0.2846, + "confidence": 0.505 + }, + { + "name": "right_knee", + "x": 0.4119, + "y": 0.2892, + "confidence": 0.644 + }, + { + "name": "left_ankle", + "x": 0.6311, + "y": 0.4107, + "confidence": 0.3 + }, + { + "name": "right_ankle", + "x": 0.4712, + "y": 0.3929, + "confidence": 0.395 + } + ] + } + ] + }, + { + "frame_index": 50, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.6586, + "acceleration": 18.2122, + "fluidity": 0, + "expansion": 0.201, + "total_displacement": 0.0599, + "center_displacement": { + "x": 0.0472, + "y": -0.0369 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5317, + "y": 0.2255, + "confidence": 0.377 + }, + { + "name": "left_eye", + "x": 0.5399, + "y": 0.2174, + "confidence": 0.335 + }, + { + "name": "right_eye", + "x": 0.5203, + "y": 0.2187, + "confidence": 0.364 + }, + { + "name": "left_ear", + "x": 0.5445, + "y": 0.2196, + "confidence": 0.439 + }, + { + "name": "right_ear", + "x": 0.509, + "y": 0.2225, + "confidence": 0.395 + }, + { + "name": "left_shoulder", + "x": 0.5764, + "y": 0.2391, + "confidence": 0.544 + }, + { + "name": "right_shoulder", + "x": 0.4533, + "y": 0.2393, + "confidence": 0.476 + }, + { + "name": "left_elbow", + "x": 0.6481, + "y": 0.2255, + "confidence": 0.552 + }, + { + "name": "right_elbow", + "x": 0.4262, + "y": 0.2243, + "confidence": 0.3 + }, + { + "name": "left_wrist", + "x": 0.7197, + "y": 0.2315, + "confidence": 0.779 + }, + { + "name": "right_wrist", + "x": 0.4808, + "y": 0.2066, + "confidence": 0.168 + }, + { + "name": "left_hip", + "x": 0.5565, + "y": 0.3798, + "confidence": 0.486 + }, + { + "name": "right_hip", + "x": 0.4935, + "y": 0.3814, + "confidence": 0.607 + }, + { + "name": "left_knee", + "x": 0.607, + "y": 0.2838, + "confidence": 0.547 + }, + { + "name": "right_knee", + "x": 0.422, + "y": 0.2932, + "confidence": 0.614 + }, + { + "name": "left_ankle", + "x": 0.6372, + "y": 0.4193, + "confidence": 0.355 + }, + { + "name": "right_ankle", + "x": 0.4759, + "y": 0.4047, + "confidence": 0.291 + } + ] + } + ] + }, + { + "frame_index": 51, + "timestamp": 0.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.1879, + "acceleration": -28.2392, + "fluidity": 0, + "expansion": 0.208, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0002, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5317, + "y": 0.2255, + "confidence": 0.377 + }, + { + "name": "left_eye", + "x": 0.5399, + "y": 0.2175, + "confidence": 0.337 + }, + { + "name": "right_eye", + "x": 0.5204, + "y": 0.2187, + "confidence": 0.366 + }, + { + "name": "left_ear", + "x": 0.5446, + "y": 0.2196, + "confidence": 0.445 + }, + { + "name": "right_ear", + "x": 0.509, + "y": 0.2226, + "confidence": 0.395 + }, + { + "name": "left_shoulder", + "x": 0.5767, + "y": 0.2391, + "confidence": 0.55 + }, + { + "name": "right_shoulder", + "x": 0.4532, + "y": 0.2394, + "confidence": 0.479 + }, + { + "name": "left_elbow", + "x": 0.6481, + "y": 0.2255, + "confidence": 0.556 + }, + { + "name": "right_elbow", + "x": 0.4261, + "y": 0.2245, + "confidence": 0.299 + }, + { + "name": "left_wrist", + "x": 0.7198, + "y": 0.2315, + "confidence": 0.783 + }, + { + "name": "right_wrist", + "x": 0.481, + "y": 0.2066, + "confidence": 0.17 + }, + { + "name": "left_hip", + "x": 0.5566, + "y": 0.3808, + "confidence": 0.472 + }, + { + "name": "right_hip", + "x": 0.4936, + "y": 0.3822, + "confidence": 0.598 + }, + { + "name": "left_knee", + "x": 0.6071, + "y": 0.2838, + "confidence": 0.55 + }, + { + "name": "right_knee", + "x": 0.4219, + "y": 0.2932, + "confidence": 0.621 + }, + { + "name": "left_ankle", + "x": 0.6374, + "y": 0.4194, + "confidence": 0.357 + }, + { + "name": "right_ankle", + "x": 0.4762, + "y": 0.4048, + "confidence": 0.29 + } + ] + } + ] + }, + { + "frame_index": 52, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.0232, + "acceleration": -9.8859, + "fluidity": 0, + "expansion": 0.215, + "total_displacement": 0.0313, + "center_displacement": { + "x": -0.0191, + "y": -0.0248 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5388, + "y": 0.2344, + "confidence": 0.412 + }, + { + "name": "left_eye", + "x": 0.5499, + "y": 0.2259, + "confidence": 0.45 + }, + { + "name": "right_eye", + "x": 0.5319, + "y": 0.2279, + "confidence": 0.389 + }, + { + "name": "left_ear", + "x": 0.5553, + "y": 0.2238, + "confidence": 0.354 + }, + { + "name": "right_ear", + "x": 0.5164, + "y": 0.2238, + "confidence": 0.482 + }, + { + "name": "left_shoulder", + "x": 0.5843, + "y": 0.2397, + "confidence": 0.524 + }, + { + "name": "right_shoulder", + "x": 0.4626, + "y": 0.239, + "confidence": 0.576 + }, + { + "name": "left_elbow", + "x": 0.6562, + "y": 0.219, + "confidence": 0.425 + }, + { + "name": "right_elbow", + "x": 0.4396, + "y": 0.2128, + "confidence": 0.412 + }, + { + "name": "left_wrist", + "x": 0.7332, + "y": 0.2245, + "confidence": 0.729 + }, + { + "name": "right_wrist", + "x": 0.4906, + "y": 0.1944, + "confidence": 0.107 + }, + { + "name": "left_hip", + "x": 0.5628, + "y": 0.3683, + "confidence": 0.365 + }, + { + "name": "right_hip", + "x": 0.5012, + "y": 0.3789, + "confidence": 0.598 + }, + { + "name": "left_knee", + "x": 0.6099, + "y": 0.288, + "confidence": 0.417 + }, + { + "name": "right_knee", + "x": 0.4302, + "y": 0.2948, + "confidence": 0.632 + }, + { + "name": "left_ankle", + "x": 0.6396, + "y": 0.422, + "confidence": 0.371 + }, + { + "name": "right_ankle", + "x": 0.4821, + "y": 0.4153, + "confidence": 0.299 + } + ] + } + ] + }, + { + "frame_index": 53, + "timestamp": 0.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3454, + "acceleration": -40.6651, + "fluidity": 0.019, + "expansion": 0.218, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5388, + "y": 0.2342, + "confidence": 0.413 + }, + { + "name": "left_eye", + "x": 0.55, + "y": 0.2257, + "confidence": 0.453 + }, + { + "name": "right_eye", + "x": 0.5321, + "y": 0.2276, + "confidence": 0.389 + }, + { + "name": "left_ear", + "x": 0.5553, + "y": 0.2236, + "confidence": 0.354 + }, + { + "name": "right_ear", + "x": 0.5166, + "y": 0.2235, + "confidence": 0.48 + }, + { + "name": "left_shoulder", + "x": 0.5844, + "y": 0.2397, + "confidence": 0.524 + }, + { + "name": "right_shoulder", + "x": 0.4627, + "y": 0.2389, + "confidence": 0.574 + }, + { + "name": "left_elbow", + "x": 0.6564, + "y": 0.219, + "confidence": 0.425 + }, + { + "name": "right_elbow", + "x": 0.4397, + "y": 0.2128, + "confidence": 0.411 + }, + { + "name": "left_wrist", + "x": 0.7332, + "y": 0.2245, + "confidence": 0.728 + }, + { + "name": "right_wrist", + "x": 0.491, + "y": 0.1942, + "confidence": 0.108 + }, + { + "name": "left_hip", + "x": 0.5628, + "y": 0.3684, + "confidence": 0.365 + }, + { + "name": "right_hip", + "x": 0.5012, + "y": 0.379, + "confidence": 0.6 + }, + { + "name": "left_knee", + "x": 0.6099, + "y": 0.2882, + "confidence": 0.419 + }, + { + "name": "right_knee", + "x": 0.4301, + "y": 0.2948, + "confidence": 0.63 + }, + { + "name": "left_ankle", + "x": 0.6396, + "y": 0.4224, + "confidence": 0.375 + }, + { + "name": "right_ankle", + "x": 0.4822, + "y": 0.4156, + "confidence": 0.299 + } + ] + } + ] + }, + { + "frame_index": 54, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.4456, + "acceleration": 126.0139, + "fluidity": 0.025, + "expansion": 0.212, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5388, + "y": 0.2342, + "confidence": 0.412 + }, + { + "name": "left_eye", + "x": 0.55, + "y": 0.2258, + "confidence": 0.449 + }, + { + "name": "right_eye", + "x": 0.5288, + "y": 0.2296, + "confidence": 0.32 + }, + { + "name": "left_ear", + "x": 0.5553, + "y": 0.2239, + "confidence": 0.353 + }, + { + "name": "right_ear", + "x": 0.5165, + "y": 0.2239, + "confidence": 0.481 + }, + { + "name": "left_shoulder", + "x": 0.5843, + "y": 0.2398, + "confidence": 0.52 + }, + { + "name": "right_shoulder", + "x": 0.4627, + "y": 0.2393, + "confidence": 0.577 + }, + { + "name": "left_elbow", + "x": 0.6565, + "y": 0.219, + "confidence": 0.426 + }, + { + "name": "right_elbow", + "x": 0.4397, + "y": 0.2128, + "confidence": 0.409 + }, + { + "name": "left_wrist", + "x": 0.7334, + "y": 0.2244, + "confidence": 0.722 + }, + { + "name": "right_wrist", + "x": 0.4909, + "y": 0.1943, + "confidence": 0.108 + }, + { + "name": "left_hip", + "x": 0.5627, + "y": 0.3681, + "confidence": 0.368 + }, + { + "name": "right_hip", + "x": 0.5011, + "y": 0.3786, + "confidence": 0.607 + }, + { + "name": "left_knee", + "x": 0.6132, + "y": 0.291, + "confidence": 0.406 + }, + { + "name": "right_knee", + "x": 0.4301, + "y": 0.2949, + "confidence": 0.628 + }, + { + "name": "left_ankle", + "x": 0.6395, + "y": 0.4222, + "confidence": 0.368 + }, + { + "name": "right_ankle", + "x": 0.4821, + "y": 0.4151, + "confidence": 0.296 + } + ] + } + ] + }, + { + "frame_index": 55, + "timestamp": 0.9166666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 3.1454, + "acceleration": 41.9836, + "fluidity": 0.008, + "expansion": 0.205, + "total_displacement": 0.1164, + "center_displacement": { + "x": 0.0602, + "y": 0.0996 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5494, + "y": 0.2329, + "confidence": 0.396 + }, + { + "name": "left_eye", + "x": 0.558, + "y": 0.2209, + "confidence": 0.357 + }, + { + "name": "right_eye", + "x": 0.5391, + "y": 0.2263, + "confidence": 0.448 + }, + { + "name": "left_ear", + "x": 0.5637, + "y": 0.2183, + "confidence": 0.468 + }, + { + "name": "right_ear", + "x": 0.5219, + "y": 0.2232, + "confidence": 0.388 + }, + { + "name": "left_shoulder", + "x": 0.5936, + "y": 0.2374, + "confidence": 0.469 + }, + { + "name": "right_shoulder", + "x": 0.4742, + "y": 0.2371, + "confidence": 0.468 + }, + { + "name": "left_elbow", + "x": 0.6772, + "y": 0.2179, + "confidence": 0.396 + }, + { + "name": "right_elbow", + "x": 0.4503, + "y": 0.1953, + "confidence": 0.629 + }, + { + "name": "left_wrist", + "x": 0.7478, + "y": 0.2194, + "confidence": 0.614 + }, + { + "name": "right_wrist", + "x": 0.5073, + "y": 0.1673, + "confidence": 0.292 + }, + { + "name": "left_hip", + "x": 0.5762, + "y": 0.3855, + "confidence": 0.57 + }, + { + "name": "right_hip", + "x": 0.5079, + "y": 0.3896, + "confidence": 0.493 + }, + { + "name": "left_knee", + "x": 0.6234, + "y": 0.2968, + "confidence": 0.436 + }, + { + "name": "right_knee", + "x": 0.4376, + "y": 0.2964, + "confidence": 0.581 + }, + { + "name": "left_ankle", + "x": 0.6436, + "y": 0.4333, + "confidence": 0.476 + }, + { + "name": "right_ankle", + "x": 0.4805, + "y": 0.4232, + "confidence": 0.307 + } + ] + } + ] + }, + { + "frame_index": 56, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.4662, + "acceleration": -40.7515, + "fluidity": 0.003, + "expansion": 0.22, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5497, + "y": 0.2331, + "confidence": 0.398 + }, + { + "name": "left_eye", + "x": 0.5582, + "y": 0.2209, + "confidence": 0.361 + }, + { + "name": "right_eye", + "x": 0.5394, + "y": 0.2262, + "confidence": 0.451 + }, + { + "name": "left_ear", + "x": 0.5638, + "y": 0.2183, + "confidence": 0.468 + }, + { + "name": "right_ear", + "x": 0.5221, + "y": 0.2233, + "confidence": 0.393 + }, + { + "name": "left_shoulder", + "x": 0.5937, + "y": 0.2373, + "confidence": 0.477 + }, + { + "name": "right_shoulder", + "x": 0.4741, + "y": 0.2369, + "confidence": 0.469 + }, + { + "name": "left_elbow", + "x": 0.6765, + "y": 0.218, + "confidence": 0.4 + }, + { + "name": "right_elbow", + "x": 0.4506, + "y": 0.1951, + "confidence": 0.634 + }, + { + "name": "left_wrist", + "x": 0.7476, + "y": 0.2195, + "confidence": 0.615 + }, + { + "name": "right_wrist", + "x": 0.508, + "y": 0.1671, + "confidence": 0.298 + }, + { + "name": "left_hip", + "x": 0.5761, + "y": 0.3856, + "confidence": 0.577 + }, + { + "name": "right_hip", + "x": 0.5078, + "y": 0.3895, + "confidence": 0.498 + }, + { + "name": "left_knee", + "x": 0.6233, + "y": 0.2966, + "confidence": 0.438 + }, + { + "name": "right_knee", + "x": 0.4376, + "y": 0.2962, + "confidence": 0.591 + }, + { + "name": "left_ankle", + "x": 0.6436, + "y": 0.4332, + "confidence": 0.483 + }, + { + "name": "right_ankle", + "x": 0.4805, + "y": 0.4232, + "confidence": 0.307 + } + ] + } + ] + }, + { + "frame_index": 57, + "timestamp": 0.95, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.2397, + "acceleration": -13.588, + "fluidity": 0.001, + "expansion": 0.244, + "total_displacement": 0.0708, + "center_displacement": { + "x": -0.0325, + "y": -0.0629 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5588, + "y": 0.2321, + "confidence": 0.423 + }, + { + "name": "left_eye", + "x": 0.5632, + "y": 0.225, + "confidence": 0.49 + }, + { + "name": "right_eye", + "x": 0.5488, + "y": 0.2249, + "confidence": 0.458 + }, + { + "name": "left_ear", + "x": 0.565, + "y": 0.224, + "confidence": 0.376 + }, + { + "name": "right_ear", + "x": 0.5315, + "y": 0.2222, + "confidence": 0.528 + }, + { + "name": "left_shoulder", + "x": 0.6004, + "y": 0.2477, + "confidence": 0.595 + }, + { + "name": "right_shoulder", + "x": 0.4886, + "y": 0.2401, + "confidence": 0.575 + }, + { + "name": "left_elbow", + "x": 0.6805, + "y": 0.2211, + "confidence": 0.542 + }, + { + "name": "right_elbow", + "x": 0.4573, + "y": 0.1813, + "confidence": 0.609 + }, + { + "name": "left_wrist", + "x": 0.7546, + "y": 0.2202, + "confidence": 0.738 + }, + { + "name": "right_wrist", + "x": 0.4962, + "y": 0.1531, + "confidence": 0.376 + }, + { + "name": "left_hip", + "x": 0.5716, + "y": 0.3997, + "confidence": 0.737 + }, + { + "name": "right_hip", + "x": 0.5136, + "y": 0.4033, + "confidence": 0.569 + }, + { + "name": "left_knee", + "x": 0.6343, + "y": 0.3038, + "confidence": 0.52 + }, + { + "name": "right_knee", + "x": 0.4464, + "y": 0.2978, + "confidence": 0.654 + }, + { + "name": "left_ankle", + "x": 0.6521, + "y": 0.4426, + "confidence": 0.594 + }, + { + "name": "right_ankle", + "x": 0.4837, + "y": 0.4293, + "confidence": 0.283 + } + ] + } + ] + }, + { + "frame_index": 58, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7502, + "acceleration": -89.3698, + "fluidity": 0.056, + "expansion": 0.252, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5588, + "y": 0.2326, + "confidence": 0.433 + }, + { + "name": "left_eye", + "x": 0.5632, + "y": 0.2254, + "confidence": 0.491 + }, + { + "name": "right_eye", + "x": 0.5488, + "y": 0.2253, + "confidence": 0.463 + }, + { + "name": "left_ear", + "x": 0.5667, + "y": 0.2238, + "confidence": 0.483 + }, + { + "name": "right_ear", + "x": 0.5316, + "y": 0.2223, + "confidence": 0.53 + }, + { + "name": "left_shoulder", + "x": 0.6004, + "y": 0.2477, + "confidence": 0.594 + }, + { + "name": "right_shoulder", + "x": 0.4886, + "y": 0.24, + "confidence": 0.569 + }, + { + "name": "left_elbow", + "x": 0.6803, + "y": 0.221, + "confidence": 0.538 + }, + { + "name": "right_elbow", + "x": 0.4574, + "y": 0.1812, + "confidence": 0.605 + }, + { + "name": "left_wrist", + "x": 0.7545, + "y": 0.2203, + "confidence": 0.735 + }, + { + "name": "right_wrist", + "x": 0.4964, + "y": 0.1529, + "confidence": 0.374 + }, + { + "name": "left_hip", + "x": 0.5716, + "y": 0.3995, + "confidence": 0.734 + }, + { + "name": "right_hip", + "x": 0.5137, + "y": 0.403, + "confidence": 0.573 + }, + { + "name": "left_knee", + "x": 0.6342, + "y": 0.3038, + "confidence": 0.516 + }, + { + "name": "right_knee", + "x": 0.4464, + "y": 0.2979, + "confidence": 0.653 + }, + { + "name": "left_ankle", + "x": 0.652, + "y": 0.4424, + "confidence": 0.592 + }, + { + "name": "right_ankle", + "x": 0.4838, + "y": 0.4292, + "confidence": 0.282 + } + ] + } + ] + }, + { + "frame_index": 59, + "timestamp": 0.9833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3651, + "acceleration": -23.1063, + "fluidity": 0.075, + "expansion": 0.242, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5588, + "y": 0.2323, + "confidence": 0.425 + }, + { + "name": "left_eye", + "x": 0.5632, + "y": 0.2253, + "confidence": 0.488 + }, + { + "name": "right_eye", + "x": 0.5487, + "y": 0.2252, + "confidence": 0.461 + }, + { + "name": "left_ear", + "x": 0.5666, + "y": 0.2241, + "confidence": 0.489 + }, + { + "name": "right_ear", + "x": 0.5313, + "y": 0.2226, + "confidence": 0.533 + }, + { + "name": "left_shoulder", + "x": 0.6001, + "y": 0.248, + "confidence": 0.596 + }, + { + "name": "right_shoulder", + "x": 0.4889, + "y": 0.2405, + "confidence": 0.565 + }, + { + "name": "left_elbow", + "x": 0.6807, + "y": 0.221, + "confidence": 0.53 + }, + { + "name": "right_elbow", + "x": 0.4575, + "y": 0.1814, + "confidence": 0.609 + }, + { + "name": "left_wrist", + "x": 0.7546, + "y": 0.2203, + "confidence": 0.728 + }, + { + "name": "right_wrist", + "x": 0.4964, + "y": 0.153, + "confidence": 0.374 + }, + { + "name": "left_hip", + "x": 0.5716, + "y": 0.3993, + "confidence": 0.727 + }, + { + "name": "right_hip", + "x": 0.5138, + "y": 0.4029, + "confidence": 0.574 + }, + { + "name": "left_knee", + "x": 0.6341, + "y": 0.304, + "confidence": 0.514 + }, + { + "name": "right_knee", + "x": 0.4466, + "y": 0.2982, + "confidence": 0.654 + }, + { + "name": "left_ankle", + "x": 0.6518, + "y": 0.4423, + "confidence": 0.586 + }, + { + "name": "right_ankle", + "x": 0.4835, + "y": 0.4293, + "confidence": 0.281 + } + ] + } + ] + }, + { + "frame_index": 60, + "timestamp": 1, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2376, + "acceleration": -7.6533, + "fluidity": 0.025, + "expansion": 0.227, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0056, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5703, + "y": 0.2486, + "confidence": 0.378 + }, + { + "name": "left_eye", + "x": 0.5778, + "y": 0.2388, + "confidence": 0.53 + }, + { + "name": "right_eye", + "x": 0.5609, + "y": 0.2366, + "confidence": 0.504 + }, + { + "name": "left_ear", + "x": 0.58, + "y": 0.2368, + "confidence": 0.332 + }, + { + "name": "right_ear", + "x": 0.5394, + "y": 0.2307, + "confidence": 0.647 + }, + { + "name": "left_shoulder", + "x": 0.6084, + "y": 0.2507, + "confidence": 0.517 + }, + { + "name": "right_shoulder", + "x": 0.4903, + "y": 0.2351, + "confidence": 0.645 + }, + { + "name": "left_elbow", + "x": 0.6871, + "y": 0.2252, + "confidence": 0.561 + }, + { + "name": "right_elbow", + "x": 0.4701, + "y": 0.1667, + "confidence": 0.754 + }, + { + "name": "left_wrist", + "x": 0.7649, + "y": 0.2176, + "confidence": 0.722 + }, + { + "name": "right_wrist", + "x": 0.4936, + "y": 0.1504, + "confidence": 0.207 + }, + { + "name": "left_hip", + "x": 0.581, + "y": 0.3972, + "confidence": 0.577 + }, + { + "name": "right_hip", + "x": 0.5173, + "y": 0.4103, + "confidence": 0.712 + }, + { + "name": "left_knee", + "x": 0.6335, + "y": 0.3138, + "confidence": 0.574 + }, + { + "name": "right_knee", + "x": 0.4479, + "y": 0.3066, + "confidence": 0.693 + }, + { + "name": "left_ankle", + "x": 0.6553, + "y": 0.4604, + "confidence": 0.596 + }, + { + "name": "right_ankle", + "x": 0.4837, + "y": 0.4375, + "confidence": 0.348 + } + ] + } + ] + }, + { + "frame_index": 61, + "timestamp": 1.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1073, + "acceleration": -7.8153, + "fluidity": 0.008, + "expansion": 0.223, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5705, + "y": 0.2482, + "confidence": 0.375 + }, + { + "name": "left_eye", + "x": 0.5779, + "y": 0.2385, + "confidence": 0.527 + }, + { + "name": "right_eye", + "x": 0.5612, + "y": 0.2363, + "confidence": 0.495 + }, + { + "name": "left_ear", + "x": 0.58, + "y": 0.2368, + "confidence": 0.33 + }, + { + "name": "right_ear", + "x": 0.5397, + "y": 0.2307, + "confidence": 0.647 + }, + { + "name": "left_shoulder", + "x": 0.6084, + "y": 0.2508, + "confidence": 0.516 + }, + { + "name": "right_shoulder", + "x": 0.4902, + "y": 0.2349, + "confidence": 0.642 + }, + { + "name": "left_elbow", + "x": 0.6869, + "y": 0.2253, + "confidence": 0.559 + }, + { + "name": "right_elbow", + "x": 0.4701, + "y": 0.1667, + "confidence": 0.758 + }, + { + "name": "left_wrist", + "x": 0.7648, + "y": 0.2175, + "confidence": 0.723 + }, + { + "name": "right_wrist", + "x": 0.4937, + "y": 0.1505, + "confidence": 0.205 + }, + { + "name": "left_hip", + "x": 0.5809, + "y": 0.3971, + "confidence": 0.579 + }, + { + "name": "right_hip", + "x": 0.5173, + "y": 0.4102, + "confidence": 0.713 + }, + { + "name": "left_knee", + "x": 0.6336, + "y": 0.3138, + "confidence": 0.58 + }, + { + "name": "right_knee", + "x": 0.4478, + "y": 0.3066, + "confidence": 0.689 + }, + { + "name": "left_ankle", + "x": 0.6553, + "y": 0.4603, + "confidence": 0.594 + }, + { + "name": "right_ankle", + "x": 0.4837, + "y": 0.4375, + "confidence": 0.348 + } + ] + } + ] + }, + { + "frame_index": 62, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0655, + "acceleration": -2.5063, + "fluidity": 0.003, + "expansion": 0.223, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0001, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5784, + "y": 0.2533, + "confidence": 0.434 + }, + { + "name": "left_eye", + "x": 0.5872, + "y": 0.242, + "confidence": 0.607 + }, + { + "name": "right_eye", + "x": 0.564, + "y": 0.2441, + "confidence": 0.46 + }, + { + "name": "left_ear", + "x": 0.5862, + "y": 0.236, + "confidence": 0.441 + }, + { + "name": "right_ear", + "x": 0.5468, + "y": 0.2307, + "confidence": 0.641 + }, + { + "name": "left_shoulder", + "x": 0.6128, + "y": 0.2488, + "confidence": 0.578 + }, + { + "name": "right_shoulder", + "x": 0.4948, + "y": 0.2268, + "confidence": 0.739 + }, + { + "name": "left_elbow", + "x": 0.696, + "y": 0.2265, + "confidence": 0.634 + }, + { + "name": "right_elbow", + "x": 0.474, + "y": 0.1576, + "confidence": 0.732 + }, + { + "name": "left_wrist", + "x": 0.7664, + "y": 0.2229, + "confidence": 0.808 + }, + { + "name": "right_wrist", + "x": 0.4785, + "y": 0.1566, + "confidence": 0.26 + }, + { + "name": "left_hip", + "x": 0.5755, + "y": 0.4079, + "confidence": 0.599 + }, + { + "name": "right_hip", + "x": 0.5141, + "y": 0.4147, + "confidence": 0.646 + }, + { + "name": "left_knee", + "x": 0.6397, + "y": 0.3296, + "confidence": 0.648 + }, + { + "name": "right_knee", + "x": 0.4548, + "y": 0.3141, + "confidence": 0.797 + }, + { + "name": "left_ankle", + "x": 0.6528, + "y": 0.475, + "confidence": 0.636 + }, + { + "name": "right_ankle", + "x": 0.4862, + "y": 0.4447, + "confidence": 0.338 + } + ] + } + ] + }, + { + "frame_index": 63, + "timestamp": 1.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.027, + "acceleration": -2.3105, + "fluidity": 0.001, + "expansion": 0.223, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5784, + "y": 0.2533, + "confidence": 0.432 + }, + { + "name": "left_eye", + "x": 0.5872, + "y": 0.242, + "confidence": 0.607 + }, + { + "name": "right_eye", + "x": 0.564, + "y": 0.244, + "confidence": 0.459 + }, + { + "name": "left_ear", + "x": 0.5862, + "y": 0.236, + "confidence": 0.442 + }, + { + "name": "right_ear", + "x": 0.5468, + "y": 0.2307, + "confidence": 0.639 + }, + { + "name": "left_shoulder", + "x": 0.613, + "y": 0.2488, + "confidence": 0.579 + }, + { + "name": "right_shoulder", + "x": 0.4949, + "y": 0.2269, + "confidence": 0.739 + }, + { + "name": "left_elbow", + "x": 0.6965, + "y": 0.2265, + "confidence": 0.63 + }, + { + "name": "right_elbow", + "x": 0.474, + "y": 0.1577, + "confidence": 0.729 + }, + { + "name": "left_wrist", + "x": 0.7663, + "y": 0.2229, + "confidence": 0.807 + }, + { + "name": "right_wrist", + "x": 0.4786, + "y": 0.1566, + "confidence": 0.262 + }, + { + "name": "left_hip", + "x": 0.5757, + "y": 0.408, + "confidence": 0.599 + }, + { + "name": "right_hip", + "x": 0.5142, + "y": 0.4149, + "confidence": 0.641 + }, + { + "name": "left_knee", + "x": 0.6398, + "y": 0.3297, + "confidence": 0.648 + }, + { + "name": "right_knee", + "x": 0.4548, + "y": 0.314, + "confidence": 0.796 + }, + { + "name": "left_ankle", + "x": 0.6528, + "y": 0.4751, + "confidence": 0.635 + }, + { + "name": "right_ankle", + "x": 0.4862, + "y": 0.4448, + "confidence": 0.337 + } + ] + } + ] + }, + { + "frame_index": 64, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.067, + "acceleration": 2.3995, + "fluidity": 0, + "expansion": 0.224, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5785, + "y": 0.2534, + "confidence": 0.432 + }, + { + "name": "left_eye", + "x": 0.5873, + "y": 0.2421, + "confidence": 0.606 + }, + { + "name": "right_eye", + "x": 0.5642, + "y": 0.2442, + "confidence": 0.461 + }, + { + "name": "left_ear", + "x": 0.5863, + "y": 0.2364, + "confidence": 0.444 + }, + { + "name": "right_ear", + "x": 0.547, + "y": 0.231, + "confidence": 0.634 + }, + { + "name": "left_shoulder", + "x": 0.6129, + "y": 0.249, + "confidence": 0.584 + }, + { + "name": "right_shoulder", + "x": 0.4949, + "y": 0.227, + "confidence": 0.74 + }, + { + "name": "left_elbow", + "x": 0.6954, + "y": 0.2266, + "confidence": 0.642 + }, + { + "name": "right_elbow", + "x": 0.4741, + "y": 0.1577, + "confidence": 0.729 + }, + { + "name": "left_wrist", + "x": 0.7662, + "y": 0.2229, + "confidence": 0.808 + }, + { + "name": "right_wrist", + "x": 0.4788, + "y": 0.1566, + "confidence": 0.259 + }, + { + "name": "left_hip", + "x": 0.5756, + "y": 0.4079, + "confidence": 0.597 + }, + { + "name": "right_hip", + "x": 0.5141, + "y": 0.4148, + "confidence": 0.641 + }, + { + "name": "left_knee", + "x": 0.6397, + "y": 0.3294, + "confidence": 0.648 + }, + { + "name": "right_knee", + "x": 0.4548, + "y": 0.3141, + "confidence": 0.798 + }, + { + "name": "left_ankle", + "x": 0.6528, + "y": 0.4753, + "confidence": 0.638 + }, + { + "name": "right_ankle", + "x": 0.486, + "y": 0.4452, + "confidence": 0.341 + } + ] + } + ] + }, + { + "frame_index": 65, + "timestamp": 1.0833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0821, + "acceleration": 0.9029, + "fluidity": 0, + "expansion": 0.226, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0027, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5793, + "y": 0.255, + "confidence": 0.432 + }, + { + "name": "left_eye", + "x": 0.5895, + "y": 0.2438, + "confidence": 0.432 + }, + { + "name": "right_eye", + "x": 0.5698, + "y": 0.245, + "confidence": 0.567 + }, + { + "name": "left_ear", + "x": 0.59, + "y": 0.2381, + "confidence": 0.465 + }, + { + "name": "right_ear", + "x": 0.5489, + "y": 0.2304, + "confidence": 0.526 + }, + { + "name": "left_shoulder", + "x": 0.6112, + "y": 0.2509, + "confidence": 0.502 + }, + { + "name": "right_shoulder", + "x": 0.5056, + "y": 0.2257, + "confidence": 0.641 + }, + { + "name": "left_elbow", + "x": 0.6921, + "y": 0.2321, + "confidence": 0.709 + }, + { + "name": "right_elbow", + "x": 0.4847, + "y": 0.1566, + "confidence": 0.395 + }, + { + "name": "left_wrist", + "x": 0.7706, + "y": 0.2293, + "confidence": 0.804 + }, + { + "name": "right_wrist", + "x": 0.48, + "y": 0.1497, + "confidence": 0.268 + }, + { + "name": "left_hip", + "x": 0.5751, + "y": 0.4109, + "confidence": 0.517 + }, + { + "name": "right_hip", + "x": 0.5166, + "y": 0.4139, + "confidence": 0.575 + }, + { + "name": "left_knee", + "x": 0.6481, + "y": 0.344, + "confidence": 0.842 + }, + { + "name": "right_knee", + "x": 0.463, + "y": 0.3261, + "confidence": 0.708 + }, + { + "name": "left_ankle", + "x": 0.6504, + "y": 0.4889, + "confidence": 0.751 + }, + { + "name": "right_ankle", + "x": 0.4839, + "y": 0.4702, + "confidence": 0.464 + } + ] + } + ] + }, + { + "frame_index": 66, + "timestamp": 1.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.8094, + "acceleration": 43.6383, + "fluidity": 0, + "expansion": 0.242, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5792, + "y": 0.2547, + "confidence": 0.428 + }, + { + "name": "left_eye", + "x": 0.5894, + "y": 0.2436, + "confidence": 0.432 + }, + { + "name": "right_eye", + "x": 0.5698, + "y": 0.2448, + "confidence": 0.568 + }, + { + "name": "left_ear", + "x": 0.59, + "y": 0.238, + "confidence": 0.469 + }, + { + "name": "right_ear", + "x": 0.5489, + "y": 0.2303, + "confidence": 0.528 + }, + { + "name": "left_shoulder", + "x": 0.6113, + "y": 0.2509, + "confidence": 0.505 + }, + { + "name": "right_shoulder", + "x": 0.5059, + "y": 0.2259, + "confidence": 0.641 + }, + { + "name": "left_elbow", + "x": 0.6922, + "y": 0.2319, + "confidence": 0.708 + }, + { + "name": "right_elbow", + "x": 0.4849, + "y": 0.1571, + "confidence": 0.4 + }, + { + "name": "left_wrist", + "x": 0.7708, + "y": 0.2291, + "confidence": 0.803 + }, + { + "name": "right_wrist", + "x": 0.48, + "y": 0.1499, + "confidence": 0.268 + }, + { + "name": "left_hip", + "x": 0.5752, + "y": 0.4109, + "confidence": 0.518 + }, + { + "name": "right_hip", + "x": 0.5166, + "y": 0.414, + "confidence": 0.572 + }, + { + "name": "left_knee", + "x": 0.6481, + "y": 0.344, + "confidence": 0.84 + }, + { + "name": "right_knee", + "x": 0.463, + "y": 0.326, + "confidence": 0.706 + }, + { + "name": "left_ankle", + "x": 0.6504, + "y": 0.4887, + "confidence": 0.75 + }, + { + "name": "right_ankle", + "x": 0.4839, + "y": 0.4701, + "confidence": 0.459 + } + ] + } + ] + }, + { + "frame_index": 67, + "timestamp": 1.1166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.0509, + "acceleration": 14.4907, + "fluidity": 0, + "expansion": 0.264, + "total_displacement": 0.0389, + "center_displacement": { + "x": 0.0173, + "y": 0.0349 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5924, + "y": 0.2659, + "confidence": 0.403 + }, + { + "name": "left_eye", + "x": 0.6053, + "y": 0.2565, + "confidence": 0.499 + }, + { + "name": "right_eye", + "x": 0.5829, + "y": 0.2585, + "confidence": 0.465 + }, + { + "name": "left_ear", + "x": 0.5998, + "y": 0.2429, + "confidence": 0.383 + }, + { + "name": "right_ear", + "x": 0.5635, + "y": 0.2337, + "confidence": 0.409 + }, + { + "name": "left_shoulder", + "x": 0.6186, + "y": 0.2519, + "confidence": 0.56 + }, + { + "name": "right_shoulder", + "x": 0.5101, + "y": 0.2276, + "confidence": 0.46 + }, + { + "name": "left_elbow", + "x": 0.6977, + "y": 0.2351, + "confidence": 0.673 + }, + { + "name": "right_elbow", + "x": 0.4916, + "y": 0.1595, + "confidence": 0.401 + }, + { + "name": "left_wrist", + "x": 0.769, + "y": 0.2353, + "confidence": 0.654 + }, + { + "name": "right_wrist", + "x": 0.481, + "y": 0.1496, + "confidence": 0.368 + }, + { + "name": "left_hip", + "x": 0.5747, + "y": 0.4165, + "confidence": 0.652 + }, + { + "name": "right_hip", + "x": 0.5153, + "y": 0.4125, + "confidence": 0.568 + }, + { + "name": "left_knee", + "x": 0.6569, + "y": 0.3641, + "confidence": 0.846 + }, + { + "name": "right_knee", + "x": 0.4701, + "y": 0.3361, + "confidence": 0.639 + }, + { + "name": "left_ankle", + "x": 0.6558, + "y": 0.5043, + "confidence": 0.554 + }, + { + "name": "right_ankle", + "x": 0.4841, + "y": 0.483, + "confidence": 0.576 + } + ] + } + ] + }, + { + "frame_index": 68, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3547, + "acceleration": -41.7684, + "fluidity": 0.291, + "expansion": 0.271, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5923, + "y": 0.2655, + "confidence": 0.4 + }, + { + "name": "left_eye", + "x": 0.6051, + "y": 0.2562, + "confidence": 0.501 + }, + { + "name": "right_eye", + "x": 0.5829, + "y": 0.2582, + "confidence": 0.462 + }, + { + "name": "left_ear", + "x": 0.5996, + "y": 0.2427, + "confidence": 0.38 + }, + { + "name": "right_ear", + "x": 0.5635, + "y": 0.2335, + "confidence": 0.408 + }, + { + "name": "left_shoulder", + "x": 0.6186, + "y": 0.2519, + "confidence": 0.561 + }, + { + "name": "right_shoulder", + "x": 0.5101, + "y": 0.2276, + "confidence": 0.462 + }, + { + "name": "left_elbow", + "x": 0.6974, + "y": 0.2353, + "confidence": 0.682 + }, + { + "name": "right_elbow", + "x": 0.4915, + "y": 0.1592, + "confidence": 0.397 + }, + { + "name": "left_wrist", + "x": 0.769, + "y": 0.2354, + "confidence": 0.664 + }, + { + "name": "right_wrist", + "x": 0.481, + "y": 0.1496, + "confidence": 0.37 + }, + { + "name": "left_hip", + "x": 0.5745, + "y": 0.4166, + "confidence": 0.655 + }, + { + "name": "right_hip", + "x": 0.5152, + "y": 0.4127, + "confidence": 0.571 + }, + { + "name": "left_knee", + "x": 0.6568, + "y": 0.364, + "confidence": 0.848 + }, + { + "name": "right_knee", + "x": 0.4702, + "y": 0.336, + "confidence": 0.64 + }, + { + "name": "left_ankle", + "x": 0.6559, + "y": 0.5042, + "confidence": 0.559 + }, + { + "name": "right_ankle", + "x": 0.4841, + "y": 0.4831, + "confidence": 0.576 + } + ] + } + ] + }, + { + "frame_index": 69, + "timestamp": 1.15, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.7313, + "acceleration": 22.5962, + "fluidity": 0.389, + "expansion": 0.276, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5924, + "y": 0.2659, + "confidence": 0.403 + }, + { + "name": "left_eye", + "x": 0.6052, + "y": 0.2565, + "confidence": 0.501 + }, + { + "name": "right_eye", + "x": 0.5829, + "y": 0.2585, + "confidence": 0.465 + }, + { + "name": "left_ear", + "x": 0.5997, + "y": 0.2429, + "confidence": 0.381 + }, + { + "name": "right_ear", + "x": 0.5635, + "y": 0.2337, + "confidence": 0.41 + }, + { + "name": "left_shoulder", + "x": 0.6186, + "y": 0.2518, + "confidence": 0.557 + }, + { + "name": "right_shoulder", + "x": 0.5101, + "y": 0.2276, + "confidence": 0.457 + }, + { + "name": "left_elbow", + "x": 0.6975, + "y": 0.2352, + "confidence": 0.674 + }, + { + "name": "right_elbow", + "x": 0.4915, + "y": 0.1595, + "confidence": 0.397 + }, + { + "name": "left_wrist", + "x": 0.7685, + "y": 0.2356, + "confidence": 0.656 + }, + { + "name": "right_wrist", + "x": 0.481, + "y": 0.1498, + "confidence": 0.371 + }, + { + "name": "left_hip", + "x": 0.5744, + "y": 0.4166, + "confidence": 0.651 + }, + { + "name": "right_hip", + "x": 0.5151, + "y": 0.4125, + "confidence": 0.571 + }, + { + "name": "left_knee", + "x": 0.6569, + "y": 0.3641, + "confidence": 0.846 + }, + { + "name": "right_knee", + "x": 0.4702, + "y": 0.3361, + "confidence": 0.642 + }, + { + "name": "left_ankle", + "x": 0.6559, + "y": 0.5041, + "confidence": 0.559 + }, + { + "name": "right_ankle", + "x": 0.4841, + "y": 0.4829, + "confidence": 0.573 + } + ] + } + ] + }, + { + "frame_index": 70, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.8569, + "acceleration": 7.5318, + "fluidity": 0.13, + "expansion": 0.281, + "total_displacement": 0.0305, + "center_displacement": { + "x": -0.0076, + "y": -0.0296 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5972, + "y": 0.2704, + "confidence": 0.504 + }, + { + "name": "left_eye", + "x": 0.612, + "y": 0.2572, + "confidence": 0.51 + }, + { + "name": "right_eye", + "x": 0.5895, + "y": 0.2569, + "confidence": 0.513 + }, + { + "name": "left_ear", + "x": 0.6189, + "y": 0.2373, + "confidence": 0.493 + }, + { + "name": "right_ear", + "x": 0.573, + "y": 0.2283, + "confidence": 0.606 + }, + { + "name": "left_shoulder", + "x": 0.6309, + "y": 0.2493, + "confidence": 0.505 + }, + { + "name": "right_shoulder", + "x": 0.5255, + "y": 0.221, + "confidence": 0.513 + }, + { + "name": "left_elbow", + "x": 0.6953, + "y": 0.2435, + "confidence": 0.582 + }, + { + "name": "right_elbow", + "x": 0.4995, + "y": 0.1641, + "confidence": 0.528 + }, + { + "name": "left_wrist", + "x": 0.7655, + "y": 0.2415, + "confidence": 0.619 + }, + { + "name": "right_wrist", + "x": 0.4836, + "y": 0.1469, + "confidence": 0.379 + }, + { + "name": "left_hip", + "x": 0.5747, + "y": 0.4292, + "confidence": 0.632 + }, + { + "name": "right_hip", + "x": 0.5163, + "y": 0.4232, + "confidence": 0.57 + }, + { + "name": "left_knee", + "x": 0.6588, + "y": 0.3804, + "confidence": 0.598 + }, + { + "name": "right_knee", + "x": 0.4781, + "y": 0.3491, + "confidence": 0.626 + }, + { + "name": "left_ankle", + "x": 0.6539, + "y": 0.5305, + "confidence": 0.573 + }, + { + "name": "right_ankle", + "x": 0.4836, + "y": 0.5003, + "confidence": 0.463 + } + ] + } + ] + }, + { + "frame_index": 71, + "timestamp": 1.1833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.0714, + "acceleration": 12.8707, + "fluidity": 0.043, + "expansion": 0.284, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5972, + "y": 0.2702, + "confidence": 0.504 + }, + { + "name": "left_eye", + "x": 0.6121, + "y": 0.257, + "confidence": 0.516 + }, + { + "name": "right_eye", + "x": 0.5896, + "y": 0.2567, + "confidence": 0.515 + }, + { + "name": "left_ear", + "x": 0.6191, + "y": 0.2371, + "confidence": 0.489 + }, + { + "name": "right_ear", + "x": 0.5731, + "y": 0.2281, + "confidence": 0.607 + }, + { + "name": "left_shoulder", + "x": 0.6309, + "y": 0.2493, + "confidence": 0.51 + }, + { + "name": "right_shoulder", + "x": 0.5253, + "y": 0.2209, + "confidence": 0.512 + }, + { + "name": "left_elbow", + "x": 0.695, + "y": 0.2435, + "confidence": 0.584 + }, + { + "name": "right_elbow", + "x": 0.4991, + "y": 0.1638, + "confidence": 0.53 + }, + { + "name": "left_wrist", + "x": 0.7655, + "y": 0.2415, + "confidence": 0.622 + }, + { + "name": "right_wrist", + "x": 0.4835, + "y": 0.1469, + "confidence": 0.377 + }, + { + "name": "left_hip", + "x": 0.5745, + "y": 0.4292, + "confidence": 0.63 + }, + { + "name": "right_hip", + "x": 0.5163, + "y": 0.4231, + "confidence": 0.573 + }, + { + "name": "left_knee", + "x": 0.6587, + "y": 0.3804, + "confidence": 0.603 + }, + { + "name": "right_knee", + "x": 0.4781, + "y": 0.349, + "confidence": 0.635 + }, + { + "name": "left_ankle", + "x": 0.6538, + "y": 0.5305, + "confidence": 0.574 + }, + { + "name": "right_ankle", + "x": 0.4837, + "y": 0.5001, + "confidence": 0.463 + } + ] + } + ] + }, + { + "frame_index": 72, + "timestamp": 1.2, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.9189, + "acceleration": 50.8524, + "fluidity": 0.014, + "expansion": 0.286, + "total_displacement": 0.0392, + "center_displacement": { + "x": 0.0156, + "y": 0.0359 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5995, + "y": 0.2781, + "confidence": 0.509 + }, + { + "name": "left_eye", + "x": 0.6155, + "y": 0.2619, + "confidence": 0.494 + }, + { + "name": "right_eye", + "x": 0.5917, + "y": 0.2623, + "confidence": 0.462 + }, + { + "name": "left_ear", + "x": 0.6157, + "y": 0.2412, + "confidence": 0.43 + }, + { + "name": "right_ear", + "x": 0.577, + "y": 0.2326, + "confidence": 0.585 + }, + { + "name": "left_shoulder", + "x": 0.6384, + "y": 0.2485, + "confidence": 0.515 + }, + { + "name": "right_shoulder", + "x": 0.5284, + "y": 0.2184, + "confidence": 0.497 + }, + { + "name": "left_elbow", + "x": 0.6969, + "y": 0.2486, + "confidence": 0.546 + }, + { + "name": "right_elbow", + "x": 0.5002, + "y": 0.1577, + "confidence": 0.465 + }, + { + "name": "left_wrist", + "x": 0.7607, + "y": 0.2507, + "confidence": 0.528 + }, + { + "name": "right_wrist", + "x": 0.4841, + "y": 0.148, + "confidence": 0.365 + }, + { + "name": "left_hip", + "x": 0.5781, + "y": 0.4303, + "confidence": 0.631 + }, + { + "name": "right_hip", + "x": 0.5156, + "y": 0.4207, + "confidence": 0.567 + }, + { + "name": "left_knee", + "x": 0.6559, + "y": 0.4001, + "confidence": 0.52 + }, + { + "name": "right_knee", + "x": 0.4806, + "y": 0.3613, + "confidence": 0.597 + }, + { + "name": "left_ankle", + "x": 0.6527, + "y": 0.5467, + "confidence": 0.765 + }, + { + "name": "right_ankle", + "x": 0.4829, + "y": 0.5137, + "confidence": 0.464 + } + ] + } + ] + }, + { + "frame_index": 73, + "timestamp": 1.2166666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.2021, + "acceleration": 16.9887, + "fluidity": 0.005, + "expansion": 0.288, + "total_displacement": 0.0389, + "center_displacement": { + "x": -0.0123, + "y": -0.0369 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5995, + "y": 0.2786, + "confidence": 0.506 + }, + { + "name": "left_eye", + "x": 0.6155, + "y": 0.2623, + "confidence": 0.484 + }, + { + "name": "right_eye", + "x": 0.5919, + "y": 0.2629, + "confidence": 0.462 + }, + { + "name": "left_ear", + "x": 0.6157, + "y": 0.2417, + "confidence": 0.429 + }, + { + "name": "right_ear", + "x": 0.5774, + "y": 0.2332, + "confidence": 0.578 + }, + { + "name": "left_shoulder", + "x": 0.6382, + "y": 0.2485, + "confidence": 0.516 + }, + { + "name": "right_shoulder", + "x": 0.5282, + "y": 0.2184, + "confidence": 0.5 + }, + { + "name": "left_elbow", + "x": 0.6966, + "y": 0.2487, + "confidence": 0.547 + }, + { + "name": "right_elbow", + "x": 0.5002, + "y": 0.1577, + "confidence": 0.464 + }, + { + "name": "left_wrist", + "x": 0.7604, + "y": 0.2506, + "confidence": 0.529 + }, + { + "name": "right_wrist", + "x": 0.4843, + "y": 0.1441, + "confidence": 0.362 + }, + { + "name": "left_hip", + "x": 0.5782, + "y": 0.4305, + "confidence": 0.631 + }, + { + "name": "right_hip", + "x": 0.5156, + "y": 0.421, + "confidence": 0.571 + }, + { + "name": "left_knee", + "x": 0.6559, + "y": 0.4001, + "confidence": 0.524 + }, + { + "name": "right_knee", + "x": 0.4806, + "y": 0.3612, + "confidence": 0.602 + }, + { + "name": "left_ankle", + "x": 0.6527, + "y": 0.5467, + "confidence": 0.768 + }, + { + "name": "right_ankle", + "x": 0.483, + "y": 0.5137, + "confidence": 0.467 + } + ] + } + ] + }, + { + "frame_index": 74, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.8228, + "acceleration": 37.2452, + "fluidity": 0.002, + "expansion": 0.289, + "total_displacement": 0.0392, + "center_displacement": { + "x": 0.0123, + "y": 0.0372 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5996, + "y": 0.2784, + "confidence": 0.509 + }, + { + "name": "left_eye", + "x": 0.6156, + "y": 0.2622, + "confidence": 0.49 + }, + { + "name": "right_eye", + "x": 0.5919, + "y": 0.2626, + "confidence": 0.465 + }, + { + "name": "left_ear", + "x": 0.6158, + "y": 0.2416, + "confidence": 0.431 + }, + { + "name": "right_ear", + "x": 0.5773, + "y": 0.2329, + "confidence": 0.583 + }, + { + "name": "left_shoulder", + "x": 0.6383, + "y": 0.2485, + "confidence": 0.513 + }, + { + "name": "right_shoulder", + "x": 0.5283, + "y": 0.2184, + "confidence": 0.498 + }, + { + "name": "left_elbow", + "x": 0.6967, + "y": 0.2487, + "confidence": 0.543 + }, + { + "name": "right_elbow", + "x": 0.5003, + "y": 0.1577, + "confidence": 0.464 + }, + { + "name": "left_wrist", + "x": 0.7605, + "y": 0.2507, + "confidence": 0.529 + }, + { + "name": "right_wrist", + "x": 0.4843, + "y": 0.1441, + "confidence": 0.367 + }, + { + "name": "left_hip", + "x": 0.5782, + "y": 0.4308, + "confidence": 0.628 + }, + { + "name": "right_hip", + "x": 0.5157, + "y": 0.4213, + "confidence": 0.567 + }, + { + "name": "left_knee", + "x": 0.6559, + "y": 0.4001, + "confidence": 0.515 + }, + { + "name": "right_knee", + "x": 0.4805, + "y": 0.3612, + "confidence": 0.599 + }, + { + "name": "left_ankle", + "x": 0.6527, + "y": 0.5466, + "confidence": 0.765 + }, + { + "name": "right_ankle", + "x": 0.483, + "y": 0.5135, + "confidence": 0.46 + } + ] + } + ] + }, + { + "frame_index": 75, + "timestamp": 1.25, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.2495, + "acceleration": -34.4001, + "fluidity": 0.001, + "expansion": 0.291, + "total_displacement": 0.0652, + "center_displacement": { + "x": 0.0033, + "y": -0.0652 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5978, + "y": 0.2724, + "confidence": 0.504 + }, + { + "name": "left_eye", + "x": 0.6141, + "y": 0.2578, + "confidence": 0.609 + }, + { + "name": "right_eye", + "x": 0.5922, + "y": 0.256, + "confidence": 0.444 + }, + { + "name": "left_ear", + "x": 0.6157, + "y": 0.2355, + "confidence": 0.474 + }, + { + "name": "right_ear", + "x": 0.5739, + "y": 0.2236, + "confidence": 0.677 + }, + { + "name": "left_shoulder", + "x": 0.6386, + "y": 0.2502, + "confidence": 0.652 + }, + { + "name": "right_shoulder", + "x": 0.5293, + "y": 0.2161, + "confidence": 0.658 + }, + { + "name": "left_elbow", + "x": 0.6985, + "y": 0.2553, + "confidence": 0.695 + }, + { + "name": "right_elbow", + "x": 0.5, + "y": 0.1578, + "confidence": 0.422 + }, + { + "name": "left_wrist", + "x": 0.7462, + "y": 0.2663, + "confidence": 0.593 + }, + { + "name": "right_wrist", + "x": 0.4841, + "y": 0.1423, + "confidence": 0.43 + }, + { + "name": "left_hip", + "x": 0.5741, + "y": 0.4388, + "confidence": 0.607 + }, + { + "name": "right_hip", + "x": 0.5068, + "y": 0.4199, + "confidence": 0.484 + }, + { + "name": "left_knee", + "x": 0.6546, + "y": 0.4179, + "confidence": 0.73 + }, + { + "name": "right_knee", + "x": 0.4882, + "y": 0.3726, + "confidence": 0.557 + }, + { + "name": "left_ankle", + "x": 0.6452, + "y": 0.5668, + "confidence": 0.642 + }, + { + "name": "right_ankle", + "x": 0.4796, + "y": 0.5342, + "confidence": 0.69 + } + ] + } + ] + }, + { + "frame_index": 76, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.4613, + "acceleration": -47.2884, + "fluidity": 0, + "expansion": 0.293, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.598, + "y": 0.2724, + "confidence": 0.503 + }, + { + "name": "left_eye", + "x": 0.6143, + "y": 0.2578, + "confidence": 0.611 + }, + { + "name": "right_eye", + "x": 0.5925, + "y": 0.2559, + "confidence": 0.437 + }, + { + "name": "left_ear", + "x": 0.6158, + "y": 0.2356, + "confidence": 0.472 + }, + { + "name": "right_ear", + "x": 0.5741, + "y": 0.2237, + "confidence": 0.676 + }, + { + "name": "left_shoulder", + "x": 0.6387, + "y": 0.2502, + "confidence": 0.65 + }, + { + "name": "right_shoulder", + "x": 0.5295, + "y": 0.2163, + "confidence": 0.655 + }, + { + "name": "left_elbow", + "x": 0.6979, + "y": 0.2555, + "confidence": 0.698 + }, + { + "name": "right_elbow", + "x": 0.5001, + "y": 0.1579, + "confidence": 0.422 + }, + { + "name": "left_wrist", + "x": 0.7462, + "y": 0.2662, + "confidence": 0.59 + }, + { + "name": "right_wrist", + "x": 0.4841, + "y": 0.1422, + "confidence": 0.425 + }, + { + "name": "left_hip", + "x": 0.5743, + "y": 0.4388, + "confidence": 0.604 + }, + { + "name": "right_hip", + "x": 0.5069, + "y": 0.4201, + "confidence": 0.478 + }, + { + "name": "left_knee", + "x": 0.6544, + "y": 0.4179, + "confidence": 0.725 + }, + { + "name": "right_knee", + "x": 0.4881, + "y": 0.3726, + "confidence": 0.556 + }, + { + "name": "left_ankle", + "x": 0.6451, + "y": 0.5669, + "confidence": 0.642 + }, + { + "name": "right_ankle", + "x": 0.4796, + "y": 0.5343, + "confidence": 0.695 + } + ] + } + ] + }, + { + "frame_index": 77, + "timestamp": 1.2833333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.1969, + "acceleration": -15.8647, + "fluidity": 0, + "expansion": 0.294, + "total_displacement": 0.0354, + "center_displacement": { + "x": -0.0239, + "y": 0.0261 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6026, + "y": 0.2714, + "confidence": 0.521 + }, + { + "name": "left_eye", + "x": 0.6182, + "y": 0.2598, + "confidence": 0.596 + }, + { + "name": "right_eye", + "x": 0.5969, + "y": 0.2573, + "confidence": 0.422 + }, + { + "name": "left_ear", + "x": 0.6166, + "y": 0.2369, + "confidence": 0.473 + }, + { + "name": "right_ear", + "x": 0.5794, + "y": 0.2232, + "confidence": 0.67 + }, + { + "name": "left_shoulder", + "x": 0.6362, + "y": 0.2497, + "confidence": 0.602 + }, + { + "name": "right_shoulder", + "x": 0.5268, + "y": 0.2148, + "confidence": 0.703 + }, + { + "name": "left_elbow", + "x": 0.6825, + "y": 0.2623, + "confidence": 0.674 + }, + { + "name": "right_elbow", + "x": 0.4911, + "y": 0.1538, + "confidence": 0.506 + }, + { + "name": "left_wrist", + "x": 0.735, + "y": 0.2765, + "confidence": 0.736 + }, + { + "name": "right_wrist", + "x": 0.476, + "y": 0.142, + "confidence": 0.335 + }, + { + "name": "left_hip", + "x": 0.5673, + "y": 0.4325, + "confidence": 0.634 + }, + { + "name": "right_hip", + "x": 0.4974, + "y": 0.4145, + "confidence": 0.579 + }, + { + "name": "left_knee", + "x": 0.6534, + "y": 0.4346, + "confidence": 0.823 + }, + { + "name": "right_knee", + "x": 0.4952, + "y": 0.386, + "confidence": 0.605 + }, + { + "name": "left_ankle", + "x": 0.6308, + "y": 0.5869, + "confidence": 0.811 + }, + { + "name": "right_ankle", + "x": 0.4776, + "y": 0.5424, + "confidence": 0.767 + } + ] + } + ] + }, + { + "frame_index": 78, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4052, + "acceleration": -47.5036, + "fluidity": 0, + "expansion": 0.295, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6024, + "y": 0.2715, + "confidence": 0.525 + }, + { + "name": "left_eye", + "x": 0.6181, + "y": 0.2599, + "confidence": 0.593 + }, + { + "name": "right_eye", + "x": 0.5967, + "y": 0.2575, + "confidence": 0.422 + }, + { + "name": "left_ear", + "x": 0.6166, + "y": 0.2369, + "confidence": 0.472 + }, + { + "name": "right_ear", + "x": 0.5794, + "y": 0.2233, + "confidence": 0.671 + }, + { + "name": "left_shoulder", + "x": 0.6362, + "y": 0.2497, + "confidence": 0.602 + }, + { + "name": "right_shoulder", + "x": 0.5268, + "y": 0.2149, + "confidence": 0.705 + }, + { + "name": "left_elbow", + "x": 0.6826, + "y": 0.2623, + "confidence": 0.673 + }, + { + "name": "right_elbow", + "x": 0.4911, + "y": 0.1539, + "confidence": 0.507 + }, + { + "name": "left_wrist", + "x": 0.735, + "y": 0.2764, + "confidence": 0.736 + }, + { + "name": "right_wrist", + "x": 0.4758, + "y": 0.1419, + "confidence": 0.334 + }, + { + "name": "left_hip", + "x": 0.5675, + "y": 0.4325, + "confidence": 0.637 + }, + { + "name": "right_hip", + "x": 0.4975, + "y": 0.4145, + "confidence": 0.576 + }, + { + "name": "left_knee", + "x": 0.6525, + "y": 0.4339, + "confidence": 0.791 + }, + { + "name": "right_knee", + "x": 0.4952, + "y": 0.3861, + "confidence": 0.603 + }, + { + "name": "left_ankle", + "x": 0.6308, + "y": 0.5868, + "confidence": 0.812 + }, + { + "name": "right_ankle", + "x": 0.4777, + "y": 0.5422, + "confidence": 0.768 + } + ] + } + ] + }, + { + "frame_index": 79, + "timestamp": 1.3166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.198, + "acceleration": -12.4344, + "fluidity": 0, + "expansion": 0.277, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6025, + "y": 0.2712, + "confidence": 0.521 + }, + { + "name": "left_eye", + "x": 0.6181, + "y": 0.2597, + "confidence": 0.597 + }, + { + "name": "right_eye", + "x": 0.5967, + "y": 0.2572, + "confidence": 0.419 + }, + { + "name": "left_ear", + "x": 0.6166, + "y": 0.2367, + "confidence": 0.474 + }, + { + "name": "right_ear", + "x": 0.5793, + "y": 0.2231, + "confidence": 0.671 + }, + { + "name": "left_shoulder", + "x": 0.6363, + "y": 0.2496, + "confidence": 0.602 + }, + { + "name": "right_shoulder", + "x": 0.5269, + "y": 0.2147, + "confidence": 0.703 + }, + { + "name": "left_elbow", + "x": 0.6829, + "y": 0.2624, + "confidence": 0.677 + }, + { + "name": "right_elbow", + "x": 0.491, + "y": 0.1537, + "confidence": 0.507 + }, + { + "name": "left_wrist", + "x": 0.7352, + "y": 0.2764, + "confidence": 0.738 + }, + { + "name": "right_wrist", + "x": 0.4758, + "y": 0.1419, + "confidence": 0.329 + }, + { + "name": "left_hip", + "x": 0.5678, + "y": 0.4324, + "confidence": 0.638 + }, + { + "name": "right_hip", + "x": 0.4976, + "y": 0.4142, + "confidence": 0.581 + }, + { + "name": "left_knee", + "x": 0.6526, + "y": 0.4339, + "confidence": 0.792 + }, + { + "name": "right_knee", + "x": 0.4952, + "y": 0.3867, + "confidence": 0.606 + }, + { + "name": "left_ankle", + "x": 0.6308, + "y": 0.5867, + "confidence": 0.812 + }, + { + "name": "right_ankle", + "x": 0.4776, + "y": 0.5421, + "confidence": 0.766 + } + ] + } + ] + }, + { + "frame_index": 80, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.127, + "acceleration": -4.2592, + "fluidity": 0, + "expansion": 0.252, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0008, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6076, + "y": 0.2678, + "confidence": 0.51 + }, + { + "name": "left_eye", + "x": 0.6221, + "y": 0.2567, + "confidence": 0.563 + }, + { + "name": "right_eye", + "x": 0.6001, + "y": 0.2537, + "confidence": 0.548 + }, + { + "name": "left_ear", + "x": 0.6178, + "y": 0.2299, + "confidence": 0.471 + }, + { + "name": "right_ear", + "x": 0.5816, + "y": 0.2191, + "confidence": 0.545 + }, + { + "name": "left_shoulder", + "x": 0.6347, + "y": 0.2477, + "confidence": 0.577 + }, + { + "name": "right_shoulder", + "x": 0.5232, + "y": 0.209, + "confidence": 0.561 + }, + { + "name": "left_elbow", + "x": 0.6805, + "y": 0.2713, + "confidence": 0.676 + }, + { + "name": "right_elbow", + "x": 0.4848, + "y": 0.1495, + "confidence": 0.646 + }, + { + "name": "left_wrist", + "x": 0.7312, + "y": 0.2891, + "confidence": 0.718 + }, + { + "name": "right_wrist", + "x": 0.4692, + "y": 0.1405, + "confidence": 0.277 + }, + { + "name": "left_hip", + "x": 0.5696, + "y": 0.4283, + "confidence": 0.685 + }, + { + "name": "right_hip", + "x": 0.4979, + "y": 0.4146, + "confidence": 0.641 + }, + { + "name": "left_knee", + "x": 0.6537, + "y": 0.4521, + "confidence": 0.808 + }, + { + "name": "right_knee", + "x": 0.4952, + "y": 0.4078, + "confidence": 0.531 + }, + { + "name": "left_ankle", + "x": 0.6182, + "y": 0.5971, + "confidence": 0.734 + }, + { + "name": "right_ankle", + "x": 0.4705, + "y": 0.5604, + "confidence": 0.695 + } + ] + } + ] + }, + { + "frame_index": 81, + "timestamp": 1.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1262, + "acceleration": -0.0475, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6076, + "y": 0.2677, + "confidence": 0.507 + }, + { + "name": "left_eye", + "x": 0.6222, + "y": 0.2566, + "confidence": 0.56 + }, + { + "name": "right_eye", + "x": 0.6, + "y": 0.2535, + "confidence": 0.546 + }, + { + "name": "left_ear", + "x": 0.618, + "y": 0.2299, + "confidence": 0.47 + }, + { + "name": "right_ear", + "x": 0.5816, + "y": 0.2191, + "confidence": 0.541 + }, + { + "name": "left_shoulder", + "x": 0.6348, + "y": 0.2478, + "confidence": 0.577 + }, + { + "name": "right_shoulder", + "x": 0.5233, + "y": 0.2091, + "confidence": 0.55 + }, + { + "name": "left_elbow", + "x": 0.6808, + "y": 0.2714, + "confidence": 0.675 + }, + { + "name": "right_elbow", + "x": 0.4848, + "y": 0.1495, + "confidence": 0.638 + }, + { + "name": "left_wrist", + "x": 0.7314, + "y": 0.2892, + "confidence": 0.722 + }, + { + "name": "right_wrist", + "x": 0.4692, + "y": 0.1406, + "confidence": 0.273 + }, + { + "name": "left_hip", + "x": 0.5696, + "y": 0.4281, + "confidence": 0.681 + }, + { + "name": "right_hip", + "x": 0.4979, + "y": 0.4144, + "confidence": 0.645 + }, + { + "name": "left_knee", + "x": 0.6536, + "y": 0.4522, + "confidence": 0.805 + }, + { + "name": "right_knee", + "x": 0.4953, + "y": 0.4078, + "confidence": 0.53 + }, + { + "name": "left_ankle", + "x": 0.6182, + "y": 0.5974, + "confidence": 0.725 + }, + { + "name": "right_ankle", + "x": 0.4706, + "y": 0.5604, + "confidence": 0.693 + } + ] + } + ] + }, + { + "frame_index": 82, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1245, + "acceleration": -0.1038, + "fluidity": 0, + "expansion": 0.294, + "total_displacement": 0.0041, + "center_displacement": { + "x": 0.001, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6096, + "y": 0.267, + "confidence": 0.535 + }, + { + "name": "left_eye", + "x": 0.6237, + "y": 0.2503, + "confidence": 0.453 + }, + { + "name": "right_eye", + "x": 0.604, + "y": 0.2469, + "confidence": 0.436 + }, + { + "name": "left_ear", + "x": 0.624, + "y": 0.2274, + "confidence": 0.607 + }, + { + "name": "right_ear", + "x": 0.5804, + "y": 0.2168, + "confidence": 0.7 + }, + { + "name": "left_shoulder", + "x": 0.6388, + "y": 0.248, + "confidence": 0.624 + }, + { + "name": "right_shoulder", + "x": 0.5232, + "y": 0.2067, + "confidence": 0.527 + }, + { + "name": "left_elbow", + "x": 0.6874, + "y": 0.281, + "confidence": 0.542 + }, + { + "name": "right_elbow", + "x": 0.4826, + "y": 0.1487, + "confidence": 0.677 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.3019, + "confidence": 0.768 + }, + { + "name": "right_wrist", + "x": 0.4641, + "y": 0.1415, + "confidence": 0.376 + }, + { + "name": "left_hip", + "x": 0.5712, + "y": 0.4218, + "confidence": 0.67 + }, + { + "name": "right_hip", + "x": 0.4965, + "y": 0.407, + "confidence": 0.753 + }, + { + "name": "left_knee", + "x": 0.652, + "y": 0.4652, + "confidence": 0.807 + }, + { + "name": "right_knee", + "x": 0.5049, + "y": 0.4199, + "confidence": 0.603 + }, + { + "name": "left_ankle", + "x": 0.608, + "y": 0.6069, + "confidence": 0.729 + }, + { + "name": "right_ankle", + "x": 0.4599, + "y": 0.5843, + "confidence": 0.868 + } + ] + } + ] + }, + { + "frame_index": 83, + "timestamp": 1.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.047, + "acceleration": -4.648, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6095, + "y": 0.2671, + "confidence": 0.534 + }, + { + "name": "left_eye", + "x": 0.6236, + "y": 0.2503, + "confidence": 0.453 + }, + { + "name": "right_eye", + "x": 0.6038, + "y": 0.2469, + "confidence": 0.437 + }, + { + "name": "left_ear", + "x": 0.6241, + "y": 0.2274, + "confidence": 0.607 + }, + { + "name": "right_ear", + "x": 0.5804, + "y": 0.2169, + "confidence": 0.7 + }, + { + "name": "left_shoulder", + "x": 0.6388, + "y": 0.2481, + "confidence": 0.626 + }, + { + "name": "right_shoulder", + "x": 0.5232, + "y": 0.2066, + "confidence": 0.527 + }, + { + "name": "left_elbow", + "x": 0.6872, + "y": 0.2809, + "confidence": 0.54 + }, + { + "name": "right_elbow", + "x": 0.4825, + "y": 0.1487, + "confidence": 0.673 + }, + { + "name": "left_wrist", + "x": 0.731, + "y": 0.3017, + "confidence": 0.764 + }, + { + "name": "right_wrist", + "x": 0.464, + "y": 0.1416, + "confidence": 0.369 + }, + { + "name": "left_hip", + "x": 0.5712, + "y": 0.4218, + "confidence": 0.669 + }, + { + "name": "right_hip", + "x": 0.4964, + "y": 0.4071, + "confidence": 0.752 + }, + { + "name": "left_knee", + "x": 0.652, + "y": 0.4653, + "confidence": 0.808 + }, + { + "name": "right_knee", + "x": 0.5048, + "y": 0.4199, + "confidence": 0.601 + }, + { + "name": "left_ankle", + "x": 0.6078, + "y": 0.607, + "confidence": 0.73 + }, + { + "name": "right_ankle", + "x": 0.4599, + "y": 0.5843, + "confidence": 0.868 + } + ] + } + ] + }, + { + "frame_index": 84, + "timestamp": 1.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0553, + "acceleration": 0.5012, + "fluidity": 0, + "expansion": 0.309, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6095, + "y": 0.2669, + "confidence": 0.531 + }, + { + "name": "left_eye", + "x": 0.6237, + "y": 0.2501, + "confidence": 0.447 + }, + { + "name": "right_eye", + "x": 0.6054, + "y": 0.2506, + "confidence": 0.552 + }, + { + "name": "left_ear", + "x": 0.6245, + "y": 0.2276, + "confidence": 0.603 + }, + { + "name": "right_ear", + "x": 0.5804, + "y": 0.2169, + "confidence": 0.696 + }, + { + "name": "left_shoulder", + "x": 0.639, + "y": 0.2484, + "confidence": 0.624 + }, + { + "name": "right_shoulder", + "x": 0.5235, + "y": 0.2068, + "confidence": 0.509 + }, + { + "name": "left_elbow", + "x": 0.6876, + "y": 0.2811, + "confidence": 0.529 + }, + { + "name": "right_elbow", + "x": 0.4827, + "y": 0.1488, + "confidence": 0.668 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.3018, + "confidence": 0.761 + }, + { + "name": "right_wrist", + "x": 0.464, + "y": 0.1416, + "confidence": 0.365 + }, + { + "name": "left_hip", + "x": 0.5714, + "y": 0.4216, + "confidence": 0.665 + }, + { + "name": "right_hip", + "x": 0.4968, + "y": 0.4067, + "confidence": 0.751 + }, + { + "name": "left_knee", + "x": 0.6519, + "y": 0.4652, + "confidence": 0.8 + }, + { + "name": "right_knee", + "x": 0.5049, + "y": 0.4194, + "confidence": 0.595 + }, + { + "name": "left_ankle", + "x": 0.6079, + "y": 0.6065, + "confidence": 0.731 + }, + { + "name": "right_ankle", + "x": 0.4598, + "y": 0.5842, + "confidence": 0.862 + } + ] + } + ] + }, + { + "frame_index": 85, + "timestamp": 1.4166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0548, + "acceleration": -0.0324, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0005, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6128, + "y": 0.2586, + "confidence": 0.615 + }, + { + "name": "left_eye", + "x": 0.6263, + "y": 0.244, + "confidence": 0.603 + }, + { + "name": "right_eye", + "x": 0.6091, + "y": 0.2436, + "confidence": 0.579 + }, + { + "name": "left_ear", + "x": 0.6263, + "y": 0.2215, + "confidence": 0.637 + }, + { + "name": "right_ear", + "x": 0.5817, + "y": 0.2085, + "confidence": 0.746 + }, + { + "name": "left_shoulder", + "x": 0.6411, + "y": 0.2483, + "confidence": 0.695 + }, + { + "name": "right_shoulder", + "x": 0.5217, + "y": 0.2004, + "confidence": 0.657 + }, + { + "name": "left_elbow", + "x": 0.6951, + "y": 0.2895, + "confidence": 0.559 + }, + { + "name": "right_elbow", + "x": 0.4725, + "y": 0.1469, + "confidence": 0.518 + }, + { + "name": "left_wrist", + "x": 0.7348, + "y": 0.3162, + "confidence": 0.845 + }, + { + "name": "right_wrist", + "x": 0.461, + "y": 0.1434, + "confidence": 0.318 + }, + { + "name": "left_hip", + "x": 0.5727, + "y": 0.4203, + "confidence": 0.719 + }, + { + "name": "right_hip", + "x": 0.497, + "y": 0.4078, + "confidence": 0.718 + }, + { + "name": "left_knee", + "x": 0.6503, + "y": 0.4801, + "confidence": 0.863 + }, + { + "name": "right_knee", + "x": 0.5054, + "y": 0.4402, + "confidence": 0.707 + }, + { + "name": "left_ankle", + "x": 0.5937, + "y": 0.6265, + "confidence": 0.608 + }, + { + "name": "right_ankle", + "x": 0.4536, + "y": 0.5982, + "confidence": 0.792 + } + ] + } + ] + }, + { + "frame_index": 86, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.101, + "acceleration": 2.7702, + "fluidity": 0, + "expansion": 0.316, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6127, + "y": 0.2586, + "confidence": 0.616 + }, + { + "name": "left_eye", + "x": 0.6262, + "y": 0.244, + "confidence": 0.602 + }, + { + "name": "right_eye", + "x": 0.6089, + "y": 0.2436, + "confidence": 0.584 + }, + { + "name": "left_ear", + "x": 0.6262, + "y": 0.2214, + "confidence": 0.636 + }, + { + "name": "right_ear", + "x": 0.5816, + "y": 0.2085, + "confidence": 0.744 + }, + { + "name": "left_shoulder", + "x": 0.641, + "y": 0.2483, + "confidence": 0.696 + }, + { + "name": "right_shoulder", + "x": 0.5217, + "y": 0.2004, + "confidence": 0.657 + }, + { + "name": "left_elbow", + "x": 0.6951, + "y": 0.2895, + "confidence": 0.561 + }, + { + "name": "right_elbow", + "x": 0.4725, + "y": 0.1469, + "confidence": 0.52 + }, + { + "name": "left_wrist", + "x": 0.7347, + "y": 0.3162, + "confidence": 0.846 + }, + { + "name": "right_wrist", + "x": 0.4611, + "y": 0.1434, + "confidence": 0.321 + }, + { + "name": "left_hip", + "x": 0.5727, + "y": 0.4202, + "confidence": 0.72 + }, + { + "name": "right_hip", + "x": 0.4969, + "y": 0.4077, + "confidence": 0.717 + }, + { + "name": "left_knee", + "x": 0.6503, + "y": 0.4802, + "confidence": 0.862 + }, + { + "name": "right_knee", + "x": 0.5055, + "y": 0.4398, + "confidence": 0.706 + }, + { + "name": "left_ankle", + "x": 0.5936, + "y": 0.6266, + "confidence": 0.604 + }, + { + "name": "right_ankle", + "x": 0.4536, + "y": 0.5982, + "confidence": 0.795 + } + ] + } + ] + }, + { + "frame_index": 87, + "timestamp": 1.45, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1171, + "acceleration": 0.9648, + "fluidity": 0, + "expansion": 0.318, + "total_displacement": 0.0041, + "center_displacement": { + "x": 0.0007, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6206, + "y": 0.247, + "confidence": 0.566 + }, + { + "name": "left_eye", + "x": 0.63, + "y": 0.2369, + "confidence": 0.675 + }, + { + "name": "right_eye", + "x": 0.6139, + "y": 0.2331, + "confidence": 0.585 + }, + { + "name": "left_ear", + "x": 0.6236, + "y": 0.2198, + "confidence": 0.594 + }, + { + "name": "right_ear", + "x": 0.5814, + "y": 0.2042, + "confidence": 0.68 + }, + { + "name": "left_shoulder", + "x": 0.6405, + "y": 0.255, + "confidence": 0.789 + }, + { + "name": "right_shoulder", + "x": 0.525, + "y": 0.205, + "confidence": 0.502 + }, + { + "name": "left_elbow", + "x": 0.6874, + "y": 0.2979, + "confidence": 0.555 + }, + { + "name": "right_elbow", + "x": 0.4693, + "y": 0.1473, + "confidence": 0.619 + }, + { + "name": "left_wrist", + "x": 0.7383, + "y": 0.3304, + "confidence": 0.776 + }, + { + "name": "right_wrist", + "x": 0.4629, + "y": 0.1462, + "confidence": 0.465 + }, + { + "name": "left_hip", + "x": 0.5722, + "y": 0.4223, + "confidence": 0.746 + }, + { + "name": "right_hip", + "x": 0.4976, + "y": 0.4102, + "confidence": 0.74 + }, + { + "name": "left_knee", + "x": 0.6509, + "y": 0.4923, + "confidence": 0.872 + }, + { + "name": "right_knee", + "x": 0.5083, + "y": 0.4548, + "confidence": 0.786 + }, + { + "name": "left_ankle", + "x": 0.5774, + "y": 0.6351, + "confidence": 0.627 + }, + { + "name": "right_ankle", + "x": 0.4499, + "y": 0.6149, + "confidence": 0.657 + } + ] + } + ] + }, + { + "frame_index": 88, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0427, + "acceleration": -4.4632, + "fluidity": 0.128, + "expansion": 0.318, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6207, + "y": 0.247, + "confidence": 0.568 + }, + { + "name": "left_eye", + "x": 0.63, + "y": 0.2368, + "confidence": 0.675 + }, + { + "name": "right_eye", + "x": 0.614, + "y": 0.2331, + "confidence": 0.589 + }, + { + "name": "left_ear", + "x": 0.6234, + "y": 0.2197, + "confidence": 0.591 + }, + { + "name": "right_ear", + "x": 0.5814, + "y": 0.2043, + "confidence": 0.683 + }, + { + "name": "left_shoulder", + "x": 0.6405, + "y": 0.2549, + "confidence": 0.789 + }, + { + "name": "right_shoulder", + "x": 0.525, + "y": 0.2051, + "confidence": 0.513 + }, + { + "name": "left_elbow", + "x": 0.6874, + "y": 0.2979, + "confidence": 0.56 + }, + { + "name": "right_elbow", + "x": 0.4694, + "y": 0.1475, + "confidence": 0.624 + }, + { + "name": "left_wrist", + "x": 0.7383, + "y": 0.3305, + "confidence": 0.781 + }, + { + "name": "right_wrist", + "x": 0.4628, + "y": 0.1461, + "confidence": 0.463 + }, + { + "name": "left_hip", + "x": 0.5722, + "y": 0.4225, + "confidence": 0.751 + }, + { + "name": "right_hip", + "x": 0.4974, + "y": 0.4104, + "confidence": 0.742 + }, + { + "name": "left_knee", + "x": 0.6509, + "y": 0.4923, + "confidence": 0.874 + }, + { + "name": "right_knee", + "x": 0.5083, + "y": 0.4548, + "confidence": 0.79 + }, + { + "name": "left_ankle", + "x": 0.5775, + "y": 0.6352, + "confidence": 0.629 + }, + { + "name": "right_ankle", + "x": 0.4501, + "y": 0.6148, + "confidence": 0.66 + } + ] + } + ] + }, + { + "frame_index": 89, + "timestamp": 1.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1597, + "acceleration": 7.0225, + "fluidity": 0.17, + "expansion": 0.322, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6207, + "y": 0.247, + "confidence": 0.57 + }, + { + "name": "left_eye", + "x": 0.63, + "y": 0.2368, + "confidence": 0.676 + }, + { + "name": "right_eye", + "x": 0.6141, + "y": 0.2331, + "confidence": 0.588 + }, + { + "name": "left_ear", + "x": 0.6233, + "y": 0.2198, + "confidence": 0.589 + }, + { + "name": "right_ear", + "x": 0.5815, + "y": 0.2043, + "confidence": 0.68 + }, + { + "name": "left_shoulder", + "x": 0.6403, + "y": 0.2551, + "confidence": 0.789 + }, + { + "name": "right_shoulder", + "x": 0.525, + "y": 0.2052, + "confidence": 0.509 + }, + { + "name": "left_elbow", + "x": 0.6879, + "y": 0.2982, + "confidence": 0.562 + }, + { + "name": "right_elbow", + "x": 0.4692, + "y": 0.1474, + "confidence": 0.618 + }, + { + "name": "left_wrist", + "x": 0.7384, + "y": 0.3305, + "confidence": 0.778 + }, + { + "name": "right_wrist", + "x": 0.4629, + "y": 0.1463, + "confidence": 0.461 + }, + { + "name": "left_hip", + "x": 0.5722, + "y": 0.4225, + "confidence": 0.75 + }, + { + "name": "right_hip", + "x": 0.4976, + "y": 0.4104, + "confidence": 0.741 + }, + { + "name": "left_knee", + "x": 0.651, + "y": 0.4923, + "confidence": 0.872 + }, + { + "name": "right_knee", + "x": 0.5083, + "y": 0.4548, + "confidence": 0.788 + }, + { + "name": "left_ankle", + "x": 0.5775, + "y": 0.6348, + "confidence": 0.633 + }, + { + "name": "right_ankle", + "x": 0.45, + "y": 0.6149, + "confidence": 0.66 + } + ] + } + ] + }, + { + "frame_index": 90, + "timestamp": 1.5, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2183, + "acceleration": 3.5169, + "fluidity": 0.057, + "expansion": 0.328, + "total_displacement": 0.0072, + "center_displacement": { + "x": 0, + "y": 0.0072 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6236, + "y": 0.2472, + "confidence": 0.537 + }, + { + "name": "left_eye", + "x": 0.6342, + "y": 0.2333, + "confidence": 0.569 + }, + { + "name": "right_eye", + "x": 0.6209, + "y": 0.2304, + "confidence": 0.696 + }, + { + "name": "left_ear", + "x": 0.6234, + "y": 0.2179, + "confidence": 0.542 + }, + { + "name": "right_ear", + "x": 0.5857, + "y": 0.2015, + "confidence": 0.672 + }, + { + "name": "left_shoulder", + "x": 0.6358, + "y": 0.2604, + "confidence": 0.519 + }, + { + "name": "right_shoulder", + "x": 0.5287, + "y": 0.2079, + "confidence": 0.578 + }, + { + "name": "left_elbow", + "x": 0.6889, + "y": 0.3012, + "confidence": 0.673 + }, + { + "name": "right_elbow", + "x": 0.4664, + "y": 0.1466, + "confidence": 0.699 + }, + { + "name": "left_wrist", + "x": 0.7435, + "y": 0.3467, + "confidence": 0.781 + }, + { + "name": "right_wrist", + "x": 0.4591, + "y": 0.1472, + "confidence": 0.409 + }, + { + "name": "left_hip", + "x": 0.5711, + "y": 0.4321, + "confidence": 0.77 + }, + { + "name": "right_hip", + "x": 0.4993, + "y": 0.4215, + "confidence": 0.769 + }, + { + "name": "left_knee", + "x": 0.649, + "y": 0.5021, + "confidence": 0.749 + }, + { + "name": "right_knee", + "x": 0.5054, + "y": 0.476, + "confidence": 0.686 + }, + { + "name": "left_ankle", + "x": 0.5684, + "y": 0.6409, + "confidence": 0.781 + }, + { + "name": "right_ankle", + "x": 0.4388, + "y": 0.6509, + "confidence": 0.686 + } + ] + } + ] + }, + { + "frame_index": 91, + "timestamp": 1.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2134, + "acceleration": -0.296, + "fluidity": 0.019, + "expansion": 0.33, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6237, + "y": 0.2472, + "confidence": 0.54 + }, + { + "name": "left_eye", + "x": 0.6342, + "y": 0.2334, + "confidence": 0.57 + }, + { + "name": "right_eye", + "x": 0.621, + "y": 0.2304, + "confidence": 0.698 + }, + { + "name": "left_ear", + "x": 0.6235, + "y": 0.218, + "confidence": 0.544 + }, + { + "name": "right_ear", + "x": 0.5858, + "y": 0.2016, + "confidence": 0.671 + }, + { + "name": "left_shoulder", + "x": 0.6399, + "y": 0.2611, + "confidence": 0.817 + }, + { + "name": "right_shoulder", + "x": 0.5289, + "y": 0.208, + "confidence": 0.58 + }, + { + "name": "left_elbow", + "x": 0.6886, + "y": 0.301, + "confidence": 0.674 + }, + { + "name": "right_elbow", + "x": 0.4665, + "y": 0.1466, + "confidence": 0.703 + }, + { + "name": "left_wrist", + "x": 0.7434, + "y": 0.3467, + "confidence": 0.783 + }, + { + "name": "right_wrist", + "x": 0.4585, + "y": 0.1469, + "confidence": 0.409 + }, + { + "name": "left_hip", + "x": 0.571, + "y": 0.4323, + "confidence": 0.77 + }, + { + "name": "right_hip", + "x": 0.4992, + "y": 0.4215, + "confidence": 0.767 + }, + { + "name": "left_knee", + "x": 0.649, + "y": 0.5023, + "confidence": 0.749 + }, + { + "name": "right_knee", + "x": 0.5053, + "y": 0.476, + "confidence": 0.684 + }, + { + "name": "left_ankle", + "x": 0.5685, + "y": 0.6407, + "confidence": 0.785 + }, + { + "name": "right_ankle", + "x": 0.4388, + "y": 0.651, + "confidence": 0.686 + } + ] + } + ] + }, + { + "frame_index": 92, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.1928, + "acceleration": -1.2353, + "fluidity": 0.006, + "expansion": 0.331, + "total_displacement": 0.006, + "center_displacement": { + "x": 0.0002, + "y": 0.006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6314, + "y": 0.2471, + "confidence": 0.576 + }, + { + "name": "left_eye", + "x": 0.6406, + "y": 0.2343, + "confidence": 0.423 + }, + { + "name": "right_eye", + "x": 0.6269, + "y": 0.2303, + "confidence": 0.516 + }, + { + "name": "left_ear", + "x": 0.6256, + "y": 0.2228, + "confidence": 0.483 + }, + { + "name": "right_ear", + "x": 0.5936, + "y": 0.2104, + "confidence": 0.733 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.2672, + "confidence": 0.692 + }, + { + "name": "right_shoulder", + "x": 0.5314, + "y": 0.2158, + "confidence": 0.631 + }, + { + "name": "left_elbow", + "x": 0.689, + "y": 0.3118, + "confidence": 0.609 + }, + { + "name": "right_elbow", + "x": 0.4716, + "y": 0.1563, + "confidence": 0.42 + }, + { + "name": "left_wrist", + "x": 0.7508, + "y": 0.359, + "confidence": 0.648 + }, + { + "name": "right_wrist", + "x": 0.4639, + "y": 0.1574, + "confidence": 0.373 + }, + { + "name": "left_hip", + "x": 0.5699, + "y": 0.4357, + "confidence": 0.688 + }, + { + "name": "right_hip", + "x": 0.4992, + "y": 0.4281, + "confidence": 0.634 + }, + { + "name": "left_knee", + "x": 0.6467, + "y": 0.5153, + "confidence": 0.639 + }, + { + "name": "right_knee", + "x": 0.5029, + "y": 0.4942, + "confidence": 0.708 + }, + { + "name": "left_ankle", + "x": 0.5658, + "y": 0.6544, + "confidence": 0.755 + }, + { + "name": "right_ankle", + "x": 0.4394, + "y": 0.6584, + "confidence": 0.702 + } + ] + } + ] + }, + { + "frame_index": 93, + "timestamp": 1.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0671, + "acceleration": -7.5408, + "fluidity": 0.002, + "expansion": 0.332, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6312, + "y": 0.2473, + "confidence": 0.573 + }, + { + "name": "left_eye", + "x": 0.6406, + "y": 0.2344, + "confidence": 0.427 + }, + { + "name": "right_eye", + "x": 0.6267, + "y": 0.2305, + "confidence": 0.509 + }, + { + "name": "left_ear", + "x": 0.6262, + "y": 0.2231, + "confidence": 0.478 + }, + { + "name": "right_ear", + "x": 0.5934, + "y": 0.2106, + "confidence": 0.733 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.2672, + "confidence": 0.684 + }, + { + "name": "right_shoulder", + "x": 0.5313, + "y": 0.2157, + "confidence": 0.626 + }, + { + "name": "left_elbow", + "x": 0.6889, + "y": 0.3118, + "confidence": 0.602 + }, + { + "name": "right_elbow", + "x": 0.4715, + "y": 0.1562, + "confidence": 0.413 + }, + { + "name": "left_wrist", + "x": 0.7505, + "y": 0.3588, + "confidence": 0.633 + }, + { + "name": "right_wrist", + "x": 0.4639, + "y": 0.1572, + "confidence": 0.362 + }, + { + "name": "left_hip", + "x": 0.57, + "y": 0.4357, + "confidence": 0.688 + }, + { + "name": "right_hip", + "x": 0.4994, + "y": 0.4281, + "confidence": 0.636 + }, + { + "name": "left_knee", + "x": 0.6466, + "y": 0.5152, + "confidence": 0.638 + }, + { + "name": "right_knee", + "x": 0.5029, + "y": 0.4944, + "confidence": 0.708 + }, + { + "name": "left_ankle", + "x": 0.5658, + "y": 0.6545, + "confidence": 0.751 + }, + { + "name": "right_ankle", + "x": 0.4392, + "y": 0.6587, + "confidence": 0.698 + } + ] + } + ] + }, + { + "frame_index": 94, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.8798, + "acceleration": 48.7624, + "fluidity": 0.001, + "expansion": 0.303, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6312, + "y": 0.2472, + "confidence": 0.572 + }, + { + "name": "left_eye", + "x": 0.6406, + "y": 0.2344, + "confidence": 0.424 + }, + { + "name": "right_eye", + "x": 0.6267, + "y": 0.2303, + "confidence": 0.509 + }, + { + "name": "left_ear", + "x": 0.6262, + "y": 0.2231, + "confidence": 0.479 + }, + { + "name": "right_ear", + "x": 0.5934, + "y": 0.2105, + "confidence": 0.734 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.2672, + "confidence": 0.685 + }, + { + "name": "right_shoulder", + "x": 0.5314, + "y": 0.2158, + "confidence": 0.627 + }, + { + "name": "left_elbow", + "x": 0.6889, + "y": 0.3118, + "confidence": 0.602 + }, + { + "name": "right_elbow", + "x": 0.4717, + "y": 0.1562, + "confidence": 0.415 + }, + { + "name": "left_wrist", + "x": 0.7504, + "y": 0.3586, + "confidence": 0.628 + }, + { + "name": "right_wrist", + "x": 0.464, + "y": 0.1573, + "confidence": 0.366 + }, + { + "name": "left_hip", + "x": 0.57, + "y": 0.4356, + "confidence": 0.685 + }, + { + "name": "right_hip", + "x": 0.4993, + "y": 0.4281, + "confidence": 0.633 + }, + { + "name": "left_knee", + "x": 0.6466, + "y": 0.5152, + "confidence": 0.639 + }, + { + "name": "right_knee", + "x": 0.5028, + "y": 0.4944, + "confidence": 0.708 + }, + { + "name": "left_ankle", + "x": 0.5658, + "y": 0.6545, + "confidence": 0.752 + }, + { + "name": "right_ankle", + "x": 0.4393, + "y": 0.6585, + "confidence": 0.698 + } + ] + } + ] + }, + { + "frame_index": 95, + "timestamp": 1.5833333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.1522, + "acceleration": 16.3445, + "fluidity": 0, + "expansion": 0.264, + "total_displacement": 0.0428, + "center_displacement": { + "x": -0.0316, + "y": 0.0289 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.641, + "y": 0.2501, + "confidence": 0.487 + }, + { + "name": "left_eye", + "x": 0.645, + "y": 0.2377, + "confidence": 0.713 + }, + { + "name": "right_eye", + "x": 0.6342, + "y": 0.2365, + "confidence": 0.485 + }, + { + "name": "left_ear", + "x": 0.6252, + "y": 0.2235, + "confidence": 0.528 + }, + { + "name": "right_ear", + "x": 0.5969, + "y": 0.2139, + "confidence": 0.797 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.2738, + "confidence": 0.499 + }, + { + "name": "right_shoulder", + "x": 0.5337, + "y": 0.2194, + "confidence": 0.676 + }, + { + "name": "left_elbow", + "x": 0.7046, + "y": 0.3276, + "confidence": 0.763 + }, + { + "name": "right_elbow", + "x": 0.4674, + "y": 0.1562, + "confidence": 0.545 + }, + { + "name": "left_wrist", + "x": 0.7629, + "y": 0.3725, + "confidence": 0.614 + }, + { + "name": "right_wrist", + "x": 0.453, + "y": 0.153, + "confidence": 0.29 + }, + { + "name": "left_hip", + "x": 0.5609, + "y": 0.4424, + "confidence": 0.722 + }, + { + "name": "right_hip", + "x": 0.4905, + "y": 0.4349, + "confidence": 0.811 + }, + { + "name": "left_knee", + "x": 0.6422, + "y": 0.5263, + "confidence": 0.76 + }, + { + "name": "right_knee", + "x": 0.4975, + "y": 0.5112, + "confidence": 0.841 + }, + { + "name": "left_ankle", + "x": 0.5686, + "y": 0.6729, + "confidence": 0.748 + }, + { + "name": "right_ankle", + "x": 0.4381, + "y": 0.6739, + "confidence": 0.815 + } + ] + } + ] + }, + { + "frame_index": 96, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.0212, + "acceleration": -7.8613, + "fluidity": 0, + "expansion": 0.254, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.641, + "y": 0.2504, + "confidence": 0.49 + }, + { + "name": "left_eye", + "x": 0.6451, + "y": 0.2379, + "confidence": 0.719 + }, + { + "name": "right_eye", + "x": 0.6343, + "y": 0.2366, + "confidence": 0.489 + }, + { + "name": "left_ear", + "x": 0.6257, + "y": 0.2237, + "confidence": 0.533 + }, + { + "name": "right_ear", + "x": 0.5971, + "y": 0.2139, + "confidence": 0.799 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.2739, + "confidence": 0.496 + }, + { + "name": "right_shoulder", + "x": 0.5336, + "y": 0.2193, + "confidence": 0.671 + }, + { + "name": "left_elbow", + "x": 0.7043, + "y": 0.3274, + "confidence": 0.763 + }, + { + "name": "right_elbow", + "x": 0.4675, + "y": 0.156, + "confidence": 0.545 + }, + { + "name": "left_wrist", + "x": 0.7629, + "y": 0.3724, + "confidence": 0.61 + }, + { + "name": "right_wrist", + "x": 0.4526, + "y": 0.1527, + "confidence": 0.283 + }, + { + "name": "left_hip", + "x": 0.5609, + "y": 0.4424, + "confidence": 0.72 + }, + { + "name": "right_hip", + "x": 0.4906, + "y": 0.4347, + "confidence": 0.81 + }, + { + "name": "left_knee", + "x": 0.6422, + "y": 0.5263, + "confidence": 0.76 + }, + { + "name": "right_knee", + "x": 0.4975, + "y": 0.5111, + "confidence": 0.841 + }, + { + "name": "left_ankle", + "x": 0.5685, + "y": 0.673, + "confidence": 0.744 + }, + { + "name": "right_ankle", + "x": 0.438, + "y": 0.6738, + "confidence": 0.811 + } + ] + } + ] + }, + { + "frame_index": 97, + "timestamp": 1.6166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.976, + "acceleration": -2.7125, + "fluidity": 0, + "expansion": 0.254, + "total_displacement": 0.0317, + "center_displacement": { + "x": 0.0278, + "y": -0.0153 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6422, + "y": 0.261, + "confidence": 0.622 + }, + { + "name": "left_eye", + "x": 0.6505, + "y": 0.2482, + "confidence": 0.493 + }, + { + "name": "right_eye", + "x": 0.6377, + "y": 0.2445, + "confidence": 0.732 + }, + { + "name": "left_ear", + "x": 0.637, + "y": 0.2391, + "confidence": 0.35 + }, + { + "name": "right_ear", + "x": 0.5995, + "y": 0.2234, + "confidence": 0.69 + }, + { + "name": "left_shoulder", + "x": 0.6447, + "y": 0.2894, + "confidence": 0.532 + }, + { + "name": "right_shoulder", + "x": 0.5343, + "y": 0.2236, + "confidence": 0.746 + }, + { + "name": "left_elbow", + "x": 0.7045, + "y": 0.3336, + "confidence": 0.797 + }, + { + "name": "right_elbow", + "x": 0.4772, + "y": 0.1614, + "confidence": 0.591 + }, + { + "name": "left_wrist", + "x": 0.7685, + "y": 0.3823, + "confidence": 0.69 + }, + { + "name": "right_wrist", + "x": 0.4466, + "y": 0.1462, + "confidence": 0.186 + }, + { + "name": "left_hip", + "x": 0.557, + "y": 0.4459, + "confidence": 0.635 + }, + { + "name": "right_hip", + "x": 0.4888, + "y": 0.4419, + "confidence": 0.725 + }, + { + "name": "left_knee", + "x": 0.6383, + "y": 0.5432, + "confidence": 0.823 + }, + { + "name": "right_knee", + "x": 0.492, + "y": 0.528, + "confidence": 0.773 + }, + { + "name": "left_ankle", + "x": 0.5832, + "y": 0.6849, + "confidence": 0.871 + }, + { + "name": "right_ankle", + "x": 0.4293, + "y": 0.6864, + "confidence": 0.824 + } + ] + } + ] + }, + { + "frame_index": 98, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3301, + "acceleration": -38.7572, + "fluidity": 0, + "expansion": 0.254, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6422, + "y": 0.261, + "confidence": 0.621 + }, + { + "name": "left_eye", + "x": 0.6505, + "y": 0.2482, + "confidence": 0.491 + }, + { + "name": "right_eye", + "x": 0.6377, + "y": 0.2445, + "confidence": 0.733 + }, + { + "name": "left_ear", + "x": 0.6371, + "y": 0.2392, + "confidence": 0.351 + }, + { + "name": "right_ear", + "x": 0.5995, + "y": 0.2235, + "confidence": 0.689 + }, + { + "name": "left_shoulder", + "x": 0.6448, + "y": 0.2894, + "confidence": 0.531 + }, + { + "name": "right_shoulder", + "x": 0.5342, + "y": 0.2237, + "confidence": 0.747 + }, + { + "name": "left_elbow", + "x": 0.7045, + "y": 0.3336, + "confidence": 0.798 + }, + { + "name": "right_elbow", + "x": 0.4772, + "y": 0.1614, + "confidence": 0.59 + }, + { + "name": "left_wrist", + "x": 0.7685, + "y": 0.3823, + "confidence": 0.69 + }, + { + "name": "right_wrist", + "x": 0.4465, + "y": 0.146, + "confidence": 0.187 + }, + { + "name": "left_hip", + "x": 0.557, + "y": 0.4459, + "confidence": 0.636 + }, + { + "name": "right_hip", + "x": 0.4888, + "y": 0.442, + "confidence": 0.724 + }, + { + "name": "left_knee", + "x": 0.6383, + "y": 0.5432, + "confidence": 0.82 + }, + { + "name": "right_knee", + "x": 0.492, + "y": 0.5281, + "confidence": 0.773 + }, + { + "name": "left_ankle", + "x": 0.5832, + "y": 0.6848, + "confidence": 0.872 + }, + { + "name": "right_ankle", + "x": 0.4293, + "y": 0.6865, + "confidence": 0.825 + } + ] + } + ] + }, + { + "frame_index": 99, + "timestamp": 1.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3537, + "acceleration": 1.4188, + "fluidity": 0, + "expansion": 0.26, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6423, + "y": 0.2608, + "confidence": 0.623 + }, + { + "name": "left_eye", + "x": 0.6507, + "y": 0.2481, + "confidence": 0.481 + }, + { + "name": "right_eye", + "x": 0.6377, + "y": 0.2444, + "confidence": 0.728 + }, + { + "name": "left_ear", + "x": 0.6375, + "y": 0.2392, + "confidence": 0.352 + }, + { + "name": "right_ear", + "x": 0.5995, + "y": 0.2235, + "confidence": 0.688 + }, + { + "name": "left_shoulder", + "x": 0.6449, + "y": 0.2896, + "confidence": 0.528 + }, + { + "name": "right_shoulder", + "x": 0.5343, + "y": 0.2237, + "confidence": 0.742 + }, + { + "name": "left_elbow", + "x": 0.7046, + "y": 0.3336, + "confidence": 0.796 + }, + { + "name": "right_elbow", + "x": 0.4774, + "y": 0.1615, + "confidence": 0.587 + }, + { + "name": "left_wrist", + "x": 0.7686, + "y": 0.3824, + "confidence": 0.685 + }, + { + "name": "right_wrist", + "x": 0.4464, + "y": 0.146, + "confidence": 0.186 + }, + { + "name": "left_hip", + "x": 0.5572, + "y": 0.4458, + "confidence": 0.629 + }, + { + "name": "right_hip", + "x": 0.4892, + "y": 0.4417, + "confidence": 0.714 + }, + { + "name": "left_knee", + "x": 0.6382, + "y": 0.5432, + "confidence": 0.816 + }, + { + "name": "right_knee", + "x": 0.4919, + "y": 0.5281, + "confidence": 0.769 + }, + { + "name": "left_ankle", + "x": 0.5832, + "y": 0.6848, + "confidence": 0.868 + }, + { + "name": "right_ankle", + "x": 0.4294, + "y": 0.6863, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 100, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3586, + "acceleration": 0.293, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.012, + "center_displacement": { + "x": 0.0007, + "y": 0.012 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6484, + "y": 0.2654, + "confidence": 0.672 + }, + { + "name": "left_eye", + "x": 0.6541, + "y": 0.2542, + "confidence": 0.525 + }, + { + "name": "right_eye", + "x": 0.6406, + "y": 0.2503, + "confidence": 0.505 + }, + { + "name": "left_ear", + "x": 0.6365, + "y": 0.2448, + "confidence": 0.568 + }, + { + "name": "right_ear", + "x": 0.6093, + "y": 0.2313, + "confidence": 0.771 + }, + { + "name": "left_shoulder", + "x": 0.6471, + "y": 0.3025, + "confidence": 0.801 + }, + { + "name": "right_shoulder", + "x": 0.5399, + "y": 0.2327, + "confidence": 0.721 + }, + { + "name": "left_elbow", + "x": 0.7142, + "y": 0.3516, + "confidence": 0.744 + }, + { + "name": "right_elbow", + "x": 0.4774, + "y": 0.174, + "confidence": 0.708 + }, + { + "name": "left_wrist", + "x": 0.7832, + "y": 0.3989, + "confidence": 0.714 + }, + { + "name": "right_wrist", + "x": 0.4275, + "y": 0.1384, + "confidence": 0.166 + }, + { + "name": "left_hip", + "x": 0.5558, + "y": 0.4623, + "confidence": 0.772 + }, + { + "name": "right_hip", + "x": 0.4855, + "y": 0.4511, + "confidence": 0.698 + }, + { + "name": "left_knee", + "x": 0.634, + "y": 0.5609, + "confidence": 0.85 + }, + { + "name": "right_knee", + "x": 0.4807, + "y": 0.5509, + "confidence": 0.657 + }, + { + "name": "left_ankle", + "x": 0.5994, + "y": 0.7117, + "confidence": 0.737 + }, + { + "name": "right_ankle", + "x": 0.4224, + "y": 0.6915, + "confidence": 0.814 + } + ] + } + ] + }, + { + "frame_index": 101, + "timestamp": 1.6833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3991, + "acceleration": 2.4315, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6483, + "y": 0.2656, + "confidence": 0.674 + }, + { + "name": "left_eye", + "x": 0.654, + "y": 0.2542, + "confidence": 0.524 + }, + { + "name": "right_eye", + "x": 0.6405, + "y": 0.2503, + "confidence": 0.504 + }, + { + "name": "left_ear", + "x": 0.6365, + "y": 0.2449, + "confidence": 0.568 + }, + { + "name": "right_ear", + "x": 0.6093, + "y": 0.2314, + "confidence": 0.771 + }, + { + "name": "left_shoulder", + "x": 0.6471, + "y": 0.3025, + "confidence": 0.803 + }, + { + "name": "right_shoulder", + "x": 0.54, + "y": 0.2326, + "confidence": 0.721 + }, + { + "name": "left_elbow", + "x": 0.7142, + "y": 0.3516, + "confidence": 0.743 + }, + { + "name": "right_elbow", + "x": 0.4774, + "y": 0.174, + "confidence": 0.708 + }, + { + "name": "left_wrist", + "x": 0.7832, + "y": 0.3989, + "confidence": 0.714 + }, + { + "name": "right_wrist", + "x": 0.4274, + "y": 0.1382, + "confidence": 0.165 + }, + { + "name": "left_hip", + "x": 0.5559, + "y": 0.4623, + "confidence": 0.771 + }, + { + "name": "right_hip", + "x": 0.4855, + "y": 0.4512, + "confidence": 0.699 + }, + { + "name": "left_knee", + "x": 0.634, + "y": 0.561, + "confidence": 0.85 + }, + { + "name": "right_knee", + "x": 0.4806, + "y": 0.551, + "confidence": 0.661 + }, + { + "name": "left_ankle", + "x": 0.5993, + "y": 0.7118, + "confidence": 0.733 + }, + { + "name": "right_ankle", + "x": 0.4224, + "y": 0.6916, + "confidence": 0.815 + } + ] + } + ] + }, + { + "frame_index": 102, + "timestamp": 1.7, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4121, + "acceleration": 0.7791, + "fluidity": 0, + "expansion": 0.372, + "total_displacement": 0.0139, + "center_displacement": { + "x": -0.0014, + "y": 0.0139 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6519, + "y": 0.2792, + "confidence": 0.645 + }, + { + "name": "left_eye", + "x": 0.6572, + "y": 0.2669, + "confidence": 0.653 + }, + { + "name": "right_eye", + "x": 0.6485, + "y": 0.2619, + "confidence": 0.746 + }, + { + "name": "left_ear", + "x": 0.6344, + "y": 0.2542, + "confidence": 0.628 + }, + { + "name": "right_ear", + "x": 0.6093, + "y": 0.2417, + "confidence": 0.757 + }, + { + "name": "left_shoulder", + "x": 0.6467, + "y": 0.3173, + "confidence": 0.774 + }, + { + "name": "right_shoulder", + "x": 0.5444, + "y": 0.249, + "confidence": 0.705 + }, + { + "name": "left_elbow", + "x": 0.7215, + "y": 0.367, + "confidence": 0.769 + }, + { + "name": "right_elbow", + "x": 0.4841, + "y": 0.1947, + "confidence": 0.906 + }, + { + "name": "left_wrist", + "x": 0.7836, + "y": 0.419, + "confidence": 0.652 + }, + { + "name": "right_wrist", + "x": 0.4229, + "y": 0.1434, + "confidence": 0.734 + }, + { + "name": "left_hip", + "x": 0.552, + "y": 0.4771, + "confidence": 0.829 + }, + { + "name": "right_hip", + "x": 0.4798, + "y": 0.4607, + "confidence": 0.752 + }, + { + "name": "left_knee", + "x": 0.6296, + "y": 0.5755, + "confidence": 0.886 + }, + { + "name": "right_knee", + "x": 0.4722, + "y": 0.5708, + "confidence": 0.775 + }, + { + "name": "left_ankle", + "x": 0.6248, + "y": 0.7388, + "confidence": 0.876 + }, + { + "name": "right_ankle", + "x": 0.3995, + "y": 0.7102, + "confidence": 0.77 + } + ] + } + ] + }, + { + "frame_index": 103, + "timestamp": 1.7166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1388, + "acceleration": -16.3973, + "fluidity": 0.207, + "expansion": 0.392, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.652, + "y": 0.2791, + "confidence": 0.642 + }, + { + "name": "left_eye", + "x": 0.6571, + "y": 0.2668, + "confidence": 0.65 + }, + { + "name": "right_eye", + "x": 0.6485, + "y": 0.2618, + "confidence": 0.748 + }, + { + "name": "left_ear", + "x": 0.6342, + "y": 0.2541, + "confidence": 0.626 + }, + { + "name": "right_ear", + "x": 0.6094, + "y": 0.2417, + "confidence": 0.757 + }, + { + "name": "left_shoulder", + "x": 0.6467, + "y": 0.3173, + "confidence": 0.774 + }, + { + "name": "right_shoulder", + "x": 0.5444, + "y": 0.2489, + "confidence": 0.706 + }, + { + "name": "left_elbow", + "x": 0.7216, + "y": 0.367, + "confidence": 0.768 + }, + { + "name": "right_elbow", + "x": 0.484, + "y": 0.1946, + "confidence": 0.905 + }, + { + "name": "left_wrist", + "x": 0.7836, + "y": 0.4189, + "confidence": 0.651 + }, + { + "name": "right_wrist", + "x": 0.4229, + "y": 0.1433, + "confidence": 0.732 + }, + { + "name": "left_hip", + "x": 0.5519, + "y": 0.4771, + "confidence": 0.828 + }, + { + "name": "right_hip", + "x": 0.4798, + "y": 0.4607, + "confidence": 0.753 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.5756, + "confidence": 0.885 + }, + { + "name": "right_knee", + "x": 0.4722, + "y": 0.5708, + "confidence": 0.776 + }, + { + "name": "left_ankle", + "x": 0.6248, + "y": 0.7389, + "confidence": 0.875 + }, + { + "name": "right_ankle", + "x": 0.3996, + "y": 0.7104, + "confidence": 0.768 + } + ] + } + ] + }, + { + "frame_index": 104, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.3532, + "acceleration": 12.8616, + "fluidity": 0.276, + "expansion": 0.403, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6519, + "y": 0.2791, + "confidence": 0.644 + }, + { + "name": "left_eye", + "x": 0.6571, + "y": 0.2668, + "confidence": 0.649 + }, + { + "name": "right_eye", + "x": 0.6484, + "y": 0.2618, + "confidence": 0.746 + }, + { + "name": "left_ear", + "x": 0.6343, + "y": 0.2541, + "confidence": 0.627 + }, + { + "name": "right_ear", + "x": 0.6094, + "y": 0.2417, + "confidence": 0.756 + }, + { + "name": "left_shoulder", + "x": 0.6469, + "y": 0.3173, + "confidence": 0.775 + }, + { + "name": "right_shoulder", + "x": 0.5444, + "y": 0.2489, + "confidence": 0.706 + }, + { + "name": "left_elbow", + "x": 0.7216, + "y": 0.3671, + "confidence": 0.766 + }, + { + "name": "right_elbow", + "x": 0.484, + "y": 0.1946, + "confidence": 0.905 + }, + { + "name": "left_wrist", + "x": 0.7837, + "y": 0.419, + "confidence": 0.651 + }, + { + "name": "right_wrist", + "x": 0.4229, + "y": 0.1433, + "confidence": 0.733 + }, + { + "name": "left_hip", + "x": 0.552, + "y": 0.477, + "confidence": 0.829 + }, + { + "name": "right_hip", + "x": 0.4798, + "y": 0.4606, + "confidence": 0.753 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.5756, + "confidence": 0.886 + }, + { + "name": "right_knee", + "x": 0.4722, + "y": 0.5708, + "confidence": 0.775 + }, + { + "name": "left_ankle", + "x": 0.6248, + "y": 0.739, + "confidence": 0.875 + }, + { + "name": "right_ankle", + "x": 0.3996, + "y": 0.7103, + "confidence": 0.769 + } + ] + } + ] + }, + { + "frame_index": 105, + "timestamp": 1.75, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4254, + "acceleration": 4.3347, + "fluidity": 0.092, + "expansion": 0.41, + "total_displacement": 0.0153, + "center_displacement": { + "x": -0.0015, + "y": 0.0152 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6511, + "y": 0.2941, + "confidence": 0.606 + }, + { + "name": "left_eye", + "x": 0.659, + "y": 0.2833, + "confidence": 0.679 + }, + { + "name": "right_eye", + "x": 0.6478, + "y": 0.2759, + "confidence": 0.731 + }, + { + "name": "left_ear", + "x": 0.637, + "y": 0.2725, + "confidence": 0.508 + }, + { + "name": "right_ear", + "x": 0.6091, + "y": 0.2583, + "confidence": 0.751 + }, + { + "name": "left_shoulder", + "x": 0.6407, + "y": 0.3368, + "confidence": 0.726 + }, + { + "name": "right_shoulder", + "x": 0.547, + "y": 0.2682, + "confidence": 0.72 + }, + { + "name": "left_elbow", + "x": 0.7164, + "y": 0.3804, + "confidence": 0.726 + }, + { + "name": "right_elbow", + "x": 0.4818, + "y": 0.2104, + "confidence": 0.683 + }, + { + "name": "left_wrist", + "x": 0.7876, + "y": 0.4311, + "confidence": 0.826 + }, + { + "name": "right_wrist", + "x": 0.4153, + "y": 0.1566, + "confidence": 0.869 + }, + { + "name": "left_hip", + "x": 0.5485, + "y": 0.49, + "confidence": 0.827 + }, + { + "name": "right_hip", + "x": 0.4808, + "y": 0.4697, + "confidence": 0.753 + }, + { + "name": "left_knee", + "x": 0.6186, + "y": 0.5993, + "confidence": 0.747 + }, + { + "name": "right_knee", + "x": 0.4566, + "y": 0.5949, + "confidence": 0.757 + }, + { + "name": "left_ankle", + "x": 0.6384, + "y": 0.7556, + "confidence": 0.797 + }, + { + "name": "right_ankle", + "x": 0.3742, + "y": 0.7275, + "confidence": 0.593 + } + ] + } + ] + }, + { + "frame_index": 106, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4436, + "acceleration": 1.0933, + "fluidity": 0.031, + "expansion": 0.411, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6512, + "y": 0.2942, + "confidence": 0.604 + }, + { + "name": "left_eye", + "x": 0.659, + "y": 0.2833, + "confidence": 0.679 + }, + { + "name": "right_eye", + "x": 0.6478, + "y": 0.2759, + "confidence": 0.731 + }, + { + "name": "left_ear", + "x": 0.6371, + "y": 0.2725, + "confidence": 0.506 + }, + { + "name": "right_ear", + "x": 0.6091, + "y": 0.2583, + "confidence": 0.749 + }, + { + "name": "left_shoulder", + "x": 0.6407, + "y": 0.3369, + "confidence": 0.726 + }, + { + "name": "right_shoulder", + "x": 0.547, + "y": 0.2682, + "confidence": 0.718 + }, + { + "name": "left_elbow", + "x": 0.7167, + "y": 0.3804, + "confidence": 0.717 + }, + { + "name": "right_elbow", + "x": 0.4819, + "y": 0.2105, + "confidence": 0.678 + }, + { + "name": "left_wrist", + "x": 0.7875, + "y": 0.4311, + "confidence": 0.821 + }, + { + "name": "right_wrist", + "x": 0.4154, + "y": 0.1566, + "confidence": 0.871 + }, + { + "name": "left_hip", + "x": 0.5486, + "y": 0.4902, + "confidence": 0.827 + }, + { + "name": "right_hip", + "x": 0.4809, + "y": 0.4698, + "confidence": 0.752 + }, + { + "name": "left_knee", + "x": 0.6188, + "y": 0.5993, + "confidence": 0.749 + }, + { + "name": "right_knee", + "x": 0.4565, + "y": 0.595, + "confidence": 0.755 + }, + { + "name": "left_ankle", + "x": 0.6384, + "y": 0.7555, + "confidence": 0.795 + }, + { + "name": "right_ankle", + "x": 0.3742, + "y": 0.7274, + "confidence": 0.591 + } + ] + } + ] + }, + { + "frame_index": 107, + "timestamp": 1.7833333333333332, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.449, + "acceleration": 0.3242, + "fluidity": 0.01, + "expansion": 0.409, + "total_displacement": 0.015, + "center_displacement": { + "x": 0, + "y": 0.015 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6599, + "y": 0.3077, + "confidence": 0.752 + }, + { + "name": "left_eye", + "x": 0.6633, + "y": 0.2926, + "confidence": 0.67 + }, + { + "name": "right_eye", + "x": 0.6544, + "y": 0.2881, + "confidence": 0.761 + }, + { + "name": "left_ear", + "x": 0.6326, + "y": 0.2832, + "confidence": 0.599 + }, + { + "name": "right_ear", + "x": 0.6133, + "y": 0.2703, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.6452, + "y": 0.3559, + "confidence": 0.63 + }, + { + "name": "right_shoulder", + "x": 0.5447, + "y": 0.2805, + "confidence": 0.802 + }, + { + "name": "left_elbow", + "x": 0.7174, + "y": 0.3957, + "confidence": 0.897 + }, + { + "name": "right_elbow", + "x": 0.482, + "y": 0.2327, + "confidence": 0.816 + }, + { + "name": "left_wrist", + "x": 0.7895, + "y": 0.4463, + "confidence": 0.906 + }, + { + "name": "right_wrist", + "x": 0.4105, + "y": 0.186, + "confidence": 0.645 + }, + { + "name": "left_hip", + "x": 0.5478, + "y": 0.5044, + "confidence": 0.857 + }, + { + "name": "right_hip", + "x": 0.4792, + "y": 0.4842, + "confidence": 0.833 + }, + { + "name": "left_knee", + "x": 0.6163, + "y": 0.6336, + "confidence": 0.893 + }, + { + "name": "right_knee", + "x": 0.4537, + "y": 0.595, + "confidence": 0.768 + }, + { + "name": "left_ankle", + "x": 0.6431, + "y": 0.7719, + "confidence": 0.759 + }, + { + "name": "right_ankle", + "x": 0.3654, + "y": 0.7196, + "confidence": 0.491 + } + ] + } + ] + }, + { + "frame_index": 108, + "timestamp": 1.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1534, + "acceleration": -17.7355, + "fluidity": 0.003, + "expansion": 0.409, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6598, + "y": 0.3077, + "confidence": 0.751 + }, + { + "name": "left_eye", + "x": 0.6632, + "y": 0.2926, + "confidence": 0.669 + }, + { + "name": "right_eye", + "x": 0.6544, + "y": 0.2881, + "confidence": 0.761 + }, + { + "name": "left_ear", + "x": 0.6326, + "y": 0.2831, + "confidence": 0.597 + }, + { + "name": "right_ear", + "x": 0.6133, + "y": 0.2703, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.6453, + "y": 0.3559, + "confidence": 0.629 + }, + { + "name": "right_shoulder", + "x": 0.5448, + "y": 0.2805, + "confidence": 0.802 + }, + { + "name": "left_elbow", + "x": 0.7175, + "y": 0.3957, + "confidence": 0.897 + }, + { + "name": "right_elbow", + "x": 0.4821, + "y": 0.2327, + "confidence": 0.814 + }, + { + "name": "left_wrist", + "x": 0.7894, + "y": 0.4464, + "confidence": 0.905 + }, + { + "name": "right_wrist", + "x": 0.4104, + "y": 0.1859, + "confidence": 0.644 + }, + { + "name": "left_hip", + "x": 0.5479, + "y": 0.5043, + "confidence": 0.857 + }, + { + "name": "right_hip", + "x": 0.4793, + "y": 0.4843, + "confidence": 0.832 + }, + { + "name": "left_knee", + "x": 0.6162, + "y": 0.6337, + "confidence": 0.892 + }, + { + "name": "right_knee", + "x": 0.4536, + "y": 0.595, + "confidence": 0.766 + }, + { + "name": "left_ankle", + "x": 0.6432, + "y": 0.7719, + "confidence": 0.755 + }, + { + "name": "right_ankle", + "x": 0.3645, + "y": 0.7178, + "confidence": 0.639 + } + ] + } + ] + }, + { + "frame_index": 109, + "timestamp": 1.8166666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.2921, + "acceleration": 8.3198, + "fluidity": 0.001, + "expansion": 0.406, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6598, + "y": 0.3076, + "confidence": 0.752 + }, + { + "name": "left_eye", + "x": 0.6632, + "y": 0.2925, + "confidence": 0.666 + }, + { + "name": "right_eye", + "x": 0.6544, + "y": 0.288, + "confidence": 0.76 + }, + { + "name": "left_ear", + "x": 0.6326, + "y": 0.2832, + "confidence": 0.597 + }, + { + "name": "right_ear", + "x": 0.6132, + "y": 0.2703, + "confidence": 0.835 + }, + { + "name": "left_shoulder", + "x": 0.6452, + "y": 0.3559, + "confidence": 0.63 + }, + { + "name": "right_shoulder", + "x": 0.5446, + "y": 0.2804, + "confidence": 0.8 + }, + { + "name": "left_elbow", + "x": 0.7176, + "y": 0.3956, + "confidence": 0.897 + }, + { + "name": "right_elbow", + "x": 0.4822, + "y": 0.2327, + "confidence": 0.813 + }, + { + "name": "left_wrist", + "x": 0.7894, + "y": 0.4464, + "confidence": 0.904 + }, + { + "name": "right_wrist", + "x": 0.4107, + "y": 0.1859, + "confidence": 0.646 + }, + { + "name": "left_hip", + "x": 0.5478, + "y": 0.5045, + "confidence": 0.857 + }, + { + "name": "right_hip", + "x": 0.4791, + "y": 0.4844, + "confidence": 0.831 + }, + { + "name": "left_knee", + "x": 0.6163, + "y": 0.6338, + "confidence": 0.891 + }, + { + "name": "right_knee", + "x": 0.4538, + "y": 0.595, + "confidence": 0.764 + }, + { + "name": "left_ankle", + "x": 0.6434, + "y": 0.7722, + "confidence": 0.759 + }, + { + "name": "right_ankle", + "x": 0.3644, + "y": 0.7177, + "confidence": 0.634 + } + ] + } + ] + }, + { + "frame_index": 110, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3366, + "acceleration": 2.6679, + "fluidity": 0, + "expansion": 0.402, + "total_displacement": 0.0119, + "center_displacement": { + "x": 0.0036, + "y": 0.0113 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6629, + "y": 0.3256, + "confidence": 0.787 + }, + { + "name": "left_eye", + "x": 0.6654, + "y": 0.3099, + "confidence": 0.697 + }, + { + "name": "right_eye", + "x": 0.6577, + "y": 0.3061, + "confidence": 0.665 + }, + { + "name": "left_ear", + "x": 0.6323, + "y": 0.2991, + "confidence": 0.648 + }, + { + "name": "right_ear", + "x": 0.6188, + "y": 0.2853, + "confidence": 0.869 + }, + { + "name": "left_shoulder", + "x": 0.645, + "y": 0.3714, + "confidence": 0.783 + }, + { + "name": "right_shoulder", + "x": 0.5533, + "y": 0.29, + "confidence": 0.786 + }, + { + "name": "left_elbow", + "x": 0.7052, + "y": 0.4092, + "confidence": 0.905 + }, + { + "name": "right_elbow", + "x": 0.4679, + "y": 0.2529, + "confidence": 0.778 + }, + { + "name": "left_wrist", + "x": 0.7896, + "y": 0.4587, + "confidence": 0.91 + }, + { + "name": "right_wrist", + "x": 0.3999, + "y": 0.2161, + "confidence": 0.717 + }, + { + "name": "left_hip", + "x": 0.5471, + "y": 0.5136, + "confidence": 0.872 + }, + { + "name": "right_hip", + "x": 0.4859, + "y": 0.4957, + "confidence": 0.854 + }, + { + "name": "left_knee", + "x": 0.6138, + "y": 0.6563, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.4614, + "y": 0.5999, + "confidence": 0.896 + }, + { + "name": "left_ankle", + "x": 0.6393, + "y": 0.7871, + "confidence": 0.766 + }, + { + "name": "right_ankle", + "x": 0.3493, + "y": 0.6838, + "confidence": 0.816 + } + ] + } + ] + }, + { + "frame_index": 111, + "timestamp": 1.8499999999999999, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3299, + "acceleration": -0.3996, + "fluidity": 0, + "expansion": 0.397, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6629, + "y": 0.3255, + "confidence": 0.789 + }, + { + "name": "left_eye", + "x": 0.6655, + "y": 0.3098, + "confidence": 0.695 + }, + { + "name": "right_eye", + "x": 0.6577, + "y": 0.3061, + "confidence": 0.666 + }, + { + "name": "left_ear", + "x": 0.6324, + "y": 0.2991, + "confidence": 0.645 + }, + { + "name": "right_ear", + "x": 0.6188, + "y": 0.2853, + "confidence": 0.868 + }, + { + "name": "left_shoulder", + "x": 0.6451, + "y": 0.3713, + "confidence": 0.785 + }, + { + "name": "right_shoulder", + "x": 0.5532, + "y": 0.2899, + "confidence": 0.784 + }, + { + "name": "left_elbow", + "x": 0.7054, + "y": 0.4093, + "confidence": 0.903 + }, + { + "name": "right_elbow", + "x": 0.4678, + "y": 0.2528, + "confidence": 0.78 + }, + { + "name": "left_wrist", + "x": 0.7896, + "y": 0.4587, + "confidence": 0.909 + }, + { + "name": "right_wrist", + "x": 0.3998, + "y": 0.216, + "confidence": 0.714 + }, + { + "name": "left_hip", + "x": 0.5471, + "y": 0.5137, + "confidence": 0.872 + }, + { + "name": "right_hip", + "x": 0.4859, + "y": 0.4955, + "confidence": 0.854 + }, + { + "name": "left_knee", + "x": 0.6138, + "y": 0.6563, + "confidence": 0.917 + }, + { + "name": "right_knee", + "x": 0.4614, + "y": 0.5999, + "confidence": 0.897 + }, + { + "name": "left_ankle", + "x": 0.6393, + "y": 0.7873, + "confidence": 0.764 + }, + { + "name": "right_ankle", + "x": 0.3495, + "y": 0.6837, + "confidence": 0.817 + } + ] + } + ] + }, + { + "frame_index": 112, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3281, + "acceleration": -0.1087, + "fluidity": 0, + "expansion": 0.393, + "total_displacement": 0.0108, + "center_displacement": { + "x": 0, + "y": 0.0108 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6601, + "y": 0.3424, + "confidence": 0.6 + }, + { + "name": "left_eye", + "x": 0.6647, + "y": 0.3313, + "confidence": 0.838 + }, + { + "name": "right_eye", + "x": 0.6567, + "y": 0.3244, + "confidence": 0.608 + }, + { + "name": "left_ear", + "x": 0.6368, + "y": 0.3169, + "confidence": 0.65 + }, + { + "name": "right_ear", + "x": 0.6201, + "y": 0.3019, + "confidence": 0.874 + }, + { + "name": "left_shoulder", + "x": 0.6447, + "y": 0.3811, + "confidence": 0.765 + }, + { + "name": "right_shoulder", + "x": 0.5512, + "y": 0.3025, + "confidence": 0.886 + }, + { + "name": "left_elbow", + "x": 0.7025, + "y": 0.4211, + "confidence": 0.91 + }, + { + "name": "right_elbow", + "x": 0.4709, + "y": 0.2756, + "confidence": 0.826 + }, + { + "name": "left_wrist", + "x": 0.7889, + "y": 0.4739, + "confidence": 0.919 + }, + { + "name": "right_wrist", + "x": 0.394, + "y": 0.2399, + "confidence": 0.829 + }, + { + "name": "left_hip", + "x": 0.5428, + "y": 0.5247, + "confidence": 0.851 + }, + { + "name": "right_hip", + "x": 0.4924, + "y": 0.5055, + "confidence": 0.819 + }, + { + "name": "left_knee", + "x": 0.6109, + "y": 0.6516, + "confidence": 0.848 + }, + { + "name": "right_knee", + "x": 0.4629, + "y": 0.6054, + "confidence": 0.648 + }, + { + "name": "left_ankle", + "x": 0.634, + "y": 0.7932, + "confidence": 0.736 + }, + { + "name": "right_ankle", + "x": 0.34, + "y": 0.6618, + "confidence": 0.849 + } + ] + } + ] + }, + { + "frame_index": 113, + "timestamp": 1.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1129, + "acceleration": -12.9098, + "fluidity": 0.081, + "expansion": 0.391, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6601, + "y": 0.3424, + "confidence": 0.603 + }, + { + "name": "left_eye", + "x": 0.6647, + "y": 0.3313, + "confidence": 0.839 + }, + { + "name": "right_eye", + "x": 0.6568, + "y": 0.3244, + "confidence": 0.605 + }, + { + "name": "left_ear", + "x": 0.6368, + "y": 0.3169, + "confidence": 0.649 + }, + { + "name": "right_ear", + "x": 0.6202, + "y": 0.3019, + "confidence": 0.874 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.3811, + "confidence": 0.765 + }, + { + "name": "right_shoulder", + "x": 0.5512, + "y": 0.3026, + "confidence": 0.887 + }, + { + "name": "left_elbow", + "x": 0.7027, + "y": 0.4212, + "confidence": 0.91 + }, + { + "name": "right_elbow", + "x": 0.4713, + "y": 0.2758, + "confidence": 0.827 + }, + { + "name": "left_wrist", + "x": 0.789, + "y": 0.474, + "confidence": 0.918 + }, + { + "name": "right_wrist", + "x": 0.3942, + "y": 0.24, + "confidence": 0.831 + }, + { + "name": "left_hip", + "x": 0.5429, + "y": 0.5245, + "confidence": 0.85 + }, + { + "name": "right_hip", + "x": 0.4923, + "y": 0.5053, + "confidence": 0.82 + }, + { + "name": "left_knee", + "x": 0.611, + "y": 0.6516, + "confidence": 0.848 + }, + { + "name": "right_knee", + "x": 0.4629, + "y": 0.6054, + "confidence": 0.648 + }, + { + "name": "left_ankle", + "x": 0.634, + "y": 0.7932, + "confidence": 0.738 + }, + { + "name": "right_ankle", + "x": 0.3401, + "y": 0.6618, + "confidence": 0.851 + } + ] + } + ] + }, + { + "frame_index": 114, + "timestamp": 1.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3784, + "acceleration": 15.9286, + "fluidity": 0.108, + "expansion": 0.389, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6601, + "y": 0.3423, + "confidence": 0.601 + }, + { + "name": "left_eye", + "x": 0.6648, + "y": 0.3312, + "confidence": 0.838 + }, + { + "name": "right_eye", + "x": 0.6567, + "y": 0.3243, + "confidence": 0.609 + }, + { + "name": "left_ear", + "x": 0.6368, + "y": 0.3169, + "confidence": 0.653 + }, + { + "name": "right_ear", + "x": 0.6202, + "y": 0.3018, + "confidence": 0.874 + }, + { + "name": "left_shoulder", + "x": 0.6446, + "y": 0.3812, + "confidence": 0.766 + }, + { + "name": "right_shoulder", + "x": 0.551, + "y": 0.3026, + "confidence": 0.887 + }, + { + "name": "left_elbow", + "x": 0.7025, + "y": 0.4212, + "confidence": 0.911 + }, + { + "name": "right_elbow", + "x": 0.4709, + "y": 0.2757, + "confidence": 0.825 + }, + { + "name": "left_wrist", + "x": 0.7889, + "y": 0.474, + "confidence": 0.919 + }, + { + "name": "right_wrist", + "x": 0.3939, + "y": 0.2399, + "confidence": 0.832 + }, + { + "name": "left_hip", + "x": 0.5428, + "y": 0.5247, + "confidence": 0.85 + }, + { + "name": "right_hip", + "x": 0.4923, + "y": 0.5056, + "confidence": 0.819 + }, + { + "name": "left_knee", + "x": 0.611, + "y": 0.6516, + "confidence": 0.846 + }, + { + "name": "right_knee", + "x": 0.463, + "y": 0.6052, + "confidence": 0.643 + }, + { + "name": "left_ankle", + "x": 0.6341, + "y": 0.7935, + "confidence": 0.737 + }, + { + "name": "right_ankle", + "x": 0.3403, + "y": 0.6618, + "confidence": 0.852 + } + ] + } + ] + }, + { + "frame_index": 115, + "timestamp": 1.9166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.465, + "acceleration": 5.197, + "fluidity": 0.036, + "expansion": 0.387, + "total_displacement": 0.0169, + "center_displacement": { + "x": 0.0022, + "y": 0.0168 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6654, + "y": 0.3618, + "confidence": 0.809 + }, + { + "name": "left_eye", + "x": 0.6683, + "y": 0.3494, + "confidence": 0.78 + }, + { + "name": "right_eye", + "x": 0.6597, + "y": 0.3443, + "confidence": 0.68 + }, + { + "name": "left_ear", + "x": 0.6368, + "y": 0.334, + "confidence": 0.691 + }, + { + "name": "right_ear", + "x": 0.6247, + "y": 0.3241, + "confidence": 0.786 + }, + { + "name": "left_shoulder", + "x": 0.6437, + "y": 0.3966, + "confidence": 0.602 + }, + { + "name": "right_shoulder", + "x": 0.558, + "y": 0.327, + "confidence": 0.839 + }, + { + "name": "left_elbow", + "x": 0.707, + "y": 0.4324, + "confidence": 0.819 + }, + { + "name": "right_elbow", + "x": 0.4591, + "y": 0.2951, + "confidence": 0.855 + }, + { + "name": "left_wrist", + "x": 0.7875, + "y": 0.483, + "confidence": 0.841 + }, + { + "name": "right_wrist", + "x": 0.3762, + "y": 0.2762, + "confidence": 0.778 + }, + { + "name": "left_hip", + "x": 0.5397, + "y": 0.537, + "confidence": 0.819 + }, + { + "name": "right_hip", + "x": 0.4981, + "y": 0.5206, + "confidence": 0.781 + }, + { + "name": "left_knee", + "x": 0.6089, + "y": 0.6749, + "confidence": 0.757 + }, + { + "name": "right_knee", + "x": 0.4779, + "y": 0.6149, + "confidence": 0.79 + }, + { + "name": "left_ankle", + "x": 0.6231, + "y": 0.8175, + "confidence": 0.602 + }, + { + "name": "right_ankle", + "x": 0.3322, + "y": 0.648, + "confidence": 0.79 + } + ] + } + ] + }, + { + "frame_index": 116, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4417, + "acceleration": -1.3979, + "fluidity": 0.012, + "expansion": 0.38, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6654, + "y": 0.3618, + "confidence": 0.808 + }, + { + "name": "left_eye", + "x": 0.6683, + "y": 0.3494, + "confidence": 0.779 + }, + { + "name": "right_eye", + "x": 0.6597, + "y": 0.3443, + "confidence": 0.679 + }, + { + "name": "left_ear", + "x": 0.6368, + "y": 0.3339, + "confidence": 0.694 + }, + { + "name": "right_ear", + "x": 0.6247, + "y": 0.324, + "confidence": 0.786 + }, + { + "name": "left_shoulder", + "x": 0.6437, + "y": 0.3966, + "confidence": 0.603 + }, + { + "name": "right_shoulder", + "x": 0.5581, + "y": 0.3269, + "confidence": 0.839 + }, + { + "name": "left_elbow", + "x": 0.7071, + "y": 0.4325, + "confidence": 0.819 + }, + { + "name": "right_elbow", + "x": 0.459, + "y": 0.2951, + "confidence": 0.857 + }, + { + "name": "left_wrist", + "x": 0.7875, + "y": 0.483, + "confidence": 0.842 + }, + { + "name": "right_wrist", + "x": 0.376, + "y": 0.2765, + "confidence": 0.778 + }, + { + "name": "left_hip", + "x": 0.5397, + "y": 0.5371, + "confidence": 0.819 + }, + { + "name": "right_hip", + "x": 0.4981, + "y": 0.5206, + "confidence": 0.78 + }, + { + "name": "left_knee", + "x": 0.609, + "y": 0.6748, + "confidence": 0.758 + }, + { + "name": "right_knee", + "x": 0.4778, + "y": 0.615, + "confidence": 0.791 + }, + { + "name": "left_ankle", + "x": 0.6231, + "y": 0.8177, + "confidence": 0.602 + }, + { + "name": "right_ankle", + "x": 0.3321, + "y": 0.648, + "confidence": 0.79 + } + ] + } + ] + }, + { + "frame_index": 117, + "timestamp": 1.95, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4346, + "acceleration": -0.4277, + "fluidity": 0.004, + "expansion": 0.371, + "total_displacement": 0.0143, + "center_displacement": { + "x": 0.0052, + "y": 0.0134 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6718, + "y": 0.3718, + "confidence": 0.529 + }, + { + "name": "left_eye", + "x": 0.6722, + "y": 0.3588, + "confidence": 0.596 + }, + { + "name": "right_eye", + "x": 0.6662, + "y": 0.3567, + "confidence": 0.772 + }, + { + "name": "left_ear", + "x": 0.6391, + "y": 0.3476, + "confidence": 0.751 + }, + { + "name": "right_ear", + "x": 0.6277, + "y": 0.343, + "confidence": 0.704 + }, + { + "name": "left_shoulder", + "x": 0.6452, + "y": 0.4123, + "confidence": 0.772 + }, + { + "name": "right_shoulder", + "x": 0.56, + "y": 0.3483, + "confidence": 0.838 + }, + { + "name": "left_elbow", + "x": 0.7121, + "y": 0.4555, + "confidence": 0.742 + }, + { + "name": "right_elbow", + "x": 0.4571, + "y": 0.3281, + "confidence": 0.626 + }, + { + "name": "left_wrist", + "x": 0.7768, + "y": 0.4902, + "confidence": 0.857 + }, + { + "name": "right_wrist", + "x": 0.3673, + "y": 0.311, + "confidence": 0.853 + }, + { + "name": "left_hip", + "x": 0.5447, + "y": 0.5462, + "confidence": 0.788 + }, + { + "name": "right_hip", + "x": 0.5104, + "y": 0.5278, + "confidence": 0.82 + }, + { + "name": "left_knee", + "x": 0.6078, + "y": 0.694, + "confidence": 0.602 + }, + { + "name": "right_knee", + "x": 0.4969, + "y": 0.6373, + "confidence": 0.679 + }, + { + "name": "left_ankle", + "x": 0.6, + "y": 0.8147, + "confidence": 0.665 + }, + { + "name": "right_ankle", + "x": 0.335, + "y": 0.6396, + "confidence": 0.854 + } + ] + } + ] + }, + { + "frame_index": 118, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1461, + "acceleration": -17.3115, + "fluidity": 0.117, + "expansion": 0.368, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6718, + "y": 0.3717, + "confidence": 0.527 + }, + { + "name": "left_eye", + "x": 0.6722, + "y": 0.3587, + "confidence": 0.593 + }, + { + "name": "right_eye", + "x": 0.6661, + "y": 0.3567, + "confidence": 0.774 + }, + { + "name": "left_ear", + "x": 0.6392, + "y": 0.3476, + "confidence": 0.749 + }, + { + "name": "right_ear", + "x": 0.6277, + "y": 0.343, + "confidence": 0.703 + }, + { + "name": "left_shoulder", + "x": 0.6454, + "y": 0.4123, + "confidence": 0.774 + }, + { + "name": "right_shoulder", + "x": 0.5598, + "y": 0.3482, + "confidence": 0.837 + }, + { + "name": "left_elbow", + "x": 0.7124, + "y": 0.4555, + "confidence": 0.742 + }, + { + "name": "right_elbow", + "x": 0.4571, + "y": 0.3282, + "confidence": 0.621 + }, + { + "name": "left_wrist", + "x": 0.7769, + "y": 0.4902, + "confidence": 0.857 + }, + { + "name": "right_wrist", + "x": 0.3675, + "y": 0.311, + "confidence": 0.854 + }, + { + "name": "left_hip", + "x": 0.5447, + "y": 0.5463, + "confidence": 0.787 + }, + { + "name": "right_hip", + "x": 0.5103, + "y": 0.5279, + "confidence": 0.82 + }, + { + "name": "left_knee", + "x": 0.6077, + "y": 0.694, + "confidence": 0.6 + }, + { + "name": "right_knee", + "x": 0.4969, + "y": 0.6372, + "confidence": 0.676 + }, + { + "name": "left_ankle", + "x": 0.5999, + "y": 0.8145, + "confidence": 0.666 + }, + { + "name": "right_ankle", + "x": 0.335, + "y": 0.6396, + "confidence": 0.854 + } + ] + } + ] + }, + { + "frame_index": 119, + "timestamp": 1.9833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.352, + "acceleration": 12.3528, + "fluidity": 0.155, + "expansion": 0.36, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6718, + "y": 0.3717, + "confidence": 0.528 + }, + { + "name": "left_eye", + "x": 0.6722, + "y": 0.3587, + "confidence": 0.595 + }, + { + "name": "right_eye", + "x": 0.6662, + "y": 0.3567, + "confidence": 0.774 + }, + { + "name": "left_ear", + "x": 0.6391, + "y": 0.3476, + "confidence": 0.749 + }, + { + "name": "right_ear", + "x": 0.6277, + "y": 0.343, + "confidence": 0.703 + }, + { + "name": "left_shoulder", + "x": 0.6452, + "y": 0.4124, + "confidence": 0.771 + }, + { + "name": "right_shoulder", + "x": 0.5599, + "y": 0.3482, + "confidence": 0.836 + }, + { + "name": "left_elbow", + "x": 0.7122, + "y": 0.4555, + "confidence": 0.744 + }, + { + "name": "right_elbow", + "x": 0.4571, + "y": 0.3281, + "confidence": 0.618 + }, + { + "name": "left_wrist", + "x": 0.7768, + "y": 0.4902, + "confidence": 0.856 + }, + { + "name": "right_wrist", + "x": 0.3679, + "y": 0.311, + "confidence": 0.858 + }, + { + "name": "left_hip", + "x": 0.5448, + "y": 0.5463, + "confidence": 0.789 + }, + { + "name": "right_hip", + "x": 0.5103, + "y": 0.5279, + "confidence": 0.821 + }, + { + "name": "left_knee", + "x": 0.6077, + "y": 0.6938, + "confidence": 0.603 + }, + { + "name": "right_knee", + "x": 0.497, + "y": 0.6372, + "confidence": 0.676 + }, + { + "name": "left_ankle", + "x": 0.5998, + "y": 0.815, + "confidence": 0.662 + }, + { + "name": "right_ankle", + "x": 0.3348, + "y": 0.6395, + "confidence": 0.853 + } + ] + } + ] + }, + { + "frame_index": 120, + "timestamp": 2, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4214, + "acceleration": 4.1685, + "fluidity": 0.052, + "expansion": 0.35, + "total_displacement": 0.0152, + "center_displacement": { + "x": 0.0055, + "y": 0.0141 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6779, + "y": 0.389, + "confidence": 0.754 + }, + { + "name": "left_eye", + "x": 0.6761, + "y": 0.372, + "confidence": 0.623 + }, + { + "name": "right_eye", + "x": 0.6713, + "y": 0.3711, + "confidence": 0.702 + }, + { + "name": "left_ear", + "x": 0.6418, + "y": 0.3625, + "confidence": 0.748 + }, + { + "name": "right_ear", + "x": 0.6328, + "y": 0.3596, + "confidence": 0.774 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.4297, + "confidence": 0.716 + }, + { + "name": "right_shoulder", + "x": 0.5779, + "y": 0.3639, + "confidence": 0.804 + }, + { + "name": "left_elbow", + "x": 0.7176, + "y": 0.4745, + "confidence": 0.825 + }, + { + "name": "right_elbow", + "x": 0.4716, + "y": 0.3611, + "confidence": 0.772 + }, + { + "name": "left_wrist", + "x": 0.7751, + "y": 0.4899, + "confidence": 0.829 + }, + { + "name": "right_wrist", + "x": 0.3785, + "y": 0.3546, + "confidence": 0.841 + }, + { + "name": "left_hip", + "x": 0.5484, + "y": 0.5587, + "confidence": 0.77 + }, + { + "name": "right_hip", + "x": 0.5117, + "y": 0.5389, + "confidence": 0.698 + }, + { + "name": "left_knee", + "x": 0.6125, + "y": 0.6798, + "confidence": 0.662 + }, + { + "name": "right_knee", + "x": 0.5197, + "y": 0.6463, + "confidence": 0.739 + }, + { + "name": "left_ankle", + "x": 0.5961, + "y": 0.8191, + "confidence": 0.579 + }, + { + "name": "right_ankle", + "x": 0.3531, + "y": 0.6406, + "confidence": 0.74 + } + ] + } + ] + }, + { + "frame_index": 121, + "timestamp": 2.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3985, + "acceleration": -1.3788, + "fluidity": 0.017, + "expansion": 0.341, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6779, + "y": 0.389, + "confidence": 0.754 + }, + { + "name": "left_eye", + "x": 0.6761, + "y": 0.372, + "confidence": 0.621 + }, + { + "name": "right_eye", + "x": 0.6713, + "y": 0.371, + "confidence": 0.703 + }, + { + "name": "left_ear", + "x": 0.6418, + "y": 0.3625, + "confidence": 0.748 + }, + { + "name": "right_ear", + "x": 0.6327, + "y": 0.3596, + "confidence": 0.774 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.4298, + "confidence": 0.716 + }, + { + "name": "right_shoulder", + "x": 0.5779, + "y": 0.3638, + "confidence": 0.804 + }, + { + "name": "left_elbow", + "x": 0.7181, + "y": 0.4748, + "confidence": 0.828 + }, + { + "name": "right_elbow", + "x": 0.4714, + "y": 0.3611, + "confidence": 0.763 + }, + { + "name": "left_wrist", + "x": 0.7752, + "y": 0.4899, + "confidence": 0.831 + }, + { + "name": "right_wrist", + "x": 0.3786, + "y": 0.3545, + "confidence": 0.838 + }, + { + "name": "left_hip", + "x": 0.5484, + "y": 0.5585, + "confidence": 0.77 + }, + { + "name": "right_hip", + "x": 0.5116, + "y": 0.5389, + "confidence": 0.697 + }, + { + "name": "left_knee", + "x": 0.6123, + "y": 0.68, + "confidence": 0.66 + }, + { + "name": "right_knee", + "x": 0.5197, + "y": 0.6461, + "confidence": 0.742 + }, + { + "name": "left_ankle", + "x": 0.5961, + "y": 0.8193, + "confidence": 0.573 + }, + { + "name": "right_ankle", + "x": 0.3534, + "y": 0.6406, + "confidence": 0.74 + } + ] + } + ] + }, + { + "frame_index": 122, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.391, + "acceleration": -0.4474, + "fluidity": 0.006, + "expansion": 0.332, + "total_displacement": 0.0128, + "center_displacement": { + "x": 0.0031, + "y": 0.0125 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.684, + "y": 0.4013, + "confidence": 0.731 + }, + { + "name": "left_eye", + "x": 0.6802, + "y": 0.3833, + "confidence": 0.781 + }, + { + "name": "right_eye", + "x": 0.6768, + "y": 0.3827, + "confidence": 0.722 + }, + { + "name": "left_ear", + "x": 0.6464, + "y": 0.3798, + "confidence": 0.717 + }, + { + "name": "right_ear", + "x": 0.64, + "y": 0.3771, + "confidence": 0.65 + }, + { + "name": "left_shoulder", + "x": 0.6542, + "y": 0.4501, + "confidence": 0.771 + }, + { + "name": "right_shoulder", + "x": 0.5789, + "y": 0.3801, + "confidence": 0.852 + }, + { + "name": "left_elbow", + "x": 0.7142, + "y": 0.4913, + "confidence": 0.804 + }, + { + "name": "right_elbow", + "x": 0.4734, + "y": 0.3814, + "confidence": 0.708 + }, + { + "name": "left_wrist", + "x": 0.7785, + "y": 0.494, + "confidence": 0.551 + }, + { + "name": "right_wrist", + "x": 0.3949, + "y": 0.3945, + "confidence": 0.766 + }, + { + "name": "left_hip", + "x": 0.5538, + "y": 0.5645, + "confidence": 0.639 + }, + { + "name": "right_hip", + "x": 0.5081, + "y": 0.5462, + "confidence": 0.632 + }, + { + "name": "left_knee", + "x": 0.615, + "y": 0.6906, + "confidence": 0.839 + }, + { + "name": "right_knee", + "x": 0.5574, + "y": 0.6608, + "confidence": 0.381 + }, + { + "name": "left_ankle", + "x": 0.5828, + "y": 0.8274, + "confidence": 0.75 + }, + { + "name": "right_ankle", + "x": 0.3798, + "y": 0.6538, + "confidence": 0.754 + } + ] + } + ] + }, + { + "frame_index": 123, + "timestamp": 2.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1319, + "acceleration": -15.5452, + "fluidity": 0.032, + "expansion": 0.329, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6841, + "y": 0.4014, + "confidence": 0.729 + }, + { + "name": "left_eye", + "x": 0.6802, + "y": 0.3834, + "confidence": 0.779 + }, + { + "name": "right_eye", + "x": 0.6769, + "y": 0.3828, + "confidence": 0.724 + }, + { + "name": "left_ear", + "x": 0.6464, + "y": 0.3798, + "confidence": 0.717 + }, + { + "name": "right_ear", + "x": 0.6428, + "y": 0.3753, + "confidence": 0.731 + }, + { + "name": "left_shoulder", + "x": 0.6543, + "y": 0.4502, + "confidence": 0.771 + }, + { + "name": "right_shoulder", + "x": 0.5789, + "y": 0.3801, + "confidence": 0.852 + }, + { + "name": "left_elbow", + "x": 0.7142, + "y": 0.4912, + "confidence": 0.805 + }, + { + "name": "right_elbow", + "x": 0.4735, + "y": 0.3814, + "confidence": 0.707 + }, + { + "name": "left_wrist", + "x": 0.7786, + "y": 0.4939, + "confidence": 0.549 + }, + { + "name": "right_wrist", + "x": 0.395, + "y": 0.3945, + "confidence": 0.766 + }, + { + "name": "left_hip", + "x": 0.5539, + "y": 0.5646, + "confidence": 0.641 + }, + { + "name": "right_hip", + "x": 0.508, + "y": 0.5462, + "confidence": 0.63 + }, + { + "name": "left_knee", + "x": 0.615, + "y": 0.6905, + "confidence": 0.838 + }, + { + "name": "right_knee", + "x": 0.5573, + "y": 0.6607, + "confidence": 0.379 + }, + { + "name": "left_ankle", + "x": 0.5828, + "y": 0.8273, + "confidence": 0.749 + }, + { + "name": "right_ankle", + "x": 0.38, + "y": 0.6539, + "confidence": 0.756 + } + ] + } + ] + }, + { + "frame_index": 124, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1358, + "acceleration": 0.2323, + "fluidity": 0.041, + "expansion": 0.345, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.684, + "y": 0.4014, + "confidence": 0.731 + }, + { + "name": "left_eye", + "x": 0.6802, + "y": 0.3833, + "confidence": 0.782 + }, + { + "name": "right_eye", + "x": 0.6768, + "y": 0.3828, + "confidence": 0.723 + }, + { + "name": "left_ear", + "x": 0.6464, + "y": 0.3799, + "confidence": 0.718 + }, + { + "name": "right_ear", + "x": 0.6427, + "y": 0.3754, + "confidence": 0.735 + }, + { + "name": "left_shoulder", + "x": 0.6543, + "y": 0.4502, + "confidence": 0.771 + }, + { + "name": "right_shoulder", + "x": 0.5789, + "y": 0.3801, + "confidence": 0.852 + }, + { + "name": "left_elbow", + "x": 0.7145, + "y": 0.4913, + "confidence": 0.804 + }, + { + "name": "right_elbow", + "x": 0.4733, + "y": 0.3813, + "confidence": 0.708 + }, + { + "name": "left_wrist", + "x": 0.7785, + "y": 0.4939, + "confidence": 0.545 + }, + { + "name": "right_wrist", + "x": 0.3949, + "y": 0.3945, + "confidence": 0.765 + }, + { + "name": "left_hip", + "x": 0.5538, + "y": 0.5646, + "confidence": 0.641 + }, + { + "name": "right_hip", + "x": 0.5079, + "y": 0.5462, + "confidence": 0.629 + }, + { + "name": "left_knee", + "x": 0.6149, + "y": 0.6906, + "confidence": 0.839 + }, + { + "name": "right_knee", + "x": 0.5575, + "y": 0.6607, + "confidence": 0.377 + }, + { + "name": "left_ankle", + "x": 0.5828, + "y": 0.8274, + "confidence": 0.748 + }, + { + "name": "right_ankle", + "x": 0.38, + "y": 0.6539, + "confidence": 0.756 + } + ] + } + ] + }, + { + "frame_index": 125, + "timestamp": 2.0833333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1384, + "acceleration": 0.1575, + "fluidity": 0.014, + "expansion": 0.368, + "total_displacement": 0.0046, + "center_displacement": { + "x": -0.0014, + "y": 0.0044 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.687, + "y": 0.418, + "confidence": 0.473 + }, + { + "name": "left_eye", + "x": 0.6838, + "y": 0.4037, + "confidence": 0.529 + }, + { + "name": "right_eye", + "x": 0.6817, + "y": 0.4017, + "confidence": 0.695 + }, + { + "name": "left_ear", + "x": 0.6511, + "y": 0.401, + "confidence": 0.693 + }, + { + "name": "right_ear", + "x": 0.6457, + "y": 0.3943, + "confidence": 0.758 + }, + { + "name": "left_shoulder", + "x": 0.6463, + "y": 0.4631, + "confidence": 0.634 + }, + { + "name": "right_shoulder", + "x": 0.5887, + "y": 0.387, + "confidence": 0.773 + }, + { + "name": "left_elbow", + "x": 0.7084, + "y": 0.5096, + "confidence": 0.724 + }, + { + "name": "right_elbow", + "x": 0.4843, + "y": 0.3964, + "confidence": 0.74 + }, + { + "name": "left_wrist", + "x": 0.7724, + "y": 0.4985, + "confidence": 0.697 + }, + { + "name": "right_wrist", + "x": 0.4341, + "y": 0.4319, + "confidence": 0.717 + }, + { + "name": "left_hip", + "x": 0.5477, + "y": 0.5607, + "confidence": 0.576 + }, + { + "name": "right_hip", + "x": 0.5065, + "y": 0.5477, + "confidence": 0.55 + }, + { + "name": "left_knee", + "x": 0.5906, + "y": 0.6957, + "confidence": 0.523 + }, + { + "name": "right_knee", + "x": 0.5952, + "y": 0.6799, + "confidence": 0.537 + }, + { + "name": "left_ankle", + "x": 0.4012, + "y": 0.6807, + "confidence": 0.46 + }, + { + "name": "right_ankle", + "x": 0.5549, + "y": 0.8162, + "confidence": 0.22 + } + ] + } + ] + }, + { + "frame_index": 126, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7133, + "acceleration": 34.4962, + "fluidity": 0.005, + "expansion": 0.327, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.687, + "y": 0.418, + "confidence": 0.476 + }, + { + "name": "left_eye", + "x": 0.6838, + "y": 0.4037, + "confidence": 0.531 + }, + { + "name": "right_eye", + "x": 0.6817, + "y": 0.4017, + "confidence": 0.692 + }, + { + "name": "left_ear", + "x": 0.651, + "y": 0.4009, + "confidence": 0.697 + }, + { + "name": "right_ear", + "x": 0.6458, + "y": 0.3943, + "confidence": 0.758 + }, + { + "name": "left_shoulder", + "x": 0.6462, + "y": 0.4631, + "confidence": 0.633 + }, + { + "name": "right_shoulder", + "x": 0.5887, + "y": 0.387, + "confidence": 0.773 + }, + { + "name": "left_elbow", + "x": 0.7085, + "y": 0.5097, + "confidence": 0.728 + }, + { + "name": "right_elbow", + "x": 0.4842, + "y": 0.3964, + "confidence": 0.74 + }, + { + "name": "left_wrist", + "x": 0.7725, + "y": 0.4985, + "confidence": 0.692 + }, + { + "name": "right_wrist", + "x": 0.4343, + "y": 0.4319, + "confidence": 0.718 + }, + { + "name": "left_hip", + "x": 0.5475, + "y": 0.5608, + "confidence": 0.574 + }, + { + "name": "right_hip", + "x": 0.5065, + "y": 0.5476, + "confidence": 0.546 + }, + { + "name": "left_knee", + "x": 0.5907, + "y": 0.6956, + "confidence": 0.525 + }, + { + "name": "right_knee", + "x": 0.5953, + "y": 0.6799, + "confidence": 0.541 + }, + { + "name": "left_ankle", + "x": 0.4011, + "y": 0.6807, + "confidence": 0.462 + }, + { + "name": "right_ankle", + "x": 0.5552, + "y": 0.8162, + "confidence": 0.224 + } + ] + } + ] + }, + { + "frame_index": 127, + "timestamp": 2.1166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.9076, + "acceleration": 11.6542, + "fluidity": 0.002, + "expansion": 0.265, + "total_displacement": 0.0333, + "center_displacement": { + "x": -0.0131, + "y": 0.0306 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6894, + "y": 0.4638, + "confidence": 0.677 + }, + { + "name": "left_eye", + "x": 0.6895, + "y": 0.4574, + "confidence": 0.704 + }, + { + "name": "right_eye", + "x": 0.6876, + "y": 0.4518, + "confidence": 0.565 + }, + { + "name": "left_ear", + "x": 0.659, + "y": 0.4516, + "confidence": 0.593 + }, + { + "name": "right_ear", + "x": 0.6603, + "y": 0.4355, + "confidence": 0.622 + }, + { + "name": "left_shoulder", + "x": 0.6514, + "y": 0.4892, + "confidence": 0.544 + }, + { + "name": "right_shoulder", + "x": 0.6163, + "y": 0.4089, + "confidence": 0.447 + }, + { + "name": "left_elbow", + "x": 0.6946, + "y": 0.5416, + "confidence": 0.528 + }, + { + "name": "right_elbow", + "x": 0.5291, + "y": 0.3963, + "confidence": 0.682 + }, + { + "name": "left_wrist", + "x": 0.7695, + "y": 0.5299, + "confidence": 0.652 + }, + { + "name": "right_wrist", + "x": 0.5394, + "y": 0.4595, + "confidence": 0.51 + }, + { + "name": "left_hip", + "x": 0.5247, + "y": 0.5464, + "confidence": 0.517 + }, + { + "name": "right_hip", + "x": 0.5014, + "y": 0.5252, + "confidence": 0.768 + }, + { + "name": "left_knee", + "x": 0.6114, + "y": 0.6781, + "confidence": 0.578 + }, + { + "name": "right_knee", + "x": 0.6054, + "y": 0.666, + "confidence": 0.558 + }, + { + "name": "left_ankle", + "x": 0.5171, + "y": 0.7851, + "confidence": 0.465 + }, + { + "name": "right_ankle", + "x": 0.4896, + "y": 0.7546, + "confidence": 0.397 + } + ] + } + ] + }, + { + "frame_index": 128, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3099, + "acceleration": -35.8637, + "fluidity": 0.005, + "expansion": 0.244, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6893, + "y": 0.464, + "confidence": 0.674 + }, + { + "name": "left_eye", + "x": 0.6894, + "y": 0.4575, + "confidence": 0.704 + }, + { + "name": "right_eye", + "x": 0.6875, + "y": 0.4518, + "confidence": 0.563 + }, + { + "name": "left_ear", + "x": 0.6589, + "y": 0.4513, + "confidence": 0.594 + }, + { + "name": "right_ear", + "x": 0.6604, + "y": 0.4351, + "confidence": 0.621 + }, + { + "name": "left_shoulder", + "x": 0.6515, + "y": 0.4893, + "confidence": 0.538 + }, + { + "name": "right_shoulder", + "x": 0.6164, + "y": 0.409, + "confidence": 0.453 + }, + { + "name": "left_elbow", + "x": 0.6948, + "y": 0.5416, + "confidence": 0.525 + }, + { + "name": "right_elbow", + "x": 0.529, + "y": 0.3968, + "confidence": 0.686 + }, + { + "name": "left_wrist", + "x": 0.7701, + "y": 0.5296, + "confidence": 0.659 + }, + { + "name": "right_wrist", + "x": 0.5391, + "y": 0.4596, + "confidence": 0.506 + }, + { + "name": "left_hip", + "x": 0.5248, + "y": 0.5463, + "confidence": 0.515 + }, + { + "name": "right_hip", + "x": 0.5018, + "y": 0.5252, + "confidence": 0.766 + }, + { + "name": "left_knee", + "x": 0.6111, + "y": 0.6782, + "confidence": 0.57 + }, + { + "name": "right_knee", + "x": 0.6057, + "y": 0.6661, + "confidence": 0.562 + }, + { + "name": "left_ankle", + "x": 0.517, + "y": 0.7853, + "confidence": 0.454 + }, + { + "name": "right_ankle", + "x": 0.4999, + "y": 0.7636, + "confidence": 0.382 + } + ] + } + ] + }, + { + "frame_index": 129, + "timestamp": 2.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.3703, + "acceleration": 63.6246, + "fluidity": 0.007, + "expansion": 0.235, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6893, + "y": 0.464, + "confidence": 0.673 + }, + { + "name": "left_eye", + "x": 0.6892, + "y": 0.4575, + "confidence": 0.7 + }, + { + "name": "right_eye", + "x": 0.6875, + "y": 0.4519, + "confidence": 0.562 + }, + { + "name": "left_ear", + "x": 0.6585, + "y": 0.4513, + "confidence": 0.59 + }, + { + "name": "right_ear", + "x": 0.6601, + "y": 0.4352, + "confidence": 0.625 + }, + { + "name": "left_shoulder", + "x": 0.6514, + "y": 0.4893, + "confidence": 0.533 + }, + { + "name": "right_shoulder", + "x": 0.6161, + "y": 0.4091, + "confidence": 0.457 + }, + { + "name": "left_elbow", + "x": 0.6948, + "y": 0.5416, + "confidence": 0.519 + }, + { + "name": "right_elbow", + "x": 0.5293, + "y": 0.397, + "confidence": 0.691 + }, + { + "name": "left_wrist", + "x": 0.7701, + "y": 0.5294, + "confidence": 0.666 + }, + { + "name": "right_wrist", + "x": 0.5393, + "y": 0.4594, + "confidence": 0.502 + }, + { + "name": "left_hip", + "x": 0.5246, + "y": 0.5466, + "confidence": 0.507 + }, + { + "name": "right_hip", + "x": 0.5018, + "y": 0.5253, + "confidence": 0.76 + }, + { + "name": "left_knee", + "x": 0.611, + "y": 0.6783, + "confidence": 0.569 + }, + { + "name": "right_knee", + "x": 0.6061, + "y": 0.6659, + "confidence": 0.569 + }, + { + "name": "left_ankle", + "x": 0.5172, + "y": 0.7854, + "confidence": 0.462 + }, + { + "name": "right_ankle", + "x": 0.4998, + "y": 0.7635, + "confidence": 0.376 + } + ] + } + ] + }, + { + "frame_index": 130, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.7394, + "acceleration": 22.1498, + "fluidity": 0.002, + "expansion": 0.229, + "total_displacement": 0.0632, + "center_displacement": { + "x": -0.0624, + "y": 0.0101 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6895, + "y": 0.4743, + "confidence": 0.655 + }, + { + "name": "left_eye", + "x": 0.6899, + "y": 0.4701, + "confidence": 0.594 + }, + { + "name": "right_eye", + "x": 0.6861, + "y": 0.4635, + "confidence": 0.418 + }, + { + "name": "left_ear", + "x": 0.6657, + "y": 0.4692, + "confidence": 0.331 + }, + { + "name": "right_ear", + "x": 0.6593, + "y": 0.4528, + "confidence": 0.548 + }, + { + "name": "left_shoulder", + "x": 0.6489, + "y": 0.502, + "confidence": 0.492 + }, + { + "name": "right_shoulder", + "x": 0.626, + "y": 0.4285, + "confidence": 0.41 + }, + { + "name": "left_elbow", + "x": 0.6923, + "y": 0.5497, + "confidence": 0.546 + }, + { + "name": "right_elbow", + "x": 0.5485, + "y": 0.3925, + "confidence": 0.509 + }, + { + "name": "left_wrist", + "x": 0.7702, + "y": 0.5472, + "confidence": 0.507 + }, + { + "name": "right_wrist", + "x": 0.5627, + "y": 0.457, + "confidence": 0.69 + }, + { + "name": "left_hip", + "x": 0.4883, + "y": 0.5429, + "confidence": 0.639 + }, + { + "name": "right_hip", + "x": 0.5055, + "y": 0.518, + "confidence": 0.653 + }, + { + "name": "left_knee", + "x": 0.5972, + "y": 0.672, + "confidence": 0.341 + }, + { + "name": "right_knee", + "x": 0.6328, + "y": 0.6544, + "confidence": 0.53 + }, + { + "name": "left_ankle", + "x": 0.5182, + "y": 0.776, + "confidence": 0.32 + }, + { + "name": "right_ankle", + "x": 0.5464, + "y": 0.7624, + "confidence": 0.534 + } + ] + } + ] + }, + { + "frame_index": 131, + "timestamp": 2.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.3501, + "acceleration": 36.6398, + "fluidity": 0.001, + "expansion": 0.239, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0003, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6894, + "y": 0.4741, + "confidence": 0.655 + }, + { + "name": "left_eye", + "x": 0.6898, + "y": 0.4699, + "confidence": 0.587 + }, + { + "name": "right_eye", + "x": 0.686, + "y": 0.4633, + "confidence": 0.414 + }, + { + "name": "left_ear", + "x": 0.6657, + "y": 0.4691, + "confidence": 0.329 + }, + { + "name": "right_ear", + "x": 0.6594, + "y": 0.4529, + "confidence": 0.55 + }, + { + "name": "left_shoulder", + "x": 0.649, + "y": 0.5022, + "confidence": 0.496 + }, + { + "name": "right_shoulder", + "x": 0.626, + "y": 0.4286, + "confidence": 0.412 + }, + { + "name": "left_elbow", + "x": 0.6924, + "y": 0.5498, + "confidence": 0.55 + }, + { + "name": "right_elbow", + "x": 0.5486, + "y": 0.3926, + "confidence": 0.509 + }, + { + "name": "left_wrist", + "x": 0.7704, + "y": 0.5473, + "confidence": 0.512 + }, + { + "name": "right_wrist", + "x": 0.5627, + "y": 0.4569, + "confidence": 0.69 + }, + { + "name": "left_hip", + "x": 0.4889, + "y": 0.5444, + "confidence": 0.576 + }, + { + "name": "right_hip", + "x": 0.5055, + "y": 0.5183, + "confidence": 0.657 + }, + { + "name": "left_knee", + "x": 0.5979, + "y": 0.672, + "confidence": 0.345 + }, + { + "name": "right_knee", + "x": 0.6329, + "y": 0.6545, + "confidence": 0.535 + }, + { + "name": "left_ankle", + "x": 0.5185, + "y": 0.7761, + "confidence": 0.322 + }, + { + "name": "right_ankle", + "x": 0.5463, + "y": 0.762, + "confidence": 0.526 + } + ] + } + ] + }, + { + "frame_index": 132, + "timestamp": 2.2, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.5354, + "acceleration": 11.1196, + "fluidity": 0, + "expansion": 0.255, + "total_displacement": 0.0876, + "center_displacement": { + "x": 0.063, + "y": -0.0609 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.686, + "y": 0.5045, + "confidence": 0.551 + }, + { + "name": "left_eye", + "x": 0.69, + "y": 0.5008, + "confidence": 0.662 + }, + { + "name": "right_eye", + "x": 0.6881, + "y": 0.4944, + "confidence": 0.459 + }, + { + "name": "left_ear", + "x": 0.6769, + "y": 0.4838, + "confidence": 0.339 + }, + { + "name": "right_ear", + "x": 0.6753, + "y": 0.4649, + "confidence": 0.632 + }, + { + "name": "left_shoulder", + "x": 0.635, + "y": 0.5112, + "confidence": 0.348 + }, + { + "name": "right_shoulder", + "x": 0.6264, + "y": 0.4232, + "confidence": 0.515 + }, + { + "name": "left_elbow", + "x": 0.6679, + "y": 0.5772, + "confidence": 0.623 + }, + { + "name": "right_elbow", + "x": 0.5991, + "y": 0.3808, + "confidence": 0.46 + }, + { + "name": "left_wrist", + "x": 0.7586, + "y": 0.5957, + "confidence": 0.748 + }, + { + "name": "right_wrist", + "x": 0.6583, + "y": 0.4634, + "confidence": 0.454 + }, + { + "name": "left_hip", + "x": 0.4939, + "y": 0.5178, + "confidence": 0.759 + }, + { + "name": "right_hip", + "x": 0.5281, + "y": 0.5038, + "confidence": 0.468 + }, + { + "name": "left_knee", + "x": 0.5161, + "y": 0.6969, + "confidence": 0.785 + }, + { + "name": "right_knee", + "x": 0.6422, + "y": 0.667, + "confidence": 0.454 + }, + { + "name": "left_ankle", + "x": 0.4031, + "y": 0.7728, + "confidence": 0.262 + }, + { + "name": "right_ankle", + "x": 0.6267, + "y": 0.8225, + "confidence": 0.766 + } + ] + } + ] + }, + { + "frame_index": 133, + "timestamp": 2.216666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.8491, + "acceleration": -101.1778, + "fluidity": 0, + "expansion": 0.261, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6861, + "y": 0.5044, + "confidence": 0.549 + }, + { + "name": "left_eye", + "x": 0.69, + "y": 0.5007, + "confidence": 0.661 + }, + { + "name": "right_eye", + "x": 0.6881, + "y": 0.4943, + "confidence": 0.457 + }, + { + "name": "left_ear", + "x": 0.6768, + "y": 0.4838, + "confidence": 0.339 + }, + { + "name": "right_ear", + "x": 0.6753, + "y": 0.4649, + "confidence": 0.631 + }, + { + "name": "left_shoulder", + "x": 0.6349, + "y": 0.5111, + "confidence": 0.348 + }, + { + "name": "right_shoulder", + "x": 0.6264, + "y": 0.4231, + "confidence": 0.513 + }, + { + "name": "left_elbow", + "x": 0.6682, + "y": 0.5772, + "confidence": 0.624 + }, + { + "name": "right_elbow", + "x": 0.5991, + "y": 0.3809, + "confidence": 0.458 + }, + { + "name": "left_wrist", + "x": 0.759, + "y": 0.5956, + "confidence": 0.746 + }, + { + "name": "right_wrist", + "x": 0.6583, + "y": 0.4634, + "confidence": 0.455 + }, + { + "name": "left_hip", + "x": 0.4939, + "y": 0.5178, + "confidence": 0.759 + }, + { + "name": "right_hip", + "x": 0.5281, + "y": 0.5038, + "confidence": 0.469 + }, + { + "name": "left_knee", + "x": 0.5161, + "y": 0.697, + "confidence": 0.784 + }, + { + "name": "right_knee", + "x": 0.6422, + "y": 0.6672, + "confidence": 0.455 + }, + { + "name": "left_ankle", + "x": 0.4033, + "y": 0.7729, + "confidence": 0.263 + }, + { + "name": "right_ankle", + "x": 0.6267, + "y": 0.8225, + "confidence": 0.765 + } + ] + } + ] + }, + { + "frame_index": 134, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.6627, + "acceleration": -11.1862, + "fluidity": 0, + "expansion": 0.28, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.686, + "y": 0.5044, + "confidence": 0.549 + }, + { + "name": "left_eye", + "x": 0.6899, + "y": 0.5008, + "confidence": 0.66 + }, + { + "name": "right_eye", + "x": 0.688, + "y": 0.4944, + "confidence": 0.459 + }, + { + "name": "left_ear", + "x": 0.6768, + "y": 0.4838, + "confidence": 0.34 + }, + { + "name": "right_ear", + "x": 0.6753, + "y": 0.465, + "confidence": 0.633 + }, + { + "name": "left_shoulder", + "x": 0.6352, + "y": 0.511, + "confidence": 0.346 + }, + { + "name": "right_shoulder", + "x": 0.6265, + "y": 0.4233, + "confidence": 0.511 + }, + { + "name": "left_elbow", + "x": 0.6681, + "y": 0.5771, + "confidence": 0.617 + }, + { + "name": "right_elbow", + "x": 0.5993, + "y": 0.3809, + "confidence": 0.458 + }, + { + "name": "left_wrist", + "x": 0.7582, + "y": 0.5957, + "confidence": 0.747 + }, + { + "name": "right_wrist", + "x": 0.6583, + "y": 0.4632, + "confidence": 0.456 + }, + { + "name": "left_hip", + "x": 0.494, + "y": 0.5179, + "confidence": 0.759 + }, + { + "name": "right_hip", + "x": 0.5285, + "y": 0.5039, + "confidence": 0.473 + }, + { + "name": "left_knee", + "x": 0.5162, + "y": 0.6969, + "confidence": 0.786 + }, + { + "name": "right_knee", + "x": 0.6423, + "y": 0.6671, + "confidence": 0.455 + }, + { + "name": "left_ankle", + "x": 0.4034, + "y": 0.773, + "confidence": 0.265 + }, + { + "name": "right_ankle", + "x": 0.6267, + "y": 0.8224, + "confidence": 0.766 + } + ] + } + ] + }, + { + "frame_index": 135, + "timestamp": 2.25, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.599, + "acceleration": -3.8196, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0.0188, + "center_displacement": { + "x": -0.0024, + "y": 0.0187 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6996, + "y": 0.5125, + "confidence": 0.719 + }, + { + "name": "left_eye", + "x": 0.6948, + "y": 0.5095, + "confidence": 0.752 + }, + { + "name": "right_eye", + "x": 0.6968, + "y": 0.5006, + "confidence": 0.621 + }, + { + "name": "left_ear", + "x": 0.672, + "y": 0.4965, + "confidence": 0.525 + }, + { + "name": "right_ear", + "x": 0.6739, + "y": 0.479, + "confidence": 0.636 + }, + { + "name": "left_shoulder", + "x": 0.6326, + "y": 0.5226, + "confidence": 0.402 + }, + { + "name": "right_shoulder", + "x": 0.6496, + "y": 0.4363, + "confidence": 0.682 + }, + { + "name": "left_elbow", + "x": 0.6625, + "y": 0.6223, + "confidence": 0.34 + }, + { + "name": "right_elbow", + "x": 0.6435, + "y": 0.3952, + "confidence": 0.527 + }, + { + "name": "left_wrist", + "x": 0.7311, + "y": 0.6413, + "confidence": 0.484 + }, + { + "name": "right_wrist", + "x": 0.6747, + "y": 0.4611, + "confidence": 0.682 + }, + { + "name": "left_hip", + "x": 0.5004, + "y": 0.5251, + "confidence": 0.704 + }, + { + "name": "right_hip", + "x": 0.5237, + "y": 0.5064, + "confidence": 0.692 + }, + { + "name": "left_knee", + "x": 0.4775, + "y": 0.696, + "confidence": 0.701 + }, + { + "name": "right_knee", + "x": 0.6412, + "y": 0.6515, + "confidence": 0.579 + }, + { + "name": "left_ankle", + "x": 0.362, + "y": 0.7324, + "confidence": 0.481 + }, + { + "name": "right_ankle", + "x": 0.6906, + "y": 0.8172, + "confidence": 0.853 + } + ] + } + ] + }, + { + "frame_index": 136, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.0157, + "acceleration": 24.9985, + "fluidity": 0, + "expansion": 0.316, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6996, + "y": 0.5126, + "confidence": 0.72 + }, + { + "name": "left_eye", + "x": 0.6949, + "y": 0.5095, + "confidence": 0.75 + }, + { + "name": "right_eye", + "x": 0.6969, + "y": 0.5006, + "confidence": 0.623 + }, + { + "name": "left_ear", + "x": 0.6721, + "y": 0.4963, + "confidence": 0.523 + }, + { + "name": "right_ear", + "x": 0.6739, + "y": 0.4789, + "confidence": 0.637 + }, + { + "name": "left_shoulder", + "x": 0.6326, + "y": 0.5223, + "confidence": 0.4 + }, + { + "name": "right_shoulder", + "x": 0.6495, + "y": 0.4362, + "confidence": 0.676 + }, + { + "name": "left_elbow", + "x": 0.6625, + "y": 0.6222, + "confidence": 0.337 + }, + { + "name": "right_elbow", + "x": 0.6434, + "y": 0.395, + "confidence": 0.529 + }, + { + "name": "left_wrist", + "x": 0.731, + "y": 0.6413, + "confidence": 0.487 + }, + { + "name": "right_wrist", + "x": 0.6746, + "y": 0.4611, + "confidence": 0.68 + }, + { + "name": "left_hip", + "x": 0.5, + "y": 0.5248, + "confidence": 0.703 + }, + { + "name": "right_hip", + "x": 0.5239, + "y": 0.5065, + "confidence": 0.698 + }, + { + "name": "left_knee", + "x": 0.4774, + "y": 0.6961, + "confidence": 0.701 + }, + { + "name": "right_knee", + "x": 0.6413, + "y": 0.6516, + "confidence": 0.584 + }, + { + "name": "left_ankle", + "x": 0.3618, + "y": 0.7323, + "confidence": 0.479 + }, + { + "name": "right_ankle", + "x": 0.6906, + "y": 0.8172, + "confidence": 0.855 + } + ] + } + ] + }, + { + "frame_index": 137, + "timestamp": 2.283333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.1592, + "acceleration": 8.6138, + "fluidity": 0, + "expansion": 0.325, + "total_displacement": 0.0407, + "center_displacement": { + "x": -0.0265, + "y": 0.0309 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7021, + "y": 0.5225, + "confidence": 0.438 + }, + { + "name": "left_eye", + "x": 0.6994, + "y": 0.5261, + "confidence": 0.504 + }, + { + "name": "right_eye", + "x": 0.6981, + "y": 0.5227, + "confidence": 0.525 + }, + { + "name": "left_ear", + "x": 0.6929, + "y": 0.5264, + "confidence": 0.453 + }, + { + "name": "right_ear", + "x": 0.6831, + "y": 0.5231, + "confidence": 0.385 + }, + { + "name": "left_shoulder", + "x": 0.6614, + "y": 0.5167, + "confidence": 0.337 + }, + { + "name": "right_shoulder", + "x": 0.6715, + "y": 0.4798, + "confidence": 0.401 + }, + { + "name": "left_elbow", + "x": 0.6608, + "y": 0.6017, + "confidence": 0.201 + }, + { + "name": "right_elbow", + "x": 0.6791, + "y": 0.4198, + "confidence": 0.636 + }, + { + "name": "left_wrist", + "x": 0.6925, + "y": 0.6726, + "confidence": 0.155 + }, + { + "name": "right_wrist", + "x": 0.6917, + "y": 0.5003, + "confidence": 0.518 + }, + { + "name": "left_hip", + "x": 0.5105, + "y": 0.5245, + "confidence": 0.657 + }, + { + "name": "right_hip", + "x": 0.5521, + "y": 0.5156, + "confidence": 0.673 + }, + { + "name": "left_knee", + "x": 0.45, + "y": 0.6646, + "confidence": 0.64 + }, + { + "name": "right_knee", + "x": 0.6545, + "y": 0.6366, + "confidence": 0.422 + }, + { + "name": "left_ankle", + "x": 0.3609, + "y": 0.7163, + "confidence": 0.478 + }, + { + "name": "right_ankle", + "x": 0.7061, + "y": 0.8022, + "confidence": 0.66 + } + ] + } + ] + }, + { + "frame_index": 138, + "timestamp": 2.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3982, + "acceleration": -45.6635, + "fluidity": 0, + "expansion": 0.328, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7018, + "y": 0.5227, + "confidence": 0.446 + }, + { + "name": "left_eye", + "x": 0.6993, + "y": 0.5262, + "confidence": 0.502 + }, + { + "name": "right_eye", + "x": 0.698, + "y": 0.5227, + "confidence": 0.525 + }, + { + "name": "left_ear", + "x": 0.6932, + "y": 0.5261, + "confidence": 0.449 + }, + { + "name": "right_ear", + "x": 0.6832, + "y": 0.5228, + "confidence": 0.385 + }, + { + "name": "left_shoulder", + "x": 0.6615, + "y": 0.5163, + "confidence": 0.33 + }, + { + "name": "right_shoulder", + "x": 0.6715, + "y": 0.4797, + "confidence": 0.399 + }, + { + "name": "left_elbow", + "x": 0.6607, + "y": 0.6014, + "confidence": 0.202 + }, + { + "name": "right_elbow", + "x": 0.6792, + "y": 0.4198, + "confidence": 0.637 + }, + { + "name": "left_wrist", + "x": 0.6924, + "y": 0.6724, + "confidence": 0.158 + }, + { + "name": "right_wrist", + "x": 0.6917, + "y": 0.5003, + "confidence": 0.517 + }, + { + "name": "left_hip", + "x": 0.5103, + "y": 0.5241, + "confidence": 0.651 + }, + { + "name": "right_hip", + "x": 0.5521, + "y": 0.5154, + "confidence": 0.676 + }, + { + "name": "left_knee", + "x": 0.4499, + "y": 0.6646, + "confidence": 0.637 + }, + { + "name": "right_knee", + "x": 0.6546, + "y": 0.6369, + "confidence": 0.424 + }, + { + "name": "left_ankle", + "x": 0.3611, + "y": 0.7165, + "confidence": 0.476 + }, + { + "name": "right_ankle", + "x": 0.7062, + "y": 0.8024, + "confidence": 0.663 + } + ] + } + ] + }, + { + "frame_index": 139, + "timestamp": 2.3166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.9968, + "acceleration": 95.9209, + "fluidity": 0, + "expansion": 0.327, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.7021, + "y": 0.5224, + "confidence": 0.438 + }, + { + "name": "left_eye", + "x": 0.6994, + "y": 0.526, + "confidence": 0.507 + }, + { + "name": "right_eye", + "x": 0.6982, + "y": 0.5225, + "confidence": 0.52 + }, + { + "name": "left_ear", + "x": 0.6934, + "y": 0.5262, + "confidence": 0.452 + }, + { + "name": "right_ear", + "x": 0.6833, + "y": 0.5228, + "confidence": 0.384 + }, + { + "name": "left_shoulder", + "x": 0.6619, + "y": 0.5164, + "confidence": 0.332 + }, + { + "name": "right_shoulder", + "x": 0.6761, + "y": 0.4839, + "confidence": 0.325 + }, + { + "name": "left_elbow", + "x": 0.6607, + "y": 0.6015, + "confidence": 0.203 + }, + { + "name": "right_elbow", + "x": 0.6789, + "y": 0.4197, + "confidence": 0.632 + }, + { + "name": "left_wrist", + "x": 0.6926, + "y": 0.6725, + "confidence": 0.159 + }, + { + "name": "right_wrist", + "x": 0.6916, + "y": 0.5001, + "confidence": 0.519 + }, + { + "name": "left_hip", + "x": 0.5104, + "y": 0.5244, + "confidence": 0.653 + }, + { + "name": "right_hip", + "x": 0.5519, + "y": 0.5157, + "confidence": 0.678 + }, + { + "name": "left_knee", + "x": 0.4502, + "y": 0.6646, + "confidence": 0.64 + }, + { + "name": "right_knee", + "x": 0.6546, + "y": 0.6364, + "confidence": 0.423 + }, + { + "name": "left_ankle", + "x": 0.361, + "y": 0.7164, + "confidence": 0.474 + }, + { + "name": "right_ankle", + "x": 0.7069, + "y": 0.802, + "confidence": 0.71 + } + ] + } + ] + }, + { + "frame_index": 140, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.5276, + "acceleration": 31.8468, + "fluidity": 0, + "expansion": 0.326, + "total_displacement": 0.0929, + "center_displacement": { + "x": 0.0888, + "y": -0.0274 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.691, + "y": 0.5258, + "confidence": 0.443 + }, + { + "name": "left_eye", + "x": 0.6962, + "y": 0.5222, + "confidence": 0.617 + }, + { + "name": "right_eye", + "x": 0.6984, + "y": 0.5206, + "confidence": 0.481 + }, + { + "name": "left_ear", + "x": 0.6882, + "y": 0.5177, + "confidence": 0.431 + }, + { + "name": "right_ear", + "x": 0.6964, + "y": 0.5047, + "confidence": 0.446 + }, + { + "name": "left_shoulder", + "x": 0.6275, + "y": 0.4831, + "confidence": 0.53 + }, + { + "name": "right_shoulder", + "x": 0.7124, + "y": 0.4696, + "confidence": 0.519 + }, + { + "name": "left_elbow", + "x": 0.6318, + "y": 0.5165, + "confidence": 0.117 + }, + { + "name": "right_elbow", + "x": 0.7239, + "y": 0.5429, + "confidence": 0.339 + }, + { + "name": "left_wrist", + "x": 0.7011, + "y": 0.5556, + "confidence": 0.18 + }, + { + "name": "right_wrist", + "x": 0.7347, + "y": 0.5745, + "confidence": 0.603 + }, + { + "name": "left_hip", + "x": 0.52, + "y": 0.525, + "confidence": 0.766 + }, + { + "name": "right_hip", + "x": 0.5838, + "y": 0.5362, + "confidence": 0.414 + }, + { + "name": "left_knee", + "x": 0.4437, + "y": 0.6513, + "confidence": 0.83 + }, + { + "name": "right_knee", + "x": 0.6738, + "y": 0.68, + "confidence": 0.8 + }, + { + "name": "left_ankle", + "x": 0.3251, + "y": 0.6871, + "confidence": 0.75 + }, + { + "name": "right_ankle", + "x": 0.7189, + "y": 0.8114, + "confidence": 0.682 + } + ] + } + ] + }, + { + "frame_index": 141, + "timestamp": 2.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.6017, + "acceleration": -55.5544, + "fluidity": 0, + "expansion": 0.317, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6908, + "y": 0.5258, + "confidence": 0.44 + }, + { + "name": "left_eye", + "x": 0.6959, + "y": 0.5221, + "confidence": 0.615 + }, + { + "name": "right_eye", + "x": 0.6983, + "y": 0.5206, + "confidence": 0.474 + }, + { + "name": "left_ear", + "x": 0.6878, + "y": 0.5176, + "confidence": 0.43 + }, + { + "name": "right_ear", + "x": 0.6961, + "y": 0.5051, + "confidence": 0.435 + }, + { + "name": "left_shoulder", + "x": 0.6271, + "y": 0.4829, + "confidence": 0.522 + }, + { + "name": "right_shoulder", + "x": 0.7123, + "y": 0.4698, + "confidence": 0.521 + }, + { + "name": "left_elbow", + "x": 0.612, + "y": 0.5134, + "confidence": 0.102 + }, + { + "name": "right_elbow", + "x": 0.7238, + "y": 0.543, + "confidence": 0.333 + }, + { + "name": "left_wrist", + "x": 0.7011, + "y": 0.5559, + "confidence": 0.178 + }, + { + "name": "right_wrist", + "x": 0.7349, + "y": 0.575, + "confidence": 0.617 + }, + { + "name": "left_hip", + "x": 0.52, + "y": 0.5249, + "confidence": 0.767 + }, + { + "name": "right_hip", + "x": 0.5838, + "y": 0.5363, + "confidence": 0.416 + }, + { + "name": "left_knee", + "x": 0.4439, + "y": 0.6514, + "confidence": 0.831 + }, + { + "name": "right_knee", + "x": 0.674, + "y": 0.6799, + "confidence": 0.802 + }, + { + "name": "left_ankle", + "x": 0.3253, + "y": 0.6871, + "confidence": 0.751 + }, + { + "name": "right_ankle", + "x": 0.7191, + "y": 0.8115, + "confidence": 0.68 + } + ] + } + ] + }, + { + "frame_index": 142, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.2923, + "acceleration": -18.5641, + "fluidity": 0, + "expansion": 0.306, + "total_displacement": 0.0378, + "center_displacement": { + "x": -0.0029, + "y": 0.0377 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6701, + "y": 0.5481, + "confidence": 0.452 + }, + { + "name": "left_eye", + "x": 0.672, + "y": 0.5457, + "confidence": 0.331 + }, + { + "name": "right_eye", + "x": 0.6873, + "y": 0.5469, + "confidence": 0.55 + }, + { + "name": "left_ear", + "x": 0.6519, + "y": 0.5392, + "confidence": 0.343 + }, + { + "name": "right_ear", + "x": 0.692, + "y": 0.5305, + "confidence": 0.469 + }, + { + "name": "left_shoulder", + "x": 0.5939, + "y": 0.5075, + "confidence": 0.626 + }, + { + "name": "right_shoulder", + "x": 0.6999, + "y": 0.5037, + "confidence": 0.637 + }, + { + "name": "left_elbow", + "x": 0.5648, + "y": 0.5203, + "confidence": 0.431 + }, + { + "name": "right_elbow", + "x": 0.7568, + "y": 0.5534, + "confidence": 0.854 + }, + { + "name": "left_wrist", + "x": 0.5639, + "y": 0.5847, + "confidence": 0.157 + }, + { + "name": "right_wrist", + "x": 0.7479, + "y": 0.6278, + "confidence": 0.792 + }, + { + "name": "left_hip", + "x": 0.5525, + "y": 0.5511, + "confidence": 0.782 + }, + { + "name": "right_hip", + "x": 0.6212, + "y": 0.5587, + "confidence": 0.553 + }, + { + "name": "left_knee", + "x": 0.4415, + "y": 0.6469, + "confidence": 0.842 + }, + { + "name": "right_knee", + "x": 0.6778, + "y": 0.6883, + "confidence": 0.806 + }, + { + "name": "left_ankle", + "x": 0.3523, + "y": 0.6418, + "confidence": 0.613 + }, + { + "name": "right_ankle", + "x": 0.7192, + "y": 0.8191, + "confidence": 0.648 + } + ] + } + ] + }, + { + "frame_index": 143, + "timestamp": 2.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.4364, + "acceleration": -51.3554, + "fluidity": 0.032, + "expansion": 0.302, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6702, + "y": 0.5483, + "confidence": 0.452 + }, + { + "name": "left_eye", + "x": 0.6721, + "y": 0.5458, + "confidence": 0.332 + }, + { + "name": "right_eye", + "x": 0.6874, + "y": 0.5471, + "confidence": 0.554 + }, + { + "name": "left_ear", + "x": 0.652, + "y": 0.5393, + "confidence": 0.341 + }, + { + "name": "right_ear", + "x": 0.6921, + "y": 0.5308, + "confidence": 0.472 + }, + { + "name": "left_shoulder", + "x": 0.5939, + "y": 0.5074, + "confidence": 0.625 + }, + { + "name": "right_shoulder", + "x": 0.6998, + "y": 0.5037, + "confidence": 0.635 + }, + { + "name": "left_elbow", + "x": 0.5649, + "y": 0.5203, + "confidence": 0.433 + }, + { + "name": "right_elbow", + "x": 0.7568, + "y": 0.5535, + "confidence": 0.854 + }, + { + "name": "left_wrist", + "x": 0.5639, + "y": 0.5848, + "confidence": 0.158 + }, + { + "name": "right_wrist", + "x": 0.748, + "y": 0.6279, + "confidence": 0.795 + }, + { + "name": "left_hip", + "x": 0.5524, + "y": 0.551, + "confidence": 0.781 + }, + { + "name": "right_hip", + "x": 0.6211, + "y": 0.5586, + "confidence": 0.55 + }, + { + "name": "left_knee", + "x": 0.4416, + "y": 0.6468, + "confidence": 0.842 + }, + { + "name": "right_knee", + "x": 0.6778, + "y": 0.6884, + "confidence": 0.804 + }, + { + "name": "left_ankle", + "x": 0.3522, + "y": 0.6419, + "confidence": 0.612 + }, + { + "name": "right_ankle", + "x": 0.7192, + "y": 0.8188, + "confidence": 0.651 + } + ] + } + ] + }, + { + "frame_index": 144, + "timestamp": 2.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.0518, + "acceleration": 36.9258, + "fluidity": 0.042, + "expansion": 0.276, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.67, + "y": 0.5486, + "confidence": 0.455 + }, + { + "name": "left_eye", + "x": 0.6719, + "y": 0.5461, + "confidence": 0.34 + }, + { + "name": "right_eye", + "x": 0.6872, + "y": 0.5473, + "confidence": 0.559 + }, + { + "name": "left_ear", + "x": 0.6516, + "y": 0.5396, + "confidence": 0.337 + }, + { + "name": "right_ear", + "x": 0.6918, + "y": 0.531, + "confidence": 0.48 + }, + { + "name": "left_shoulder", + "x": 0.5937, + "y": 0.5078, + "confidence": 0.634 + }, + { + "name": "right_shoulder", + "x": 0.6993, + "y": 0.5035, + "confidence": 0.632 + }, + { + "name": "left_elbow", + "x": 0.5648, + "y": 0.5206, + "confidence": 0.43 + }, + { + "name": "right_elbow", + "x": 0.7571, + "y": 0.5535, + "confidence": 0.853 + }, + { + "name": "left_wrist", + "x": 0.5639, + "y": 0.5852, + "confidence": 0.158 + }, + { + "name": "right_wrist", + "x": 0.748, + "y": 0.628, + "confidence": 0.795 + }, + { + "name": "left_hip", + "x": 0.5524, + "y": 0.5513, + "confidence": 0.781 + }, + { + "name": "right_hip", + "x": 0.6212, + "y": 0.5586, + "confidence": 0.548 + }, + { + "name": "left_knee", + "x": 0.4418, + "y": 0.6466, + "confidence": 0.842 + }, + { + "name": "right_knee", + "x": 0.6777, + "y": 0.6879, + "confidence": 0.801 + }, + { + "name": "left_ankle", + "x": 0.3527, + "y": 0.6419, + "confidence": 0.613 + }, + { + "name": "right_ankle", + "x": 0.7191, + "y": 0.8189, + "confidence": 0.651 + } + ] + } + ] + }, + { + "frame_index": 145, + "timestamp": 2.4166666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.2567, + "acceleration": 12.2896, + "fluidity": 0.014, + "expansion": 0.244, + "total_displacement": 0.0452, + "center_displacement": { + "x": -0.0445, + "y": 0.0076 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6374, + "y": 0.6493, + "confidence": 0.405 + }, + { + "name": "left_eye", + "x": 0.6428, + "y": 0.6566, + "confidence": 0.479 + }, + { + "name": "right_eye", + "x": 0.6628, + "y": 0.6496, + "confidence": 0.421 + }, + { + "name": "left_ear", + "x": 0.6371, + "y": 0.6233, + "confidence": 0.248 + }, + { + "name": "right_ear", + "x": 0.6833, + "y": 0.6086, + "confidence": 0.379 + }, + { + "name": "left_shoulder", + "x": 0.574, + "y": 0.5361, + "confidence": 0.515 + }, + { + "name": "right_shoulder", + "x": 0.6951, + "y": 0.5839, + "confidence": 0.315 + }, + { + "name": "left_elbow", + "x": 0.4799, + "y": 0.633, + "confidence": 0.289 + }, + { + "name": "right_elbow", + "x": 0.7559, + "y": 0.6282, + "confidence": 0.857 + }, + { + "name": "left_wrist", + "x": 0.592, + "y": 0.6444, + "confidence": 0.218 + }, + { + "name": "right_wrist", + "x": 0.7383, + "y": 0.6938, + "confidence": 0.357 + }, + { + "name": "left_hip", + "x": 0.5703, + "y": 0.5397, + "confidence": 0.599 + }, + { + "name": "right_hip", + "x": 0.6256, + "y": 0.5455, + "confidence": 0.374 + }, + { + "name": "left_knee", + "x": 0.4745, + "y": 0.6468, + "confidence": 0.682 + }, + { + "name": "right_knee", + "x": 0.6725, + "y": 0.677, + "confidence": 0.67 + }, + { + "name": "left_ankle", + "x": 0.3569, + "y": 0.6427, + "confidence": 0.463 + }, + { + "name": "right_ankle", + "x": 0.6352, + "y": 0.7891, + "confidence": 0.628 + } + ] + } + ] + }, + { + "frame_index": 146, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.5841, + "acceleration": -40.351, + "fluidity": 0.005, + "expansion": 0.222, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6373, + "y": 0.6494, + "confidence": 0.406 + }, + { + "name": "left_eye", + "x": 0.6429, + "y": 0.6568, + "confidence": 0.483 + }, + { + "name": "right_eye", + "x": 0.6628, + "y": 0.6497, + "confidence": 0.426 + }, + { + "name": "left_ear", + "x": 0.6371, + "y": 0.6235, + "confidence": 0.247 + }, + { + "name": "right_ear", + "x": 0.6832, + "y": 0.6088, + "confidence": 0.379 + }, + { + "name": "left_shoulder", + "x": 0.5741, + "y": 0.5362, + "confidence": 0.516 + }, + { + "name": "right_shoulder", + "x": 0.6954, + "y": 0.5842, + "confidence": 0.313 + }, + { + "name": "left_elbow", + "x": 0.5473, + "y": 0.5887, + "confidence": 0.21 + }, + { + "name": "right_elbow", + "x": 0.7559, + "y": 0.6283, + "confidence": 0.857 + }, + { + "name": "left_wrist", + "x": 0.5921, + "y": 0.6443, + "confidence": 0.215 + }, + { + "name": "right_wrist", + "x": 0.7378, + "y": 0.6946, + "confidence": 0.35 + }, + { + "name": "left_hip", + "x": 0.5704, + "y": 0.5398, + "confidence": 0.595 + }, + { + "name": "right_hip", + "x": 0.6256, + "y": 0.5455, + "confidence": 0.372 + }, + { + "name": "left_knee", + "x": 0.475, + "y": 0.648, + "confidence": 0.726 + }, + { + "name": "right_knee", + "x": 0.6727, + "y": 0.677, + "confidence": 0.665 + }, + { + "name": "left_ankle", + "x": 0.3569, + "y": 0.6423, + "confidence": 0.467 + }, + { + "name": "right_ankle", + "x": 0.6354, + "y": 0.7892, + "confidence": 0.627 + } + ] + } + ] + }, + { + "frame_index": 147, + "timestamp": 2.45, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3599, + "acceleration": -13.4552, + "fluidity": 0.002, + "expansion": 0.203, + "total_displacement": 0.0081, + "center_displacement": { + "x": -0.0081, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6529, + "y": 0.6613, + "confidence": 0.329 + }, + { + "name": "left_eye", + "x": 0.6604, + "y": 0.6624, + "confidence": 0.355 + }, + { + "name": "right_eye", + "x": 0.678, + "y": 0.6603, + "confidence": 0.4 + }, + { + "name": "left_ear", + "x": 0.6759, + "y": 0.6358, + "confidence": 0.296 + }, + { + "name": "right_ear", + "x": 0.7089, + "y": 0.6221, + "confidence": 0.627 + }, + { + "name": "left_shoulder", + "x": 0.6198, + "y": 0.5628, + "confidence": 0.215 + }, + { + "name": "right_shoulder", + "x": 0.7138, + "y": 0.6073, + "confidence": 0.46 + }, + { + "name": "left_elbow", + "x": 0.6006, + "y": 0.6105, + "confidence": 0.122 + }, + { + "name": "right_elbow", + "x": 0.7395, + "y": 0.6573, + "confidence": 0.516 + }, + { + "name": "left_wrist", + "x": 0.6134, + "y": 0.6754, + "confidence": 0.178 + }, + { + "name": "right_wrist", + "x": 0.7286, + "y": 0.7058, + "confidence": 0.723 + }, + { + "name": "left_hip", + "x": 0.5642, + "y": 0.5373, + "confidence": 0.761 + }, + { + "name": "right_hip", + "x": 0.6074, + "y": 0.5546, + "confidence": 0.472 + }, + { + "name": "left_knee", + "x": 0.4798, + "y": 0.6537, + "confidence": 0.624 + }, + { + "name": "right_knee", + "x": 0.6638, + "y": 0.6867, + "confidence": 0.58 + }, + { + "name": "left_ankle", + "x": 0.3917, + "y": 0.6467, + "confidence": 0.472 + }, + { + "name": "right_ankle", + "x": 0.5854, + "y": 0.7717, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 148, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1275, + "acceleration": -13.9433, + "fluidity": 0.001, + "expansion": 0.197, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6527, + "y": 0.6614, + "confidence": 0.329 + }, + { + "name": "left_eye", + "x": 0.6603, + "y": 0.6625, + "confidence": 0.354 + }, + { + "name": "right_eye", + "x": 0.6779, + "y": 0.6604, + "confidence": 0.403 + }, + { + "name": "left_ear", + "x": 0.6758, + "y": 0.636, + "confidence": 0.295 + }, + { + "name": "right_ear", + "x": 0.7089, + "y": 0.6221, + "confidence": 0.625 + }, + { + "name": "left_shoulder", + "x": 0.6215, + "y": 0.5691, + "confidence": 0.175 + }, + { + "name": "right_shoulder", + "x": 0.7139, + "y": 0.6073, + "confidence": 0.463 + }, + { + "name": "left_elbow", + "x": 0.6006, + "y": 0.6104, + "confidence": 0.121 + }, + { + "name": "right_elbow", + "x": 0.735, + "y": 0.6507, + "confidence": 0.671 + }, + { + "name": "left_wrist", + "x": 0.6135, + "y": 0.6752, + "confidence": 0.179 + }, + { + "name": "right_wrist", + "x": 0.7288, + "y": 0.7055, + "confidence": 0.72 + }, + { + "name": "left_hip", + "x": 0.5642, + "y": 0.5375, + "confidence": 0.759 + }, + { + "name": "right_hip", + "x": 0.6074, + "y": 0.5547, + "confidence": 0.472 + }, + { + "name": "left_knee", + "x": 0.4798, + "y": 0.6537, + "confidence": 0.623 + }, + { + "name": "right_knee", + "x": 0.6638, + "y": 0.6868, + "confidence": 0.585 + }, + { + "name": "left_ankle", + "x": 0.3914, + "y": 0.6466, + "confidence": 0.473 + }, + { + "name": "right_ankle", + "x": 0.5854, + "y": 0.7717, + "confidence": 0.819 + } + ] + } + ] + }, + { + "frame_index": 149, + "timestamp": 2.4833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.7435, + "acceleration": 96.9589, + "fluidity": 0, + "expansion": 0.197, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6528, + "y": 0.6614, + "confidence": 0.333 + }, + { + "name": "left_eye", + "x": 0.6603, + "y": 0.6625, + "confidence": 0.361 + }, + { + "name": "right_eye", + "x": 0.6777, + "y": 0.6605, + "confidence": 0.405 + }, + { + "name": "left_ear", + "x": 0.6758, + "y": 0.6363, + "confidence": 0.295 + }, + { + "name": "right_ear", + "x": 0.7085, + "y": 0.6222, + "confidence": 0.617 + }, + { + "name": "left_shoulder", + "x": 0.6216, + "y": 0.5692, + "confidence": 0.176 + }, + { + "name": "right_shoulder", + "x": 0.7139, + "y": 0.6075, + "confidence": 0.466 + }, + { + "name": "left_elbow", + "x": 0.6011, + "y": 0.6107, + "confidence": 0.122 + }, + { + "name": "right_elbow", + "x": 0.7394, + "y": 0.6573, + "confidence": 0.525 + }, + { + "name": "left_wrist", + "x": 0.6136, + "y": 0.6757, + "confidence": 0.177 + }, + { + "name": "right_wrist", + "x": 0.7286, + "y": 0.706, + "confidence": 0.722 + }, + { + "name": "left_hip", + "x": 0.5643, + "y": 0.5373, + "confidence": 0.761 + }, + { + "name": "right_hip", + "x": 0.6075, + "y": 0.5546, + "confidence": 0.469 + }, + { + "name": "left_knee", + "x": 0.4797, + "y": 0.6538, + "confidence": 0.621 + }, + { + "name": "right_knee", + "x": 0.6641, + "y": 0.6868, + "confidence": 0.578 + }, + { + "name": "left_ankle", + "x": 0.3914, + "y": 0.6469, + "confidence": 0.473 + }, + { + "name": "right_ankle", + "x": 0.5853, + "y": 0.7718, + "confidence": 0.819 + } + ] + } + ] + }, + { + "frame_index": 150, + "timestamp": 2.5, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.2825, + "acceleration": 32.343, + "fluidity": 0, + "expansion": 0.198, + "total_displacement": 0.0848, + "center_displacement": { + "x": 0.0772, + "y": 0.0352 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6329, + "y": 0.6637, + "confidence": 0.36 + }, + { + "name": "left_eye", + "x": 0.6406, + "y": 0.6627, + "confidence": 0.378 + }, + { + "name": "right_eye", + "x": 0.6501, + "y": 0.6651, + "confidence": 0.411 + }, + { + "name": "left_ear", + "x": 0.6506, + "y": 0.6428, + "confidence": 0.332 + }, + { + "name": "right_ear", + "x": 0.6776, + "y": 0.6396, + "confidence": 0.462 + }, + { + "name": "left_shoulder", + "x": 0.624, + "y": 0.5687, + "confidence": 0.245 + }, + { + "name": "right_shoulder", + "x": 0.6973, + "y": 0.6136, + "confidence": 0.596 + }, + { + "name": "left_elbow", + "x": 0.6049, + "y": 0.6396, + "confidence": 0.162 + }, + { + "name": "right_elbow", + "x": 0.7255, + "y": 0.6954, + "confidence": 0.733 + }, + { + "name": "left_wrist", + "x": 0.6002, + "y": 0.6862, + "confidence": 0.123 + }, + { + "name": "right_wrist", + "x": 0.7227, + "y": 0.7123, + "confidence": 0.554 + }, + { + "name": "left_hip", + "x": 0.5857, + "y": 0.5313, + "confidence": 0.688 + }, + { + "name": "right_hip", + "x": 0.6058, + "y": 0.5504, + "confidence": 0.316 + }, + { + "name": "left_knee", + "x": 0.4888, + "y": 0.6572, + "confidence": 0.219 + }, + { + "name": "right_knee", + "x": 0.6422, + "y": 0.6914, + "confidence": 0.266 + }, + { + "name": "left_ankle", + "x": 0.4363, + "y": 0.6918, + "confidence": 0.271 + }, + { + "name": "right_ankle", + "x": 0.5301, + "y": 0.7595, + "confidence": 0.434 + } + ] + } + ] + }, + { + "frame_index": 151, + "timestamp": 2.5166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.3301, + "acceleration": -57.1436, + "fluidity": 0, + "expansion": 0.299, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6329, + "y": 0.6635, + "confidence": 0.359 + }, + { + "name": "left_eye", + "x": 0.6406, + "y": 0.6626, + "confidence": 0.38 + }, + { + "name": "right_eye", + "x": 0.6502, + "y": 0.665, + "confidence": 0.412 + }, + { + "name": "left_ear", + "x": 0.6508, + "y": 0.6428, + "confidence": 0.333 + }, + { + "name": "right_ear", + "x": 0.6776, + "y": 0.6397, + "confidence": 0.465 + }, + { + "name": "left_shoulder", + "x": 0.6242, + "y": 0.5686, + "confidence": 0.247 + }, + { + "name": "right_shoulder", + "x": 0.6974, + "y": 0.6139, + "confidence": 0.596 + }, + { + "name": "left_elbow", + "x": 0.605, + "y": 0.6393, + "confidence": 0.162 + }, + { + "name": "right_elbow", + "x": 0.7254, + "y": 0.6957, + "confidence": 0.732 + }, + { + "name": "left_wrist", + "x": 0.6003, + "y": 0.686, + "confidence": 0.124 + }, + { + "name": "right_wrist", + "x": 0.7227, + "y": 0.7124, + "confidence": 0.551 + }, + { + "name": "left_hip", + "x": 0.5859, + "y": 0.5315, + "confidence": 0.686 + }, + { + "name": "right_hip", + "x": 0.6058, + "y": 0.5506, + "confidence": 0.312 + }, + { + "name": "left_knee", + "x": 0.4886, + "y": 0.6572, + "confidence": 0.218 + }, + { + "name": "right_knee", + "x": 0.6423, + "y": 0.6915, + "confidence": 0.266 + }, + { + "name": "left_ankle", + "x": 0.4361, + "y": 0.692, + "confidence": 0.271 + }, + { + "name": "right_ankle", + "x": 0.5301, + "y": 0.7595, + "confidence": 0.437 + } + ] + } + ] + }, + { + "frame_index": 152, + "timestamp": 2.533333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.0119, + "acceleration": -19.0965, + "fluidity": 0, + "expansion": 0.433, + "total_displacement": 0.0282, + "center_displacement": { + "x": -0.0164, + "y": -0.023 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6239, + "y": 0.6473, + "confidence": 0.4 + }, + { + "name": "left_eye", + "x": 0.6255, + "y": 0.6464, + "confidence": 0.392 + }, + { + "name": "right_eye", + "x": 0.6293, + "y": 0.6516, + "confidence": 0.488 + }, + { + "name": "left_ear", + "x": 0.6382, + "y": 0.6377, + "confidence": 0.4 + }, + { + "name": "right_ear", + "x": 0.653, + "y": 0.6461, + "confidence": 0.368 + }, + { + "name": "left_shoulder", + "x": 0.6252, + "y": 0.5498, + "confidence": 0.666 + }, + { + "name": "right_shoulder", + "x": 0.6977, + "y": 0.6117, + "confidence": 0.464 + }, + { + "name": "left_elbow", + "x": 0.6184, + "y": 0.678, + "confidence": 0.184 + }, + { + "name": "right_elbow", + "x": 0.7203, + "y": 0.7071, + "confidence": 0.657 + }, + { + "name": "left_wrist", + "x": 0.6145, + "y": 0.7191, + "confidence": 0.102 + }, + { + "name": "right_wrist", + "x": 0.714, + "y": 0.7216, + "confidence": 0.267 + }, + { + "name": "left_hip", + "x": 0.6195, + "y": 0.5352, + "confidence": 0.473 + }, + { + "name": "right_hip", + "x": 0.6466, + "y": 0.5399, + "confidence": 0.18 + }, + { + "name": "left_knee", + "x": 0.5108, + "y": 0.639, + "confidence": 0.246 + }, + { + "name": "right_knee", + "x": 0.651, + "y": 0.6853, + "confidence": 0.068 + }, + { + "name": "left_ankle", + "x": 0.484, + "y": 0.698, + "confidence": 0.405 + }, + { + "name": "right_ankle", + "x": 0.4953, + "y": 0.7192, + "confidence": 0.269 + } + ] + } + ] + }, + { + "frame_index": 153, + "timestamp": 2.55, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.3451, + "acceleration": -40.0046, + "fluidity": 0.165, + "expansion": 0.478, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6242, + "y": 0.6474, + "confidence": 0.406 + }, + { + "name": "left_eye", + "x": 0.6259, + "y": 0.6467, + "confidence": 0.401 + }, + { + "name": "right_eye", + "x": 0.6295, + "y": 0.6518, + "confidence": 0.485 + }, + { + "name": "left_ear", + "x": 0.6371, + "y": 0.638, + "confidence": 0.385 + }, + { + "name": "right_ear", + "x": 0.6533, + "y": 0.6445, + "confidence": 0.411 + }, + { + "name": "left_shoulder", + "x": 0.6252, + "y": 0.5496, + "confidence": 0.663 + }, + { + "name": "right_shoulder", + "x": 0.6976, + "y": 0.6117, + "confidence": 0.464 + }, + { + "name": "left_elbow", + "x": 0.6184, + "y": 0.6782, + "confidence": 0.184 + }, + { + "name": "right_elbow", + "x": 0.7203, + "y": 0.707, + "confidence": 0.66 + }, + { + "name": "left_wrist", + "x": 0.6145, + "y": 0.7193, + "confidence": 0.102 + }, + { + "name": "right_wrist", + "x": 0.7139, + "y": 0.7218, + "confidence": 0.27 + }, + { + "name": "left_hip", + "x": 0.6196, + "y": 0.535, + "confidence": 0.477 + }, + { + "name": "right_hip", + "x": 0.6466, + "y": 0.5398, + "confidence": 0.18 + }, + { + "name": "left_knee", + "x": 0.5109, + "y": 0.6391, + "confidence": 0.242 + }, + { + "name": "right_knee", + "x": 0.6507, + "y": 0.6854, + "confidence": 0.069 + }, + { + "name": "left_ankle", + "x": 0.4839, + "y": 0.698, + "confidence": 0.402 + }, + { + "name": "right_ankle", + "x": 0.4951, + "y": 0.7192, + "confidence": 0.267 + } + ] + } + ] + }, + { + "frame_index": 154, + "timestamp": 2.5666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.3879, + "acceleration": 122.567, + "fluidity": 0.22, + "expansion": 0.493, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6242, + "y": 0.647, + "confidence": 0.401 + }, + { + "name": "left_eye", + "x": 0.6259, + "y": 0.6461, + "confidence": 0.392 + }, + { + "name": "right_eye", + "x": 0.6296, + "y": 0.6512, + "confidence": 0.475 + }, + { + "name": "left_ear", + "x": 0.6372, + "y": 0.6375, + "confidence": 0.384 + }, + { + "name": "right_ear", + "x": 0.6534, + "y": 0.644, + "confidence": 0.412 + }, + { + "name": "left_shoulder", + "x": 0.6253, + "y": 0.5495, + "confidence": 0.659 + }, + { + "name": "right_shoulder", + "x": 0.6975, + "y": 0.6116, + "confidence": 0.462 + }, + { + "name": "left_elbow", + "x": 0.6182, + "y": 0.6783, + "confidence": 0.184 + }, + { + "name": "right_elbow", + "x": 0.7201, + "y": 0.7071, + "confidence": 0.654 + }, + { + "name": "left_wrist", + "x": 0.6147, + "y": 0.7193, + "confidence": 0.101 + }, + { + "name": "right_wrist", + "x": 0.714, + "y": 0.7217, + "confidence": 0.265 + }, + { + "name": "left_hip", + "x": 0.6198, + "y": 0.5349, + "confidence": 0.468 + }, + { + "name": "right_hip", + "x": 0.6468, + "y": 0.5399, + "confidence": 0.173 + }, + { + "name": "left_knee", + "x": 0.5154, + "y": 0.6372, + "confidence": 0.211 + }, + { + "name": "right_knee", + "x": 0.6509, + "y": 0.6856, + "confidence": 0.069 + }, + { + "name": "left_ankle", + "x": 0.484, + "y": 0.6983, + "confidence": 0.401 + }, + { + "name": "right_ankle", + "x": 0.4949, + "y": 0.7193, + "confidence": 0.267 + } + ] + } + ] + }, + { + "frame_index": 155, + "timestamp": 2.5833333333333335, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 3.068, + "acceleration": 40.8052, + "fluidity": 0.073, + "expansion": 0.498, + "total_displacement": 0.1135, + "center_displacement": { + "x": 0.055, + "y": 0.0992 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5558, + "y": 0.6609, + "confidence": 0.161 + }, + { + "name": "left_eye", + "x": 0.5466, + "y": 0.6642, + "confidence": 0.216 + }, + { + "name": "right_eye", + "x": 0.5469, + "y": 0.6631, + "confidence": 0.164 + }, + { + "name": "left_ear", + "x": 0.5601, + "y": 0.66, + "confidence": 0.122 + }, + { + "name": "right_ear", + "x": 0.5483, + "y": 0.6555, + "confidence": 0.145 + }, + { + "name": "left_shoulder", + "x": 0.636, + "y": 0.5924, + "confidence": 0.329 + }, + { + "name": "right_shoulder", + "x": 0.5728, + "y": 0.6101, + "confidence": 0.254 + }, + { + "name": "left_elbow", + "x": 0.6961, + "y": 0.6548, + "confidence": 0.399 + }, + { + "name": "right_elbow", + "x": 0.539, + "y": 0.6372, + "confidence": 0.241 + }, + { + "name": "left_wrist", + "x": 0.6948, + "y": 0.7395, + "confidence": 0.521 + }, + { + "name": "right_wrist", + "x": 0.5742, + "y": 0.7327, + "confidence": 0.145 + }, + { + "name": "left_hip", + "x": 0.6946, + "y": 0.6079, + "confidence": 0.321 + }, + { + "name": "right_hip", + "x": 0.6673, + "y": 0.6044, + "confidence": 0.139 + }, + { + "name": "left_knee", + "x": 0.6198, + "y": 0.6672, + "confidence": 0.126 + }, + { + "name": "right_knee", + "x": 0.6094, + "y": 0.6643, + "confidence": 0.147 + }, + { + "name": "left_ankle", + "x": 0.5746, + "y": 0.7316, + "confidence": 0.207 + }, + { + "name": "right_ankle", + "x": 0.5723, + "y": 0.7252, + "confidence": 0.202 + } + ] + } + ] + }, + { + "frame_index": 156, + "timestamp": 2.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.4022, + "acceleration": -39.9483, + "fluidity": 0.024, + "expansion": 0.393, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5559, + "y": 0.661, + "confidence": 0.162 + }, + { + "name": "left_eye", + "x": 0.5467, + "y": 0.6644, + "confidence": 0.218 + }, + { + "name": "right_eye", + "x": 0.5468, + "y": 0.6633, + "confidence": 0.164 + }, + { + "name": "left_ear", + "x": 0.5602, + "y": 0.6605, + "confidence": 0.124 + }, + { + "name": "right_ear", + "x": 0.5478, + "y": 0.6559, + "confidence": 0.139 + }, + { + "name": "left_shoulder", + "x": 0.6365, + "y": 0.5927, + "confidence": 0.328 + }, + { + "name": "right_shoulder", + "x": 0.5727, + "y": 0.6102, + "confidence": 0.256 + }, + { + "name": "left_elbow", + "x": 0.6963, + "y": 0.6547, + "confidence": 0.397 + }, + { + "name": "right_elbow", + "x": 0.539, + "y": 0.6378, + "confidence": 0.238 + }, + { + "name": "left_wrist", + "x": 0.6948, + "y": 0.7396, + "confidence": 0.521 + }, + { + "name": "right_wrist", + "x": 0.5744, + "y": 0.7327, + "confidence": 0.144 + }, + { + "name": "left_hip", + "x": 0.6944, + "y": 0.608, + "confidence": 0.322 + }, + { + "name": "right_hip", + "x": 0.6668, + "y": 0.6043, + "confidence": 0.141 + }, + { + "name": "left_knee", + "x": 0.6201, + "y": 0.6672, + "confidence": 0.124 + }, + { + "name": "right_knee", + "x": 0.6096, + "y": 0.664, + "confidence": 0.145 + }, + { + "name": "left_ankle", + "x": 0.5745, + "y": 0.7317, + "confidence": 0.204 + }, + { + "name": "right_ankle", + "x": 0.5723, + "y": 0.7251, + "confidence": 0.199 + } + ] + } + ] + }, + { + "frame_index": 157, + "timestamp": 2.6166666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.2454, + "acceleration": -9.4065, + "fluidity": 0.008, + "expansion": 0.252, + "total_displacement": 0.0688, + "center_displacement": { + "x": -0.0447, + "y": -0.0524 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6307, + "y": 0.5723, + "confidence": 0.451 + }, + { + "name": "left_eye", + "x": 0.6345, + "y": 0.5658, + "confidence": 0.439 + }, + { + "name": "right_eye", + "x": 0.6386, + "y": 0.5711, + "confidence": 0.403 + }, + { + "name": "left_ear", + "x": 0.6497, + "y": 0.5667, + "confidence": 0.468 + }, + { + "name": "right_ear", + "x": 0.6607, + "y": 0.579, + "confidence": 0.301 + }, + { + "name": "left_shoulder", + "x": 0.643, + "y": 0.5692, + "confidence": 0.353 + }, + { + "name": "right_shoulder", + "x": 0.6928, + "y": 0.5884, + "confidence": 0.44 + }, + { + "name": "left_elbow", + "x": 0.5644, + "y": 0.6232, + "confidence": 0.191 + }, + { + "name": "right_elbow", + "x": 0.5585, + "y": 0.6342, + "confidence": 0.205 + }, + { + "name": "left_wrist", + "x": 0.5982, + "y": 0.5507, + "confidence": 0.364 + }, + { + "name": "right_wrist", + "x": 0.6577, + "y": 0.7218, + "confidence": 0.439 + }, + { + "name": "left_hip", + "x": 0.5851, + "y": 0.6137, + "confidence": 0.276 + }, + { + "name": "right_hip", + "x": 0.6248, + "y": 0.6177, + "confidence": 0.171 + }, + { + "name": "left_knee", + "x": 0.5524, + "y": 0.6788, + "confidence": 0.33 + }, + { + "name": "right_knee", + "x": 0.598, + "y": 0.701, + "confidence": 0.16 + }, + { + "name": "left_ankle", + "x": 0.5244, + "y": 0.7109, + "confidence": 0.215 + }, + { + "name": "right_ankle", + "x": 0.5007, + "y": 0.7095, + "confidence": 0.227 + } + ] + } + ] + }, + { + "frame_index": 158, + "timestamp": 2.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.8902, + "acceleration": -81.3145, + "fluidity": 0.003, + "expansion": 0.205, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0028, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6305, + "y": 0.5723, + "confidence": 0.451 + }, + { + "name": "left_eye", + "x": 0.6342, + "y": 0.5658, + "confidence": 0.443 + }, + { + "name": "right_eye", + "x": 0.6387, + "y": 0.5713, + "confidence": 0.405 + }, + { + "name": "left_ear", + "x": 0.6492, + "y": 0.5668, + "confidence": 0.466 + }, + { + "name": "right_ear", + "x": 0.661, + "y": 0.5792, + "confidence": 0.297 + }, + { + "name": "left_shoulder", + "x": 0.6423, + "y": 0.5687, + "confidence": 0.361 + }, + { + "name": "right_shoulder", + "x": 0.6932, + "y": 0.5886, + "confidence": 0.436 + }, + { + "name": "left_elbow", + "x": 0.5642, + "y": 0.623, + "confidence": 0.192 + }, + { + "name": "right_elbow", + "x": 0.5585, + "y": 0.6343, + "confidence": 0.207 + }, + { + "name": "left_wrist", + "x": 0.5983, + "y": 0.5505, + "confidence": 0.366 + }, + { + "name": "right_wrist", + "x": 0.6579, + "y": 0.7218, + "confidence": 0.445 + }, + { + "name": "left_hip", + "x": 0.5846, + "y": 0.6135, + "confidence": 0.272 + }, + { + "name": "right_hip", + "x": 0.6249, + "y": 0.6177, + "confidence": 0.171 + }, + { + "name": "left_knee", + "x": 0.5526, + "y": 0.6785, + "confidence": 0.33 + }, + { + "name": "right_knee", + "x": 0.5978, + "y": 0.7007, + "confidence": 0.16 + }, + { + "name": "left_ankle", + "x": 0.5243, + "y": 0.7109, + "confidence": 0.215 + }, + { + "name": "right_ankle", + "x": 0.5007, + "y": 0.7094, + "confidence": 0.229 + } + ] + } + ] + }, + { + "frame_index": 159, + "timestamp": 2.65, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 1.5869, + "acceleration": 41.8072, + "fluidity": 0.001, + "expansion": 0.295, + "total_displacement": 0.0037, + "center_displacement": { + "x": 0.0029, + "y": -0.0023 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6307, + "y": 0.5714, + "confidence": 0.447 + }, + { + "name": "left_eye", + "x": 0.6344, + "y": 0.565, + "confidence": 0.428 + }, + { + "name": "right_eye", + "x": 0.6386, + "y": 0.5706, + "confidence": 0.395 + }, + { + "name": "left_ear", + "x": 0.6493, + "y": 0.5661, + "confidence": 0.464 + }, + { + "name": "right_ear", + "x": 0.6605, + "y": 0.5786, + "confidence": 0.301 + }, + { + "name": "left_shoulder", + "x": 0.6427, + "y": 0.5686, + "confidence": 0.353 + }, + { + "name": "right_shoulder", + "x": 0.6928, + "y": 0.5883, + "confidence": 0.434 + }, + { + "name": "left_elbow", + "x": 0.5644, + "y": 0.6233, + "confidence": 0.193 + }, + { + "name": "right_elbow", + "x": 0.5586, + "y": 0.6343, + "confidence": 0.209 + }, + { + "name": "left_wrist", + "x": 0.5983, + "y": 0.5506, + "confidence": 0.363 + }, + { + "name": "right_wrist", + "x": 0.658, + "y": 0.7216, + "confidence": 0.44 + }, + { + "name": "left_hip", + "x": 0.5849, + "y": 0.6139, + "confidence": 0.273 + }, + { + "name": "right_hip", + "x": 0.6248, + "y": 0.6179, + "confidence": 0.172 + }, + { + "name": "left_knee", + "x": 0.5529, + "y": 0.6782, + "confidence": 0.332 + }, + { + "name": "right_knee", + "x": 0.598, + "y": 0.7005, + "confidence": 0.155 + }, + { + "name": "left_ankle", + "x": 0.5248, + "y": 0.7106, + "confidence": 0.215 + }, + { + "name": "right_ankle", + "x": 0.5006, + "y": 0.7093, + "confidence": 0.226 + } + ] + } + ] + }, + { + "frame_index": 160, + "timestamp": 2.6666666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.748, + "acceleration": 9.6607, + "fluidity": 0, + "expansion": 0.432, + "total_displacement": 0.0608, + "center_displacement": { + "x": -0.0607, + "y": -0.0041 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5585, + "y": 0.5935, + "confidence": 0.226 + }, + { + "name": "left_eye", + "x": 0.5552, + "y": 0.5904, + "confidence": 0.389 + }, + { + "name": "right_eye", + "x": 0.5531, + "y": 0.592, + "confidence": 0.308 + }, + { + "name": "left_ear", + "x": 0.5718, + "y": 0.5875, + "confidence": 0.22 + }, + { + "name": "right_ear", + "x": 0.5597, + "y": 0.6006, + "confidence": 0.202 + }, + { + "name": "left_shoulder", + "x": 0.6171, + "y": 0.593, + "confidence": 0.312 + }, + { + "name": "right_shoulder", + "x": 0.5808, + "y": 0.6159, + "confidence": 0.228 + }, + { + "name": "left_elbow", + "x": 0.5822, + "y": 0.6456, + "confidence": 0.088 + }, + { + "name": "right_elbow", + "x": 0.5261, + "y": 0.6328, + "confidence": 0.166 + }, + { + "name": "left_wrist", + "x": 0.5643, + "y": 0.6672, + "confidence": 0.111 + }, + { + "name": "right_wrist", + "x": 0.5292, + "y": 0.6363, + "confidence": 0.134 + }, + { + "name": "left_hip", + "x": 0.7067, + "y": 0.6234, + "confidence": 0.288 + }, + { + "name": "right_hip", + "x": 0.7054, + "y": 0.6515, + "confidence": 0.219 + }, + { + "name": "left_knee", + "x": 0.5311, + "y": 0.6227, + "confidence": 0.203 + }, + { + "name": "right_knee", + "x": 0.5771, + "y": 0.6463, + "confidence": 0.141 + }, + { + "name": "left_ankle", + "x": 0.4814, + "y": 0.6926, + "confidence": 0.24 + }, + { + "name": "right_ankle", + "x": 0.5773, + "y": 0.6878, + "confidence": 0.208 + } + ] + } + ] + }, + { + "frame_index": 161, + "timestamp": 2.683333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.5338, + "acceleration": 47.1502, + "fluidity": 0, + "expansion": 0.327, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5587, + "y": 0.5933, + "confidence": 0.226 + }, + { + "name": "left_eye", + "x": 0.5554, + "y": 0.5903, + "confidence": 0.387 + }, + { + "name": "right_eye", + "x": 0.5534, + "y": 0.5919, + "confidence": 0.307 + }, + { + "name": "left_ear", + "x": 0.5719, + "y": 0.5873, + "confidence": 0.218 + }, + { + "name": "right_ear", + "x": 0.5599, + "y": 0.6005, + "confidence": 0.2 + }, + { + "name": "left_shoulder", + "x": 0.617, + "y": 0.5931, + "confidence": 0.314 + }, + { + "name": "right_shoulder", + "x": 0.581, + "y": 0.6156, + "confidence": 0.229 + }, + { + "name": "left_elbow", + "x": 0.5822, + "y": 0.6458, + "confidence": 0.088 + }, + { + "name": "right_elbow", + "x": 0.5262, + "y": 0.6327, + "confidence": 0.163 + }, + { + "name": "left_wrist", + "x": 0.5641, + "y": 0.6674, + "confidence": 0.112 + }, + { + "name": "right_wrist", + "x": 0.5292, + "y": 0.6364, + "confidence": 0.134 + }, + { + "name": "left_hip", + "x": 0.7065, + "y": 0.6238, + "confidence": 0.29 + }, + { + "name": "right_hip", + "x": 0.7055, + "y": 0.6517, + "confidence": 0.217 + }, + { + "name": "left_knee", + "x": 0.5311, + "y": 0.6228, + "confidence": 0.203 + }, + { + "name": "right_knee", + "x": 0.577, + "y": 0.6463, + "confidence": 0.142 + }, + { + "name": "left_ankle", + "x": 0.4816, + "y": 0.6926, + "confidence": 0.241 + }, + { + "name": "right_ankle", + "x": 0.5816, + "y": 0.6944, + "confidence": 0.178 + } + ] + } + ] + }, + { + "frame_index": 162, + "timestamp": 2.7, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.7957, + "acceleration": 15.7122, + "fluidity": 0, + "expansion": 0.142, + "total_displacement": 0.0974, + "center_displacement": { + "x": 0.0922, + "y": 0.0316 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.604, + "y": 0.5341, + "confidence": 0.329 + }, + { + "name": "left_eye", + "x": 0.6017, + "y": 0.5354, + "confidence": 0.401 + }, + { + "name": "right_eye", + "x": 0.5968, + "y": 0.5369, + "confidence": 0.346 + }, + { + "name": "left_ear", + "x": 0.6094, + "y": 0.5239, + "confidence": 0.458 + }, + { + "name": "right_ear", + "x": 0.6078, + "y": 0.5326, + "confidence": 0.374 + }, + { + "name": "left_shoulder", + "x": 0.6387, + "y": 0.5329, + "confidence": 0.525 + }, + { + "name": "right_shoulder", + "x": 0.632, + "y": 0.5701, + "confidence": 0.292 + }, + { + "name": "left_elbow", + "x": 0.5537, + "y": 0.5656, + "confidence": 0.445 + }, + { + "name": "right_elbow", + "x": 0.6008, + "y": 0.6246, + "confidence": 0.143 + }, + { + "name": "left_wrist", + "x": 0.5005, + "y": 0.6496, + "confidence": 0.496 + }, + { + "name": "right_wrist", + "x": 0.5088, + "y": 0.6554, + "confidence": 0.373 + }, + { + "name": "left_hip", + "x": 0.706, + "y": 0.6892, + "confidence": 0.388 + }, + { + "name": "right_hip", + "x": 0.6962, + "y": 0.7138, + "confidence": 0.549 + }, + { + "name": "left_knee", + "x": 0.5805, + "y": 0.5666, + "confidence": 0.252 + }, + { + "name": "right_knee", + "x": 0.6119, + "y": 0.6093, + "confidence": 0.296 + }, + { + "name": "left_ankle", + "x": 0.5849, + "y": 0.6908, + "confidence": 0.193 + }, + { + "name": "right_ankle", + "x": 0.5869, + "y": 0.7, + "confidence": 0.438 + } + ] + } + ] + }, + { + "frame_index": 163, + "timestamp": 2.716666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.9411, + "acceleration": -111.2749, + "fluidity": 0, + "expansion": 0.081, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6042, + "y": 0.5336, + "confidence": 0.325 + }, + { + "name": "left_eye", + "x": 0.6018, + "y": 0.535, + "confidence": 0.408 + }, + { + "name": "right_eye", + "x": 0.5971, + "y": 0.5364, + "confidence": 0.344 + }, + { + "name": "left_ear", + "x": 0.6096, + "y": 0.5237, + "confidence": 0.456 + }, + { + "name": "right_ear", + "x": 0.608, + "y": 0.5323, + "confidence": 0.372 + }, + { + "name": "left_shoulder", + "x": 0.6388, + "y": 0.5327, + "confidence": 0.52 + }, + { + "name": "right_shoulder", + "x": 0.6322, + "y": 0.5701, + "confidence": 0.294 + }, + { + "name": "left_elbow", + "x": 0.5538, + "y": 0.5654, + "confidence": 0.451 + }, + { + "name": "right_elbow", + "x": 0.601, + "y": 0.6245, + "confidence": 0.145 + }, + { + "name": "left_wrist", + "x": 0.5006, + "y": 0.6496, + "confidence": 0.496 + }, + { + "name": "right_wrist", + "x": 0.5088, + "y": 0.6554, + "confidence": 0.377 + }, + { + "name": "left_hip", + "x": 0.7059, + "y": 0.6894, + "confidence": 0.387 + }, + { + "name": "right_hip", + "x": 0.6959, + "y": 0.7139, + "confidence": 0.55 + }, + { + "name": "left_knee", + "x": 0.5807, + "y": 0.5663, + "confidence": 0.251 + }, + { + "name": "right_knee", + "x": 0.6121, + "y": 0.6091, + "confidence": 0.296 + }, + { + "name": "left_ankle", + "x": 0.5849, + "y": 0.6906, + "confidence": 0.194 + }, + { + "name": "right_ankle", + "x": 0.5869, + "y": 0.6999, + "confidence": 0.438 + } + ] + } + ] + }, + { + "frame_index": 164, + "timestamp": 2.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.1987, + "acceleration": 75.4563, + "fluidity": 0, + "expansion": 0.066, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6052, + "y": 0.5329, + "confidence": 0.321 + }, + { + "name": "left_eye", + "x": 0.6027, + "y": 0.5343, + "confidence": 0.411 + }, + { + "name": "right_eye", + "x": 0.598, + "y": 0.5357, + "confidence": 0.341 + }, + { + "name": "left_ear", + "x": 0.6101, + "y": 0.523, + "confidence": 0.449 + }, + { + "name": "right_ear", + "x": 0.6082, + "y": 0.532, + "confidence": 0.369 + }, + { + "name": "left_shoulder", + "x": 0.6389, + "y": 0.5329, + "confidence": 0.527 + }, + { + "name": "right_shoulder", + "x": 0.6324, + "y": 0.5702, + "confidence": 0.294 + }, + { + "name": "left_elbow", + "x": 0.5539, + "y": 0.5654, + "confidence": 0.458 + }, + { + "name": "right_elbow", + "x": 0.6008, + "y": 0.625, + "confidence": 0.142 + }, + { + "name": "left_wrist", + "x": 0.5008, + "y": 0.6496, + "confidence": 0.487 + }, + { + "name": "right_wrist", + "x": 0.5086, + "y": 0.6556, + "confidence": 0.369 + }, + { + "name": "left_hip", + "x": 0.7059, + "y": 0.6889, + "confidence": 0.388 + }, + { + "name": "right_hip", + "x": 0.6964, + "y": 0.714, + "confidence": 0.541 + }, + { + "name": "left_knee", + "x": 0.5805, + "y": 0.5664, + "confidence": 0.254 + }, + { + "name": "right_knee", + "x": 0.6161, + "y": 0.6083, + "confidence": 0.212 + }, + { + "name": "left_ankle", + "x": 0.5848, + "y": 0.6903, + "confidence": 0.192 + }, + { + "name": "right_ankle", + "x": 0.587, + "y": 0.6996, + "confidence": 0.429 + } + ] + } + ] + }, + { + "frame_index": 165, + "timestamp": 2.75, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 2.6146, + "acceleration": 24.9543, + "fluidity": 0, + "expansion": 0.066, + "total_displacement": 0.0939, + "center_displacement": { + "x": -0.0819, + "y": -0.046 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.586, + "y": 0.5332, + "confidence": 0.415 + }, + { + "name": "left_eye", + "x": 0.5936, + "y": 0.5249, + "confidence": 0.515 + }, + { + "name": "right_eye", + "x": 0.5849, + "y": 0.532, + "confidence": 0.45 + }, + { + "name": "left_ear", + "x": 0.6207, + "y": 0.5224, + "confidence": 0.466 + }, + { + "name": "right_ear", + "x": 0.5956, + "y": 0.5334, + "confidence": 0.388 + }, + { + "name": "left_shoulder", + "x": 0.6601, + "y": 0.5464, + "confidence": 0.454 + }, + { + "name": "right_shoulder", + "x": 0.6015, + "y": 0.5782, + "confidence": 0.424 + }, + { + "name": "left_elbow", + "x": 0.6165, + "y": 0.5452, + "confidence": 0.337 + }, + { + "name": "right_elbow", + "x": 0.5497, + "y": 0.5831, + "confidence": 0.289 + }, + { + "name": "left_wrist", + "x": 0.5438, + "y": 0.5744, + "confidence": 0.325 + }, + { + "name": "right_wrist", + "x": 0.5243, + "y": 0.5873, + "confidence": 0.527 + }, + { + "name": "left_hip", + "x": 0.6917, + "y": 0.6871, + "confidence": 0.29 + }, + { + "name": "right_hip", + "x": 0.632, + "y": 0.6852, + "confidence": 0.365 + }, + { + "name": "left_knee", + "x": 0.5951, + "y": 0.6342, + "confidence": 0.201 + }, + { + "name": "right_knee", + "x": 0.5679, + "y": 0.6521, + "confidence": 0.364 + }, + { + "name": "left_ankle", + "x": 0.5709, + "y": 0.6851, + "confidence": 0.145 + }, + { + "name": "right_ankle", + "x": 0.4885, + "y": 0.6913, + "confidence": 0.446 + } + ] + } + ] + }, + { + "frame_index": 166, + "timestamp": 2.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.8822, + "acceleration": -103.9428, + "fluidity": 0, + "expansion": 0.067, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5857, + "y": 0.5333, + "confidence": 0.417 + }, + { + "name": "left_eye", + "x": 0.5934, + "y": 0.5249, + "confidence": 0.507 + }, + { + "name": "right_eye", + "x": 0.5838, + "y": 0.5318, + "confidence": 0.558 + }, + { + "name": "left_ear", + "x": 0.6204, + "y": 0.5226, + "confidence": 0.469 + }, + { + "name": "right_ear", + "x": 0.5957, + "y": 0.5333, + "confidence": 0.385 + }, + { + "name": "left_shoulder", + "x": 0.66, + "y": 0.5465, + "confidence": 0.455 + }, + { + "name": "right_shoulder", + "x": 0.6015, + "y": 0.5782, + "confidence": 0.426 + }, + { + "name": "left_elbow", + "x": 0.6164, + "y": 0.5453, + "confidence": 0.339 + }, + { + "name": "right_elbow", + "x": 0.5495, + "y": 0.5832, + "confidence": 0.289 + }, + { + "name": "left_wrist", + "x": 0.5438, + "y": 0.5745, + "confidence": 0.324 + }, + { + "name": "right_wrist", + "x": 0.5241, + "y": 0.5874, + "confidence": 0.528 + }, + { + "name": "left_hip", + "x": 0.6918, + "y": 0.6873, + "confidence": 0.29 + }, + { + "name": "right_hip", + "x": 0.632, + "y": 0.6854, + "confidence": 0.367 + }, + { + "name": "left_knee", + "x": 0.595, + "y": 0.6345, + "confidence": 0.201 + }, + { + "name": "right_knee", + "x": 0.5678, + "y": 0.6523, + "confidence": 0.366 + }, + { + "name": "left_ankle", + "x": 0.5706, + "y": 0.6852, + "confidence": 0.143 + }, + { + "name": "right_ankle", + "x": 0.4887, + "y": 0.6914, + "confidence": 0.451 + } + ] + } + ] + }, + { + "frame_index": 167, + "timestamp": 2.783333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.5434, + "acceleration": 39.6736, + "fluidity": 0, + "expansion": 0.211, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0001, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5858, + "y": 0.5328, + "confidence": 0.413 + }, + { + "name": "left_eye", + "x": 0.5934, + "y": 0.5243, + "confidence": 0.505 + }, + { + "name": "right_eye", + "x": 0.5839, + "y": 0.5312, + "confidence": 0.567 + }, + { + "name": "left_ear", + "x": 0.6202, + "y": 0.5215, + "confidence": 0.453 + }, + { + "name": "right_ear", + "x": 0.5961, + "y": 0.5327, + "confidence": 0.38 + }, + { + "name": "left_shoulder", + "x": 0.6596, + "y": 0.5459, + "confidence": 0.445 + }, + { + "name": "right_shoulder", + "x": 0.602, + "y": 0.5776, + "confidence": 0.432 + }, + { + "name": "left_elbow", + "x": 0.6156, + "y": 0.5457, + "confidence": 0.337 + }, + { + "name": "right_elbow", + "x": 0.5705, + "y": 0.6342, + "confidence": 0.155 + }, + { + "name": "left_wrist", + "x": 0.5435, + "y": 0.5744, + "confidence": 0.324 + }, + { + "name": "right_wrist", + "x": 0.5242, + "y": 0.5873, + "confidence": 0.523 + }, + { + "name": "left_hip", + "x": 0.6919, + "y": 0.6873, + "confidence": 0.292 + }, + { + "name": "right_hip", + "x": 0.6328, + "y": 0.6853, + "confidence": 0.369 + }, + { + "name": "left_knee", + "x": 0.5948, + "y": 0.6346, + "confidence": 0.205 + }, + { + "name": "right_knee", + "x": 0.5681, + "y": 0.6521, + "confidence": 0.365 + }, + { + "name": "left_ankle", + "x": 0.5709, + "y": 0.6854, + "confidence": 0.148 + }, + { + "name": "right_ankle", + "x": 0.4888, + "y": 0.6914, + "confidence": 0.448 + } + ] + } + ] + }, + { + "frame_index": 168, + "timestamp": 2.8, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.8332, + "acceleration": 77.3863, + "fluidity": 0, + "expansion": 0.404, + "total_displacement": 0.0621, + "center_displacement": { + "x": 0.0617, + "y": -0.0072 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5975, + "y": 0.5313, + "confidence": 0.425 + }, + { + "name": "left_eye", + "x": 0.6057, + "y": 0.5218, + "confidence": 0.477 + }, + { + "name": "right_eye", + "x": 0.5947, + "y": 0.5265, + "confidence": 0.443 + }, + { + "name": "left_ear", + "x": 0.6406, + "y": 0.5297, + "confidence": 0.542 + }, + { + "name": "right_ear", + "x": 0.6125, + "y": 0.5343, + "confidence": 0.349 + }, + { + "name": "left_shoulder", + "x": 0.7042, + "y": 0.5614, + "confidence": 0.689 + }, + { + "name": "right_shoulder", + "x": 0.5906, + "y": 0.5784, + "confidence": 0.519 + }, + { + "name": "left_elbow", + "x": 0.6451, + "y": 0.5599, + "confidence": 0.223 + }, + { + "name": "right_elbow", + "x": 0.5554, + "y": 0.5787, + "confidence": 0.306 + }, + { + "name": "left_wrist", + "x": 0.6123, + "y": 0.5444, + "confidence": 0.285 + }, + { + "name": "right_wrist", + "x": 0.5772, + "y": 0.5476, + "confidence": 0.292 + }, + { + "name": "left_hip", + "x": 0.6836, + "y": 0.7001, + "confidence": 0.36 + }, + { + "name": "right_hip", + "x": 0.6173, + "y": 0.6981, + "confidence": 0.407 + }, + { + "name": "left_knee", + "x": 0.7149, + "y": 0.5708, + "confidence": 0.355 + }, + { + "name": "right_knee", + "x": 0.5428, + "y": 0.6175, + "confidence": 0.349 + }, + { + "name": "left_ankle", + "x": 0.5087, + "y": 0.6572, + "confidence": 0.119 + }, + { + "name": "right_ankle", + "x": 0.4827, + "y": 0.6747, + "confidence": 0.316 + } + ] + } + ] + }, + { + "frame_index": 169, + "timestamp": 2.8166666666666664, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.025, + "acceleration": -48.4917, + "fluidity": 0, + "expansion": 0.468, + "total_displacement": 0.0538, + "center_displacement": { + "x": 0.045, + "y": 0.0296 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.637, + "y": 0.5319, + "confidence": 0.354 + }, + { + "name": "left_eye", + "x": 0.6452, + "y": 0.5246, + "confidence": 0.535 + }, + { + "name": "right_eye", + "x": 0.6316, + "y": 0.5281, + "confidence": 0.322 + }, + { + "name": "left_ear", + "x": 0.6631, + "y": 0.5418, + "confidence": 0.497 + }, + { + "name": "right_ear", + "x": 0.6257, + "y": 0.5504, + "confidence": 0.281 + }, + { + "name": "left_shoulder", + "x": 0.6924, + "y": 0.5995, + "confidence": 0.6 + }, + { + "name": "right_shoulder", + "x": 0.5916, + "y": 0.587, + "confidence": 0.417 + }, + { + "name": "left_elbow", + "x": 0.7325, + "y": 0.5502, + "confidence": 0.176 + }, + { + "name": "right_elbow", + "x": 0.5283, + "y": 0.5567, + "confidence": 0.324 + }, + { + "name": "left_wrist", + "x": 0.6655, + "y": 0.5471, + "confidence": 0.329 + }, + { + "name": "right_wrist", + "x": 0.5431, + "y": 0.5283, + "confidence": 0.144 + }, + { + "name": "left_hip", + "x": 0.6491, + "y": 0.6703, + "confidence": 0.312 + }, + { + "name": "right_hip", + "x": 0.5783, + "y": 0.6653, + "confidence": 0.408 + }, + { + "name": "left_knee", + "x": 0.6785, + "y": 0.5714, + "confidence": 0.152 + }, + { + "name": "right_knee", + "x": 0.5402, + "y": 0.5678, + "confidence": 0.284 + }, + { + "name": "left_ankle", + "x": 0.6581, + "y": 0.5512, + "confidence": 0.157 + }, + { + "name": "right_ankle", + "x": 0.4647, + "y": 0.6276, + "confidence": 0.496 + } + ] + } + ] + }, + { + "frame_index": 170, + "timestamp": 2.8333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.6853, + "acceleration": -80.3826, + "fluidity": 0, + "expansion": 0.489, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6409, + "y": 0.5327, + "confidence": 0.416 + }, + { + "name": "left_eye", + "x": 0.6449, + "y": 0.5247, + "confidence": 0.528 + }, + { + "name": "right_eye", + "x": 0.6312, + "y": 0.5283, + "confidence": 0.318 + }, + { + "name": "left_ear", + "x": 0.6628, + "y": 0.5418, + "confidence": 0.496 + }, + { + "name": "right_ear", + "x": 0.6255, + "y": 0.5505, + "confidence": 0.284 + }, + { + "name": "left_shoulder", + "x": 0.6922, + "y": 0.5994, + "confidence": 0.597 + }, + { + "name": "right_shoulder", + "x": 0.5915, + "y": 0.5871, + "confidence": 0.417 + }, + { + "name": "left_elbow", + "x": 0.7325, + "y": 0.5502, + "confidence": 0.176 + }, + { + "name": "right_elbow", + "x": 0.5283, + "y": 0.5568, + "confidence": 0.322 + }, + { + "name": "left_wrist", + "x": 0.6654, + "y": 0.547, + "confidence": 0.329 + }, + { + "name": "right_wrist", + "x": 0.5428, + "y": 0.5283, + "confidence": 0.145 + }, + { + "name": "left_hip", + "x": 0.6493, + "y": 0.6703, + "confidence": 0.312 + }, + { + "name": "right_hip", + "x": 0.5785, + "y": 0.6653, + "confidence": 0.41 + }, + { + "name": "left_knee", + "x": 0.6785, + "y": 0.5714, + "confidence": 0.152 + }, + { + "name": "right_knee", + "x": 0.5537, + "y": 0.5765, + "confidence": 0.194 + }, + { + "name": "left_ankle", + "x": 0.6581, + "y": 0.5511, + "confidence": 0.156 + }, + { + "name": "right_ankle", + "x": 0.4646, + "y": 0.6275, + "confidence": 0.495 + } + ] + } + ] + }, + { + "frame_index": 171, + "timestamp": 2.85, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.547, + "acceleration": -8.3005, + "fluidity": 0, + "expansion": 0.366, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0.0003, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.637, + "y": 0.532, + "confidence": 0.354 + }, + { + "name": "left_eye", + "x": 0.6451, + "y": 0.5247, + "confidence": 0.534 + }, + { + "name": "right_eye", + "x": 0.6317, + "y": 0.5283, + "confidence": 0.322 + }, + { + "name": "left_ear", + "x": 0.6632, + "y": 0.5419, + "confidence": 0.497 + }, + { + "name": "right_ear", + "x": 0.6261, + "y": 0.5504, + "confidence": 0.282 + }, + { + "name": "left_shoulder", + "x": 0.6925, + "y": 0.5995, + "confidence": 0.604 + }, + { + "name": "right_shoulder", + "x": 0.5917, + "y": 0.587, + "confidence": 0.421 + }, + { + "name": "left_elbow", + "x": 0.7326, + "y": 0.55, + "confidence": 0.178 + }, + { + "name": "right_elbow", + "x": 0.5286, + "y": 0.5566, + "confidence": 0.327 + }, + { + "name": "left_wrist", + "x": 0.6655, + "y": 0.547, + "confidence": 0.331 + }, + { + "name": "right_wrist", + "x": 0.5434, + "y": 0.5285, + "confidence": 0.146 + }, + { + "name": "left_hip", + "x": 0.6493, + "y": 0.6706, + "confidence": 0.317 + }, + { + "name": "right_hip", + "x": 0.5785, + "y": 0.6654, + "confidence": 0.414 + }, + { + "name": "left_knee", + "x": 0.6784, + "y": 0.5714, + "confidence": 0.151 + }, + { + "name": "right_knee", + "x": 0.5536, + "y": 0.5766, + "confidence": 0.194 + }, + { + "name": "left_ankle", + "x": 0.6581, + "y": 0.5511, + "confidence": 0.155 + }, + { + "name": "right_ankle", + "x": 0.4647, + "y": 0.6275, + "confidence": 0.499 + } + ] + } + ] + }, + { + "frame_index": 172, + "timestamp": 2.8666666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4957, + "acceleration": -3.0777, + "fluidity": 0, + "expansion": 0.196, + "total_displacement": 0.0156, + "center_displacement": { + "x": 0.0051, + "y": -0.0147 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6477, + "y": 0.535, + "confidence": 0.536 + }, + { + "name": "left_eye", + "x": 0.6592, + "y": 0.532, + "confidence": 0.469 + }, + { + "name": "right_eye", + "x": 0.6471, + "y": 0.5329, + "confidence": 0.423 + }, + { + "name": "left_ear", + "x": 0.6728, + "y": 0.5539, + "confidence": 0.534 + }, + { + "name": "right_ear", + "x": 0.6383, + "y": 0.5551, + "confidence": 0.355 + }, + { + "name": "left_shoulder", + "x": 0.6976, + "y": 0.5847, + "confidence": 0.642 + }, + { + "name": "right_shoulder", + "x": 0.5995, + "y": 0.5822, + "confidence": 0.413 + }, + { + "name": "left_elbow", + "x": 0.7466, + "y": 0.5441, + "confidence": 0.274 + }, + { + "name": "right_elbow", + "x": 0.5638, + "y": 0.5237, + "confidence": 0.411 + }, + { + "name": "left_wrist", + "x": 0.7019, + "y": 0.5387, + "confidence": 0.183 + }, + { + "name": "right_wrist", + "x": 0.5787, + "y": 0.5181, + "confidence": 0.373 + }, + { + "name": "left_hip", + "x": 0.6422, + "y": 0.6607, + "confidence": 0.326 + }, + { + "name": "right_hip", + "x": 0.5634, + "y": 0.6484, + "confidence": 0.425 + }, + { + "name": "left_knee", + "x": 0.6397, + "y": 0.5458, + "confidence": 0.105 + }, + { + "name": "right_knee", + "x": 0.5806, + "y": 0.5699, + "confidence": 0.153 + }, + { + "name": "left_ankle", + "x": 0.5708, + "y": 0.5325, + "confidence": 0.227 + }, + { + "name": "right_ankle", + "x": 0.4791, + "y": 0.565, + "confidence": 0.534 + } + ] + } + ] + }, + { + "frame_index": 173, + "timestamp": 2.8833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.6357, + "acceleration": 8.4044, + "fluidity": 0, + "expansion": 0.153, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6475, + "y": 0.535, + "confidence": 0.54 + }, + { + "name": "left_eye", + "x": 0.6591, + "y": 0.5319, + "confidence": 0.471 + }, + { + "name": "right_eye", + "x": 0.647, + "y": 0.5329, + "confidence": 0.423 + }, + { + "name": "left_ear", + "x": 0.673, + "y": 0.5541, + "confidence": 0.54 + }, + { + "name": "right_ear", + "x": 0.6386, + "y": 0.5551, + "confidence": 0.357 + }, + { + "name": "left_shoulder", + "x": 0.6976, + "y": 0.5847, + "confidence": 0.645 + }, + { + "name": "right_shoulder", + "x": 0.5995, + "y": 0.5821, + "confidence": 0.418 + }, + { + "name": "left_elbow", + "x": 0.7471, + "y": 0.5441, + "confidence": 0.268 + }, + { + "name": "right_elbow", + "x": 0.5635, + "y": 0.524, + "confidence": 0.417 + }, + { + "name": "left_wrist", + "x": 0.7023, + "y": 0.5384, + "confidence": 0.183 + }, + { + "name": "right_wrist", + "x": 0.5788, + "y": 0.5181, + "confidence": 0.374 + }, + { + "name": "left_hip", + "x": 0.6422, + "y": 0.6606, + "confidence": 0.325 + }, + { + "name": "right_hip", + "x": 0.5631, + "y": 0.6482, + "confidence": 0.427 + }, + { + "name": "left_knee", + "x": 0.6391, + "y": 0.546, + "confidence": 0.105 + }, + { + "name": "right_knee", + "x": 0.5804, + "y": 0.57, + "confidence": 0.156 + }, + { + "name": "left_ankle", + "x": 0.5708, + "y": 0.5325, + "confidence": 0.227 + }, + { + "name": "right_ankle", + "x": 0.4792, + "y": 0.5648, + "confidence": 0.528 + } + ] + } + ] + }, + { + "frame_index": 174, + "timestamp": 2.9, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.6846, + "acceleration": 2.9315, + "fluidity": 0, + "expansion": 0.153, + "total_displacement": 0.0235, + "center_displacement": { + "x": -0.0211, + "y": 0.0104 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6682, + "y": 0.5471, + "confidence": 0.315 + }, + { + "name": "left_eye", + "x": 0.6801, + "y": 0.5399, + "confidence": 0.373 + }, + { + "name": "right_eye", + "x": 0.6701, + "y": 0.5427, + "confidence": 0.317 + }, + { + "name": "left_ear", + "x": 0.6894, + "y": 0.5611, + "confidence": 0.477 + }, + { + "name": "right_ear", + "x": 0.664, + "y": 0.5658, + "confidence": 0.39 + }, + { + "name": "left_shoulder", + "x": 0.6765, + "y": 0.5951, + "confidence": 0.517 + }, + { + "name": "right_shoulder", + "x": 0.6269, + "y": 0.591, + "confidence": 0.321 + }, + { + "name": "left_elbow", + "x": 0.7286, + "y": 0.5542, + "confidence": 0.288 + }, + { + "name": "right_elbow", + "x": 0.6285, + "y": 0.4857, + "confidence": 0.343 + }, + { + "name": "left_wrist", + "x": 0.7963, + "y": 0.5167, + "confidence": 0.689 + }, + { + "name": "right_wrist", + "x": 0.6426, + "y": 0.4799, + "confidence": 0.339 + }, + { + "name": "left_hip", + "x": 0.5814, + "y": 0.6284, + "confidence": 0.278 + }, + { + "name": "right_hip", + "x": 0.5477, + "y": 0.6198, + "confidence": 0.419 + }, + { + "name": "left_knee", + "x": 0.5871, + "y": 0.4845, + "confidence": 0.315 + }, + { + "name": "right_knee", + "x": 0.5753, + "y": 0.4777, + "confidence": 0.683 + }, + { + "name": "left_ankle", + "x": 0.4913, + "y": 0.4856, + "confidence": 0.287 + }, + { + "name": "right_ankle", + "x": 0.4956, + "y": 0.4848, + "confidence": 0.463 + } + ] + } + ] + }, + { + "frame_index": 175, + "timestamp": 2.9166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.2337, + "acceleration": -27.0523, + "fluidity": 0.051, + "expansion": 0.153, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6691, + "y": 0.5474, + "confidence": 0.326 + }, + { + "name": "left_eye", + "x": 0.6815, + "y": 0.5439, + "confidence": 0.243 + }, + { + "name": "right_eye", + "x": 0.6698, + "y": 0.5458, + "confidence": 0.227 + }, + { + "name": "left_ear", + "x": 0.6908, + "y": 0.564, + "confidence": 0.339 + }, + { + "name": "right_ear", + "x": 0.6646, + "y": 0.5661, + "confidence": 0.394 + }, + { + "name": "left_shoulder", + "x": 0.6767, + "y": 0.595, + "confidence": 0.512 + }, + { + "name": "right_shoulder", + "x": 0.6271, + "y": 0.5911, + "confidence": 0.32 + }, + { + "name": "left_elbow", + "x": 0.7285, + "y": 0.5542, + "confidence": 0.289 + }, + { + "name": "right_elbow", + "x": 0.6284, + "y": 0.4857, + "confidence": 0.343 + }, + { + "name": "left_wrist", + "x": 0.7962, + "y": 0.5168, + "confidence": 0.687 + }, + { + "name": "right_wrist", + "x": 0.6424, + "y": 0.4799, + "confidence": 0.336 + }, + { + "name": "left_hip", + "x": 0.5935, + "y": 0.6354, + "confidence": 0.203 + }, + { + "name": "right_hip", + "x": 0.5477, + "y": 0.6199, + "confidence": 0.418 + }, + { + "name": "left_knee", + "x": 0.5872, + "y": 0.4845, + "confidence": 0.314 + }, + { + "name": "right_knee", + "x": 0.5753, + "y": 0.4777, + "confidence": 0.685 + }, + { + "name": "left_ankle", + "x": 0.4915, + "y": 0.4856, + "confidence": 0.287 + }, + { + "name": "right_ankle", + "x": 0.4956, + "y": 0.4848, + "confidence": 0.465 + } + ] + } + ] + }, + { + "frame_index": 176, + "timestamp": 2.933333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.3788, + "acceleration": 68.702, + "fluidity": 0.068, + "expansion": 0.268, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6679, + "y": 0.5472, + "confidence": 0.311 + }, + { + "name": "left_eye", + "x": 0.6798, + "y": 0.5399, + "confidence": 0.375 + }, + { + "name": "right_eye", + "x": 0.6699, + "y": 0.5427, + "confidence": 0.318 + }, + { + "name": "left_ear", + "x": 0.6892, + "y": 0.5608, + "confidence": 0.48 + }, + { + "name": "right_ear", + "x": 0.664, + "y": 0.5657, + "confidence": 0.389 + }, + { + "name": "left_shoulder", + "x": 0.6768, + "y": 0.5951, + "confidence": 0.513 + }, + { + "name": "right_shoulder", + "x": 0.6268, + "y": 0.5918, + "confidence": 0.314 + }, + { + "name": "left_elbow", + "x": 0.7284, + "y": 0.5539, + "confidence": 0.29 + }, + { + "name": "right_elbow", + "x": 0.6285, + "y": 0.4856, + "confidence": 0.342 + }, + { + "name": "left_wrist", + "x": 0.7962, + "y": 0.5166, + "confidence": 0.688 + }, + { + "name": "right_wrist", + "x": 0.6426, + "y": 0.48, + "confidence": 0.338 + }, + { + "name": "left_hip", + "x": 0.5814, + "y": 0.6282, + "confidence": 0.274 + }, + { + "name": "right_hip", + "x": 0.5477, + "y": 0.6198, + "confidence": 0.414 + }, + { + "name": "left_knee", + "x": 0.5868, + "y": 0.4844, + "confidence": 0.323 + }, + { + "name": "right_knee", + "x": 0.5753, + "y": 0.4779, + "confidence": 0.68 + }, + { + "name": "left_ankle", + "x": 0.4913, + "y": 0.4854, + "confidence": 0.299 + }, + { + "name": "right_ankle", + "x": 0.4955, + "y": 0.4849, + "confidence": 0.461 + } + ] + } + ] + }, + { + "frame_index": 177, + "timestamp": 2.95, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.7623, + "acceleration": 23.0125, + "fluidity": 0.023, + "expansion": 0.423, + "total_displacement": 0.0649, + "center_displacement": { + "x": -0.0279, + "y": -0.0586 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6943, + "y": 0.5346, + "confidence": 0.391 + }, + { + "name": "left_eye", + "x": 0.7041, + "y": 0.5368, + "confidence": 0.368 + }, + { + "name": "right_eye", + "x": 0.6988, + "y": 0.534, + "confidence": 0.389 + }, + { + "name": "left_ear", + "x": 0.7035, + "y": 0.5853, + "confidence": 0.354 + }, + { + "name": "right_ear", + "x": 0.6781, + "y": 0.5682, + "confidence": 0.221 + }, + { + "name": "left_shoulder", + "x": 0.6609, + "y": 0.5999, + "confidence": 0.413 + }, + { + "name": "right_shoulder", + "x": 0.6351, + "y": 0.5208, + "confidence": 0.299 + }, + { + "name": "left_elbow", + "x": 0.7226, + "y": 0.5716, + "confidence": 0.202 + }, + { + "name": "right_elbow", + "x": 0.6703, + "y": 0.5057, + "confidence": 0.264 + }, + { + "name": "left_wrist", + "x": 0.8018, + "y": 0.494, + "confidence": 0.451 + }, + { + "name": "right_wrist", + "x": 0.6844, + "y": 0.5176, + "confidence": 0.18 + }, + { + "name": "left_hip", + "x": 0.565, + "y": 0.6104, + "confidence": 0.39 + }, + { + "name": "right_hip", + "x": 0.534, + "y": 0.5833, + "confidence": 0.462 + }, + { + "name": "left_knee", + "x": 0.7208, + "y": 0.575, + "confidence": 0.118 + }, + { + "name": "right_knee", + "x": 0.6014, + "y": 0.4599, + "confidence": 0.692 + }, + { + "name": "left_ankle", + "x": 0.6743, + "y": 0.5185, + "confidence": 0.12 + }, + { + "name": "right_ankle", + "x": 0.5251, + "y": 0.4259, + "confidence": 0.41 + } + ] + } + ] + }, + { + "frame_index": 178, + "timestamp": 2.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.0795, + "acceleration": 19.0338, + "fluidity": 0.008, + "expansion": 0.311, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0001, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6946, + "y": 0.5351, + "confidence": 0.385 + }, + { + "name": "left_eye", + "x": 0.7044, + "y": 0.5371, + "confidence": 0.36 + }, + { + "name": "right_eye", + "x": 0.6992, + "y": 0.5343, + "confidence": 0.385 + }, + { + "name": "left_ear", + "x": 0.7035, + "y": 0.5863, + "confidence": 0.352 + }, + { + "name": "right_ear", + "x": 0.6783, + "y": 0.5689, + "confidence": 0.213 + }, + { + "name": "left_shoulder", + "x": 0.6609, + "y": 0.6004, + "confidence": 0.409 + }, + { + "name": "right_shoulder", + "x": 0.6348, + "y": 0.5207, + "confidence": 0.292 + }, + { + "name": "left_elbow", + "x": 0.7225, + "y": 0.5714, + "confidence": 0.2 + }, + { + "name": "right_elbow", + "x": 0.6705, + "y": 0.5057, + "confidence": 0.264 + }, + { + "name": "left_wrist", + "x": 0.802, + "y": 0.494, + "confidence": 0.452 + }, + { + "name": "right_wrist", + "x": 0.6847, + "y": 0.5175, + "confidence": 0.181 + }, + { + "name": "left_hip", + "x": 0.5649, + "y": 0.6101, + "confidence": 0.386 + }, + { + "name": "right_hip", + "x": 0.534, + "y": 0.5828, + "confidence": 0.449 + }, + { + "name": "left_knee", + "x": 0.7206, + "y": 0.5752, + "confidence": 0.121 + }, + { + "name": "right_knee", + "x": 0.601, + "y": 0.4599, + "confidence": 0.692 + }, + { + "name": "left_ankle", + "x": 0.6743, + "y": 0.5184, + "confidence": 0.122 + }, + { + "name": "right_ankle", + "x": 0.5252, + "y": 0.4262, + "confidence": 0.416 + } + ] + } + ] + }, + { + "frame_index": 179, + "timestamp": 2.9833333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 2.1828, + "acceleration": 6.198, + "fluidity": 0.003, + "expansion": 0.11, + "total_displacement": 0.0744, + "center_displacement": { + "x": -0.0624, + "y": -0.0404 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6857, + "y": 0.5746, + "confidence": 0.345 + }, + { + "name": "left_eye", + "x": 0.7008, + "y": 0.5824, + "confidence": 0.363 + }, + { + "name": "right_eye", + "x": 0.6901, + "y": 0.5694, + "confidence": 0.368 + }, + { + "name": "left_ear", + "x": 0.6975, + "y": 0.6046, + "confidence": 0.469 + }, + { + "name": "right_ear", + "x": 0.6834, + "y": 0.5759, + "confidence": 0.391 + }, + { + "name": "left_shoulder", + "x": 0.675, + "y": 0.6054, + "confidence": 0.476 + }, + { + "name": "right_shoulder", + "x": 0.6247, + "y": 0.4593, + "confidence": 0.543 + }, + { + "name": "left_elbow", + "x": 0.7337, + "y": 0.5867, + "confidence": 0.498 + }, + { + "name": "right_elbow", + "x": 0.7008, + "y": 0.5637, + "confidence": 0.289 + }, + { + "name": "left_wrist", + "x": 0.8097, + "y": 0.505, + "confidence": 0.629 + }, + { + "name": "right_wrist", + "x": 0.6769, + "y": 0.5666, + "confidence": 0.179 + }, + { + "name": "left_hip", + "x": 0.5726, + "y": 0.5694, + "confidence": 0.357 + }, + { + "name": "right_hip", + "x": 0.5484, + "y": 0.5331, + "confidence": 0.617 + }, + { + "name": "left_knee", + "x": 0.7287, + "y": 0.592, + "confidence": 0.132 + }, + { + "name": "right_knee", + "x": 0.6245, + "y": 0.435, + "confidence": 0.737 + }, + { + "name": "left_ankle", + "x": 0.8019, + "y": 0.5103, + "confidence": 0.316 + }, + { + "name": "right_ankle", + "x": 0.6084, + "y": 0.3467, + "confidence": 0.199 + } + ] + } + ] + }, + { + "frame_index": 180, + "timestamp": 3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.7322, + "acceleration": -87.0361, + "fluidity": 0.001, + "expansion": 0.043, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6855, + "y": 0.5745, + "confidence": 0.345 + }, + { + "name": "left_eye", + "x": 0.7007, + "y": 0.5823, + "confidence": 0.36 + }, + { + "name": "right_eye", + "x": 0.6899, + "y": 0.5692, + "confidence": 0.365 + }, + { + "name": "left_ear", + "x": 0.6974, + "y": 0.6046, + "confidence": 0.47 + }, + { + "name": "right_ear", + "x": 0.6832, + "y": 0.5759, + "confidence": 0.392 + }, + { + "name": "left_shoulder", + "x": 0.6749, + "y": 0.6054, + "confidence": 0.476 + }, + { + "name": "right_shoulder", + "x": 0.6245, + "y": 0.4594, + "confidence": 0.543 + }, + { + "name": "left_elbow", + "x": 0.7338, + "y": 0.5868, + "confidence": 0.496 + }, + { + "name": "right_elbow", + "x": 0.7007, + "y": 0.5638, + "confidence": 0.289 + }, + { + "name": "left_wrist", + "x": 0.8099, + "y": 0.5049, + "confidence": 0.629 + }, + { + "name": "right_wrist", + "x": 0.6768, + "y": 0.5665, + "confidence": 0.179 + }, + { + "name": "left_hip", + "x": 0.5727, + "y": 0.5695, + "confidence": 0.357 + }, + { + "name": "right_hip", + "x": 0.5484, + "y": 0.5329, + "confidence": 0.617 + }, + { + "name": "left_knee", + "x": 0.7288, + "y": 0.592, + "confidence": 0.133 + }, + { + "name": "right_knee", + "x": 0.6243, + "y": 0.4351, + "confidence": 0.737 + }, + { + "name": "left_ankle", + "x": 0.8021, + "y": 0.5102, + "confidence": 0.315 + }, + { + "name": "right_ankle", + "x": 0.6084, + "y": 0.3466, + "confidence": 0.201 + } + ] + } + ] + }, + { + "frame_index": 181, + "timestamp": 3.0166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.0456, + "acceleration": 78.8002, + "fluidity": 0, + "expansion": 0.184, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6855, + "y": 0.5745, + "confidence": 0.345 + }, + { + "name": "left_eye", + "x": 0.7007, + "y": 0.5822, + "confidence": 0.364 + }, + { + "name": "right_eye", + "x": 0.69, + "y": 0.5692, + "confidence": 0.365 + }, + { + "name": "left_ear", + "x": 0.6975, + "y": 0.6046, + "confidence": 0.466 + }, + { + "name": "right_ear", + "x": 0.6835, + "y": 0.5758, + "confidence": 0.39 + }, + { + "name": "left_shoulder", + "x": 0.6749, + "y": 0.6055, + "confidence": 0.472 + }, + { + "name": "right_shoulder", + "x": 0.6246, + "y": 0.4594, + "confidence": 0.543 + }, + { + "name": "left_elbow", + "x": 0.7337, + "y": 0.5868, + "confidence": 0.496 + }, + { + "name": "right_elbow", + "x": 0.7008, + "y": 0.5635, + "confidence": 0.291 + }, + { + "name": "left_wrist", + "x": 0.8095, + "y": 0.505, + "confidence": 0.63 + }, + { + "name": "right_wrist", + "x": 0.677, + "y": 0.5663, + "confidence": 0.18 + }, + { + "name": "left_hip", + "x": 0.5726, + "y": 0.5698, + "confidence": 0.356 + }, + { + "name": "right_hip", + "x": 0.5485, + "y": 0.5328, + "confidence": 0.617 + }, + { + "name": "left_knee", + "x": 0.7287, + "y": 0.5919, + "confidence": 0.133 + }, + { + "name": "right_knee", + "x": 0.6243, + "y": 0.4349, + "confidence": 0.736 + }, + { + "name": "left_ankle", + "x": 0.8017, + "y": 0.5104, + "confidence": 0.312 + }, + { + "name": "right_ankle", + "x": 0.6085, + "y": 0.3467, + "confidence": 0.198 + } + ] + } + ] + }, + { + "frame_index": 182, + "timestamp": 3.033333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.4821, + "acceleration": 26.1907, + "fluidity": 0, + "expansion": 0.395, + "total_displacement": 0.0899, + "center_displacement": { + "x": 0.0599, + "y": 0.067 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6861, + "y": 0.5809, + "confidence": 0.241 + }, + { + "name": "left_eye", + "x": 0.6989, + "y": 0.5754, + "confidence": 0.445 + }, + { + "name": "right_eye", + "x": 0.6909, + "y": 0.567, + "confidence": 0.408 + }, + { + "name": "left_ear", + "x": 0.6966, + "y": 0.5979, + "confidence": 0.296 + }, + { + "name": "right_ear", + "x": 0.6748, + "y": 0.5713, + "confidence": 0.373 + }, + { + "name": "left_shoulder", + "x": 0.6418, + "y": 0.6038, + "confidence": 0.264 + }, + { + "name": "right_shoulder", + "x": 0.6372, + "y": 0.552, + "confidence": 0.161 + }, + { + "name": "left_elbow", + "x": 0.725, + "y": 0.6031, + "confidence": 0.318 + }, + { + "name": "right_elbow", + "x": 0.6494, + "y": 0.5882, + "confidence": 0.117 + }, + { + "name": "left_wrist", + "x": 0.6463, + "y": 0.6489, + "confidence": 0.313 + }, + { + "name": "right_wrist", + "x": 0.672, + "y": 0.6268, + "confidence": 0.102 + }, + { + "name": "left_hip", + "x": 0.5368, + "y": 0.5573, + "confidence": 0.402 + }, + { + "name": "right_hip", + "x": 0.5382, + "y": 0.5384, + "confidence": 0.471 + }, + { + "name": "left_knee", + "x": 0.7039, + "y": 0.6102, + "confidence": 0.128 + }, + { + "name": "right_knee", + "x": 0.6607, + "y": 0.4434, + "confidence": 0.652 + }, + { + "name": "left_ankle", + "x": 0.7946, + "y": 0.5366, + "confidence": 0.217 + }, + { + "name": "right_ankle", + "x": 0.6542, + "y": 0.3516, + "confidence": 0.22 + } + ] + } + ] + }, + { + "frame_index": 183, + "timestamp": 3.05, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.9567, + "acceleration": -91.524, + "fluidity": 0, + "expansion": 0.465, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6861, + "y": 0.5807, + "confidence": 0.243 + }, + { + "name": "left_eye", + "x": 0.6989, + "y": 0.5752, + "confidence": 0.452 + }, + { + "name": "right_eye", + "x": 0.691, + "y": 0.5667, + "confidence": 0.408 + }, + { + "name": "left_ear", + "x": 0.6964, + "y": 0.5973, + "confidence": 0.3 + }, + { + "name": "right_ear", + "x": 0.6748, + "y": 0.5708, + "confidence": 0.379 + }, + { + "name": "left_shoulder", + "x": 0.6414, + "y": 0.6032, + "confidence": 0.261 + }, + { + "name": "right_shoulder", + "x": 0.637, + "y": 0.5516, + "confidence": 0.162 + }, + { + "name": "left_elbow", + "x": 0.725, + "y": 0.6031, + "confidence": 0.317 + }, + { + "name": "right_elbow", + "x": 0.6495, + "y": 0.5882, + "confidence": 0.117 + }, + { + "name": "left_wrist", + "x": 0.6463, + "y": 0.6489, + "confidence": 0.314 + }, + { + "name": "right_wrist", + "x": 0.672, + "y": 0.6269, + "confidence": 0.102 + }, + { + "name": "left_hip", + "x": 0.5368, + "y": 0.5575, + "confidence": 0.399 + }, + { + "name": "right_hip", + "x": 0.5381, + "y": 0.5386, + "confidence": 0.469 + }, + { + "name": "left_knee", + "x": 0.7039, + "y": 0.61, + "confidence": 0.128 + }, + { + "name": "right_knee", + "x": 0.6606, + "y": 0.4433, + "confidence": 0.653 + }, + { + "name": "left_ankle", + "x": 0.7946, + "y": 0.5367, + "confidence": 0.217 + }, + { + "name": "right_ankle", + "x": 0.6544, + "y": 0.3514, + "confidence": 0.219 + } + ] + } + ] + }, + { + "frame_index": 184, + "timestamp": 3.0666666666666664, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 2.6206, + "acceleration": 99.8341, + "fluidity": 0, + "expansion": 0.404, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0053, + "y": 0.0035 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6857, + "y": 0.5807, + "confidence": 0.24 + }, + { + "name": "left_eye", + "x": 0.6985, + "y": 0.5749, + "confidence": 0.46 + }, + { + "name": "right_eye", + "x": 0.6907, + "y": 0.5665, + "confidence": 0.399 + }, + { + "name": "left_ear", + "x": 0.6962, + "y": 0.5967, + "confidence": 0.302 + }, + { + "name": "right_ear", + "x": 0.6746, + "y": 0.5703, + "confidence": 0.384 + }, + { + "name": "left_shoulder", + "x": 0.6408, + "y": 0.603, + "confidence": 0.251 + }, + { + "name": "right_shoulder", + "x": 0.6367, + "y": 0.5516, + "confidence": 0.162 + }, + { + "name": "left_elbow", + "x": 0.7252, + "y": 0.6029, + "confidence": 0.313 + }, + { + "name": "right_elbow", + "x": 0.6494, + "y": 0.5883, + "confidence": 0.114 + }, + { + "name": "left_wrist", + "x": 0.646, + "y": 0.6488, + "confidence": 0.314 + }, + { + "name": "right_wrist", + "x": 0.6723, + "y": 0.6267, + "confidence": 0.102 + }, + { + "name": "left_hip", + "x": 0.5363, + "y": 0.5569, + "confidence": 0.406 + }, + { + "name": "right_hip", + "x": 0.538, + "y": 0.5383, + "confidence": 0.473 + }, + { + "name": "left_knee", + "x": 0.7039, + "y": 0.61, + "confidence": 0.127 + }, + { + "name": "right_knee", + "x": 0.6606, + "y": 0.4433, + "confidence": 0.645 + }, + { + "name": "left_ankle", + "x": 0.7943, + "y": 0.5367, + "confidence": 0.217 + }, + { + "name": "right_ankle", + "x": 0.6545, + "y": 0.3516, + "confidence": 0.216 + } + ] + } + ] + }, + { + "frame_index": 185, + "timestamp": 3.0833333333333335, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 4.6033, + "acceleration": 118.9619, + "fluidity": 0, + "expansion": 0.299, + "total_displacement": 0.1087, + "center_displacement": { + "x": 0.0176, + "y": -0.1073 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6724, + "y": 0.5814, + "confidence": 0.309 + }, + { + "name": "left_eye", + "x": 0.6842, + "y": 0.5882, + "confidence": 0.36 + }, + { + "name": "right_eye", + "x": 0.677, + "y": 0.5679, + "confidence": 0.386 + }, + { + "name": "left_ear", + "x": 0.6748, + "y": 0.6278, + "confidence": 0.277 + }, + { + "name": "right_ear", + "x": 0.6598, + "y": 0.5848, + "confidence": 0.323 + }, + { + "name": "left_shoulder", + "x": 0.6178, + "y": 0.608, + "confidence": 0.258 + }, + { + "name": "right_shoulder", + "x": 0.6693, + "y": 0.4592, + "confidence": 0.502 + }, + { + "name": "left_elbow", + "x": 0.7064, + "y": 0.6164, + "confidence": 0.446 + }, + { + "name": "right_elbow", + "x": 0.6986, + "y": 0.4385, + "confidence": 0.172 + }, + { + "name": "left_wrist", + "x": 0.6542, + "y": 0.6331, + "confidence": 0.113 + }, + { + "name": "right_wrist", + "x": 0.6039, + "y": 0.6363, + "confidence": 0.267 + }, + { + "name": "left_hip", + "x": 0.5511, + "y": 0.5563, + "confidence": 0.283 + }, + { + "name": "right_hip", + "x": 0.5561, + "y": 0.5117, + "confidence": 0.421 + }, + { + "name": "left_knee", + "x": 0.7036, + "y": 0.617, + "confidence": 0.569 + }, + { + "name": "right_knee", + "x": 0.6893, + "y": 0.4457, + "confidence": 0.635 + }, + { + "name": "left_ankle", + "x": 0.7964, + "y": 0.5753, + "confidence": 0.55 + }, + { + "name": "right_ankle", + "x": 0.7374, + "y": 0.3363, + "confidence": 0.477 + } + ] + } + ] + }, + { + "frame_index": 186, + "timestamp": 3.1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 3.4467, + "acceleration": -69.3945, + "fluidity": 0, + "expansion": 0.261, + "total_displacement": 0.0778, + "center_displacement": { + "x": 0.017, + "y": 0.0759 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6721, + "y": 0.582, + "confidence": 0.309 + }, + { + "name": "left_eye", + "x": 0.6839, + "y": 0.5886, + "confidence": 0.361 + }, + { + "name": "right_eye", + "x": 0.6767, + "y": 0.5685, + "confidence": 0.391 + }, + { + "name": "left_ear", + "x": 0.6747, + "y": 0.6281, + "confidence": 0.279 + }, + { + "name": "right_ear", + "x": 0.6596, + "y": 0.5853, + "confidence": 0.325 + }, + { + "name": "left_shoulder", + "x": 0.6176, + "y": 0.6085, + "confidence": 0.258 + }, + { + "name": "right_shoulder", + "x": 0.6691, + "y": 0.4596, + "confidence": 0.488 + }, + { + "name": "left_elbow", + "x": 0.7065, + "y": 0.6164, + "confidence": 0.447 + }, + { + "name": "right_elbow", + "x": 0.6986, + "y": 0.4387, + "confidence": 0.173 + }, + { + "name": "left_wrist", + "x": 0.6548, + "y": 0.633, + "confidence": 0.115 + }, + { + "name": "right_wrist", + "x": 0.6038, + "y": 0.6364, + "confidence": 0.265 + }, + { + "name": "left_hip", + "x": 0.5511, + "y": 0.5554, + "confidence": 0.283 + }, + { + "name": "right_hip", + "x": 0.5563, + "y": 0.5113, + "confidence": 0.424 + }, + { + "name": "left_knee", + "x": 0.7035, + "y": 0.6171, + "confidence": 0.561 + }, + { + "name": "right_knee", + "x": 0.6883, + "y": 0.446, + "confidence": 0.567 + }, + { + "name": "left_ankle", + "x": 0.7967, + "y": 0.5753, + "confidence": 0.544 + }, + { + "name": "right_ankle", + "x": 0.7374, + "y": 0.3365, + "confidence": 0.476 + } + ] + } + ] + }, + { + "frame_index": 187, + "timestamp": 3.1166666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.6292, + "acceleration": -109.048, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0178, + "center_displacement": { + "x": 0.0001, + "y": 0.0178 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6582, + "y": 0.6023, + "confidence": 0.269 + }, + { + "name": "left_eye", + "x": 0.673, + "y": 0.6075, + "confidence": 0.37 + }, + { + "name": "right_eye", + "x": 0.6652, + "y": 0.5887, + "confidence": 0.356 + }, + { + "name": "left_ear", + "x": 0.66, + "y": 0.6414, + "confidence": 0.283 + }, + { + "name": "right_ear", + "x": 0.647, + "y": 0.6044, + "confidence": 0.285 + }, + { + "name": "left_shoulder", + "x": 0.5875, + "y": 0.6199, + "confidence": 0.287 + }, + { + "name": "right_shoulder", + "x": 0.6368, + "y": 0.549, + "confidence": 0.084 + }, + { + "name": "left_elbow", + "x": 0.6079, + "y": 0.651, + "confidence": 0.348 + }, + { + "name": "right_elbow", + "x": 0.7117, + "y": 0.4599, + "confidence": 0.228 + }, + { + "name": "left_wrist", + "x": 0.6151, + "y": 0.6499, + "confidence": 0.249 + }, + { + "name": "right_wrist", + "x": 0.6013, + "y": 0.6417, + "confidence": 0.227 + }, + { + "name": "left_hip", + "x": 0.5527, + "y": 0.5375, + "confidence": 0.262 + }, + { + "name": "right_hip", + "x": 0.5656, + "y": 0.5023, + "confidence": 0.38 + }, + { + "name": "left_knee", + "x": 0.6866, + "y": 0.6311, + "confidence": 0.408 + }, + { + "name": "right_knee", + "x": 0.7004, + "y": 0.466, + "confidence": 0.449 + }, + { + "name": "left_ankle", + "x": 0.7999, + "y": 0.6074, + "confidence": 0.588 + }, + { + "name": "right_ankle", + "x": 0.7929, + "y": 0.3699, + "confidence": 0.788 + } + ] + } + ] + }, + { + "frame_index": 188, + "timestamp": 3.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.6704, + "acceleration": -57.5287, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.0062, + "center_displacement": { + "x": -0.0043, + "y": 0.0045 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6586, + "y": 0.6018, + "confidence": 0.275 + }, + { + "name": "left_eye", + "x": 0.6733, + "y": 0.6071, + "confidence": 0.381 + }, + { + "name": "right_eye", + "x": 0.6656, + "y": 0.5883, + "confidence": 0.362 + }, + { + "name": "left_ear", + "x": 0.6604, + "y": 0.6404, + "confidence": 0.286 + }, + { + "name": "right_ear", + "x": 0.6478, + "y": 0.5939, + "confidence": 0.304 + }, + { + "name": "left_shoulder", + "x": 0.5877, + "y": 0.6199, + "confidence": 0.291 + }, + { + "name": "right_shoulder", + "x": 0.637, + "y": 0.549, + "confidence": 0.085 + }, + { + "name": "left_elbow", + "x": 0.6078, + "y": 0.6509, + "confidence": 0.347 + }, + { + "name": "right_elbow", + "x": 0.7117, + "y": 0.4598, + "confidence": 0.233 + }, + { + "name": "left_wrist", + "x": 0.615, + "y": 0.6499, + "confidence": 0.25 + }, + { + "name": "right_wrist", + "x": 0.6015, + "y": 0.6416, + "confidence": 0.224 + }, + { + "name": "left_hip", + "x": 0.5523, + "y": 0.5379, + "confidence": 0.26 + }, + { + "name": "right_hip", + "x": 0.5652, + "y": 0.5025, + "confidence": 0.38 + }, + { + "name": "left_knee", + "x": 0.6868, + "y": 0.6309, + "confidence": 0.403 + }, + { + "name": "right_knee", + "x": 0.7004, + "y": 0.4659, + "confidence": 0.451 + }, + { + "name": "left_ankle", + "x": 0.7998, + "y": 0.6074, + "confidence": 0.582 + }, + { + "name": "right_ankle", + "x": 0.7929, + "y": 0.37, + "confidence": 0.788 + } + ] + } + ] + }, + { + "frame_index": 189, + "timestamp": 3.15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 2.1222, + "acceleration": 87.1093, + "fluidity": 0, + "expansion": 0.326, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.6585, + "y": 0.5948, + "confidence": 0.245 + }, + { + "name": "left_eye", + "x": 0.6732, + "y": 0.6064, + "confidence": 0.385 + }, + { + "name": "right_eye", + "x": 0.6654, + "y": 0.5874, + "confidence": 0.359 + }, + { + "name": "left_ear", + "x": 0.6602, + "y": 0.6402, + "confidence": 0.279 + }, + { + "name": "right_ear", + "x": 0.6477, + "y": 0.5928, + "confidence": 0.308 + }, + { + "name": "left_shoulder", + "x": 0.587, + "y": 0.62, + "confidence": 0.29 + }, + { + "name": "right_shoulder", + "x": 0.6393, + "y": 0.532, + "confidence": 0.096 + }, + { + "name": "left_elbow", + "x": 0.6075, + "y": 0.6509, + "confidence": 0.349 + }, + { + "name": "right_elbow", + "x": 0.7118, + "y": 0.4596, + "confidence": 0.239 + }, + { + "name": "left_wrist", + "x": 0.6147, + "y": 0.6498, + "confidence": 0.248 + }, + { + "name": "right_wrist", + "x": 0.6015, + "y": 0.6412, + "confidence": 0.215 + }, + { + "name": "left_hip", + "x": 0.552, + "y": 0.5383, + "confidence": 0.256 + }, + { + "name": "right_hip", + "x": 0.5654, + "y": 0.5029, + "confidence": 0.379 + }, + { + "name": "left_knee", + "x": 0.6866, + "y": 0.6309, + "confidence": 0.41 + }, + { + "name": "right_knee", + "x": 0.7003, + "y": 0.4662, + "confidence": 0.453 + }, + { + "name": "left_ankle", + "x": 0.7998, + "y": 0.6076, + "confidence": 0.59 + }, + { + "name": "right_ankle", + "x": 0.7924, + "y": 0.3705, + "confidence": 0.786 + } + ] + } + ] + }, + { + "frame_index": 190, + "timestamp": 3.1666666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 2.6057, + "acceleration": 29.0088, + "fluidity": 0, + "expansion": 0.442, + "total_displacement": 0.0948, + "center_displacement": { + "x": -0.0672, + "y": -0.0669 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5904, + "y": 0.6251, + "confidence": 0.195 + }, + { + "name": "left_eye", + "x": 0.6218, + "y": 0.6259, + "confidence": 0.148 + }, + { + "name": "right_eye", + "x": 0.6081, + "y": 0.6039, + "confidence": 0.181 + }, + { + "name": "left_ear", + "x": 0.5792, + "y": 0.6533, + "confidence": 0.161 + }, + { + "name": "right_ear", + "x": 0.5702, + "y": 0.6175, + "confidence": 0.264 + }, + { + "name": "left_shoulder", + "x": 0.5388, + "y": 0.6326, + "confidence": 0.425 + }, + { + "name": "right_shoulder", + "x": 0.5441, + "y": 0.5896, + "confidence": 0.251 + }, + { + "name": "left_elbow", + "x": 0.5811, + "y": 0.6592, + "confidence": 0.177 + }, + { + "name": "right_elbow", + "x": 0.5571, + "y": 0.6035, + "confidence": 0.146 + }, + { + "name": "left_wrist", + "x": 0.5948, + "y": 0.652, + "confidence": 0.156 + }, + { + "name": "right_wrist", + "x": 0.646, + "y": 0.587, + "confidence": 0.083 + }, + { + "name": "left_hip", + "x": 0.598, + "y": 0.528, + "confidence": 0.331 + }, + { + "name": "right_hip", + "x": 0.6149, + "y": 0.4904, + "confidence": 0.582 + }, + { + "name": "left_knee", + "x": 0.6765, + "y": 0.6465, + "confidence": 0.582 + }, + { + "name": "right_knee", + "x": 0.6711, + "y": 0.6315, + "confidence": 0.283 + }, + { + "name": "left_ankle", + "x": 0.7996, + "y": 0.6272, + "confidence": 0.469 + }, + { + "name": "right_ankle", + "x": 0.7992, + "y": 0.6172, + "confidence": 0.212 + } + ] + } + ] + }, + { + "frame_index": 191, + "timestamp": 3.183333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 2.2688, + "acceleration": -20.2172, + "fluidity": 0, + "expansion": 0.481, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5903, + "y": 0.6251, + "confidence": 0.194 + }, + { + "name": "left_eye", + "x": 0.6218, + "y": 0.6259, + "confidence": 0.147 + }, + { + "name": "right_eye", + "x": 0.6081, + "y": 0.6038, + "confidence": 0.181 + }, + { + "name": "left_ear", + "x": 0.5794, + "y": 0.6534, + "confidence": 0.161 + }, + { + "name": "right_ear", + "x": 0.5703, + "y": 0.6172, + "confidence": 0.268 + }, + { + "name": "left_shoulder", + "x": 0.5389, + "y": 0.6323, + "confidence": 0.421 + }, + { + "name": "right_shoulder", + "x": 0.544, + "y": 0.5897, + "confidence": 0.252 + }, + { + "name": "left_elbow", + "x": 0.5812, + "y": 0.6591, + "confidence": 0.175 + }, + { + "name": "right_elbow", + "x": 0.5621, + "y": 0.6152, + "confidence": 0.157 + }, + { + "name": "left_wrist", + "x": 0.5946, + "y": 0.6521, + "confidence": 0.155 + }, + { + "name": "right_wrist", + "x": 0.6458, + "y": 0.5868, + "confidence": 0.082 + }, + { + "name": "left_hip", + "x": 0.5979, + "y": 0.5281, + "confidence": 0.331 + }, + { + "name": "right_hip", + "x": 0.6149, + "y": 0.4906, + "confidence": 0.58 + }, + { + "name": "left_knee", + "x": 0.6762, + "y": 0.6465, + "confidence": 0.583 + }, + { + "name": "right_knee", + "x": 0.6708, + "y": 0.6316, + "confidence": 0.283 + }, + { + "name": "left_ankle", + "x": 0.7998, + "y": 0.6274, + "confidence": 0.473 + }, + { + "name": "right_ankle", + "x": 0.7994, + "y": 0.6173, + "confidence": 0.213 + } + ] + } + ] + }, + { + "frame_index": 192, + "timestamp": 3.2, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.1585, + "acceleration": -6.6165, + "fluidity": 0, + "expansion": 0.494, + "total_displacement": 0.0699, + "center_displacement": { + "x": -0.0297, + "y": 0.0632 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5511, + "y": 0.6337, + "confidence": 0.364 + }, + { + "name": "left_eye", + "x": 0.5422, + "y": 0.6355, + "confidence": 0.435 + }, + { + "name": "right_eye", + "x": 0.5432, + "y": 0.6307, + "confidence": 0.41 + }, + { + "name": "left_ear", + "x": 0.5337, + "y": 0.6312, + "confidence": 0.419 + }, + { + "name": "right_ear", + "x": 0.5313, + "y": 0.6265, + "confidence": 0.39 + }, + { + "name": "left_shoulder", + "x": 0.5248, + "y": 0.626, + "confidence": 0.604 + }, + { + "name": "right_shoulder", + "x": 0.5462, + "y": 0.58, + "confidence": 0.256 + }, + { + "name": "left_elbow", + "x": 0.5652, + "y": 0.6518, + "confidence": 0.214 + }, + { + "name": "right_elbow", + "x": 0.6632, + "y": 0.6152, + "confidence": 0.074 + }, + { + "name": "left_wrist", + "x": 0.5812, + "y": 0.6577, + "confidence": 0.164 + }, + { + "name": "right_wrist", + "x": 0.6577, + "y": 0.6195, + "confidence": 0.068 + }, + { + "name": "left_hip", + "x": 0.6415, + "y": 0.4974, + "confidence": 0.451 + }, + { + "name": "right_hip", + "x": 0.6456, + "y": 0.4817, + "confidence": 0.557 + }, + { + "name": "left_knee", + "x": 0.6649, + "y": 0.6582, + "confidence": 0.601 + }, + { + "name": "right_knee", + "x": 0.6708, + "y": 0.6392, + "confidence": 0.313 + }, + { + "name": "left_ankle", + "x": 0.7909, + "y": 0.6357, + "confidence": 0.425 + }, + { + "name": "right_ankle", + "x": 0.7955, + "y": 0.6212, + "confidence": 0.179 + } + ] + } + ] + }, + { + "frame_index": 193, + "timestamp": 3.216666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 1.1554, + "acceleration": -60.1867, + "fluidity": 0, + "expansion": 0.339, + "total_displacement": 0.0003, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5509, + "y": 0.6337, + "confidence": 0.362 + }, + { + "name": "left_eye", + "x": 0.5419, + "y": 0.6355, + "confidence": 0.433 + }, + { + "name": "right_eye", + "x": 0.543, + "y": 0.6307, + "confidence": 0.409 + }, + { + "name": "left_ear", + "x": 0.5334, + "y": 0.6313, + "confidence": 0.425 + }, + { + "name": "right_ear", + "x": 0.5311, + "y": 0.6265, + "confidence": 0.387 + }, + { + "name": "left_shoulder", + "x": 0.5244, + "y": 0.6261, + "confidence": 0.597 + }, + { + "name": "right_shoulder", + "x": 0.5462, + "y": 0.5803, + "confidence": 0.256 + }, + { + "name": "left_elbow", + "x": 0.5653, + "y": 0.6516, + "confidence": 0.212 + }, + { + "name": "right_elbow", + "x": 0.6632, + "y": 0.6152, + "confidence": 0.075 + }, + { + "name": "left_wrist", + "x": 0.5813, + "y": 0.6576, + "confidence": 0.161 + }, + { + "name": "right_wrist", + "x": 0.6578, + "y": 0.6196, + "confidence": 0.069 + }, + { + "name": "left_hip", + "x": 0.6412, + "y": 0.4975, + "confidence": 0.458 + }, + { + "name": "right_hip", + "x": 0.6455, + "y": 0.4818, + "confidence": 0.562 + }, + { + "name": "left_knee", + "x": 0.6648, + "y": 0.6583, + "confidence": 0.603 + }, + { + "name": "right_knee", + "x": 0.6707, + "y": 0.6393, + "confidence": 0.313 + }, + { + "name": "left_ankle", + "x": 0.7908, + "y": 0.6359, + "confidence": 0.428 + }, + { + "name": "right_ankle", + "x": 0.7955, + "y": 0.6211, + "confidence": 0.177 + } + ] + } + ] + }, + { + "frame_index": 194, + "timestamp": 3.2333333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.8199, + "acceleration": -20.1288, + "fluidity": 0, + "expansion": 0.128, + "total_displacement": 0.0215, + "center_displacement": { + "x": 0.0201, + "y": -0.0077 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5305, + "y": 0.6173, + "confidence": 0.482 + }, + { + "name": "left_eye", + "x": 0.5234, + "y": 0.6113, + "confidence": 0.459 + }, + { + "name": "right_eye", + "x": 0.5198, + "y": 0.6091, + "confidence": 0.481 + }, + { + "name": "left_ear", + "x": 0.514, + "y": 0.6066, + "confidence": 0.44 + }, + { + "name": "right_ear", + "x": 0.5104, + "y": 0.6032, + "confidence": 0.524 + }, + { + "name": "left_shoulder", + "x": 0.5168, + "y": 0.6071, + "confidence": 0.527 + }, + { + "name": "right_shoulder", + "x": 0.5393, + "y": 0.5817, + "confidence": 0.202 + }, + { + "name": "left_elbow", + "x": 0.576, + "y": 0.6532, + "confidence": 0.239 + }, + { + "name": "right_elbow", + "x": 0.6297, + "y": 0.5963, + "confidence": 0.131 + }, + { + "name": "left_wrist", + "x": 0.5931, + "y": 0.6763, + "confidence": 0.139 + }, + { + "name": "right_wrist", + "x": 0.6021, + "y": 0.6621, + "confidence": 0.17 + }, + { + "name": "left_hip", + "x": 0.6732, + "y": 0.4983, + "confidence": 0.385 + }, + { + "name": "right_hip", + "x": 0.6933, + "y": 0.4853, + "confidence": 0.525 + }, + { + "name": "left_knee", + "x": 0.6468, + "y": 0.6485, + "confidence": 0.282 + }, + { + "name": "right_knee", + "x": 0.6506, + "y": 0.634, + "confidence": 0.193 + }, + { + "name": "left_ankle", + "x": 0.7974, + "y": 0.6328, + "confidence": 0.537 + }, + { + "name": "right_ankle", + "x": 0.7923, + "y": 0.6109, + "confidence": 0.307 + } + ] + } + ] + }, + { + "frame_index": 195, + "timestamp": 3.25, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.286, + "acceleration": -32.0367, + "fluidity": 0, + "expansion": 0.058, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5303, + "y": 0.6174, + "confidence": 0.483 + }, + { + "name": "left_eye", + "x": 0.5231, + "y": 0.6113, + "confidence": 0.461 + }, + { + "name": "right_eye", + "x": 0.5196, + "y": 0.6092, + "confidence": 0.478 + }, + { + "name": "left_ear", + "x": 0.5139, + "y": 0.6065, + "confidence": 0.438 + }, + { + "name": "right_ear", + "x": 0.5102, + "y": 0.6033, + "confidence": 0.525 + }, + { + "name": "left_shoulder", + "x": 0.5171, + "y": 0.6071, + "confidence": 0.529 + }, + { + "name": "right_shoulder", + "x": 0.5392, + "y": 0.5819, + "confidence": 0.203 + }, + { + "name": "left_elbow", + "x": 0.5759, + "y": 0.6531, + "confidence": 0.241 + }, + { + "name": "right_elbow", + "x": 0.6294, + "y": 0.5964, + "confidence": 0.13 + }, + { + "name": "left_wrist", + "x": 0.5931, + "y": 0.6763, + "confidence": 0.139 + }, + { + "name": "right_wrist", + "x": 0.6019, + "y": 0.6622, + "confidence": 0.17 + }, + { + "name": "left_hip", + "x": 0.6736, + "y": 0.4983, + "confidence": 0.383 + }, + { + "name": "right_hip", + "x": 0.6934, + "y": 0.4854, + "confidence": 0.524 + }, + { + "name": "left_knee", + "x": 0.6468, + "y": 0.6484, + "confidence": 0.282 + }, + { + "name": "right_knee", + "x": 0.6506, + "y": 0.634, + "confidence": 0.193 + }, + { + "name": "left_ankle", + "x": 0.7974, + "y": 0.6331, + "confidence": 0.539 + }, + { + "name": "right_ankle", + "x": 0.7923, + "y": 0.611, + "confidence": 0.308 + } + ] + } + ] + }, + { + "frame_index": 196, + "timestamp": 3.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.8815, + "acceleration": 35.7317, + "fluidity": 0, + "expansion": 0.035, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0004, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5308, + "y": 0.6171, + "confidence": 0.481 + }, + { + "name": "left_eye", + "x": 0.5237, + "y": 0.6111, + "confidence": 0.454 + }, + { + "name": "right_eye", + "x": 0.5202, + "y": 0.6089, + "confidence": 0.486 + }, + { + "name": "left_ear", + "x": 0.5143, + "y": 0.6067, + "confidence": 0.438 + }, + { + "name": "right_ear", + "x": 0.5107, + "y": 0.6031, + "confidence": 0.524 + }, + { + "name": "left_shoulder", + "x": 0.5164, + "y": 0.6072, + "confidence": 0.522 + }, + { + "name": "right_shoulder", + "x": 0.5392, + "y": 0.582, + "confidence": 0.2 + }, + { + "name": "left_elbow", + "x": 0.5757, + "y": 0.6529, + "confidence": 0.241 + }, + { + "name": "right_elbow", + "x": 0.6296, + "y": 0.5964, + "confidence": 0.129 + }, + { + "name": "left_wrist", + "x": 0.5929, + "y": 0.6759, + "confidence": 0.139 + }, + { + "name": "right_wrist", + "x": 0.602, + "y": 0.6622, + "confidence": 0.169 + }, + { + "name": "left_hip", + "x": 0.673, + "y": 0.4984, + "confidence": 0.386 + }, + { + "name": "right_hip", + "x": 0.6932, + "y": 0.4855, + "confidence": 0.518 + }, + { + "name": "left_knee", + "x": 0.6468, + "y": 0.6482, + "confidence": 0.283 + }, + { + "name": "right_knee", + "x": 0.6506, + "y": 0.6344, + "confidence": 0.191 + }, + { + "name": "left_ankle", + "x": 0.7971, + "y": 0.6327, + "confidence": 0.532 + }, + { + "name": "right_ankle", + "x": 0.7922, + "y": 0.6112, + "confidence": 0.304 + } + ] + } + ] + }, + { + "frame_index": 197, + "timestamp": 3.283333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.0741, + "acceleration": 11.5558, + "fluidity": 0, + "expansion": 0.028, + "total_displacement": 0.0389, + "center_displacement": { + "x": 0.0315, + "y": -0.0228 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5094, + "y": 0.6191, + "confidence": 0.463 + }, + { + "name": "left_eye", + "x": 0.5016, + "y": 0.6134, + "confidence": 0.439 + }, + { + "name": "right_eye", + "x": 0.5014, + "y": 0.6066, + "confidence": 0.405 + }, + { + "name": "left_ear", + "x": 0.5029, + "y": 0.6014, + "confidence": 0.625 + }, + { + "name": "right_ear", + "x": 0.5005, + "y": 0.5891, + "confidence": 0.37 + }, + { + "name": "left_shoulder", + "x": 0.5195, + "y": 0.6008, + "confidence": 0.643 + }, + { + "name": "right_shoulder", + "x": 0.5362, + "y": 0.572, + "confidence": 0.342 + }, + { + "name": "left_elbow", + "x": 0.6013, + "y": 0.679, + "confidence": 0.364 + }, + { + "name": "right_elbow", + "x": 0.6329, + "y": 0.6371, + "confidence": 0.203 + }, + { + "name": "left_wrist", + "x": 0.5994, + "y": 0.703, + "confidence": 0.235 + }, + { + "name": "right_wrist", + "x": 0.6031, + "y": 0.6815, + "confidence": 0.27 + }, + { + "name": "left_hip", + "x": 0.693, + "y": 0.4851, + "confidence": 0.654 + }, + { + "name": "right_hip", + "x": 0.6964, + "y": 0.4848, + "confidence": 0.662 + }, + { + "name": "left_knee", + "x": 0.6326, + "y": 0.6539, + "confidence": 0.46 + }, + { + "name": "right_knee", + "x": 0.6379, + "y": 0.6335, + "confidence": 0.405 + }, + { + "name": "left_ankle", + "x": 0.7751, + "y": 0.6637, + "confidence": 0.637 + }, + { + "name": "right_ankle", + "x": 0.7721, + "y": 0.6387, + "confidence": 0.474 + } + ] + } + ] + }, + { + "frame_index": 198, + "timestamp": 3.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3627, + "acceleration": -42.6859, + "fluidity": 0.083, + "expansion": 0.026, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5096, + "y": 0.6186, + "confidence": 0.458 + }, + { + "name": "left_eye", + "x": 0.5018, + "y": 0.6132, + "confidence": 0.437 + }, + { + "name": "right_eye", + "x": 0.5016, + "y": 0.6062, + "confidence": 0.403 + }, + { + "name": "left_ear", + "x": 0.503, + "y": 0.6015, + "confidence": 0.623 + }, + { + "name": "right_ear", + "x": 0.5006, + "y": 0.5889, + "confidence": 0.364 + }, + { + "name": "left_shoulder", + "x": 0.5195, + "y": 0.6009, + "confidence": 0.64 + }, + { + "name": "right_shoulder", + "x": 0.5362, + "y": 0.5721, + "confidence": 0.339 + }, + { + "name": "left_elbow", + "x": 0.6013, + "y": 0.6789, + "confidence": 0.364 + }, + { + "name": "right_elbow", + "x": 0.6329, + "y": 0.6372, + "confidence": 0.202 + }, + { + "name": "left_wrist", + "x": 0.5993, + "y": 0.7032, + "confidence": 0.237 + }, + { + "name": "right_wrist", + "x": 0.6031, + "y": 0.6816, + "confidence": 0.27 + }, + { + "name": "left_hip", + "x": 0.6928, + "y": 0.4851, + "confidence": 0.652 + }, + { + "name": "right_hip", + "x": 0.6962, + "y": 0.4847, + "confidence": 0.663 + }, + { + "name": "left_knee", + "x": 0.6327, + "y": 0.6539, + "confidence": 0.462 + }, + { + "name": "right_knee", + "x": 0.6379, + "y": 0.6335, + "confidence": 0.407 + }, + { + "name": "left_ankle", + "x": 0.7751, + "y": 0.6635, + "confidence": 0.634 + }, + { + "name": "right_ankle", + "x": 0.7723, + "y": 0.6384, + "confidence": 0.474 + } + ] + } + ] + }, + { + "frame_index": 199, + "timestamp": 3.3166666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.439, + "acceleration": 4.5828, + "fluidity": 0.111, + "expansion": 0.052, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5096, + "y": 0.6188, + "confidence": 0.459 + }, + { + "name": "left_eye", + "x": 0.5018, + "y": 0.6132, + "confidence": 0.435 + }, + { + "name": "right_eye", + "x": 0.5015, + "y": 0.6063, + "confidence": 0.403 + }, + { + "name": "left_ear", + "x": 0.5028, + "y": 0.6012, + "confidence": 0.622 + }, + { + "name": "right_ear", + "x": 0.5004, + "y": 0.5889, + "confidence": 0.365 + }, + { + "name": "left_shoulder", + "x": 0.5195, + "y": 0.6008, + "confidence": 0.641 + }, + { + "name": "right_shoulder", + "x": 0.5361, + "y": 0.5722, + "confidence": 0.341 + }, + { + "name": "left_elbow", + "x": 0.6011, + "y": 0.6789, + "confidence": 0.363 + }, + { + "name": "right_elbow", + "x": 0.6328, + "y": 0.6371, + "confidence": 0.203 + }, + { + "name": "left_wrist", + "x": 0.5994, + "y": 0.7031, + "confidence": 0.239 + }, + { + "name": "right_wrist", + "x": 0.6033, + "y": 0.6816, + "confidence": 0.273 + }, + { + "name": "left_hip", + "x": 0.6928, + "y": 0.4852, + "confidence": 0.654 + }, + { + "name": "right_hip", + "x": 0.6961, + "y": 0.485, + "confidence": 0.666 + }, + { + "name": "left_knee", + "x": 0.6324, + "y": 0.6536, + "confidence": 0.457 + }, + { + "name": "right_knee", + "x": 0.6377, + "y": 0.6334, + "confidence": 0.407 + }, + { + "name": "left_ankle", + "x": 0.7751, + "y": 0.6636, + "confidence": 0.635 + }, + { + "name": "right_ankle", + "x": 0.7722, + "y": 0.6385, + "confidence": 0.474 + } + ] + } + ] + }, + { + "frame_index": 200, + "timestamp": 3.3333333333333335, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4632, + "acceleration": 1.4505, + "fluidity": 0.037, + "expansion": 0.087, + "total_displacement": 0.0158, + "center_displacement": { + "x": -0.0153, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5131, + "y": 0.6224, + "confidence": 0.545 + }, + { + "name": "left_eye", + "x": 0.5036, + "y": 0.6109, + "confidence": 0.397 + }, + { + "name": "right_eye", + "x": 0.5039, + "y": 0.6109, + "confidence": 0.513 + }, + { + "name": "left_ear", + "x": 0.5038, + "y": 0.5775, + "confidence": 0.602 + }, + { + "name": "right_ear", + "x": 0.5018, + "y": 0.578, + "confidence": 0.537 + }, + { + "name": "left_shoulder", + "x": 0.5318, + "y": 0.5667, + "confidence": 0.696 + }, + { + "name": "right_shoulder", + "x": 0.5438, + "y": 0.5556, + "confidence": 0.425 + }, + { + "name": "left_elbow", + "x": 0.5846, + "y": 0.6549, + "confidence": 0.489 + }, + { + "name": "right_elbow", + "x": 0.617, + "y": 0.64, + "confidence": 0.461 + }, + { + "name": "left_wrist", + "x": 0.5762, + "y": 0.7161, + "confidence": 0.473 + }, + { + "name": "right_wrist", + "x": 0.587, + "y": 0.7064, + "confidence": 0.551 + }, + { + "name": "left_hip", + "x": 0.7091, + "y": 0.4897, + "confidence": 0.454 + }, + { + "name": "right_hip", + "x": 0.7099, + "y": 0.4887, + "confidence": 0.654 + }, + { + "name": "left_knee", + "x": 0.6223, + "y": 0.6399, + "confidence": 0.463 + }, + { + "name": "right_knee", + "x": 0.6273, + "y": 0.6387, + "confidence": 0.455 + }, + { + "name": "left_ankle", + "x": 0.7785, + "y": 0.6751, + "confidence": 0.659 + }, + { + "name": "right_ankle", + "x": 0.7672, + "y": 0.6687, + "confidence": 0.451 + } + ] + } + ] + }, + { + "frame_index": 201, + "timestamp": 3.35, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.8625, + "acceleration": 23.9562, + "fluidity": 0.012, + "expansion": 0.099, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.513, + "y": 0.6225, + "confidence": 0.545 + }, + { + "name": "left_eye", + "x": 0.5036, + "y": 0.611, + "confidence": 0.398 + }, + { + "name": "right_eye", + "x": 0.5038, + "y": 0.611, + "confidence": 0.513 + }, + { + "name": "left_ear", + "x": 0.5037, + "y": 0.5775, + "confidence": 0.6 + }, + { + "name": "right_ear", + "x": 0.5019, + "y": 0.5781, + "confidence": 0.535 + }, + { + "name": "left_shoulder", + "x": 0.5319, + "y": 0.5666, + "confidence": 0.698 + }, + { + "name": "right_shoulder", + "x": 0.5439, + "y": 0.5555, + "confidence": 0.426 + }, + { + "name": "left_elbow", + "x": 0.5846, + "y": 0.6548, + "confidence": 0.493 + }, + { + "name": "right_elbow", + "x": 0.6171, + "y": 0.6399, + "confidence": 0.465 + }, + { + "name": "left_wrist", + "x": 0.5762, + "y": 0.7161, + "confidence": 0.473 + }, + { + "name": "right_wrist", + "x": 0.587, + "y": 0.7064, + "confidence": 0.552 + }, + { + "name": "left_hip", + "x": 0.7094, + "y": 0.4897, + "confidence": 0.457 + }, + { + "name": "right_hip", + "x": 0.7099, + "y": 0.4887, + "confidence": 0.655 + }, + { + "name": "left_knee", + "x": 0.6223, + "y": 0.6398, + "confidence": 0.465 + }, + { + "name": "right_knee", + "x": 0.631, + "y": 0.6379, + "confidence": 0.367 + }, + { + "name": "left_ankle", + "x": 0.7786, + "y": 0.675, + "confidence": 0.659 + }, + { + "name": "right_ankle", + "x": 0.7672, + "y": 0.6687, + "confidence": 0.451 + } + ] + } + ] + }, + { + "frame_index": 202, + "timestamp": 3.3666666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.996, + "acceleration": 8.0087, + "fluidity": 0.004, + "expansion": 0.103, + "total_displacement": 0.0354, + "center_displacement": { + "x": 0.0339, + "y": -0.01 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5098, + "y": 0.6133, + "confidence": 0.401 + }, + { + "name": "left_eye", + "x": 0.5003, + "y": 0.6029, + "confidence": 0.554 + }, + { + "name": "right_eye", + "x": 0.4996, + "y": 0.6023, + "confidence": 0.528 + }, + { + "name": "left_ear", + "x": 0.5017, + "y": 0.5679, + "confidence": 0.637 + }, + { + "name": "right_ear", + "x": 0.4978, + "y": 0.5686, + "confidence": 0.498 + }, + { + "name": "left_shoulder", + "x": 0.5354, + "y": 0.5561, + "confidence": 0.506 + }, + { + "name": "right_shoulder", + "x": 0.5436, + "y": 0.5451, + "confidence": 0.434 + }, + { + "name": "left_elbow", + "x": 0.5928, + "y": 0.6467, + "confidence": 0.478 + }, + { + "name": "right_elbow", + "x": 0.6045, + "y": 0.6367, + "confidence": 0.504 + }, + { + "name": "left_wrist", + "x": 0.5659, + "y": 0.7263, + "confidence": 0.669 + }, + { + "name": "right_wrist", + "x": 0.5733, + "y": 0.7154, + "confidence": 0.541 + }, + { + "name": "left_hip", + "x": 0.7157, + "y": 0.499, + "confidence": 0.517 + }, + { + "name": "right_hip", + "x": 0.7133, + "y": 0.498, + "confidence": 0.531 + }, + { + "name": "left_knee", + "x": 0.6241, + "y": 0.6323, + "confidence": 0.64 + }, + { + "name": "right_knee", + "x": 0.6247, + "y": 0.6316, + "confidence": 0.521 + }, + { + "name": "left_ankle", + "x": 0.7689, + "y": 0.6871, + "confidence": 0.677 + }, + { + "name": "right_ankle", + "x": 0.7519, + "y": 0.6818, + "confidence": 0.528 + } + ] + } + ] + }, + { + "frame_index": 203, + "timestamp": 3.3833333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.3361, + "acceleration": -39.5933, + "fluidity": 0.001, + "expansion": 0.104, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5075, + "y": 0.6125, + "confidence": 0.312 + }, + { + "name": "left_eye", + "x": 0.5004, + "y": 0.603, + "confidence": 0.554 + }, + { + "name": "right_eye", + "x": 0.4997, + "y": 0.6024, + "confidence": 0.529 + }, + { + "name": "left_ear", + "x": 0.5017, + "y": 0.5679, + "confidence": 0.638 + }, + { + "name": "right_ear", + "x": 0.4978, + "y": 0.5686, + "confidence": 0.498 + }, + { + "name": "left_shoulder", + "x": 0.5353, + "y": 0.5562, + "confidence": 0.505 + }, + { + "name": "right_shoulder", + "x": 0.5436, + "y": 0.5451, + "confidence": 0.433 + }, + { + "name": "left_elbow", + "x": 0.5928, + "y": 0.6467, + "confidence": 0.476 + }, + { + "name": "right_elbow", + "x": 0.6045, + "y": 0.6368, + "confidence": 0.503 + }, + { + "name": "left_wrist", + "x": 0.5659, + "y": 0.7263, + "confidence": 0.668 + }, + { + "name": "right_wrist", + "x": 0.5732, + "y": 0.7154, + "confidence": 0.541 + }, + { + "name": "left_hip", + "x": 0.7158, + "y": 0.499, + "confidence": 0.517 + }, + { + "name": "right_hip", + "x": 0.7133, + "y": 0.4981, + "confidence": 0.529 + }, + { + "name": "left_knee", + "x": 0.6241, + "y": 0.6323, + "confidence": 0.642 + }, + { + "name": "right_knee", + "x": 0.6247, + "y": 0.6317, + "confidence": 0.521 + }, + { + "name": "left_ankle", + "x": 0.7689, + "y": 0.687, + "confidence": 0.677 + }, + { + "name": "right_ankle", + "x": 0.7519, + "y": 0.6817, + "confidence": 0.527 + } + ] + } + ] + }, + { + "frame_index": 204, + "timestamp": 3.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.1999, + "acceleration": -8.1717, + "fluidity": 0, + "expansion": 0.105, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.5096, + "y": 0.6134, + "confidence": 0.402 + }, + { + "name": "left_eye", + "x": 0.5003, + "y": 0.603, + "confidence": 0.55 + }, + { + "name": "right_eye", + "x": 0.4996, + "y": 0.6024, + "confidence": 0.525 + }, + { + "name": "left_ear", + "x": 0.5018, + "y": 0.5679, + "confidence": 0.638 + }, + { + "name": "right_ear", + "x": 0.4978, + "y": 0.5686, + "confidence": 0.499 + }, + { + "name": "left_shoulder", + "x": 0.5354, + "y": 0.5562, + "confidence": 0.506 + }, + { + "name": "right_shoulder", + "x": 0.5436, + "y": 0.5451, + "confidence": 0.437 + }, + { + "name": "left_elbow", + "x": 0.5927, + "y": 0.6468, + "confidence": 0.476 + }, + { + "name": "right_elbow", + "x": 0.6045, + "y": 0.6368, + "confidence": 0.504 + }, + { + "name": "left_wrist", + "x": 0.5659, + "y": 0.7263, + "confidence": 0.666 + }, + { + "name": "right_wrist", + "x": 0.5733, + "y": 0.7156, + "confidence": 0.544 + }, + { + "name": "left_hip", + "x": 0.7156, + "y": 0.4992, + "confidence": 0.518 + }, + { + "name": "right_hip", + "x": 0.7131, + "y": 0.4982, + "confidence": 0.532 + }, + { + "name": "left_knee", + "x": 0.6242, + "y": 0.6324, + "confidence": 0.641 + }, + { + "name": "right_knee", + "x": 0.6248, + "y": 0.6318, + "confidence": 0.525 + }, + { + "name": "left_ankle", + "x": 0.7689, + "y": 0.6873, + "confidence": 0.679 + }, + { + "name": "right_ankle", + "x": 0.7519, + "y": 0.6819, + "confidence": 0.528 + } + ] + } + ] + }, + { + "frame_index": 205, + "timestamp": 3.4166666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1659, + "acceleration": -2.0407, + "fluidity": 0, + "expansion": 0.106, + "total_displacement": 0.0042, + "center_displacement": { + "x": -0.0025, + "y": -0.0034 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4921, + "y": 0.5886, + "confidence": 0.412 + }, + { + "name": "left_eye", + "x": 0.4879, + "y": 0.5772, + "confidence": 0.568 + }, + { + "name": "right_eye", + "x": 0.4861, + "y": 0.5776, + "confidence": 0.527 + }, + { + "name": "left_ear", + "x": 0.4959, + "y": 0.5465, + "confidence": 0.558 + }, + { + "name": "right_ear", + "x": 0.4914, + "y": 0.5489, + "confidence": 0.393 + }, + { + "name": "left_shoulder", + "x": 0.5343, + "y": 0.5482, + "confidence": 0.654 + }, + { + "name": "right_shoulder", + "x": 0.5317, + "y": 0.5396, + "confidence": 0.465 + }, + { + "name": "left_elbow", + "x": 0.5612, + "y": 0.6437, + "confidence": 0.649 + }, + { + "name": "right_elbow", + "x": 0.5629, + "y": 0.6399, + "confidence": 0.615 + }, + { + "name": "left_wrist", + "x": 0.5378, + "y": 0.7245, + "confidence": 0.669 + }, + { + "name": "right_wrist", + "x": 0.5432, + "y": 0.713, + "confidence": 0.419 + }, + { + "name": "left_hip", + "x": 0.712, + "y": 0.4979, + "confidence": 0.634 + }, + { + "name": "right_hip", + "x": 0.7105, + "y": 0.4972, + "confidence": 0.581 + }, + { + "name": "left_knee", + "x": 0.6096, + "y": 0.6216, + "confidence": 0.531 + }, + { + "name": "right_knee", + "x": 0.6024, + "y": 0.6242, + "confidence": 0.467 + }, + { + "name": "left_ankle", + "x": 0.7459, + "y": 0.7, + "confidence": 0.62 + }, + { + "name": "right_ankle", + "x": 0.7352, + "y": 0.6931, + "confidence": 0.526 + } + ] + } + ] + }, + { + "frame_index": 206, + "timestamp": 3.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.246, + "acceleration": 4.8067, + "fluidity": 0, + "expansion": 0.106, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0001, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4922, + "y": 0.5889, + "confidence": 0.414 + }, + { + "name": "left_eye", + "x": 0.4879, + "y": 0.5774, + "confidence": 0.565 + }, + { + "name": "right_eye", + "x": 0.4861, + "y": 0.5777, + "confidence": 0.524 + }, + { + "name": "left_ear", + "x": 0.4959, + "y": 0.5465, + "confidence": 0.56 + }, + { + "name": "right_ear", + "x": 0.4915, + "y": 0.5489, + "confidence": 0.396 + }, + { + "name": "left_shoulder", + "x": 0.5343, + "y": 0.5483, + "confidence": 0.659 + }, + { + "name": "right_shoulder", + "x": 0.5318, + "y": 0.5397, + "confidence": 0.467 + }, + { + "name": "left_elbow", + "x": 0.5612, + "y": 0.6437, + "confidence": 0.651 + }, + { + "name": "right_elbow", + "x": 0.5629, + "y": 0.6397, + "confidence": 0.618 + }, + { + "name": "left_wrist", + "x": 0.5378, + "y": 0.7246, + "confidence": 0.667 + }, + { + "name": "right_wrist", + "x": 0.5432, + "y": 0.7131, + "confidence": 0.419 + }, + { + "name": "left_hip", + "x": 0.712, + "y": 0.4977, + "confidence": 0.637 + }, + { + "name": "right_hip", + "x": 0.7107, + "y": 0.495, + "confidence": 0.596 + }, + { + "name": "left_knee", + "x": 0.6096, + "y": 0.6216, + "confidence": 0.53 + }, + { + "name": "right_knee", + "x": 0.6024, + "y": 0.6241, + "confidence": 0.469 + }, + { + "name": "left_ankle", + "x": 0.7459, + "y": 0.7001, + "confidence": 0.619 + }, + { + "name": "right_ankle", + "x": 0.7352, + "y": 0.693, + "confidence": 0.53 + } + ] + } + ] + }, + { + "frame_index": 207, + "timestamp": 3.4499999999999997, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2625, + "acceleration": 0.9924, + "fluidity": 0, + "expansion": 0.105, + "total_displacement": 0.0088, + "center_displacement": { + "x": -0.0017, + "y": -0.0086 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.486, + "y": 0.573, + "confidence": 0.526 + }, + { + "name": "left_eye", + "x": 0.4789, + "y": 0.5612, + "confidence": 0.29 + }, + { + "name": "right_eye", + "x": 0.482, + "y": 0.5593, + "confidence": 0.467 + }, + { + "name": "left_ear", + "x": 0.4921, + "y": 0.5285, + "confidence": 0.477 + }, + { + "name": "right_ear", + "x": 0.4883, + "y": 0.5316, + "confidence": 0.44 + }, + { + "name": "left_shoulder", + "x": 0.5257, + "y": 0.5306, + "confidence": 0.612 + }, + { + "name": "right_shoulder", + "x": 0.5298, + "y": 0.5253, + "confidence": 0.496 + }, + { + "name": "left_elbow", + "x": 0.5487, + "y": 0.6371, + "confidence": 0.473 + }, + { + "name": "right_elbow", + "x": 0.5471, + "y": 0.6308, + "confidence": 0.573 + }, + { + "name": "left_wrist", + "x": 0.5222, + "y": 0.7136, + "confidence": 0.748 + }, + { + "name": "right_wrist", + "x": 0.5273, + "y": 0.7022, + "confidence": 0.543 + }, + { + "name": "left_hip", + "x": 0.7116, + "y": 0.4931, + "confidence": 0.74 + }, + { + "name": "right_hip", + "x": 0.7143, + "y": 0.4915, + "confidence": 0.702 + }, + { + "name": "left_knee", + "x": 0.6006, + "y": 0.6158, + "confidence": 0.781 + }, + { + "name": "right_knee", + "x": 0.6034, + "y": 0.6155, + "confidence": 0.578 + }, + { + "name": "left_ankle", + "x": 0.7253, + "y": 0.6995, + "confidence": 0.64 + }, + { + "name": "right_ankle", + "x": 0.7167, + "y": 0.6898, + "confidence": 0.365 + } + ] + } + ] + }, + { + "frame_index": 208, + "timestamp": 3.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.9352, + "acceleration": 40.3612, + "fluidity": 0, + "expansion": 0.106, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.486, + "y": 0.5728, + "confidence": 0.524 + }, + { + "name": "left_eye", + "x": 0.4801, + "y": 0.5609, + "confidence": 0.46 + }, + { + "name": "right_eye", + "x": 0.482, + "y": 0.5592, + "confidence": 0.462 + }, + { + "name": "left_ear", + "x": 0.4919, + "y": 0.5285, + "confidence": 0.477 + }, + { + "name": "right_ear", + "x": 0.4884, + "y": 0.5316, + "confidence": 0.44 + }, + { + "name": "left_shoulder", + "x": 0.5258, + "y": 0.5305, + "confidence": 0.615 + }, + { + "name": "right_shoulder", + "x": 0.5299, + "y": 0.5252, + "confidence": 0.495 + }, + { + "name": "left_elbow", + "x": 0.5488, + "y": 0.637, + "confidence": 0.47 + }, + { + "name": "right_elbow", + "x": 0.5471, + "y": 0.6306, + "confidence": 0.57 + }, + { + "name": "left_wrist", + "x": 0.5222, + "y": 0.7136, + "confidence": 0.75 + }, + { + "name": "right_wrist", + "x": 0.5273, + "y": 0.7021, + "confidence": 0.545 + }, + { + "name": "left_hip", + "x": 0.7113, + "y": 0.4933, + "confidence": 0.74 + }, + { + "name": "right_hip", + "x": 0.7141, + "y": 0.4917, + "confidence": 0.702 + }, + { + "name": "left_knee", + "x": 0.6007, + "y": 0.6157, + "confidence": 0.783 + }, + { + "name": "right_knee", + "x": 0.6035, + "y": 0.6155, + "confidence": 0.575 + }, + { + "name": "left_ankle", + "x": 0.7253, + "y": 0.6994, + "confidence": 0.642 + }, + { + "name": "right_ankle", + "x": 0.7165, + "y": 0.6897, + "confidence": 0.369 + } + ] + } + ] + }, + { + "frame_index": 209, + "timestamp": 3.4833333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.1581, + "acceleration": 13.3721, + "fluidity": 0, + "expansion": 0.107, + "total_displacement": 0.0422, + "center_displacement": { + "x": -0.0419, + "y": -0.0046 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4638, + "y": 0.5507, + "confidence": 0.404 + }, + { + "name": "left_eye", + "x": 0.4581, + "y": 0.5374, + "confidence": 0.611 + }, + { + "name": "right_eye", + "x": 0.4578, + "y": 0.537, + "confidence": 0.591 + }, + { + "name": "left_ear", + "x": 0.4758, + "y": 0.51, + "confidence": 0.699 + }, + { + "name": "right_ear", + "x": 0.4708, + "y": 0.5111, + "confidence": 0.514 + }, + { + "name": "left_shoulder", + "x": 0.5196, + "y": 0.5215, + "confidence": 0.716 + }, + { + "name": "right_shoulder", + "x": 0.5239, + "y": 0.5092, + "confidence": 0.564 + }, + { + "name": "left_elbow", + "x": 0.5229, + "y": 0.6289, + "confidence": 0.606 + }, + { + "name": "right_elbow", + "x": 0.528, + "y": 0.6181, + "confidence": 0.481 + }, + { + "name": "left_wrist", + "x": 0.4923, + "y": 0.709, + "confidence": 0.595 + }, + { + "name": "right_wrist", + "x": 0.4996, + "y": 0.6959, + "confidence": 0.369 + }, + { + "name": "left_hip", + "x": 0.6928, + "y": 0.486, + "confidence": 0.67 + }, + { + "name": "right_hip", + "x": 0.6977, + "y": 0.4855, + "confidence": 0.683 + }, + { + "name": "left_knee", + "x": 0.5895, + "y": 0.6028, + "confidence": 0.714 + }, + { + "name": "right_knee", + "x": 0.593, + "y": 0.602, + "confidence": 0.703 + }, + { + "name": "left_ankle", + "x": 0.7021, + "y": 0.7059, + "confidence": 0.578 + }, + { + "name": "right_ankle", + "x": 0.6964, + "y": 0.6968, + "confidence": 0.489 + } + ] + } + ] + }, + { + "frame_index": 210, + "timestamp": 3.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.9586, + "acceleration": -11.97, + "fluidity": 0, + "expansion": 0.108, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4638, + "y": 0.5507, + "confidence": 0.405 + }, + { + "name": "left_eye", + "x": 0.4582, + "y": 0.5374, + "confidence": 0.612 + }, + { + "name": "right_eye", + "x": 0.4579, + "y": 0.537, + "confidence": 0.593 + }, + { + "name": "left_ear", + "x": 0.4759, + "y": 0.5101, + "confidence": 0.697 + }, + { + "name": "right_ear", + "x": 0.471, + "y": 0.5111, + "confidence": 0.516 + }, + { + "name": "left_shoulder", + "x": 0.5198, + "y": 0.5214, + "confidence": 0.717 + }, + { + "name": "right_shoulder", + "x": 0.5241, + "y": 0.5091, + "confidence": 0.564 + }, + { + "name": "left_elbow", + "x": 0.523, + "y": 0.6289, + "confidence": 0.608 + }, + { + "name": "right_elbow", + "x": 0.5281, + "y": 0.6181, + "confidence": 0.481 + }, + { + "name": "left_wrist", + "x": 0.4923, + "y": 0.709, + "confidence": 0.592 + }, + { + "name": "right_wrist", + "x": 0.4997, + "y": 0.6957, + "confidence": 0.366 + }, + { + "name": "left_hip", + "x": 0.6928, + "y": 0.486, + "confidence": 0.67 + }, + { + "name": "right_hip", + "x": 0.6978, + "y": 0.4855, + "confidence": 0.684 + }, + { + "name": "left_knee", + "x": 0.5895, + "y": 0.6032, + "confidence": 0.715 + }, + { + "name": "right_knee", + "x": 0.593, + "y": 0.6023, + "confidence": 0.702 + }, + { + "name": "left_ankle", + "x": 0.7019, + "y": 0.7061, + "confidence": 0.577 + }, + { + "name": "right_ankle", + "x": 0.6965, + "y": 0.6971, + "confidence": 0.495 + } + ] + } + ] + }, + { + "frame_index": 211, + "timestamp": 3.5166666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 1.4302, + "acceleration": 28.3, + "fluidity": 0, + "expansion": 0.107, + "total_displacement": 0.0285, + "center_displacement": { + "x": 0.0283, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4634, + "y": 0.5506, + "confidence": 0.392 + }, + { + "name": "left_eye", + "x": 0.4578, + "y": 0.5372, + "confidence": 0.602 + }, + { + "name": "right_eye", + "x": 0.4576, + "y": 0.5368, + "confidence": 0.582 + }, + { + "name": "left_ear", + "x": 0.4756, + "y": 0.5098, + "confidence": 0.699 + }, + { + "name": "right_ear", + "x": 0.4706, + "y": 0.511, + "confidence": 0.511 + }, + { + "name": "left_shoulder", + "x": 0.5197, + "y": 0.5214, + "confidence": 0.717 + }, + { + "name": "right_shoulder", + "x": 0.5235, + "y": 0.5107, + "confidence": 0.469 + }, + { + "name": "left_elbow", + "x": 0.523, + "y": 0.6284, + "confidence": 0.603 + }, + { + "name": "right_elbow", + "x": 0.528, + "y": 0.6179, + "confidence": 0.48 + }, + { + "name": "left_wrist", + "x": 0.4925, + "y": 0.7088, + "confidence": 0.593 + }, + { + "name": "right_wrist", + "x": 0.4996, + "y": 0.6955, + "confidence": 0.369 + }, + { + "name": "left_hip", + "x": 0.6932, + "y": 0.4862, + "confidence": 0.678 + }, + { + "name": "right_hip", + "x": 0.698, + "y": 0.4857, + "confidence": 0.69 + }, + { + "name": "left_knee", + "x": 0.5892, + "y": 0.6028, + "confidence": 0.716 + }, + { + "name": "right_knee", + "x": 0.5928, + "y": 0.602, + "confidence": 0.703 + }, + { + "name": "left_ankle", + "x": 0.7021, + "y": 0.706, + "confidence": 0.575 + }, + { + "name": "right_ankle", + "x": 0.6962, + "y": 0.697, + "confidence": 0.493 + } + ] + } + ] + }, + { + "frame_index": 212, + "timestamp": 3.533333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.5268, + "acceleration": 11.5862, + "fluidity": 0, + "expansion": 0.107, + "total_displacement": 0.0271, + "center_displacement": { + "x": -0.0265, + "y": -0.0055 + } + }, + "keypoints": [ + { + "person_id": null, + "points": [ + { + "name": "nose", + "x": 0.4623, + "y": 0.5372, + "confidence": 0.459 + }, + { + "name": "left_eye", + "x": 0.4552, + "y": 0.5226, + "confidence": 0.557 + }, + { + "name": "right_eye", + "x": 0.4553, + "y": 0.5226, + "confidence": 0.488 + }, + { + "name": "left_ear", + "x": 0.4746, + "y": 0.4949, + "confidence": 0.673 + }, + { + "name": "right_ear", + "x": 0.4686, + "y": 0.4977, + "confidence": 0.46 + }, + { + "name": "left_shoulder", + "x": 0.52, + "y": 0.5071, + "confidence": 0.766 + }, + { + "name": "right_shoulder", + "x": 0.5274, + "y": 0.5005, + "confidence": 0.608 + }, + { + "name": "left_elbow", + "x": 0.5218, + "y": 0.6222, + "confidence": 0.653 + }, + { + "name": "right_elbow", + "x": 0.529, + "y": 0.6089, + "confidence": 0.547 + }, + { + "name": "left_wrist", + "x": 0.4859, + "y": 0.7058, + "confidence": 0.554 + }, + { + "name": "right_wrist", + "x": 0.4952, + "y": 0.6877, + "confidence": 0.403 + }, + { + "name": "left_hip", + "x": 0.6932, + "y": 0.4799, + "confidence": 0.586 + }, + { + "name": "right_hip", + "x": 0.7013, + "y": 0.4814, + "confidence": 0.611 + }, + { + "name": "left_knee", + "x": 0.585, + "y": 0.5962, + "confidence": 0.678 + }, + { + "name": "right_knee", + "x": 0.5907, + "y": 0.5942, + "confidence": 0.655 + }, + { + "name": "left_ankle", + "x": 0.6915, + "y": 0.7043, + "confidence": 0.466 + }, + { + "name": "right_ankle", + "x": 0.687, + "y": 0.6974, + "confidence": 0.543 + } + ] + } + ] + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 129, + "right": 22, + "down": 31, + "left": 15, + "up": 16 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 3, + "high": 208, + "medium": 2 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 78, + "fast": 94, + "moderate": 41 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 1.0273, + "std": 0.8637, + "min": 0.027, + "max": 4.6033 + }, + "acceleration": { + "mean": 0.5336, + "std": 40.0146, + "min": -111.2749, + "max": 126.0139 + }, + "fluidity": { + "mean": 0.025, + "std": 0.063 + }, + "expansion": { + "mean": 0.257, + "std": 0.104 + }, + "movement_segments": [ + { + "start_frame": 9, + "start_time": 0.15, + "peak_velocity": 1.6356, + "dominant_direction": "stationary", + "end_frame": 9, + "end_time": 0.15, + "duration": 0 + }, + { + "start_frame": 104, + "start_time": 1.7333333333333334, + "peak_velocity": 0.3532, + "dominant_direction": "stationary", + "end_frame": 104, + "end_time": 1.7333333333333334, + "duration": 0 + } + ] + } + } + } \ No newline at end of file diff --git a/src/files/yolov11.json b/src/files/yolov11.json new file mode 100644 index 0000000000000000000000000000000000000000..36fcfddf814f8fda7952b3aaad6851a593c93cec --- /dev/null +++ b/src/files/yolov11.json @@ -0,0 +1,11384 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-05T21:53:49.267288", + "version": "1.0.0", + "model_info": { + "name": "yolo-v11-n", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 25, + "duration_seconds": 6.24, + "width": 1440, + "height": 2560, + "frame_count": 156 + }, + "movement_analysis": { + "frame_count": 156, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 1, + "timestamp": 0.04, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 2, + "timestamp": 0.08, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 3, + "timestamp": 0.12, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 4, + "timestamp": 0.16, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 5, + "timestamp": 0.2, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 6, + "timestamp": 0.24, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 7, + "timestamp": 0.28, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 8, + "timestamp": 0.32, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 9, + "timestamp": 0.36, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0, + "acceleration": 0, + "fluidity": 0, + "expansion": 0.5, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.026 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.023 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.014 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.04 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.02 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.051 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.046 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.124 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.124 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.183 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.191 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.117 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.119 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.154 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.149 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.125 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.122 + } + ] + } + ] + }, + { + "frame_index": 10, + "timestamp": 0.4, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 1.0911, + "acceleration": 27.2769, + "fluidity": 0, + "expansion": 0.5, + "total_displacement": 0.1746, + "center_displacement": { + "x": -0.03, + "y": -0.172 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.035 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.019 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.021 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.013 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.01 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.021 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.07 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.098 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.282 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.298 + }, + { + "name": "right_wrist", + "x": 0.9401, + "y": 0.656, + "confidence": 0.501 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.131 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.217 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.217 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.313 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.202 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.267 + } + ] + } + ] + }, + { + "frame_index": 11, + "timestamp": 0.44, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 2.8035, + "acceleration": 42.8109, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0.4049, + "center_displacement": { + "x": -0.3337, + "y": -0.2293 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.007 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.096 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.007 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.092 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.068 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.263 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.168 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.38 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.291 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.378 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.357 + }, + { + "name": "left_knee", + "x": 0.9541, + "y": 0.691, + "confidence": 0.562 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.487 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.482 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.427 + } + ] + }, + { + "person_id": 1, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.084 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.068 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.029 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.084 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.02 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.188 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.193 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.331 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.247 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.454 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.368 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.421 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.407 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.454 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.413 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.321 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.308 + } + ] + } + ] + }, + { + "frame_index": 12, + "timestamp": 0.48, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 7.2639, + "acceleration": 111.5101, + "fluidity": 0, + "expansion": 0.793, + "total_displacement": 1.0064, + "center_displacement": { + "x": 0.8599, + "y": 0.523 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9863, + "y": 0.5476, + "confidence": 0.652 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.466 + }, + { + "name": "right_eye", + "x": 0.9824, + "y": 0.5388, + "confidence": 0.542 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.199 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.224 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.218 + }, + { + "name": "right_shoulder", + "x": 0.9924, + "y": 0.5786, + "confidence": 0.791 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.107 + }, + { + "name": "right_elbow", + "x": 0.9818, + "y": 0.617, + "confidence": 0.694 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.211 + }, + { + "name": "right_wrist", + "x": 0.9099, + "y": 0.6359, + "confidence": 0.672 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.26 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6648, + "confidence": 0.56 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.32 + }, + { + "name": "right_knee", + "x": 0.9254, + "y": 0.6782, + "confidence": 0.583 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.276 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.457 + } + ] + } + ] + }, + { + "frame_index": 13, + "timestamp": 0.52, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 2.804, + "acceleration": 202.2971, + "fluidity": 0, + "expansion": 0.784, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0, + "y": -0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9746, + "y": 0.5427, + "confidence": 0.747 + }, + { + "name": "left_eye", + "x": 0.9835, + "y": 0.5331, + "confidence": 0.604 + }, + { + "name": "right_eye", + "x": 0.9705, + "y": 0.5333, + "confidence": 0.619 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.284 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.238 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.27 + }, + { + "name": "right_shoulder", + "x": 0.9924, + "y": 0.5718, + "confidence": 0.829 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.12 + }, + { + "name": "right_elbow", + "x": 0.9812, + "y": 0.61, + "confidence": 0.705 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.23 + }, + { + "name": "right_wrist", + "x": 0.8988, + "y": 0.6307, + "confidence": 0.68 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.274 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.667, + "confidence": 0.575 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.338 + }, + { + "name": "right_knee", + "x": 0.9102, + "y": 0.675, + "confidence": 0.595 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.291 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.473 + } + ] + } + ] + }, + { + "frame_index": 14, + "timestamp": 0.56, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 3.2557, + "acceleration": 89.7414, + "fluidity": 0, + "expansion": 0.778, + "total_displacement": 0.0061, + "center_displacement": { + "x": -0.0025, + "y": -0.0055 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9564, + "y": 0.5368, + "confidence": 0.812 + }, + { + "name": "left_eye", + "x": 0.9653, + "y": 0.5267, + "confidence": 0.722 + }, + { + "name": "right_eye", + "x": 0.9526, + "y": 0.5269, + "confidence": 0.658 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.398 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.23 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.368 + }, + { + "name": "right_shoulder", + "x": 0.9874, + "y": 0.5618, + "confidence": 0.833 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.157 + }, + { + "name": "right_elbow", + "x": 0.9667, + "y": 0.6041, + "confidence": 0.662 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.268 + }, + { + "name": "right_wrist", + "x": 0.8902, + "y": 0.6266, + "confidence": 0.644 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.294 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.666, + "confidence": 0.549 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.344 + }, + { + "name": "right_knee", + "x": 0.9029, + "y": 0.6759, + "confidence": 0.557 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.281 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.432 + } + ] + } + ] + }, + { + "frame_index": 15, + "timestamp": 0.6, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 3.4888, + "acceleration": 103.8898, + "fluidity": 0, + "expansion": 0.768, + "total_displacement": 0.0253, + "center_displacement": { + "x": -0.0015, + "y": -0.0252 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9475, + "y": 0.5299, + "confidence": 0.902 + }, + { + "name": "left_eye", + "x": 0.9577, + "y": 0.5203, + "confidence": 0.842 + }, + { + "name": "right_eye", + "x": 0.9419, + "y": 0.5201, + "confidence": 0.817 + }, + { + "name": "left_ear", + "x": 0.989, + "y": 0.5168, + "confidence": 0.543 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.386 + }, + { + "name": "left_shoulder", + "x": 1, + "y": 0.556, + "confidence": 0.511 + }, + { + "name": "right_shoulder", + "x": 0.9767, + "y": 0.554, + "confidence": 0.914 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.168 + }, + { + "name": "right_elbow", + "x": 0.9434, + "y": 0.6029, + "confidence": 0.738 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.249 + }, + { + "name": "right_wrist", + "x": 0.8705, + "y": 0.6304, + "confidence": 0.668 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.352 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6561, + "confidence": 0.638 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.369 + }, + { + "name": "right_knee", + "x": 0.8941, + "y": 0.6781, + "confidence": 0.611 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.295 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.465 + } + ] + } + ] + }, + { + "frame_index": 16, + "timestamp": 0.64, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.4268, + "acceleration": 101.9392, + "fluidity": 0, + "expansion": 0.383, + "total_displacement": 0.0063, + "center_displacement": { + "x": -0.002, + "y": -0.006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9291, + "y": 0.5253, + "confidence": 0.929 + }, + { + "name": "left_eye", + "x": 0.9387, + "y": 0.5153, + "confidence": 0.897 + }, + { + "name": "right_eye", + "x": 0.9232, + "y": 0.5154, + "confidence": 0.825 + }, + { + "name": "left_ear", + "x": 0.9761, + "y": 0.5092, + "confidence": 0.672 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.351 + }, + { + "name": "left_shoulder", + "x": 1, + "y": 0.5488, + "confidence": 0.675 + }, + { + "name": "right_shoulder", + "x": 0.9706, + "y": 0.5464, + "confidence": 0.919 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.285 + }, + { + "name": "right_elbow", + "x": 0.9391, + "y": 0.5964, + "confidence": 0.714 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.368 + }, + { + "name": "right_wrist", + "x": 0.8681, + "y": 0.6282, + "confidence": 0.661 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.463 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6528, + "confidence": 0.672 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.442 + }, + { + "name": "right_knee", + "x": 0.8829, + "y": 0.684, + "confidence": 0.614 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.312 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.439 + } + ] + } + ] + }, + { + "frame_index": 17, + "timestamp": 0.68, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 2.4054, + "acceleration": 75.7155, + "fluidity": 0, + "expansion": 0.405, + "total_displacement": 0.018, + "center_displacement": { + "x": -0.001, + "y": 0.018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9115, + "y": 0.5195, + "confidence": 0.935 + }, + { + "name": "left_eye", + "x": 0.9212, + "y": 0.5095, + "confidence": 0.929 + }, + { + "name": "right_eye", + "x": 0.9068, + "y": 0.5099, + "confidence": 0.765 + }, + { + "name": "left_ear", + "x": 0.9612, + "y": 0.5052, + "confidence": 0.784 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.231 + }, + { + "name": "left_shoulder", + "x": 0.9946, + "y": 0.5488, + "confidence": 0.83 + }, + { + "name": "right_shoulder", + "x": 0.9622, + "y": 0.5452, + "confidence": 0.878 + }, + { + "name": "left_elbow", + "x": 0.9808, + "y": 0.613, + "confidence": 0.543 + }, + { + "name": "right_elbow", + "x": 0.9308, + "y": 0.597, + "confidence": 0.573 + }, + { + "name": "left_wrist", + "x": 0.9267, + "y": 0.652, + "confidence": 0.588 + }, + { + "name": "right_wrist", + "x": 0.8642, + "y": 0.6284, + "confidence": 0.582 + }, + { + "name": "left_hip", + "x": 1, + "y": 0.6577, + "confidence": 0.605 + }, + { + "name": "right_hip", + "x": 0.9998, + "y": 0.6509, + "confidence": 0.649 + }, + { + "name": "left_knee", + "x": 0.879, + "y": 0.6979, + "confidence": 0.55 + }, + { + "name": "right_knee", + "x": 0.877, + "y": 0.6901, + "confidence": 0.561 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.344 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.369 + } + ] + } + ] + }, + { + "frame_index": 18, + "timestamp": 0.72, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.1392, + "acceleration": 71.728, + "fluidity": 0, + "expansion": 0.383, + "total_displacement": 0.0094, + "center_displacement": { + "x": -0.0059, + "y": -0.0074 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.9005, + "y": 0.5164, + "confidence": 0.942 + }, + { + "name": "left_eye", + "x": 0.909, + "y": 0.5069, + "confidence": 0.958 + }, + { + "name": "right_eye", + "x": 0.8952, + "y": 0.507, + "confidence": 0.681 + }, + { + "name": "left_ear", + "x": 0.9476, + "y": 0.5008, + "confidence": 0.887 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.146 + }, + { + "name": "left_shoulder", + "x": 0.9723, + "y": 0.5394, + "confidence": 0.941 + }, + { + "name": "right_shoulder", + "x": 0.9609, + "y": 0.5374, + "confidence": 0.806 + }, + { + "name": "left_elbow", + "x": 0.9324, + "y": 0.603, + "confidence": 0.833 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.356 + }, + { + "name": "left_wrist", + "x": 0.86, + "y": 0.6396, + "confidence": 0.795 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.423 + }, + { + "name": "left_hip", + "x": 1, + "y": 0.6506, + "confidence": 0.799 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6457, + "confidence": 0.657 + }, + { + "name": "left_knee", + "x": 0.8755, + "y": 0.6993, + "confidence": 0.733 + }, + { + "name": "right_knee", + "x": 0.8877, + "y": 0.6937, + "confidence": 0.545 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.477 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.362 + } + ] + } + ] + }, + { + "frame_index": 19, + "timestamp": 0.76, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.7858, + "acceleration": 62.7447, + "fluidity": 0, + "expansion": 0.383, + "total_displacement": 0.0069, + "center_displacement": { + "x": -0.006, + "y": -0.0034 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.8837, + "y": 0.5155, + "confidence": 0.945 + }, + { + "name": "left_eye", + "x": 0.8923, + "y": 0.5055, + "confidence": 0.963 + }, + { + "name": "right_eye", + "x": 0.8769, + "y": 0.5061, + "confidence": 0.69 + }, + { + "name": "left_ear", + "x": 0.9328, + "y": 0.498, + "confidence": 0.896 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.143 + }, + { + "name": "left_shoulder", + "x": 0.9575, + "y": 0.5342, + "confidence": 0.941 + }, + { + "name": "right_shoulder", + "x": 0.9519, + "y": 0.5346, + "confidence": 0.782 + }, + { + "name": "left_elbow", + "x": 0.9238, + "y": 0.5971, + "confidence": 0.819 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.3 + }, + { + "name": "left_wrist", + "x": 0.863, + "y": 0.6379, + "confidence": 0.765 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.359 + }, + { + "name": "left_hip", + "x": 1, + "y": 0.6471, + "confidence": 0.787 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6435, + "confidence": 0.627 + }, + { + "name": "left_knee", + "x": 0.8643, + "y": 0.7001, + "confidence": 0.734 + }, + { + "name": "right_knee", + "x": 0.8946, + "y": 0.6961, + "confidence": 0.533 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.494 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.369 + } + ] + } + ] + }, + { + "frame_index": 20, + "timestamp": 0.8, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.6418, + "acceleration": 52.954, + "fluidity": 0, + "expansion": 0.458, + "total_displacement": 0.0095, + "center_displacement": { + "x": -0.0095, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.8678, + "y": 0.513, + "confidence": 0.935 + }, + { + "name": "left_eye", + "x": 0.8747, + "y": 0.503, + "confidence": 0.956 + }, + { + "name": "right_eye", + "x": 0.8629, + "y": 0.5038, + "confidence": 0.602 + }, + { + "name": "left_ear", + "x": 0.9151, + "y": 0.4946, + "confidence": 0.91 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.121 + }, + { + "name": "left_shoulder", + "x": 0.9402, + "y": 0.533, + "confidence": 0.964 + }, + { + "name": "right_shoulder", + "x": 0.9462, + "y": 0.5339, + "confidence": 0.82 + }, + { + "name": "left_elbow", + "x": 0.924, + "y": 0.5969, + "confidence": 0.889 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.341 + }, + { + "name": "left_wrist", + "x": 0.8716, + "y": 0.6436, + "confidence": 0.838 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.401 + }, + { + "name": "left_hip", + "x": 0.9867, + "y": 0.6479, + "confidence": 0.895 + }, + { + "name": "right_hip", + "x": 0.9984, + "y": 0.6449, + "confidence": 0.77 + }, + { + "name": "left_knee", + "x": 0.8545, + "y": 0.7078, + "confidence": 0.857 + }, + { + "name": "right_knee", + "x": 0.9176, + "y": 0.704, + "confidence": 0.688 + }, + { + "name": "left_ankle", + "x": 0.906, + "y": 0.7978, + "confidence": 0.646 + }, + { + "name": "right_ankle", + "x": 0.9748, + "y": 0.7915, + "confidence": 0.505 + } + ] + } + ] + }, + { + "frame_index": 21, + "timestamp": 0.84, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.4431, + "acceleration": 47.0509, + "fluidity": 0, + "expansion": 0.077, + "total_displacement": 0.0082, + "center_displacement": { + "x": -0.0072, + "y": -0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.8534, + "y": 0.5123, + "confidence": 0.917 + }, + { + "name": "left_eye", + "x": 0.8612, + "y": 0.5027, + "confidence": 0.963 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.448 + }, + { + "name": "left_ear", + "x": 0.902, + "y": 0.4949, + "confidence": 0.932 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.058 + }, + { + "name": "left_shoulder", + "x": 0.9159, + "y": 0.5315, + "confidence": 0.976 + }, + { + "name": "right_shoulder", + "x": 0.9548, + "y": 0.5268, + "confidence": 0.626 + }, + { + "name": "left_elbow", + "x": 0.9043, + "y": 0.6002, + "confidence": 0.947 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.148 + }, + { + "name": "left_wrist", + "x": 0.8576, + "y": 0.6436, + "confidence": 0.906 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.243 + }, + { + "name": "left_hip", + "x": 0.972, + "y": 0.6455, + "confidence": 0.941 + }, + { + "name": "right_hip", + "x": 1, + "y": 0.6398, + "confidence": 0.749 + }, + { + "name": "left_knee", + "x": 0.8273, + "y": 0.71, + "confidence": 0.951 + }, + { + "name": "right_knee", + "x": 0.9077, + "y": 0.701, + "confidence": 0.776 + }, + { + "name": "left_ankle", + "x": 0.8924, + "y": 0.7965, + "confidence": 0.871 + }, + { + "name": "right_ankle", + "x": 0.9494, + "y": 0.785, + "confidence": 0.7 + } + ] + } + ] + }, + { + "frame_index": 22, + "timestamp": 0.88, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.2954, + "acceleration": 41.3428, + "fluidity": 0, + "expansion": 0.078, + "total_displacement": 0.0124, + "center_displacement": { + "x": -0.0122, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.8361, + "y": 0.5088, + "confidence": 0.909 + }, + { + "name": "left_eye", + "x": 0.845, + "y": 0.4991, + "confidence": 0.962 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.399 + }, + { + "name": "left_ear", + "x": 0.887, + "y": 0.4928, + "confidence": 0.937 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.046 + }, + { + "name": "left_shoulder", + "x": 0.9029, + "y": 0.5303, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.9432, + "y": 0.5253, + "confidence": 0.591 + }, + { + "name": "left_elbow", + "x": 0.9032, + "y": 0.6015, + "confidence": 0.961 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.135 + }, + { + "name": "left_wrist", + "x": 0.8521, + "y": 0.6441, + "confidence": 0.929 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.235 + }, + { + "name": "left_hip", + "x": 0.9573, + "y": 0.6429, + "confidence": 0.955 + }, + { + "name": "right_hip", + "x": 0.9903, + "y": 0.6366, + "confidence": 0.769 + }, + { + "name": "left_knee", + "x": 0.8139, + "y": 0.7126, + "confidence": 0.961 + }, + { + "name": "right_knee", + "x": 0.8965, + "y": 0.7024, + "confidence": 0.792 + }, + { + "name": "left_ankle", + "x": 0.8844, + "y": 0.7974, + "confidence": 0.887 + }, + { + "name": "right_ankle", + "x": 0.9454, + "y": 0.7843, + "confidence": 0.711 + } + ] + } + ] + }, + { + "frame_index": 23, + "timestamp": 0.92, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.2639, + "acceleration": 37.6163, + "fluidity": 0, + "expansion": 0.096, + "total_displacement": 0.027, + "center_displacement": { + "x": -0.027, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.8225, + "y": 0.5092, + "confidence": 0.955 + }, + { + "name": "left_eye", + "x": 0.8303, + "y": 0.499, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.8147, + "y": 0.5013, + "confidence": 0.616 + }, + { + "name": "left_ear", + "x": 0.8714, + "y": 0.49, + "confidence": 0.943 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.097 + }, + { + "name": "left_shoulder", + "x": 0.9077, + "y": 0.5262, + "confidence": 0.991 + }, + { + "name": "right_shoulder", + "x": 0.9013, + "y": 0.5307, + "confidence": 0.89 + }, + { + "name": "left_elbow", + "x": 0.9765, + "y": 0.5942, + "confidence": 0.98 + }, + { + "name": "right_elbow", + "x": 0.9103, + "y": 0.5921, + "confidence": 0.51 + }, + { + "name": "left_wrist", + "x": 0.9728, + "y": 0.6529, + "confidence": 0.969 + }, + { + "name": "right_wrist", + "x": 0.8555, + "y": 0.6292, + "confidence": 0.618 + }, + { + "name": "left_hip", + "x": 0.935, + "y": 0.6427, + "confidence": 0.985 + }, + { + "name": "right_hip", + "x": 0.9418, + "y": 0.6401, + "confidence": 0.944 + }, + { + "name": "left_knee", + "x": 0.8035, + "y": 0.7123, + "confidence": 0.981 + }, + { + "name": "right_knee", + "x": 0.8708, + "y": 0.7088, + "confidence": 0.927 + }, + { + "name": "left_ankle", + "x": 0.8867, + "y": 0.7956, + "confidence": 0.918 + }, + { + "name": "right_ankle", + "x": 0.9512, + "y": 0.7887, + "confidence": 0.83 + } + ] + } + ] + }, + { + "frame_index": 24, + "timestamp": 0.96, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.1543, + "acceleration": 31.8819, + "fluidity": 0, + "expansion": 0.08, + "total_displacement": 0.0246, + "center_displacement": { + "x": -0.0245, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.806, + "y": 0.5063, + "confidence": 0.96 + }, + { + "name": "left_eye", + "x": 0.8149, + "y": 0.4964, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.7995, + "y": 0.4987, + "confidence": 0.597 + }, + { + "name": "left_ear", + "x": 0.8568, + "y": 0.4895, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.091 + }, + { + "name": "left_shoulder", + "x": 0.897, + "y": 0.5285, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.8708, + "y": 0.532, + "confidence": 0.939 + }, + { + "name": "left_elbow", + "x": 0.9715, + "y": 0.5984, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.8909, + "y": 0.5918, + "confidence": 0.7 + }, + { + "name": "left_wrist", + "x": 0.971, + "y": 0.6597, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.8479, + "y": 0.6326, + "confidence": 0.786 + }, + { + "name": "left_hip", + "x": 0.9163, + "y": 0.6459, + "confidence": 0.996 + }, + { + "name": "right_hip", + "x": 0.9039, + "y": 0.6431, + "confidence": 0.981 + }, + { + "name": "left_knee", + "x": 0.8111, + "y": 0.7153, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.8269, + "y": 0.7117, + "confidence": 0.965 + }, + { + "name": "left_ankle", + "x": 0.9243, + "y": 0.7938, + "confidence": 0.952 + }, + { + "name": "right_ankle", + "x": 0.9236, + "y": 0.7875, + "confidence": 0.887 + } + ] + } + ] + }, + { + "frame_index": 25, + "timestamp": 1, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 1.0354, + "acceleration": 28.8768, + "fluidity": 0, + "expansion": 0.08, + "total_displacement": 0.0171, + "center_displacement": { + "x": -0.0169, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.785, + "y": 0.5027, + "confidence": 0.955 + }, + { + "name": "left_eye", + "x": 0.7953, + "y": 0.4932, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.485 + }, + { + "name": "left_ear", + "x": 0.8398, + "y": 0.4872, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.056 + }, + { + "name": "left_shoulder", + "x": 0.8821, + "y": 0.5293, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.8481, + "y": 0.5283, + "confidence": 0.899 + }, + { + "name": "left_elbow", + "x": 0.949, + "y": 0.5984, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.482 + }, + { + "name": "left_wrist", + "x": 0.9434, + "y": 0.6622, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.8519, + "y": 0.637, + "confidence": 0.595 + }, + { + "name": "left_hip", + "x": 0.9025, + "y": 0.6423, + "confidence": 0.997 + }, + { + "name": "right_hip", + "x": 0.8877, + "y": 0.6381, + "confidence": 0.975 + }, + { + "name": "left_knee", + "x": 0.8101, + "y": 0.7118, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.8374, + "y": 0.7055, + "confidence": 0.944 + }, + { + "name": "left_ankle", + "x": 0.8977, + "y": 0.7876, + "confidence": 0.95 + }, + { + "name": "right_ankle", + "x": 0.9466, + "y": 0.7768, + "confidence": 0.845 + } + ] + } + ] + }, + { + "frame_index": 26, + "timestamp": 1.04, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.9528, + "acceleration": 25.0348, + "fluidity": 0, + "expansion": 0.443, + "total_displacement": 0.0143, + "center_displacement": { + "x": -0.0143, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.769, + "y": 0.5001, + "confidence": 0.906 + }, + { + "name": "left_eye", + "x": 0.7766, + "y": 0.4906, + "confidence": 0.959 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.272 + }, + { + "name": "left_ear", + "x": 0.8188, + "y": 0.4845, + "confidence": 0.972 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.039 + }, + { + "name": "left_shoulder", + "x": 0.8627, + "y": 0.5279, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.8469, + "y": 0.5239, + "confidence": 0.826 + }, + { + "name": "left_elbow", + "x": 0.9322, + "y": 0.5983, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.288 + }, + { + "name": "left_wrist", + "x": 0.9159, + "y": 0.6605, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.378 + }, + { + "name": "left_hip", + "x": 0.8804, + "y": 0.6445, + "confidence": 0.997 + }, + { + "name": "right_hip", + "x": 0.8734, + "y": 0.6389, + "confidence": 0.964 + }, + { + "name": "left_knee", + "x": 0.8051, + "y": 0.7116, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.8198, + "y": 0.7029, + "confidence": 0.922 + }, + { + "name": "left_ankle", + "x": 0.9118, + "y": 0.7832, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.9277, + "y": 0.7721, + "confidence": 0.82 + } + ] + } + ] + }, + { + "frame_index": 27, + "timestamp": 1.08, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.8854, + "acceleration": 21.7098, + "fluidity": 0, + "expansion": 0.062, + "total_displacement": 0.016, + "center_displacement": { + "x": -0.0159, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.7549, + "y": 0.4993, + "confidence": 0.924 + }, + { + "name": "left_eye", + "x": 0.7619, + "y": 0.4902, + "confidence": 0.964 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.323 + }, + { + "name": "left_ear", + "x": 0.8069, + "y": 0.4808, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "left_shoulder", + "x": 0.8502, + "y": 0.5229, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.8291, + "y": 0.5165, + "confidence": 0.855 + }, + { + "name": "left_elbow", + "x": 0.9147, + "y": 0.6017, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.411 + }, + { + "name": "left_wrist", + "x": 0.8797, + "y": 0.6684, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.8379, + "y": 0.6327, + "confidence": 0.574 + }, + { + "name": "left_hip", + "x": 0.8665, + "y": 0.6483, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.854, + "y": 0.6416, + "confidence": 0.977 + }, + { + "name": "left_knee", + "x": 0.7842, + "y": 0.7144, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.7832, + "y": 0.7043, + "confidence": 0.967 + }, + { + "name": "left_ankle", + "x": 0.9065, + "y": 0.7866, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.8938, + "y": 0.7727, + "confidence": 0.92 + } + ] + } + ] + }, + { + "frame_index": 28, + "timestamp": 1.12, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.7778, + "acceleration": 19.9168, + "fluidity": 0, + "expansion": 0.06, + "total_displacement": 0.0095, + "center_displacement": { + "x": -0.0078, + "y": -0.0055 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.7404, + "y": 0.4957, + "confidence": 0.916 + }, + { + "name": "left_eye", + "x": 0.7473, + "y": 0.487, + "confidence": 0.962 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.284 + }, + { + "name": "left_ear", + "x": 0.7921, + "y": 0.4782, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.033 + }, + { + "name": "left_shoulder", + "x": 0.8351, + "y": 0.5194, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.8213, + "y": 0.5109, + "confidence": 0.869 + }, + { + "name": "left_elbow", + "x": 0.8902, + "y": 0.6004, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.436 + }, + { + "name": "left_wrist", + "x": 0.8505, + "y": 0.6639, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.8192, + "y": 0.632, + "confidence": 0.595 + }, + { + "name": "left_hip", + "x": 0.8601, + "y": 0.6423, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.8522, + "y": 0.6347, + "confidence": 0.985 + }, + { + "name": "left_knee", + "x": 0.7735, + "y": 0.7097, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.7744, + "y": 0.6975, + "confidence": 0.98 + }, + { + "name": "left_ankle", + "x": 0.8913, + "y": 0.7793, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.8733, + "y": 0.7638, + "confidence": 0.952 + } + ] + } + ] + }, + { + "frame_index": 29, + "timestamp": 1.16, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.7283, + "acceleration": 17.0389, + "fluidity": 0, + "expansion": 0.062, + "total_displacement": 0.0119, + "center_displacement": { + "x": -0.0119, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.7237, + "y": 0.492, + "confidence": 0.919 + }, + { + "name": "left_eye", + "x": 0.7322, + "y": 0.483, + "confidence": 0.96 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.337 + }, + { + "name": "left_ear", + "x": 0.7768, + "y": 0.4781, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.05 + }, + { + "name": "left_shoulder", + "x": 0.8222, + "y": 0.5227, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.7985, + "y": 0.5149, + "confidence": 0.889 + }, + { + "name": "left_elbow", + "x": 0.861, + "y": 0.6028, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.439 + }, + { + "name": "left_wrist", + "x": 0.8024, + "y": 0.6593, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.7977, + "y": 0.6373, + "confidence": 0.528 + }, + { + "name": "left_hip", + "x": 0.8585, + "y": 0.6388, + "confidence": 0.996 + }, + { + "name": "right_hip", + "x": 0.8419, + "y": 0.6313, + "confidence": 0.972 + }, + { + "name": "left_knee", + "x": 0.7674, + "y": 0.704, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.7451, + "y": 0.6917, + "confidence": 0.952 + }, + { + "name": "left_ankle", + "x": 0.8832, + "y": 0.7816, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.8447, + "y": 0.7665, + "confidence": 0.881 + } + ] + } + ] + }, + { + "frame_index": 30, + "timestamp": 1.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.7045, + "acceleration": 15.4738, + "fluidity": 0, + "expansion": 0.073, + "total_displacement": 0.0171, + "center_displacement": { + "x": -0.0166, + "y": -0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.7073, + "y": 0.4885, + "confidence": 0.936 + }, + { + "name": "left_eye", + "x": 0.7163, + "y": 0.4797, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.393 + }, + { + "name": "left_ear", + "x": 0.7624, + "y": 0.4738, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.045 + }, + { + "name": "left_shoulder", + "x": 0.7968, + "y": 0.5161, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.7906, + "y": 0.5073, + "confidence": 0.877 + }, + { + "name": "left_elbow", + "x": 0.8419, + "y": 0.5926, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.417 + }, + { + "name": "left_wrist", + "x": 0.7885, + "y": 0.6469, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.7828, + "y": 0.6289, + "confidence": 0.507 + }, + { + "name": "left_hip", + "x": 0.8382, + "y": 0.6384, + "confidence": 0.997 + }, + { + "name": "right_hip", + "x": 0.8292, + "y": 0.63, + "confidence": 0.977 + }, + { + "name": "left_knee", + "x": 0.7532, + "y": 0.705, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.7165, + "y": 0.6895, + "confidence": 0.968 + }, + { + "name": "left_ankle", + "x": 0.8877, + "y": 0.7825, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.7993, + "y": 0.7609, + "confidence": 0.932 + } + ] + } + ] + }, + { + "frame_index": 31, + "timestamp": 1.24, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.6374, + "acceleration": 13.6538, + "fluidity": 0, + "expansion": 0.087, + "total_displacement": 0.0136, + "center_displacement": { + "x": -0.0117, + "y": -0.0069 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6918, + "y": 0.4842, + "confidence": 0.924 + }, + { + "name": "left_eye", + "x": 0.6986, + "y": 0.4758, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.308 + }, + { + "name": "left_ear", + "x": 0.7411, + "y": 0.4697, + "confidence": 0.974 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "left_shoulder", + "x": 0.7711, + "y": 0.5102, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.7925, + "y": 0.5016, + "confidence": 0.895 + }, + { + "name": "left_elbow", + "x": 0.8218, + "y": 0.5898, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.484 + }, + { + "name": "left_wrist", + "x": 0.7588, + "y": 0.6387, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.7622, + "y": 0.626, + "confidence": 0.593 + }, + { + "name": "left_hip", + "x": 0.8196, + "y": 0.6304, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.825, + "y": 0.6218, + "confidence": 0.993 + }, + { + "name": "left_knee", + "x": 0.7534, + "y": 0.7098, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.7097, + "y": 0.6915, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.9006, + "y": 0.7877, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.7671, + "y": 0.7604, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 32, + "timestamp": 1.28, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.6238, + "acceleration": 12.079, + "fluidity": 0, + "expansion": 0.103, + "total_displacement": 0.017, + "center_displacement": { + "x": -0.0167, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6789, + "y": 0.476, + "confidence": 0.865 + }, + { + "name": "left_eye", + "x": 0.6842, + "y": 0.4681, + "confidence": 0.927 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.25 + }, + { + "name": "left_ear", + "x": 0.7221, + "y": 0.4643, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.07 + }, + { + "name": "left_shoulder", + "x": 0.7595, + "y": 0.5055, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.7709, + "y": 0.4988, + "confidence": 0.939 + }, + { + "name": "left_elbow", + "x": 0.7866, + "y": 0.5789, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.8042, + "y": 0.5635, + "confidence": 0.65 + }, + { + "name": "left_wrist", + "x": 0.7245, + "y": 0.6358, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.7538, + "y": 0.6221, + "confidence": 0.67 + }, + { + "name": "left_hip", + "x": 0.8084, + "y": 0.6273, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.8023, + "y": 0.6209, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.7749, + "y": 0.7038, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.6909, + "y": 0.6911, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.9026, + "y": 0.7866, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.7346, + "y": 0.7652, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 33, + "timestamp": 1.32, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.6041, + "acceleration": 10.464, + "fluidity": 0, + "expansion": 0.131, + "total_displacement": 0.018, + "center_displacement": { + "x": -0.0152, + "y": -0.0097 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6606, + "y": 0.4702, + "confidence": 0.847 + }, + { + "name": "left_eye", + "x": 0.6669, + "y": 0.4622, + "confidence": 0.911 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.271 + }, + { + "name": "left_ear", + "x": 0.7067, + "y": 0.4581, + "confidence": 0.963 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.104 + }, + { + "name": "left_shoulder", + "x": 0.7429, + "y": 0.4978, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.7588, + "y": 0.4886, + "confidence": 0.951 + }, + { + "name": "left_elbow", + "x": 0.7396, + "y": 0.5684, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.8063, + "y": 0.5484, + "confidence": 0.69 + }, + { + "name": "left_wrist", + "x": 0.679, + "y": 0.6242, + "confidence": 0.972 + }, + { + "name": "right_wrist", + "x": 0.7649, + "y": 0.6091, + "confidence": 0.641 + }, + { + "name": "left_hip", + "x": 0.7938, + "y": 0.6171, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.7847, + "y": 0.6102, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.781, + "y": 0.6928, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.6674, + "y": 0.681, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.906, + "y": 0.7798, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.7012, + "y": 0.7627, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 34, + "timestamp": 1.36, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5786, + "acceleration": 9.0606, + "fluidity": 0.193, + "expansion": 0.134, + "total_displacement": 0.018, + "center_displacement": { + "x": -0.0175, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6521, + "y": 0.4675, + "confidence": 0.881 + }, + { + "name": "left_eye", + "x": 0.6584, + "y": 0.4594, + "confidence": 0.907 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.348 + }, + { + "name": "left_ear", + "x": 0.6944, + "y": 0.4551, + "confidence": 0.954 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.14 + }, + { + "name": "left_shoulder", + "x": 0.732, + "y": 0.4953, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.7386, + "y": 0.4866, + "confidence": 0.977 + }, + { + "name": "left_elbow", + "x": 0.7209, + "y": 0.568, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.8007, + "y": 0.5441, + "confidence": 0.862 + }, + { + "name": "left_wrist", + "x": 0.6658, + "y": 0.615, + "confidence": 0.979 + }, + { + "name": "right_wrist", + "x": 0.7504, + "y": 0.5954, + "confidence": 0.81 + }, + { + "name": "left_hip", + "x": 0.7775, + "y": 0.611, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.7621, + "y": 0.6052, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.7781, + "y": 0.6926, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.6565, + "y": 0.6847, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.8946, + "y": 0.7751, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.6897, + "y": 0.7666, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 35, + "timestamp": 1.4000000000000001, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5192, + "acceleration": 9.0196, + "fluidity": 0.048, + "expansion": 0.175, + "total_displacement": 0.0108, + "center_displacement": { + "x": -0.009, + "y": -0.006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6282, + "y": 0.4618, + "confidence": 0.902 + }, + { + "name": "left_eye", + "x": 0.6336, + "y": 0.4525, + "confidence": 0.928 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.363 + }, + { + "name": "left_ear", + "x": 0.6753, + "y": 0.4467, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.142 + }, + { + "name": "left_shoulder", + "x": 0.6989, + "y": 0.4854, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.7592, + "y": 0.4777, + "confidence": 0.979 + }, + { + "name": "left_elbow", + "x": 0.6962, + "y": 0.5569, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.8313, + "y": 0.5323, + "confidence": 0.859 + }, + { + "name": "left_wrist", + "x": 0.6449, + "y": 0.6127, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.8077, + "y": 0.5713, + "confidence": 0.798 + }, + { + "name": "left_hip", + "x": 0.7517, + "y": 0.6089, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.7645, + "y": 0.602, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.761, + "y": 0.6861, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.6505, + "y": 0.6768, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.9084, + "y": 0.776, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.654, + "y": 0.765, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 36, + "timestamp": 1.44, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5221, + "acceleration": 7.8636, + "fluidity": 0.06, + "expansion": 0.109, + "total_displacement": 0.0155, + "center_displacement": { + "x": -0.0146, + "y": -0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6156, + "y": 0.4579, + "confidence": 0.924 + }, + { + "name": "left_eye", + "x": 0.6235, + "y": 0.4476, + "confidence": 0.93 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.447 + }, + { + "name": "left_ear", + "x": 0.6661, + "y": 0.44, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.182 + }, + { + "name": "left_shoulder", + "x": 0.6886, + "y": 0.4774, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.7453, + "y": 0.4739, + "confidence": 0.985 + }, + { + "name": "left_elbow", + "x": 0.6775, + "y": 0.5437, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.8137, + "y": 0.5246, + "confidence": 0.891 + }, + { + "name": "left_wrist", + "x": 0.6367, + "y": 0.6044, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.7917, + "y": 0.5605, + "confidence": 0.857 + }, + { + "name": "left_hip", + "x": 0.7237, + "y": 0.6041, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.7581, + "y": 0.5988, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.6548, + "y": 0.6785, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.7199, + "y": 0.6739, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.7127, + "y": 0.7721, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.7652, + "y": 0.769, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 37, + "timestamp": 1.48, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5498, + "acceleration": 7.6906, + "fluidity": 0.075, + "expansion": 0.173, + "total_displacement": 0.0232, + "center_displacement": { + "x": -0.0225, + "y": -0.0055 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6035, + "y": 0.4519, + "confidence": 0.928 + }, + { + "name": "left_eye", + "x": 0.6102, + "y": 0.4421, + "confidence": 0.946 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.46 + }, + { + "name": "left_ear", + "x": 0.6534, + "y": 0.4355, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.125 + }, + { + "name": "left_shoulder", + "x": 0.6722, + "y": 0.4727, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.7246, + "y": 0.4681, + "confidence": 0.965 + }, + { + "name": "left_elbow", + "x": 0.6679, + "y": 0.5401, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.8013, + "y": 0.5226, + "confidence": 0.809 + }, + { + "name": "left_wrist", + "x": 0.6239, + "y": 0.5925, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.7715, + "y": 0.5562, + "confidence": 0.778 + }, + { + "name": "left_hip", + "x": 0.7111, + "y": 0.5986, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.7177, + "y": 0.5929, + "confidence": 0.996 + }, + { + "name": "left_knee", + "x": 0.7327, + "y": 0.6752, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.6217, + "y": 0.6684, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.8577, + "y": 0.774, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.6048, + "y": 0.7655, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 38, + "timestamp": 1.52, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5174, + "acceleration": 6.7739, + "fluidity": 0.046, + "expansion": 0.187, + "total_displacement": 0.0191, + "center_displacement": { + "x": -0.0181, + "y": -0.0061 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5883, + "y": 0.4454, + "confidence": 0.927 + }, + { + "name": "left_eye", + "x": 0.5939, + "y": 0.4373, + "confidence": 0.924 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.414 + }, + { + "name": "left_ear", + "x": 0.6325, + "y": 0.4323, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.177 + }, + { + "name": "left_shoulder", + "x": 0.6514, + "y": 0.4684, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.7066, + "y": 0.4605, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6322, + "y": 0.5341, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.7981, + "y": 0.5078, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.5911, + "y": 0.5842, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.7694, + "y": 0.5473, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.6935, + "y": 0.5924, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.7016, + "y": 0.5867, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.7142, + "y": 0.6804, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.588, + "y": 0.6742, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.8463, + "y": 0.7718, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.584, + "y": 0.7649, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 39, + "timestamp": 1.56, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5289, + "acceleration": 5.8817, + "fluidity": 0.045, + "expansion": 0.186, + "total_displacement": 0.0211, + "center_displacement": { + "x": -0.021, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5683, + "y": 0.4424, + "confidence": 0.907 + }, + { + "name": "left_eye", + "x": 0.5724, + "y": 0.4338, + "confidence": 0.918 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.341 + }, + { + "name": "left_ear", + "x": 0.6114, + "y": 0.4287, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.146 + }, + { + "name": "left_shoulder", + "x": 0.6218, + "y": 0.4662, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.7059, + "y": 0.4605, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.6191, + "y": 0.5278, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.7943, + "y": 0.515, + "confidence": 0.937 + }, + { + "name": "left_wrist", + "x": 0.5848, + "y": 0.582, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.7444, + "y": 0.5615, + "confidence": 0.894 + }, + { + "name": "left_hip", + "x": 0.6584, + "y": 0.5904, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6831, + "y": 0.584, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.7021, + "y": 0.6778, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5765, + "y": 0.6694, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.8454, + "y": 0.768, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.5576, + "y": 0.7565, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 40, + "timestamp": 1.6, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4431, + "acceleration": 7.2731, + "fluidity": 0.042, + "expansion": 0.179, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.0069, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5613, + "y": 0.4448, + "confidence": 0.89 + }, + { + "name": "left_eye", + "x": 0.5643, + "y": 0.4367, + "confidence": 0.889 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.307 + }, + { + "name": "left_ear", + "x": 0.6002, + "y": 0.4303, + "confidence": 0.963 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.186 + }, + { + "name": "left_shoulder", + "x": 0.6192, + "y": 0.4656, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.6856, + "y": 0.4586, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6016, + "y": 0.5311, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.772, + "y": 0.5117, + "confidence": 0.957 + }, + { + "name": "left_wrist", + "x": 0.5724, + "y": 0.5782, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.7341, + "y": 0.5536, + "confidence": 0.911 + }, + { + "name": "left_hip", + "x": 0.6602, + "y": 0.5878, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6765, + "y": 0.5831, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.699, + "y": 0.6802, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5783, + "y": 0.6758, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.8141, + "y": 0.7672, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5576, + "y": 0.7633, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 41, + "timestamp": 1.6400000000000001, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5405, + "acceleration": 8.0837, + "fluidity": 0.033, + "expansion": 0.175, + "total_displacement": 0.0269, + "center_displacement": { + "x": -0.0269, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5489, + "y": 0.4468, + "confidence": 0.894 + }, + { + "name": "left_eye", + "x": 0.5526, + "y": 0.4376, + "confidence": 0.904 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.376 + }, + { + "name": "left_ear", + "x": 0.5862, + "y": 0.4305, + "confidence": 0.954 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.166 + }, + { + "name": "left_shoulder", + "x": 0.5908, + "y": 0.4658, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.6754, + "y": 0.4609, + "confidence": 0.984 + }, + { + "name": "left_elbow", + "x": 0.5784, + "y": 0.5297, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.7543, + "y": 0.5145, + "confidence": 0.906 + }, + { + "name": "left_wrist", + "x": 0.5649, + "y": 0.5837, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.7159, + "y": 0.5581, + "confidence": 0.857 + }, + { + "name": "left_hip", + "x": 0.6198, + "y": 0.5862, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6478, + "y": 0.5813, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.662, + "y": 0.6778, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5631, + "y": 0.6731, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.7926, + "y": 0.7653, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.5309, + "y": 0.7639, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 42, + "timestamp": 1.68, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4313, + "acceleration": 8.1855, + "fluidity": 0.03, + "expansion": 0.166, + "total_displacement": 0.0085, + "center_displacement": { + "x": -0.0082, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5287, + "y": 0.4374, + "confidence": 0.799 + }, + { + "name": "left_eye", + "x": 0.5326, + "y": 0.4282, + "confidence": 0.802 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.197 + }, + { + "name": "left_ear", + "x": 0.5627, + "y": 0.4245, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.212 + }, + { + "name": "left_shoulder", + "x": 0.579, + "y": 0.4641, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.656, + "y": 0.4608, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.5593, + "y": 0.5296, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.7392, + "y": 0.5149, + "confidence": 0.951 + }, + { + "name": "left_wrist", + "x": 0.539, + "y": 0.5801, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.6953, + "y": 0.5561, + "confidence": 0.886 + }, + { + "name": "left_hip", + "x": 0.6195, + "y": 0.5813, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.6467, + "y": 0.5785, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6479, + "y": 0.676, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5588, + "y": 0.6761, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.7727, + "y": 0.7583, + "confidence": 0.998 + }, + { + "name": "right_ankle", + "x": 0.5487, + "y": 0.7633, + "confidence": 0.997 + } + ] + } + ] + }, + { + "frame_index": 43, + "timestamp": 1.72, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4877, + "acceleration": 7.9055, + "fluidity": 0.026, + "expansion": 0.157, + "total_displacement": 0.0214, + "center_displacement": { + "x": -0.0211, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5176, + "y": 0.4454, + "confidence": 0.757 + }, + { + "name": "left_eye", + "x": 0.5187, + "y": 0.4361, + "confidence": 0.774 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.203 + }, + { + "name": "left_ear", + "x": 0.5494, + "y": 0.4285, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.168 + }, + { + "name": "left_shoulder", + "x": 0.567, + "y": 0.4641, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.6403, + "y": 0.4653, + "confidence": 0.984 + }, + { + "name": "left_elbow", + "x": 0.5782, + "y": 0.5266, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.7115, + "y": 0.5205, + "confidence": 0.904 + }, + { + "name": "left_wrist", + "x": 0.5485, + "y": 0.5835, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.6767, + "y": 0.563, + "confidence": 0.833 + }, + { + "name": "left_hip", + "x": 0.5934, + "y": 0.5874, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6163, + "y": 0.584, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6156, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5302, + "y": 0.677, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7565, + "y": 0.7625, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.5289, + "y": 0.761, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 44, + "timestamp": 1.76, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4488, + "acceleration": 7.2937, + "fluidity": 0.022, + "expansion": 0.155, + "total_displacement": 0.0134, + "center_displacement": { + "x": -0.0134, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5082, + "y": 0.4452, + "confidence": 0.722 + }, + { + "name": "left_eye", + "x": 0.51, + "y": 0.4353, + "confidence": 0.746 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.201 + }, + { + "name": "left_ear", + "x": 0.5391, + "y": 0.4269, + "confidence": 0.921 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.143 + }, + { + "name": "left_shoulder", + "x": 0.5511, + "y": 0.462, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.6243, + "y": 0.4638, + "confidence": 0.968 + }, + { + "name": "left_elbow", + "x": 0.5568, + "y": 0.5286, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.6901, + "y": 0.5226, + "confidence": 0.847 + }, + { + "name": "left_wrist", + "x": 0.5358, + "y": 0.58, + "confidence": 0.961 + }, + { + "name": "right_wrist", + "x": 0.6583, + "y": 0.5618, + "confidence": 0.773 + }, + { + "name": "left_hip", + "x": 0.582, + "y": 0.5889, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.6059, + "y": 0.5863, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.596, + "y": 0.6835, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.5234, + "y": 0.6818, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7401, + "y": 0.7642, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5177, + "y": 0.7656, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 45, + "timestamp": 1.8, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4354, + "acceleration": 6.0831, + "fluidity": 0.02, + "expansion": 0.132, + "total_displacement": 0.0149, + "center_displacement": { + "x": -0.0148, + "y": 0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.488, + "y": 0.4515, + "confidence": 0.868 + }, + { + "name": "left_eye", + "x": 0.4911, + "y": 0.4421, + "confidence": 0.857 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.321 + }, + { + "name": "left_ear", + "x": 0.5227, + "y": 0.4311, + "confidence": 0.959 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.246 + }, + { + "name": "left_shoulder", + "x": 0.5316, + "y": 0.4664, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.6114, + "y": 0.4647, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.5206, + "y": 0.5309, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.6853, + "y": 0.5226, + "confidence": 0.954 + }, + { + "name": "left_wrist", + "x": 0.5251, + "y": 0.5862, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.6419, + "y": 0.5704, + "confidence": 0.906 + }, + { + "name": "left_hip", + "x": 0.5627, + "y": 0.591, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5985, + "y": 0.5883, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5632, + "y": 0.6867, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5223, + "y": 0.6867, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6995, + "y": 0.7609, + "confidence": 0.998 + }, + { + "name": "right_ankle", + "x": 0.5435, + "y": 0.7665, + "confidence": 0.998 + } + ] + } + ] + }, + { + "frame_index": 46, + "timestamp": 1.84, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4565, + "acceleration": 5.823, + "fluidity": 0.017, + "expansion": 0.106, + "total_displacement": 0.0182, + "center_displacement": { + "x": -0.0181, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4686, + "y": 0.4532, + "confidence": 0.772 + }, + { + "name": "left_eye", + "x": 0.4688, + "y": 0.4452, + "confidence": 0.802 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.171 + }, + { + "name": "left_ear", + "x": 0.4994, + "y": 0.4342, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.129 + }, + { + "name": "left_shoulder", + "x": 0.5144, + "y": 0.4661, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5846, + "y": 0.4641, + "confidence": 0.983 + }, + { + "name": "left_elbow", + "x": 0.5363, + "y": 0.5318, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.6615, + "y": 0.5259, + "confidence": 0.888 + }, + { + "name": "left_wrist", + "x": 0.5219, + "y": 0.5909, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.6304, + "y": 0.5792, + "confidence": 0.839 + }, + { + "name": "left_hip", + "x": 0.5491, + "y": 0.5942, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5836, + "y": 0.5903, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5323, + "y": 0.6861, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5193, + "y": 0.6801, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6571, + "y": 0.7686, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5819, + "y": 0.7568, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 47, + "timestamp": 1.8800000000000001, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3954, + "acceleration": 6.1331, + "fluidity": 0.015, + "expansion": 0.099, + "total_displacement": 0.0096, + "center_displacement": { + "x": -0.0065, + "y": 0.0071 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4543, + "y": 0.4581, + "confidence": 0.776 + }, + { + "name": "left_eye", + "x": 0.4574, + "y": 0.45, + "confidence": 0.839 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.217 + }, + { + "name": "left_ear", + "x": 0.4939, + "y": 0.4408, + "confidence": 0.946 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.121 + }, + { + "name": "left_shoulder", + "x": 0.5124, + "y": 0.4751, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.5667, + "y": 0.4718, + "confidence": 0.955 + }, + { + "name": "left_elbow", + "x": 0.5274, + "y": 0.5403, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.6216, + "y": 0.5357, + "confidence": 0.727 + }, + { + "name": "left_wrist", + "x": 0.5085, + "y": 0.5915, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.6051, + "y": 0.584, + "confidence": 0.672 + }, + { + "name": "left_hip", + "x": 0.55, + "y": 0.6006, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5766, + "y": 0.5958, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.5084, + "y": 0.6908, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.5015, + "y": 0.6822, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.6227, + "y": 0.7696, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5575, + "y": 0.7549, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 48, + "timestamp": 1.92, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4416, + "acceleration": 5.9993, + "fluidity": 0.013, + "expansion": 0.082, + "total_displacement": 0.0192, + "center_displacement": { + "x": -0.0187, + "y": 0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4371, + "y": 0.4609, + "confidence": 0.886 + }, + { + "name": "left_eye", + "x": 0.4413, + "y": 0.4523, + "confidence": 0.916 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.299 + }, + { + "name": "left_ear", + "x": 0.4798, + "y": 0.4428, + "confidence": 0.963 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.121 + }, + { + "name": "left_shoulder", + "x": 0.4984, + "y": 0.4786, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5455, + "y": 0.476, + "confidence": 0.97 + }, + { + "name": "left_elbow", + "x": 0.5144, + "y": 0.5411, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.6122, + "y": 0.531, + "confidence": 0.761 + }, + { + "name": "left_wrist", + "x": 0.5061, + "y": 0.6027, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.5729, + "y": 0.5802, + "confidence": 0.733 + }, + { + "name": "left_hip", + "x": 0.5303, + "y": 0.6048, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5568, + "y": 0.601, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.4804, + "y": 0.6849, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4923, + "y": 0.6815, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.5935, + "y": 0.7655, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.5682, + "y": 0.7598, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 49, + "timestamp": 1.96, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3924, + "acceleration": 5.7561, + "fluidity": 0.011, + "expansion": 0.074, + "total_displacement": 0.0111, + "center_displacement": { + "x": -0.0108, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4256, + "y": 0.4644, + "confidence": 0.854 + }, + { + "name": "left_eye", + "x": 0.4292, + "y": 0.4555, + "confidence": 0.908 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.215 + }, + { + "name": "left_ear", + "x": 0.4661, + "y": 0.445, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.084 + }, + { + "name": "left_shoulder", + "x": 0.4865, + "y": 0.4794, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5353, + "y": 0.4757, + "confidence": 0.949 + }, + { + "name": "left_elbow", + "x": 0.5101, + "y": 0.5424, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.5934, + "y": 0.5307, + "confidence": 0.645 + }, + { + "name": "left_wrist", + "x": 0.5032, + "y": 0.607, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.5537, + "y": 0.585, + "confidence": 0.652 + }, + { + "name": "left_hip", + "x": 0.5182, + "y": 0.6093, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5478, + "y": 0.6048, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.4497, + "y": 0.6842, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4732, + "y": 0.6795, + "confidence": 0.99 + }, + { + "name": "left_ankle", + "x": 0.5652, + "y": 0.7651, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5505, + "y": 0.7585, + "confidence": 0.967 + } + ] + } + ] + }, + { + "frame_index": 50, + "timestamp": 2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3879, + "acceleration": 4.7584, + "fluidity": 0.01, + "expansion": 0.339, + "total_displacement": 0.0129, + "center_displacement": { + "x": -0.0127, + "y": 0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4101, + "y": 0.4676, + "confidence": 0.76 + }, + { + "name": "left_eye", + "x": 0.4122, + "y": 0.4585, + "confidence": 0.874 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.106 + }, + { + "name": "left_ear", + "x": 0.4469, + "y": 0.4477, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.05 + }, + { + "name": "left_shoulder", + "x": 0.4636, + "y": 0.4792, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5249, + "y": 0.4786, + "confidence": 0.882 + }, + { + "name": "left_elbow", + "x": 0.4932, + "y": 0.5391, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.418 + }, + { + "name": "left_wrist", + "x": 0.5, + "y": 0.6083, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.49 + }, + { + "name": "left_hip", + "x": 0.5033, + "y": 0.612, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5453, + "y": 0.6091, + "confidence": 0.987 + }, + { + "name": "left_knee", + "x": 0.4071, + "y": 0.6859, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.4678, + "y": 0.6833, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.5234, + "y": 0.7637, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.5429, + "y": 0.7573, + "confidence": 0.914 + } + ] + } + ] + }, + { + "frame_index": 51, + "timestamp": 2.04, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4146, + "acceleration": 4.8443, + "fluidity": 0.008, + "expansion": 0.079, + "total_displacement": 0.0175, + "center_displacement": { + "x": -0.0174, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.391, + "y": 0.4674, + "confidence": 0.914 + }, + { + "name": "left_eye", + "x": 0.3975, + "y": 0.458, + "confidence": 0.941 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.368 + }, + { + "name": "left_ear", + "x": 0.4362, + "y": 0.4491, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.098 + }, + { + "name": "left_shoulder", + "x": 0.4433, + "y": 0.4827, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.498, + "y": 0.4819, + "confidence": 0.935 + }, + { + "name": "left_elbow", + "x": 0.4723, + "y": 0.5399, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.5355, + "y": 0.5398, + "confidence": 0.612 + }, + { + "name": "left_wrist", + "x": 0.4962, + "y": 0.601, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.5158, + "y": 0.5919, + "confidence": 0.646 + }, + { + "name": "left_hip", + "x": 0.492, + "y": 0.6112, + "confidence": 0.997 + }, + { + "name": "right_hip", + "x": 0.5341, + "y": 0.6086, + "confidence": 0.986 + }, + { + "name": "left_knee", + "x": 0.3743, + "y": 0.6879, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.4685, + "y": 0.6848, + "confidence": 0.972 + }, + { + "name": "left_ankle", + "x": 0.4674, + "y": 0.7691, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.546, + "y": 0.7635, + "confidence": 0.917 + } + ] + } + ] + }, + { + "frame_index": 52, + "timestamp": 2.08, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4418, + "acceleration": 4.6873, + "fluidity": 0.007, + "expansion": 0.09, + "total_displacement": 0.0229, + "center_displacement": { + "x": -0.0229, + "y": -0.0012 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.3741, + "y": 0.4656, + "confidence": 0.881 + }, + { + "name": "left_eye", + "x": 0.3806, + "y": 0.4566, + "confidence": 0.923 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.253 + }, + { + "name": "left_ear", + "x": 0.4189, + "y": 0.4487, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.078 + }, + { + "name": "left_shoulder", + "x": 0.431, + "y": 0.4805, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.476, + "y": 0.4824, + "confidence": 0.935 + }, + { + "name": "left_elbow", + "x": 0.4662, + "y": 0.5337, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.513, + "y": 0.5394, + "confidence": 0.591 + }, + { + "name": "left_wrist", + "x": 0.4969, + "y": 0.6007, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.4981, + "y": 0.5919, + "confidence": 0.622 + }, + { + "name": "left_hip", + "x": 0.4644, + "y": 0.6091, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5046, + "y": 0.6077, + "confidence": 0.991 + }, + { + "name": "left_knee", + "x": 0.3469, + "y": 0.6879, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.4632, + "y": 0.6878, + "confidence": 0.982 + }, + { + "name": "left_ankle", + "x": 0.4264, + "y": 0.7721, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.5528, + "y": 0.7694, + "confidence": 0.942 + } + ] + } + ] + }, + { + "frame_index": 53, + "timestamp": 2.12, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4085, + "acceleration": 4.714, + "fluidity": 0.006, + "expansion": 0.096, + "total_displacement": 0.0156, + "center_displacement": { + "x": -0.0153, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.3569, + "y": 0.4634, + "confidence": 0.871 + }, + { + "name": "left_eye", + "x": 0.3638, + "y": 0.4543, + "confidence": 0.901 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.297 + }, + { + "name": "left_ear", + "x": 0.4029, + "y": 0.4459, + "confidence": 0.935 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.093 + }, + { + "name": "left_shoulder", + "x": 0.4176, + "y": 0.4775, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4578, + "y": 0.4809, + "confidence": 0.949 + }, + { + "name": "left_elbow", + "x": 0.4652, + "y": 0.5276, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.5003, + "y": 0.5363, + "confidence": 0.707 + }, + { + "name": "left_wrist", + "x": 0.495, + "y": 0.5885, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.499, + "y": 0.5868, + "confidence": 0.715 + }, + { + "name": "left_hip", + "x": 0.4503, + "y": 0.6054, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.489, + "y": 0.6047, + "confidence": 0.994 + }, + { + "name": "left_knee", + "x": 0.3342, + "y": 0.6891, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4614, + "y": 0.6891, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.4036, + "y": 0.7712, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.544, + "y": 0.7689, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 54, + "timestamp": 2.16, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4902, + "acceleration": 5.475, + "fluidity": 0.006, + "expansion": 0.118, + "total_displacement": 0.0278, + "center_displacement": { + "x": -0.0277, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.3419, + "y": 0.4584, + "confidence": 0.883 + }, + { + "name": "left_eye", + "x": 0.3489, + "y": 0.4494, + "confidence": 0.924 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.239 + }, + { + "name": "left_ear", + "x": 0.3832, + "y": 0.4423, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.07 + }, + { + "name": "left_shoulder", + "x": 0.4031, + "y": 0.4752, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4265, + "y": 0.4798, + "confidence": 0.943 + }, + { + "name": "left_elbow", + "x": 0.4516, + "y": 0.5271, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.4555, + "y": 0.5394, + "confidence": 0.616 + }, + { + "name": "left_wrist", + "x": 0.4819, + "y": 0.589, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4371, + "y": 0.5907, + "confidence": 0.661 + }, + { + "name": "left_hip", + "x": 0.4207, + "y": 0.6019, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4535, + "y": 0.602, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.308, + "y": 0.6855, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4525, + "y": 0.6876, + "confidence": 0.992 + }, + { + "name": "left_ankle", + "x": 0.3638, + "y": 0.7717, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.548, + "y": 0.7731, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 55, + "timestamp": 2.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4595, + "acceleration": 4.9589, + "fluidity": 0.005, + "expansion": 0.144, + "total_displacement": 0.0199, + "center_displacement": { + "x": -0.0192, + "y": -0.0051 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.3232, + "y": 0.4552, + "confidence": 0.888 + }, + { + "name": "left_eye", + "x": 0.3289, + "y": 0.4463, + "confidence": 0.919 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.212 + }, + { + "name": "left_ear", + "x": 0.362, + "y": 0.4383, + "confidence": 0.962 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.061 + }, + { + "name": "left_shoulder", + "x": 0.392, + "y": 0.4693, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4031, + "y": 0.4771, + "confidence": 0.963 + }, + { + "name": "left_elbow", + "x": 0.4481, + "y": 0.5229, + "confidence": 0.999 + }, + { + "name": "right_elbow", + "x": 0.4228, + "y": 0.5394, + "confidence": 0.747 + }, + { + "name": "left_wrist", + "x": 0.4759, + "y": 0.5885, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.3815, + "y": 0.5868, + "confidence": 0.785 + }, + { + "name": "left_hip", + "x": 0.4016, + "y": 0.5954, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4302, + "y": 0.5967, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.2903, + "y": 0.6793, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4495, + "y": 0.6837, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.33, + "y": 0.7706, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5531, + "y": 0.7735, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 56, + "timestamp": 2.24, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4404, + "acceleration": 4.3738, + "fluidity": 0.004, + "expansion": 0.152, + "total_displacement": 0.0161, + "center_displacement": { + "x": -0.0159, + "y": -0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.3001, + "y": 0.4522, + "confidence": 0.932 + }, + { + "name": "left_eye", + "x": 0.308, + "y": 0.443, + "confidence": 0.947 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.36 + }, + { + "name": "left_ear", + "x": 0.3454, + "y": 0.4356, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.089 + }, + { + "name": "left_shoulder", + "x": 0.3719, + "y": 0.466, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3787, + "y": 0.4753, + "confidence": 0.963 + }, + { + "name": "left_elbow", + "x": 0.4354, + "y": 0.5158, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3945, + "y": 0.5387, + "confidence": 0.719 + }, + { + "name": "left_wrist", + "x": 0.4492, + "y": 0.581, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3543, + "y": 0.5834, + "confidence": 0.747 + }, + { + "name": "left_hip", + "x": 0.3924, + "y": 0.5916, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4204, + "y": 0.5937, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.278, + "y": 0.6707, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4466, + "y": 0.6743, + "confidence": 0.992 + }, + { + "name": "left_ankle", + "x": 0.3066, + "y": 0.7701, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.554, + "y": 0.7673, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 57, + "timestamp": 2.2800000000000002, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4448, + "acceleration": 3.7919, + "fluidity": 0.004, + "expansion": 0.166, + "total_displacement": 0.0156, + "center_displacement": { + "x": -0.0155, + "y": -0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2866, + "y": 0.4457, + "confidence": 0.95 + }, + { + "name": "left_eye", + "x": 0.2966, + "y": 0.437, + "confidence": 0.957 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.425 + }, + { + "name": "left_ear", + "x": 0.3347, + "y": 0.4324, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.099 + }, + { + "name": "left_shoulder", + "x": 0.3656, + "y": 0.4659, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3544, + "y": 0.4737, + "confidence": 0.979 + }, + { + "name": "left_elbow", + "x": 0.4316, + "y": 0.5133, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0.3686, + "y": 0.5331, + "confidence": 0.831 + }, + { + "name": "left_wrist", + "x": 0.4475, + "y": 0.5765, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.3263, + "y": 0.5798, + "confidence": 0.849 + }, + { + "name": "left_hip", + "x": 0.3817, + "y": 0.5897, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3998, + "y": 0.5909, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.2635, + "y": 0.674, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.433, + "y": 0.6764, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.2824, + "y": 0.7678, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5476, + "y": 0.7647, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 58, + "timestamp": 2.32, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4353, + "acceleration": 3.3277, + "fluidity": 0.02, + "expansion": 0.168, + "total_displacement": 0.0159, + "center_displacement": { + "x": -0.0158, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2705, + "y": 0.443, + "confidence": 0.969 + }, + { + "name": "left_eye", + "x": 0.2803, + "y": 0.4341, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.2646, + "y": 0.4365, + "confidence": 0.626 + }, + { + "name": "left_ear", + "x": 0.318, + "y": 0.4298, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.133 + }, + { + "name": "left_shoulder", + "x": 0.3544, + "y": 0.4628, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3316, + "y": 0.4776, + "confidence": 0.988 + }, + { + "name": "left_elbow", + "x": 0.42, + "y": 0.5116, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0.3476, + "y": 0.5347, + "confidence": 0.919 + }, + { + "name": "left_wrist", + "x": 0.4419, + "y": 0.5736, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.3165, + "y": 0.5757, + "confidence": 0.932 + }, + { + "name": "left_hip", + "x": 0.3715, + "y": 0.585, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3808, + "y": 0.5888, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.2623, + "y": 0.6702, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4282, + "y": 0.6757, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.2474, + "y": 0.7644, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.5153, + "y": 0.7642, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 59, + "timestamp": 2.36, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.455, + "acceleration": 3.5169, + "fluidity": 0.007, + "expansion": 0.177, + "total_displacement": 0.02, + "center_displacement": { + "x": -0.0197, + "y": -0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2553, + "y": 0.4382, + "confidence": 0.97 + }, + { + "name": "left_eye", + "x": 0.2671, + "y": 0.4293, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.248, + "y": 0.4314, + "confidence": 0.535 + }, + { + "name": "left_ear", + "x": 0.3067, + "y": 0.4257, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.09 + }, + { + "name": "left_shoulder", + "x": 0.3411, + "y": 0.4594, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3146, + "y": 0.472, + "confidence": 0.984 + }, + { + "name": "left_elbow", + "x": 0.4131, + "y": 0.5067, + "confidence": 0.999 + }, + { + "name": "right_elbow", + "x": 0.3312, + "y": 0.5339, + "confidence": 0.88 + }, + { + "name": "left_wrist", + "x": 0.4233, + "y": 0.5727, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.2825, + "y": 0.5742, + "confidence": 0.906 + }, + { + "name": "left_hip", + "x": 0.3468, + "y": 0.5838, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3568, + "y": 0.5864, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.225, + "y": 0.669, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4015, + "y": 0.6735, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.2234, + "y": 0.7644, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5056, + "y": 0.7619, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 60, + "timestamp": 2.4, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.447, + "acceleration": 2.9521, + "fluidity": 0.008, + "expansion": 0.182, + "total_displacement": 0.0181, + "center_displacement": { + "x": -0.0172, + "y": -0.0058 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2366, + "y": 0.4361, + "confidence": 0.958 + }, + { + "name": "left_eye", + "x": 0.2459, + "y": 0.4282, + "confidence": 0.966 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.387 + }, + { + "name": "left_ear", + "x": 0.2851, + "y": 0.424, + "confidence": 0.969 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.062 + }, + { + "name": "left_shoulder", + "x": 0.3261, + "y": 0.4546, + "confidence": 1 + }, + { + "name": "right_shoulder", + "x": 0.2978, + "y": 0.4666, + "confidence": 0.978 + }, + { + "name": "left_elbow", + "x": 0.3994, + "y": 0.5005, + "confidence": 0.999 + }, + { + "name": "right_elbow", + "x": 0.3138, + "y": 0.5262, + "confidence": 0.839 + }, + { + "name": "left_wrist", + "x": 0.4131, + "y": 0.5655, + "confidence": 0.998 + }, + { + "name": "right_wrist", + "x": 0.2688, + "y": 0.5627, + "confidence": 0.877 + }, + { + "name": "left_hip", + "x": 0.329, + "y": 0.5773, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3379, + "y": 0.5797, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.2144, + "y": 0.6613, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.3871, + "y": 0.6658, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.2032, + "y": 0.7595, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.4953, + "y": 0.7541, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 61, + "timestamp": 2.44, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4699, + "acceleration": 3.0091, + "fluidity": 0.009, + "expansion": 0.177, + "total_displacement": 0.0217, + "center_displacement": { + "x": -0.0217, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2184, + "y": 0.4345, + "confidence": 0.96 + }, + { + "name": "left_eye", + "x": 0.229, + "y": 0.427, + "confidence": 0.962 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.473 + }, + { + "name": "left_ear", + "x": 0.2699, + "y": 0.4229, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.101 + }, + { + "name": "left_shoulder", + "x": 0.3085, + "y": 0.4548, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.2644, + "y": 0.4628, + "confidence": 0.983 + }, + { + "name": "left_elbow", + "x": 0.3872, + "y": 0.5062, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0.2764, + "y": 0.5305, + "confidence": 0.868 + }, + { + "name": "left_wrist", + "x": 0.3909, + "y": 0.5662, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.2501, + "y": 0.5697, + "confidence": 0.882 + }, + { + "name": "left_hip", + "x": 0.3167, + "y": 0.5803, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3144, + "y": 0.5818, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.2109, + "y": 0.6677, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3633, + "y": 0.6683, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.2034, + "y": 0.7666, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4835, + "y": 0.7533, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 62, + "timestamp": 2.48, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4562, + "acceleration": 2.9282, + "fluidity": 0.006, + "expansion": 0.18, + "total_displacement": 0.0181, + "center_displacement": { + "x": -0.018, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.2004, + "y": 0.4345, + "confidence": 0.966 + }, + { + "name": "left_eye", + "x": 0.2121, + "y": 0.4276, + "confidence": 0.968 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.486 + }, + { + "name": "left_ear", + "x": 0.2546, + "y": 0.4244, + "confidence": 0.962 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.089 + }, + { + "name": "left_shoulder", + "x": 0.2928, + "y": 0.4577, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.2477, + "y": 0.4629, + "confidence": 0.984 + }, + { + "name": "left_elbow", + "x": 0.3744, + "y": 0.5087, + "confidence": 0.999 + }, + { + "name": "right_elbow", + "x": 0.2655, + "y": 0.5263, + "confidence": 0.882 + }, + { + "name": "left_wrist", + "x": 0.3687, + "y": 0.5709, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.2327, + "y": 0.5679, + "confidence": 0.9 + }, + { + "name": "left_hip", + "x": 0.297, + "y": 0.5839, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2946, + "y": 0.5838, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.1907, + "y": 0.6712, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3483, + "y": 0.6687, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.1858, + "y": 0.7689, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4791, + "y": 0.7507, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 63, + "timestamp": 2.52, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4552, + "acceleration": 2.2548, + "fluidity": 0.093, + "expansion": 0.171, + "total_displacement": 0.0179, + "center_displacement": { + "x": -0.0178, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1847, + "y": 0.4334, + "confidence": 0.966 + }, + { + "name": "left_eye", + "x": 0.1974, + "y": 0.4268, + "confidence": 0.969 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.494 + }, + { + "name": "left_ear", + "x": 0.2413, + "y": 0.4252, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.086 + }, + { + "name": "left_shoulder", + "x": 0.2782, + "y": 0.4605, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.2335, + "y": 0.4643, + "confidence": 0.986 + }, + { + "name": "left_elbow", + "x": 0.3645, + "y": 0.5119, + "confidence": 0.999 + }, + { + "name": "right_elbow", + "x": 0.2543, + "y": 0.5248, + "confidence": 0.894 + }, + { + "name": "left_wrist", + "x": 0.3497, + "y": 0.5732, + "confidence": 0.997 + }, + { + "name": "right_wrist", + "x": 0.2174, + "y": 0.5655, + "confidence": 0.91 + }, + { + "name": "left_hip", + "x": 0.2765, + "y": 0.5866, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2728, + "y": 0.5853, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1804, + "y": 0.6749, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3246, + "y": 0.6697, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.1804, + "y": 0.7711, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.4489, + "y": 0.7492, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 64, + "timestamp": 2.56, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4285, + "acceleration": 2.7664, + "fluidity": 0.027, + "expansion": 0.166, + "total_displacement": 0.0133, + "center_displacement": { + "x": -0.0127, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1707, + "y": 0.4376, + "confidence": 0.976 + }, + { + "name": "left_eye", + "x": 0.184, + "y": 0.4305, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.1697, + "y": 0.43, + "confidence": 0.706 + }, + { + "name": "left_ear", + "x": 0.2273, + "y": 0.4289, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.153 + }, + { + "name": "left_shoulder", + "x": 0.2653, + "y": 0.4655, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.215, + "y": 0.4737, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.3476, + "y": 0.5215, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.2277, + "y": 0.5358, + "confidence": 0.927 + }, + { + "name": "left_wrist", + "x": 0.3461, + "y": 0.5779, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.1951, + "y": 0.5714, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.2702, + "y": 0.587, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2599, + "y": 0.5872, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.1735, + "y": 0.6773, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.3004, + "y": 0.6742, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.1736, + "y": 0.7697, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.412, + "y": 0.7519, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 65, + "timestamp": 2.6, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4221, + "acceleration": 2.0866, + "fluidity": 0.031, + "expansion": 0.138, + "total_displacement": 0.0139, + "center_displacement": { + "x": -0.0133, + "y": 0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1539, + "y": 0.4392, + "confidence": 0.966 + }, + { + "name": "left_eye", + "x": 0.1669, + "y": 0.4321, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.1546, + "y": 0.4311, + "confidence": 0.635 + }, + { + "name": "left_ear", + "x": 0.2121, + "y": 0.4303, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.118 + }, + { + "name": "left_shoulder", + "x": 0.2423, + "y": 0.4697, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.221, + "y": 0.471, + "confidence": 0.974 + }, + { + "name": "left_elbow", + "x": 0.3208, + "y": 0.5276, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.278, + "y": 0.5328, + "confidence": 0.807 + }, + { + "name": "left_wrist", + "x": 0.3183, + "y": 0.5759, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2652, + "y": 0.5766, + "confidence": 0.832 + }, + { + "name": "left_hip", + "x": 0.2445, + "y": 0.5967, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.2497, + "y": 0.5932, + "confidence": 0.997 + }, + { + "name": "left_knee", + "x": 0.1483, + "y": 0.6824, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.2855, + "y": 0.6738, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.1534, + "y": 0.7721, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3977, + "y": 0.7513, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 66, + "timestamp": 2.64, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.5344, + "acceleration": 4.7978, + "fluidity": 0.038, + "expansion": 0.148, + "total_displacement": 0.0333, + "center_displacement": { + "x": -0.0331, + "y": 0.0038 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1312, + "y": 0.4414, + "confidence": 0.965 + }, + { + "name": "left_eye", + "x": 0.1447, + "y": 0.4356, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.1348, + "y": 0.4334, + "confidence": 0.582 + }, + { + "name": "left_ear", + "x": 0.191, + "y": 0.435, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.081 + }, + { + "name": "left_shoulder", + "x": 0.2281, + "y": 0.4731, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.1691, + "y": 0.4763, + "confidence": 0.972 + }, + { + "name": "left_elbow", + "x": 0.3192, + "y": 0.5291, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.2016, + "y": 0.535, + "confidence": 0.783 + }, + { + "name": "left_wrist", + "x": 0.3072, + "y": 0.592, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.1786, + "y": 0.5754, + "confidence": 0.816 + }, + { + "name": "left_hip", + "x": 0.2233, + "y": 0.5993, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.2047, + "y": 0.5972, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.1449, + "y": 0.6923, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.239, + "y": 0.6844, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.1589, + "y": 0.7779, + "confidence": 0.998 + }, + { + "name": "right_ankle", + "x": 0.363, + "y": 0.7497, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 67, + "timestamp": 2.68, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4624, + "acceleration": 4.7093, + "fluidity": 0.024, + "expansion": 0.136, + "total_displacement": 0.0186, + "center_displacement": { + "x": -0.018, + "y": 0.0044 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1116, + "y": 0.4467, + "confidence": 0.971 + }, + { + "name": "left_eye", + "x": 0.1251, + "y": 0.4399, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.1133, + "y": 0.4386, + "confidence": 0.587 + }, + { + "name": "left_ear", + "x": 0.1732, + "y": 0.4379, + "confidence": 0.973 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.073 + }, + { + "name": "left_shoulder", + "x": 0.2089, + "y": 0.4775, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.1551, + "y": 0.4807, + "confidence": 0.977 + }, + { + "name": "left_elbow", + "x": 0.3002, + "y": 0.5426, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0.1788, + "y": 0.544, + "confidence": 0.821 + }, + { + "name": "left_wrist", + "x": 0.2737, + "y": 0.5997, + "confidence": 0.996 + }, + { + "name": "right_wrist", + "x": 0.1486, + "y": 0.5811, + "confidence": 0.866 + }, + { + "name": "left_hip", + "x": 0.2034, + "y": 0.6042, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1855, + "y": 0.6012, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.11, + "y": 0.6956, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.1968, + "y": 0.6862, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.1547, + "y": 0.777, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.3285, + "y": 0.7497, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 68, + "timestamp": 2.72, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4429, + "acceleration": 3.5976, + "fluidity": 0.023, + "expansion": 0.126, + "total_displacement": 0.0141, + "center_displacement": { + "x": -0.0138, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.1003, + "y": 0.4501, + "confidence": 0.966 + }, + { + "name": "left_eye", + "x": 0.1139, + "y": 0.4427, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.0997, + "y": 0.4418, + "confidence": 0.596 + }, + { + "name": "left_ear", + "x": 0.1589, + "y": 0.4401, + "confidence": 0.969 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.098 + }, + { + "name": "left_shoulder", + "x": 0.1891, + "y": 0.4812, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.141, + "y": 0.4827, + "confidence": 0.977 + }, + { + "name": "left_elbow", + "x": 0.2647, + "y": 0.547, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.1603, + "y": 0.5448, + "confidence": 0.819 + }, + { + "name": "left_wrist", + "x": 0.2501, + "y": 0.6067, + "confidence": 0.995 + }, + { + "name": "right_wrist", + "x": 0.1335, + "y": 0.587, + "confidence": 0.857 + }, + { + "name": "left_hip", + "x": 0.1919, + "y": 0.6069, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.1756, + "y": 0.6041, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.0992, + "y": 0.695, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.1784, + "y": 0.6875, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.157, + "y": 0.7723, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.3106, + "y": 0.7513, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 69, + "timestamp": 2.7600000000000002, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4883, + "acceleration": 4.2821, + "fluidity": 0.021, + "expansion": 0.105, + "total_displacement": 0.0205, + "center_displacement": { + "x": -0.0201, + "y": 0.0042 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0808, + "y": 0.4541, + "confidence": 0.951 + }, + { + "name": "left_eye", + "x": 0.0927, + "y": 0.445, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.0772, + "y": 0.4459, + "confidence": 0.507 + }, + { + "name": "left_ear", + "x": 0.1364, + "y": 0.4399, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.091 + }, + { + "name": "left_shoulder", + "x": 0.1769, + "y": 0.4826, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.1197, + "y": 0.487, + "confidence": 0.963 + }, + { + "name": "left_elbow", + "x": 0.2419, + "y": 0.5519, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0.1372, + "y": 0.5538, + "confidence": 0.742 + }, + { + "name": "left_wrist", + "x": 0.2255, + "y": 0.6095, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.1112, + "y": 0.5992, + "confidence": 0.795 + }, + { + "name": "left_hip", + "x": 0.1745, + "y": 0.6115, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1461, + "y": 0.6105, + "confidence": 0.995 + }, + { + "name": "left_knee", + "x": 0.1046, + "y": 0.6949, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.1422, + "y": 0.6928, + "confidence": 0.992 + }, + { + "name": "left_ankle", + "x": 0.1745, + "y": 0.7672, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.2608, + "y": 0.7591, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 70, + "timestamp": 2.8000000000000003, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4685, + "acceleration": 3.3553, + "fluidity": 0.017, + "expansion": 0.087, + "total_displacement": 0.0192, + "center_displacement": { + "x": -0.0192, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0653, + "y": 0.4546, + "confidence": 0.923 + }, + { + "name": "left_eye", + "x": 0.0735, + "y": 0.4457, + "confidence": 0.961 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.321 + }, + { + "name": "left_ear", + "x": 0.1153, + "y": 0.4403, + "confidence": 0.972 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.047 + }, + { + "name": "left_shoulder", + "x": 0.1594, + "y": 0.4851, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.1069, + "y": 0.4876, + "confidence": 0.905 + }, + { + "name": "left_elbow", + "x": 0.2193, + "y": 0.5522, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.463 + }, + { + "name": "left_wrist", + "x": 0.197, + "y": 0.61, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.0923, + "y": 0.5985, + "confidence": 0.579 + }, + { + "name": "left_hip", + "x": 0.1519, + "y": 0.6114, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1222, + "y": 0.6099, + "confidence": 0.99 + }, + { + "name": "left_knee", + "x": 0.1113, + "y": 0.6946, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.1078, + "y": 0.6927, + "confidence": 0.978 + }, + { + "name": "left_ankle", + "x": 0.2005, + "y": 0.7716, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.2121, + "y": 0.7658, + "confidence": 0.929 + } + ] + } + ] + }, + { + "frame_index": 71, + "timestamp": 2.84, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4487, + "acceleration": 3.3411, + "fluidity": 0.015, + "expansion": 0.093, + "total_displacement": 0.0158, + "center_displacement": { + "x": -0.0155, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0482, + "y": 0.4536, + "confidence": 0.935 + }, + { + "name": "left_eye", + "x": 0.0571, + "y": 0.445, + "confidence": 0.968 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.362 + }, + { + "name": "left_ear", + "x": 0.1013, + "y": 0.4387, + "confidence": 0.97 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.039 + }, + { + "name": "left_shoulder", + "x": 0.1461, + "y": 0.4803, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.0872, + "y": 0.4832, + "confidence": 0.885 + }, + { + "name": "left_elbow", + "x": 0.2005, + "y": 0.5515, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.439 + }, + { + "name": "left_wrist", + "x": 0.171, + "y": 0.6064, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.0609, + "y": 0.5743, + "confidence": 0.584 + }, + { + "name": "left_hip", + "x": 0.1397, + "y": 0.6097, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.1053, + "y": 0.6085, + "confidence": 0.99 + }, + { + "name": "left_knee", + "x": 0.0974, + "y": 0.6949, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.0877, + "y": 0.6943, + "confidence": 0.986 + }, + { + "name": "left_ankle", + "x": 0.1827, + "y": 0.7758, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.183, + "y": 0.7698, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 72, + "timestamp": 2.88, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4794, + "acceleration": 3.4747, + "fluidity": 0.014, + "expansion": 0.093, + "total_displacement": 0.0205, + "center_displacement": { + "x": -0.02, + "y": -0.0042 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0321, + "y": 0.4523, + "confidence": 0.935 + }, + { + "name": "left_eye", + "x": 0.0405, + "y": 0.4438, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.374 + }, + { + "name": "left_ear", + "x": 0.0839, + "y": 0.4358, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.034 + }, + { + "name": "left_shoulder", + "x": 0.1281, + "y": 0.4747, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.0662, + "y": 0.4777, + "confidence": 0.834 + }, + { + "name": "left_elbow", + "x": 0.1784, + "y": 0.5461, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.359 + }, + { + "name": "left_wrist", + "x": 0.1416, + "y": 0.5995, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.0502, + "y": 0.5622, + "confidence": 0.527 + }, + { + "name": "left_hip", + "x": 0.1207, + "y": 0.6068, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.0831, + "y": 0.6059, + "confidence": 0.984 + }, + { + "name": "left_knee", + "x": 0.0826, + "y": 0.6963, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.0699, + "y": 0.696, + "confidence": 0.976 + }, + { + "name": "left_ankle", + "x": 0.1653, + "y": 0.7774, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.1607, + "y": 0.7714, + "confidence": 0.933 + } + ] + } + ] + }, + { + "frame_index": 73, + "timestamp": 2.92, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.481, + "acceleration": 2.6394, + "fluidity": 0.012, + "expansion": 0.291, + "total_displacement": 0.0211, + "center_displacement": { + "x": -0.0211, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0127, + "y": 0.4494, + "confidence": 0.889 + }, + { + "name": "left_eye", + "x": 0.0211, + "y": 0.4412, + "confidence": 0.955 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.262 + }, + { + "name": "left_ear", + "x": 0.0638, + "y": 0.4358, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.03 + }, + { + "name": "left_shoulder", + "x": 0.1116, + "y": 0.4757, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.0472, + "y": 0.4803, + "confidence": 0.762 + }, + { + "name": "left_elbow", + "x": 0.166, + "y": 0.5397, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.247 + }, + { + "name": "left_wrist", + "x": 0.1264, + "y": 0.6002, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.389 + }, + { + "name": "left_hip", + "x": 0.0987, + "y": 0.6063, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.0563, + "y": 0.6061, + "confidence": 0.98 + }, + { + "name": "left_knee", + "x": 0.0834, + "y": 0.6998, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.0464, + "y": 0.6997, + "confidence": 0.976 + }, + { + "name": "left_ankle", + "x": 0.1657, + "y": 0.7799, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.1208, + "y": 0.7751, + "confidence": 0.946 + } + ] + } + ] + }, + { + "frame_index": 74, + "timestamp": 2.96, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.474, + "acceleration": 2.6159, + "fluidity": 0.01, + "expansion": 0.091, + "total_displacement": 0.0195, + "center_displacement": { + "x": -0.0192, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.0012, + "y": 0.4461, + "confidence": 0.767 + }, + { + "name": "left_eye", + "x": 0.0084, + "y": 0.4374, + "confidence": 0.931 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.102 + }, + { + "name": "left_ear", + "x": 0.0473, + "y": 0.4314, + "confidence": 0.975 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.016 + }, + { + "name": "left_shoulder", + "x": 0.0964, + "y": 0.4719, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.0361, + "y": 0.4732, + "confidence": 0.502 + }, + { + "name": "left_elbow", + "x": 0.1438, + "y": 0.5395, + "confidence": 0.998 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.064 + }, + { + "name": "left_wrist", + "x": 0.1049, + "y": 0.5932, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.121 + }, + { + "name": "left_hip", + "x": 0.0731, + "y": 0.6057, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.0315, + "y": 0.6043, + "confidence": 0.96 + }, + { + "name": "left_knee", + "x": 0.0701, + "y": 0.6984, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.0205, + "y": 0.6975, + "confidence": 0.947 + }, + { + "name": "left_ankle", + "x": 0.1493, + "y": 0.7758, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.082, + "y": 0.7744, + "confidence": 0.903 + } + ] + } + ] + }, + { + "frame_index": 75, + "timestamp": 3, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4929, + "acceleration": 2.4959, + "fluidity": 0.009, + "expansion": 0.094, + "total_displacement": 0.0215, + "center_displacement": { + "x": -0.0107, + "y": 0.0186 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.354 + }, + { + "name": "left_eye", + "x": 0.0009, + "y": 0.4305, + "confidence": 0.755 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.021 + }, + { + "name": "left_ear", + "x": 0.0301, + "y": 0.4278, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.011 + }, + { + "name": "left_shoulder", + "x": 0.0767, + "y": 0.4708, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.196 + }, + { + "name": "left_elbow", + "x": 0.127, + "y": 0.5339, + "confidence": 0.997 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.014 + }, + { + "name": "left_wrist", + "x": 0.0873, + "y": 0.5897, + "confidence": 0.975 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.026 + }, + { + "name": "left_hip", + "x": 0.0487, + "y": 0.6013, + "confidence": 0.996 + }, + { + "name": "right_hip", + "x": 0.0202, + "y": 0.6001, + "confidence": 0.845 + }, + { + "name": "left_knee", + "x": 0.0507, + "y": 0.6944, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.0052, + "y": 0.6954, + "confidence": 0.792 + }, + { + "name": "left_ankle", + "x": 0.134, + "y": 0.769, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.0566, + "y": 0.7715, + "confidence": 0.712 + } + ] + } + ] + }, + { + "frame_index": 76, + "timestamp": 3.04, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4332, + "acceleration": 3.5141, + "fluidity": 0.008, + "expansion": 0.089, + "total_displacement": 0.0114, + "center_displacement": { + "x": -0.0101, + "y": -0.0053 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.215 + }, + { + "name": "left_eye", + "x": 0, + "y": 0.4323, + "confidence": 0.542 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.014 + }, + { + "name": "left_ear", + "x": 0.0178, + "y": 0.4291, + "confidence": 0.935 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.015 + }, + { + "name": "left_shoulder", + "x": 0.059, + "y": 0.4681, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.188 + }, + { + "name": "left_elbow", + "x": 0.1162, + "y": 0.5332, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.018 + }, + { + "name": "left_wrist", + "x": 0.0771, + "y": 0.5869, + "confidence": 0.957 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.029 + }, + { + "name": "left_hip", + "x": 0.0348, + "y": 0.5951, + "confidence": 0.991 + }, + { + "name": "right_hip", + "x": 0.0214, + "y": 0.5932, + "confidence": 0.763 + }, + { + "name": "left_knee", + "x": 0.0283, + "y": 0.6859, + "confidence": 0.981 + }, + { + "name": "right_knee", + "x": 0, + "y": 0.6856, + "confidence": 0.646 + }, + { + "name": "left_ankle", + "x": 0.1219, + "y": 0.7592, + "confidence": 0.906 + }, + { + "name": "right_ankle", + "x": 0.052, + "y": 0.7607, + "confidence": 0.51 + } + ] + } + ] + }, + { + "frame_index": 77, + "timestamp": 3.08, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4083, + "acceleration": 2.4806, + "fluidity": 0.007, + "expansion": 0.124, + "total_displacement": 0.0093, + "center_displacement": { + "x": -0.0088, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.061 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.208 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.004 + }, + { + "name": "left_ear", + "x": 0.0009, + "y": 0.4238, + "confidence": 0.855 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.008 + }, + { + "name": "left_shoulder", + "x": 0.0448, + "y": 0.4633, + "confidence": 0.985 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.098 + }, + { + "name": "left_elbow", + "x": 0.1064, + "y": 0.5379, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.014 + }, + { + "name": "left_wrist", + "x": 0.0583, + "y": 0.5919, + "confidence": 0.938 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.026 + }, + { + "name": "left_hip", + "x": 0.0249, + "y": 0.5934, + "confidence": 0.977 + }, + { + "name": "right_hip", + "x": 0.0193, + "y": 0.5903, + "confidence": 0.603 + }, + { + "name": "left_knee", + "x": 0.0083, + "y": 0.6869, + "confidence": 0.944 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.415 + }, + { + "name": "left_ankle", + "x": 0.1097, + "y": 0.7583, + "confidence": 0.744 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.26 + } + ] + } + ] + }, + { + "frame_index": 78, + "timestamp": 3.12, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4753, + "acceleration": 4.2067, + "fluidity": 0.006, + "expansion": 0.116, + "total_displacement": 0.0227, + "center_displacement": { + "x": -0.01, + "y": -0.0203 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.017 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.002 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.248 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.007 + }, + { + "name": "left_shoulder", + "x": 0.0243, + "y": 0.4649, + "confidence": 0.783 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.058 + }, + { + "name": "left_elbow", + "x": 0.0913, + "y": 0.5342, + "confidence": 0.9 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.032 + }, + { + "name": "left_wrist", + "x": 0.0524, + "y": 0.5911, + "confidence": 0.791 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.06 + }, + { + "name": "left_hip", + "x": 0.0149, + "y": 0.5924, + "confidence": 0.877 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.458 + }, + { + "name": "left_knee", + "x": 0.0008, + "y": 0.6839, + "confidence": 0.8 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.338 + }, + { + "name": "left_ankle", + "x": 0.0779, + "y": 0.7521, + "confidence": 0.524 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.215 + } + ] + } + ] + }, + { + "frame_index": 79, + "timestamp": 3.16, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3923, + "acceleration": 4.5139, + "fluidity": 0.005, + "expansion": 0.425, + "total_displacement": 0.0101, + "center_displacement": { + "x": -0.0088, + "y": -0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.017 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.024 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.003 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.145 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.007 + }, + { + "name": "left_shoulder", + "x": 0.0146, + "y": 0.4598, + "confidence": 0.676 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.039 + }, + { + "name": "left_elbow", + "x": 0.0761, + "y": 0.529, + "confidence": 0.867 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.029 + }, + { + "name": "left_wrist", + "x": 0.0483, + "y": 0.5925, + "confidence": 0.774 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.065 + }, + { + "name": "left_hip", + "x": 0.007, + "y": 0.5877, + "confidence": 0.8 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.336 + }, + { + "name": "left_knee", + "x": 0, + "y": 0.6784, + "confidence": 0.7 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.24 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.401 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.146 + } + ] + } + ] + }, + { + "frame_index": 80, + "timestamp": 3.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3512, + "acceleration": 3.5715, + "fluidity": 0.004, + "expansion": 0.5, + "total_displacement": 0.0052, + "center_displacement": { + "x": -0.0052, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.031 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.006 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.094 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.01 + }, + { + "name": "left_shoulder", + "x": 0.0111, + "y": 0.4643, + "confidence": 0.604 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.024 + }, + { + "name": "left_elbow", + "x": 0.0626, + "y": 0.5223, + "confidence": 0.817 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.018 + }, + { + "name": "left_wrist", + "x": 0.0473, + "y": 0.5802, + "confidence": 0.72 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.05 + }, + { + "name": "left_hip", + "x": 0.0002, + "y": 0.5827, + "confidence": 0.583 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.141 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.449 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.094 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.197 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.055 + } + ] + } + ] + }, + { + "frame_index": 81, + "timestamp": 3.24, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.1852, + "acceleration": 49.2779, + "fluidity": 0.004, + "expansion": 0.5, + "total_displacement": 0.3009, + "center_displacement": { + "x": 0.0147, + "y": -0.3005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.032 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.009 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.067 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.017 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.448 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.041 + }, + { + "name": "left_elbow", + "x": 0.0578, + "y": 0.529, + "confidence": 0.672 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.04 + }, + { + "name": "left_wrist", + "x": 0.0437, + "y": 0.5858, + "confidence": 0.604 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.088 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.465 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.161 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.31 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.095 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.122 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.047 + } + ] + } + ] + }, + { + "frame_index": 82, + "timestamp": 3.2800000000000002, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.9091, + "acceleration": 56.9299, + "fluidity": 0.003, + "expansion": 0.5, + "total_displacement": 0.0283, + "center_displacement": { + "x": -0.0076, + "y": -0.0273 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.021 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.01 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.04 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.012 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.212 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.045 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.497 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.084 + }, + { + "name": "left_wrist", + "x": 0.0381, + "y": 0.5871, + "confidence": 0.555 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.186 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.325 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.164 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.201 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.095 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.074 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.041 + } + ] + } + ] + }, + { + "frame_index": 83, + "timestamp": 3.3200000000000003, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.8919, + "acceleration": 31.1035, + "fluidity": 0.003, + "expansion": 0.5, + "total_displacement": 0.0049, + "center_displacement": { + "x": -0.0014, + "y": 0.0047 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.042 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.033 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.014 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.009 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.16 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.032 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.444 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.072 + }, + { + "name": "left_wrist", + "x": 0.0339, + "y": 0.6011, + "confidence": 0.545 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.189 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.3 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.15 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.187 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.088 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.066 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.037 + } + ] + }, + { + "person_id": 1, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.033 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.029 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.012 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.092 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.023 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.322 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.111 + }, + { + "name": "left_elbow", + "x": 0.0228, + "y": 0.5399, + "confidence": 0.59 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.176 + }, + { + "name": "left_wrist", + "x": 0.0311, + "y": 0.5998, + "confidence": 0.527 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.221 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.445 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.292 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.164 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.091 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.046 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.028 + } + ] + } + ] + }, + { + "frame_index": 84, + "timestamp": 3.36, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 1.6428, + "acceleration": 49.7195, + "fluidity": 0.002, + "expansion": 0.5, + "total_displacement": 0.1034, + "center_displacement": { + "x": 0.0047, + "y": 0.1033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.047 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.038 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.015 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.038 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.008 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.137 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.406 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.066 + }, + { + "name": "left_wrist", + "x": 0.032, + "y": 0.6073, + "confidence": 0.528 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.184 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.276 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.139 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.179 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.085 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.067 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.039 + } + ] + }, + { + "person_id": 1, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.043 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.036 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.017 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.095 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.32 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.113 + }, + { + "name": "left_elbow", + "x": 0.0181, + "y": 0.5461, + "confidence": 0.553 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.164 + }, + { + "name": "left_wrist", + "x": 0.0317, + "y": 0.6045, + "confidence": 0.504 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.213 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.396 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.257 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.134 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.075 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.039 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.024 + } + ] + } + ] + }, + { + "frame_index": 85, + "timestamp": 3.4, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 2.7614, + "acceleration": 65.7954, + "fluidity": 0.002, + "expansion": 0.5, + "total_displacement": 0.3041, + "center_displacement": { + "x": -0.016, + "y": -0.3037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.042 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.028 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.017 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.034 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.013 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.115 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.051 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.294 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.109 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.417 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.231 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.249 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.175 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.188 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.128 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.081 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.06 + } + ] + } + ] + }, + { + "frame_index": 86, + "timestamp": 3.44, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 1.324, + "acceleration": 84.1671, + "fluidity": 0.002, + "expansion": 0, + "total_displacement": 0, + "center_displacement": { + "x": 0, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0, + "y": 0, + "confidence": 0.025 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0.013 + }, + { + "name": "right_eye", + "x": 0, + "y": 0, + "confidence": 0.012 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0.01 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0.008 + }, + { + "name": "left_shoulder", + "x": 0, + "y": 0, + "confidence": 0.031 + }, + { + "name": "right_shoulder", + "x": 0, + "y": 0, + "confidence": 0.027 + }, + { + "name": "left_elbow", + "x": 0, + "y": 0, + "confidence": 0.153 + }, + { + "name": "right_elbow", + "x": 0, + "y": 0, + "confidence": 0.12 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0.361 + }, + { + "name": "right_wrist", + "x": 0, + "y": 0, + "confidence": 0.317 + }, + { + "name": "left_hip", + "x": 0, + "y": 0, + "confidence": 0.129 + }, + { + "name": "right_hip", + "x": 0, + "y": 0, + "confidence": 0.122 + }, + { + "name": "left_knee", + "x": 0, + "y": 0, + "confidence": 0.125 + }, + { + "name": "right_knee", + "x": 0, + "y": 0, + "confidence": 0.113 + }, + { + "name": "left_ankle", + "x": 0, + "y": 0, + "confidence": 0.052 + }, + { + "name": "right_ankle", + "x": 0, + "y": 0, + "confidence": 0.048 + } + ] + } + ] + }, + { + "frame_index": 87, + "timestamp": 3.48, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 1.4321, + "acceleration": 49.9205, + "fluidity": 0.002, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 88, + "timestamp": 3.52, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 1.3794, + "acceleration": 49.9707, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 89, + "timestamp": 3.56, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 1.0339, + "acceleration": 46.0146, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 90, + "timestamp": 3.6, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.9613, + "acceleration": 36.4765, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 91, + "timestamp": 3.64, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.8436, + "acceleration": 33.1155, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 92, + "timestamp": 3.68, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.7097, + "acceleration": 28.9016, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 93, + "timestamp": 3.72, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.6287, + "acceleration": 24.6234, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 94, + "timestamp": 3.7600000000000002, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.5455, + "acceleration": 21.6601, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 95, + "timestamp": 3.8000000000000003, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.471, + "acceleration": 18.7963, + "fluidity": 0.001, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 96, + "timestamp": 3.84, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.4113, + "acceleration": 16.2699, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 97, + "timestamp": 3.88, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.3569, + "acceleration": 14.1816, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 98, + "timestamp": 3.92, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.3098, + "acceleration": 12.312, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 99, + "timestamp": 3.96, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.2695, + "acceleration": 10.6909, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 100, + "timestamp": 4, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.2341, + "acceleration": 9.2961, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 101, + "timestamp": 4.04, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.2033, + "acceleration": 8.0747, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 102, + "timestamp": 4.08, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.1767, + "acceleration": 7.0154, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 103, + "timestamp": 4.12, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.1535, + "acceleration": 6.0966, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 104, + "timestamp": 4.16, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.1334, + "acceleration": 5.2967, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 105, + "timestamp": 4.2, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.1159, + "acceleration": 4.6022, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 106, + "timestamp": 4.24, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.1007, + "acceleration": 3.9989, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 107, + "timestamp": 4.28, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0875, + "acceleration": 3.4744, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 108, + "timestamp": 4.32, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.076, + "acceleration": 3.0189, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 109, + "timestamp": 4.36, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0661, + "acceleration": 2.623, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 110, + "timestamp": 4.4, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0574, + "acceleration": 2.2791, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 111, + "timestamp": 4.44, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0499, + "acceleration": 1.9802, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 112, + "timestamp": 4.48, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0433, + "acceleration": 1.7206, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 113, + "timestamp": 4.5200000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0377, + "acceleration": 1.495, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 114, + "timestamp": 4.5600000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0327, + "acceleration": 1.299, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 115, + "timestamp": 4.6000000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0284, + "acceleration": 1.1286, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 116, + "timestamp": 4.64, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0247, + "acceleration": 0.9806, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 117, + "timestamp": 4.68, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0215, + "acceleration": 0.8521, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 118, + "timestamp": 4.72, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0186, + "acceleration": 0.7403, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 119, + "timestamp": 4.76, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0162, + "acceleration": 0.6433, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 120, + "timestamp": 4.8, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0141, + "acceleration": 0.5589, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 121, + "timestamp": 4.84, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0122, + "acceleration": 0.4856, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 122, + "timestamp": 4.88, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0106, + "acceleration": 0.4219, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 123, + "timestamp": 4.92, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0092, + "acceleration": 0.3666, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 124, + "timestamp": 4.96, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.008, + "acceleration": 0.3185, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 125, + "timestamp": 5, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.007, + "acceleration": 0.2768, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 126, + "timestamp": 5.04, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0061, + "acceleration": 0.2405, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 127, + "timestamp": 5.08, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0053, + "acceleration": 0.209, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 128, + "timestamp": 5.12, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0046, + "acceleration": 0.1816, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 129, + "timestamp": 5.16, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.004, + "acceleration": 0.1577, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 130, + "timestamp": 5.2, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0035, + "acceleration": 0.1371, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 131, + "timestamp": 5.24, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.003, + "acceleration": 0.1191, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 132, + "timestamp": 5.28, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0026, + "acceleration": 0.1035, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 133, + "timestamp": 5.32, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0023, + "acceleration": 0.0899, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 134, + "timestamp": 5.36, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.002, + "acceleration": 0.0781, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 135, + "timestamp": 5.4, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0017, + "acceleration": 0.0679, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 136, + "timestamp": 5.44, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0015, + "acceleration": 0.059, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 137, + "timestamp": 5.48, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0013, + "acceleration": 0.0512, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 138, + "timestamp": 5.5200000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0011, + "acceleration": 0.0445, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 139, + "timestamp": 5.5600000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.001, + "acceleration": 0.0387, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 140, + "timestamp": 5.6000000000000005, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0008, + "acceleration": 0.0336, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 141, + "timestamp": 5.64, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0007, + "acceleration": 0.0292, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 142, + "timestamp": 5.68, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0006, + "acceleration": 0.0254, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 143, + "timestamp": 5.72, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0006, + "acceleration": 0.022, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 144, + "timestamp": 5.76, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0005, + "acceleration": 0.0192, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 145, + "timestamp": 5.8, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0004, + "acceleration": 0.0166, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 146, + "timestamp": 5.84, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0004, + "acceleration": 0.0145, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 147, + "timestamp": 5.88, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0003, + "acceleration": 0.0126, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 148, + "timestamp": 5.92, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0003, + "acceleration": 0.0109, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 149, + "timestamp": 5.96, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0002, + "acceleration": 0.0095, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 150, + "timestamp": 6, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0002, + "acceleration": 0.0082, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 151, + "timestamp": 6.04, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0002, + "acceleration": 0.0072, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 152, + "timestamp": 6.08, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0002, + "acceleration": 0.0062, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 153, + "timestamp": 6.12, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0001, + "acceleration": 0.0054, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 154, + "timestamp": 6.16, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0001, + "acceleration": 0.0047, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + }, + { + "frame_index": 155, + "timestamp": 6.2, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0001, + "acceleration": 0.0041, + "fluidity": 0, + "expansion": 0, + "total_displacement": 0 + } + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 82, + "up": 9, + "left": 60, + "right": 1, + "down": 4 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 79, + "high": 77 + }, + "dominant": "low" + }, + "speed": { + "distribution": { + "slow": 80, + "fast": 76 + }, + "dominant": "slow" + }, + "velocity": { + "mean": 0.549, + "std": 0.8662, + "min": 0, + "max": 7.2639 + }, + "acceleration": { + "mean": 14.5153, + "std": 27.0649, + "min": 0, + "max": 202.2971 + }, + "fluidity": { + "mean": 0.008, + "std": 0.021 + }, + "expansion": { + "mean": 0.112, + "std": 0.176 + }, + "movement_segments": [] + } + } + } \ No newline at end of file diff --git a/src/files/yolov8_kp_dance.json b/src/files/yolov8_kp_dance.json new file mode 100644 index 0000000000000000000000000000000000000000..a9b1538c12183c991da00e3f57e3cde86d340011 --- /dev/null +++ b/src/files/yolov8_kp_dance.json @@ -0,0 +1,67994 @@ +{ + "analysis_metadata": { + "timestamp": "2025-06-10T00:12:13.043944", + "version": "1.0.0", + "model_info": { + "name": "yolo-v8-s", + "type": "pose_estimation" + } + }, + "video_info": { + "fps": 30, + "duration_seconds": 17.8, + "width": 1080, + "height": 1920, + "frame_count": 534 + }, + "movement_analysis": { + "frame_count": 534, + "frames": [ + { + "frame_index": 0, + "timestamp": 0, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0197, + "acceleration": 0.5922, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0 + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.531, + "y": 0.2246, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5618, + "y": 0.2117, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5058, + "y": 0.2098, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6017, + "y": 0.2253, + "confidence": 0.856 + }, + { + "name": "right_ear", + "x": 0.4692, + "y": 0.2223, + "confidence": 0.797 + }, + { + "name": "left_shoulder", + "x": 0.6423, + "y": 0.3196, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4199, + "y": 0.3146, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6862, + "y": 0.4387, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3712, + "y": 0.4307, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6808, + "y": 0.5398, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3728, + "y": 0.5315, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5913, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4502, + "y": 0.5213, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5783, + "y": 0.6651, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4491, + "y": 0.6669, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5654, + "y": 0.7902, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.469, + "y": 0.799, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 1, + "timestamp": 0.03333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0309, + "acceleration": 0.5332, + "fluidity": 0.038, + "expansion": 0.242, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0013, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5332, + "y": 0.2246, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5636, + "y": 0.2115, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5074, + "y": 0.21, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6025, + "y": 0.2251, + "confidence": 0.849 + }, + { + "name": "right_ear", + "x": 0.47, + "y": 0.2227, + "confidence": 0.806 + }, + { + "name": "left_shoulder", + "x": 0.6427, + "y": 0.3199, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4213, + "y": 0.3148, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6861, + "y": 0.4397, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3727, + "y": 0.4305, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.681, + "y": 0.5389, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3741, + "y": 0.5308, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5927, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4522, + "y": 0.5211, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5794, + "y": 0.6648, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4503, + "y": 0.6658, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5682, + "y": 0.7918, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4701, + "y": 0.799, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 2, + "timestamp": 0.06666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0273, + "acceleration": -0.0437, + "fluidity": 0.051, + "expansion": 0.241, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0011, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5339, + "y": 0.2249, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5643, + "y": 0.2118, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5083, + "y": 0.2102, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6037, + "y": 0.2252, + "confidence": 0.855 + }, + { + "name": "right_ear", + "x": 0.4714, + "y": 0.2228, + "confidence": 0.801 + }, + { + "name": "left_shoulder", + "x": 0.6436, + "y": 0.3198, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.423, + "y": 0.3148, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6867, + "y": 0.4392, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3739, + "y": 0.4304, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6816, + "y": 0.5392, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3753, + "y": 0.5304, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5934, + "y": 0.524, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4534, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5802, + "y": 0.6651, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4515, + "y": 0.6662, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5694, + "y": 0.7915, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.471, + "y": 0.7985, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 3, + "timestamp": 0.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.024, + "acceleration": -0.0752, + "fluidity": 0.017, + "expansion": 0.241, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0006, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5345, + "y": 0.2247, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5644, + "y": 0.2114, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5085, + "y": 0.2103, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.604, + "y": 0.2247, + "confidence": 0.859 + }, + { + "name": "right_ear", + "x": 0.4721, + "y": 0.2234, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6453, + "y": 0.3196, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4243, + "y": 0.3149, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6874, + "y": 0.4396, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3743, + "y": 0.4303, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6825, + "y": 0.5398, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3756, + "y": 0.5302, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5932, + "y": 0.5241, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4528, + "y": 0.5218, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5809, + "y": 0.6651, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4523, + "y": 0.6665, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.571, + "y": 0.7902, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4716, + "y": 0.798, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 4, + "timestamp": 0.13333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0297, + "acceleration": 0.1756, + "fluidity": 0.006, + "expansion": 0.241, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0009, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5359, + "y": 0.2248, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5655, + "y": 0.2116, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5096, + "y": 0.2107, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6048, + "y": 0.2251, + "confidence": 0.856 + }, + { + "name": "right_ear", + "x": 0.4731, + "y": 0.2243, + "confidence": 0.801 + }, + { + "name": "left_shoulder", + "x": 0.6464, + "y": 0.32, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4255, + "y": 0.3156, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6877, + "y": 0.44, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3759, + "y": 0.431, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6829, + "y": 0.54, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.377, + "y": 0.5313, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5939, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4535, + "y": 0.5213, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5812, + "y": 0.6649, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4537, + "y": 0.6662, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5704, + "y": 0.791, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4723, + "y": 0.7991, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 5, + "timestamp": 0.16666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0297, + "acceleration": 0.0042, + "fluidity": 0.002, + "expansion": 0.241, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5367, + "y": 0.2245, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5661, + "y": 0.2112, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5103, + "y": 0.2106, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6055, + "y": 0.2246, + "confidence": 0.859 + }, + { + "name": "right_ear", + "x": 0.4738, + "y": 0.2244, + "confidence": 0.799 + }, + { + "name": "left_shoulder", + "x": 0.6474, + "y": 0.3196, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.427, + "y": 0.3154, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6881, + "y": 0.4403, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3769, + "y": 0.4306, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6833, + "y": 0.5396, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3775, + "y": 0.5301, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5951, + "y": 0.5238, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4549, + "y": 0.5215, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.582, + "y": 0.6649, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4549, + "y": 0.6662, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5714, + "y": 0.7921, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4725, + "y": 0.7985, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 6, + "timestamp": 0.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0315, + "acceleration": 0.0531, + "fluidity": 0.001, + "expansion": 0.241, + "total_displacement": 0.0007, + "center_displacement": { + "x": 0.0006, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5378, + "y": 0.2252, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5675, + "y": 0.2117, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5113, + "y": 0.2111, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6073, + "y": 0.2248, + "confidence": 0.86 + }, + { + "name": "right_ear", + "x": 0.4747, + "y": 0.2245, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6478, + "y": 0.32, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4279, + "y": 0.3156, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6887, + "y": 0.4408, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3776, + "y": 0.4309, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6841, + "y": 0.5398, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.379, + "y": 0.5307, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5955, + "y": 0.5244, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4556, + "y": 0.522, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.583, + "y": 0.6655, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4558, + "y": 0.6665, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5721, + "y": 0.7923, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4722, + "y": 0.7969, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 7, + "timestamp": 0.23333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0402, + "acceleration": 0.2636, + "fluidity": 0.129, + "expansion": 0.241, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0014, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5387, + "y": 0.2252, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5685, + "y": 0.212, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5128, + "y": 0.211, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6085, + "y": 0.2254, + "confidence": 0.858 + }, + { + "name": "right_ear", + "x": 0.4767, + "y": 0.2243, + "confidence": 0.796 + }, + { + "name": "left_shoulder", + "x": 0.6491, + "y": 0.3204, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4295, + "y": 0.3155, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6898, + "y": 0.4408, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3795, + "y": 0.4305, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6862, + "y": 0.5408, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.381, + "y": 0.5305, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5967, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4571, + "y": 0.5221, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5842, + "y": 0.6652, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4569, + "y": 0.6669, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5726, + "y": 0.7911, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4735, + "y": 0.798, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 8, + "timestamp": 0.26666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0386, + "acceleration": -0.0503, + "fluidity": 0.171, + "expansion": 0.241, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0015, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5408, + "y": 0.2253, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5707, + "y": 0.212, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5147, + "y": 0.2109, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6103, + "y": 0.2251, + "confidence": 0.852 + }, + { + "name": "right_ear", + "x": 0.4781, + "y": 0.2239, + "confidence": 0.8 + }, + { + "name": "left_shoulder", + "x": 0.6503, + "y": 0.32, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4309, + "y": 0.315, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.691, + "y": 0.4402, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3812, + "y": 0.4299, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6876, + "y": 0.5415, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3815, + "y": 0.53, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5985, + "y": 0.5247, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.459, + "y": 0.5222, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5847, + "y": 0.6655, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4575, + "y": 0.6665, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5735, + "y": 0.7918, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4745, + "y": 0.798, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 9, + "timestamp": 0.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0346, + "acceleration": -0.1177, + "fluidity": 0.057, + "expansion": 0.241, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0009, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5418, + "y": 0.2249, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5716, + "y": 0.2119, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.516, + "y": 0.2107, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6111, + "y": 0.2251, + "confidence": 0.853 + }, + { + "name": "right_ear", + "x": 0.4796, + "y": 0.2236, + "confidence": 0.8 + }, + { + "name": "left_shoulder", + "x": 0.6515, + "y": 0.3198, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4316, + "y": 0.3146, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6921, + "y": 0.4403, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3827, + "y": 0.43, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6882, + "y": 0.5419, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3832, + "y": 0.5305, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5995, + "y": 0.5247, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4597, + "y": 0.522, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.586, + "y": 0.6661, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4582, + "y": 0.6666, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5738, + "y": 0.7922, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4757, + "y": 0.7981, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 10, + "timestamp": 0.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0319, + "acceleration": -0.0812, + "fluidity": 0.019, + "expansion": 0.241, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5428, + "y": 0.2242, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5727, + "y": 0.2113, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5172, + "y": 0.2101, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6125, + "y": 0.2251, + "confidence": 0.858 + }, + { + "name": "right_ear", + "x": 0.4813, + "y": 0.2235, + "confidence": 0.795 + }, + { + "name": "left_shoulder", + "x": 0.6527, + "y": 0.32, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4337, + "y": 0.3146, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6935, + "y": 0.4403, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3845, + "y": 0.4291, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6888, + "y": 0.5413, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3834, + "y": 0.5284, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.6001, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4607, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5855, + "y": 0.6664, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4589, + "y": 0.6669, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.574, + "y": 0.7925, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4762, + "y": 0.7976, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 11, + "timestamp": 0.36666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0363, + "acceleration": 0.1308, + "fluidity": 0.006, + "expansion": 0.241, + "total_displacement": 0.0008, + "center_displacement": { + "x": 0.0008, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5443, + "y": 0.2236, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5746, + "y": 0.2108, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.519, + "y": 0.2093, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.6144, + "y": 0.225, + "confidence": 0.857 + }, + { + "name": "right_ear", + "x": 0.4829, + "y": 0.2226, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6533, + "y": 0.3202, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4346, + "y": 0.3144, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6942, + "y": 0.4404, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3859, + "y": 0.4296, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6896, + "y": 0.5417, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3854, + "y": 0.5302, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6008, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4618, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5863, + "y": 0.6666, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.46, + "y": 0.6673, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5743, + "y": 0.7926, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4768, + "y": 0.7976, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 12, + "timestamp": 0.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0382, + "acceleration": 0.0584, + "fluidity": 0.002, + "expansion": 0.24, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0017, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5466, + "y": 0.2221, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5769, + "y": 0.2097, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.521, + "y": 0.2081, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.616, + "y": 0.2247, + "confidence": 0.853 + }, + { + "name": "right_ear", + "x": 0.4844, + "y": 0.2222, + "confidence": 0.804 + }, + { + "name": "left_shoulder", + "x": 0.6553, + "y": 0.3201, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4357, + "y": 0.3141, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6962, + "y": 0.44, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3882, + "y": 0.4289, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6909, + "y": 0.5415, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3864, + "y": 0.5289, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6031, + "y": 0.524, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4632, + "y": 0.5209, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5876, + "y": 0.6674, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4619, + "y": 0.6677, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5737, + "y": 0.7929, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4773, + "y": 0.7984, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 13, + "timestamp": 0.43333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0403, + "acceleration": 0.0618, + "fluidity": 0.001, + "expansion": 0.24, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0007, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5495, + "y": 0.2207, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5802, + "y": 0.2086, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.5241, + "y": 0.2065, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.6177, + "y": 0.2245, + "confidence": 0.84 + }, + { + "name": "right_ear", + "x": 0.486, + "y": 0.2208, + "confidence": 0.818 + }, + { + "name": "left_shoulder", + "x": 0.6551, + "y": 0.3199, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4353, + "y": 0.3139, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6979, + "y": 0.4392, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3891, + "y": 0.43, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6909, + "y": 0.5397, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3883, + "y": 0.5297, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6047, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.465, + "y": 0.5201, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5876, + "y": 0.6676, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4631, + "y": 0.6685, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5732, + "y": 0.7926, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4776, + "y": 0.7984, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 14, + "timestamp": 0.4666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.078, + "acceleration": 1.1313, + "fluidity": 0, + "expansion": 0.24, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0019, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5513, + "y": 0.2202, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5827, + "y": 0.2079, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.5256, + "y": 0.2057, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.6212, + "y": 0.224, + "confidence": 0.837 + }, + { + "name": "right_ear", + "x": 0.4873, + "y": 0.2199, + "confidence": 0.817 + }, + { + "name": "left_shoulder", + "x": 0.6575, + "y": 0.3196, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4372, + "y": 0.3136, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6998, + "y": 0.4385, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3912, + "y": 0.4303, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6923, + "y": 0.5388, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3902, + "y": 0.5314, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6065, + "y": 0.5234, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4663, + "y": 0.5203, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5886, + "y": 0.6686, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4638, + "y": 0.6697, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5752, + "y": 0.7923, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4766, + "y": 0.7987, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 15, + "timestamp": 0.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0757, + "acceleration": -0.0693, + "fluidity": 0, + "expansion": 0.241, + "total_displacement": 0.0046, + "center_displacement": { + "x": 0.004, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5565, + "y": 0.2224, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5872, + "y": 0.2101, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.5307, + "y": 0.2077, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.6241, + "y": 0.2256, + "confidence": 0.828 + }, + { + "name": "right_ear", + "x": 0.4915, + "y": 0.2215, + "confidence": 0.825 + }, + { + "name": "left_shoulder", + "x": 0.6591, + "y": 0.3217, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4418, + "y": 0.316, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6994, + "y": 0.4392, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3938, + "y": 0.4335, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6942, + "y": 0.5387, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3907, + "y": 0.5318, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6105, + "y": 0.5255, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.472, + "y": 0.5228, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5911, + "y": 0.6702, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4663, + "y": 0.6718, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5766, + "y": 0.7901, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.474, + "y": 0.7971, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 16, + "timestamp": 0.5333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0739, + "acceleration": -0.0524, + "fluidity": 0, + "expansion": 0.243, + "total_displacement": 0.0004, + "center_displacement": { + "x": 0.0003, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.56, + "y": 0.2238, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5904, + "y": 0.2121, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.5346, + "y": 0.2094, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.6235, + "y": 0.2271, + "confidence": 0.79 + }, + { + "name": "right_ear", + "x": 0.4927, + "y": 0.222, + "confidence": 0.846 + }, + { + "name": "left_shoulder", + "x": 0.6579, + "y": 0.3208, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4378, + "y": 0.3155, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7026, + "y": 0.437, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3946, + "y": 0.4319, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6986, + "y": 0.5388, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.393, + "y": 0.533, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6149, + "y": 0.5256, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4742, + "y": 0.5232, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5961, + "y": 0.6755, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4635, + "y": 0.6783, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5766, + "y": 0.7951, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.475, + "y": 0.8023, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 17, + "timestamp": 0.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.136, + "acceleration": 1.8622, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0018, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5635, + "y": 0.2271, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5939, + "y": 0.2154, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.5387, + "y": 0.2127, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.6266, + "y": 0.2299, + "confidence": 0.786 + }, + { + "name": "right_ear", + "x": 0.4961, + "y": 0.2242, + "confidence": 0.848 + }, + { + "name": "left_shoulder", + "x": 0.6603, + "y": 0.3239, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4378, + "y": 0.3186, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7055, + "y": 0.4398, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3956, + "y": 0.435, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7046, + "y": 0.5407, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3943, + "y": 0.5369, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6182, + "y": 0.5306, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4754, + "y": 0.5285, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6024, + "y": 0.6818, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4592, + "y": 0.686, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5776, + "y": 0.7994, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4735, + "y": 0.805, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 18, + "timestamp": 0.6, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.1421, + "acceleration": 0.1813, + "fluidity": 0, + "expansion": 0.246, + "total_displacement": 0.0067, + "center_displacement": { + "x": 0.0018, + "y": 0.0064 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5643, + "y": 0.2338, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5946, + "y": 0.2212, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.5394, + "y": 0.219, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.6284, + "y": 0.234, + "confidence": 0.759 + }, + { + "name": "right_ear", + "x": 0.4962, + "y": 0.2293, + "confidence": 0.849 + }, + { + "name": "left_shoulder", + "x": 0.6626, + "y": 0.329, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4378, + "y": 0.3247, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7081, + "y": 0.4445, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3946, + "y": 0.4417, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7103, + "y": 0.5438, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3957, + "y": 0.5456, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6214, + "y": 0.5375, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4771, + "y": 0.536, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6065, + "y": 0.6875, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4532, + "y": 0.6936, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5778, + "y": 0.7995, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.469, + "y": 0.8054, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 19, + "timestamp": 0.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0896, + "acceleration": -1.5734, + "fluidity": 0, + "expansion": 0.249, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0016, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5679, + "y": 0.2376, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5979, + "y": 0.2251, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.5431, + "y": 0.2232, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6293, + "y": 0.2376, + "confidence": 0.721 + }, + { + "name": "right_ear", + "x": 0.4972, + "y": 0.2332, + "confidence": 0.862 + }, + { + "name": "left_shoulder", + "x": 0.6605, + "y": 0.3313, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4373, + "y": 0.3291, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7105, + "y": 0.4437, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3966, + "y": 0.4464, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7217, + "y": 0.5409, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3963, + "y": 0.5486, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6256, + "y": 0.539, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4819, + "y": 0.538, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6071, + "y": 0.6889, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.449, + "y": 0.6941, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5772, + "y": 0.8025, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4652, + "y": 0.7994, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 20, + "timestamp": 0.6666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0579, + "acceleration": -0.951, + "fluidity": 0, + "expansion": 0.252, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5735, + "y": 0.2393, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6027, + "y": 0.2271, + "confidence": 0.964 + }, + { + "name": "right_eye", + "x": 0.5488, + "y": 0.2248, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6306, + "y": 0.2399, + "confidence": 0.661 + }, + { + "name": "right_ear", + "x": 0.5003, + "y": 0.2346, + "confidence": 0.882 + }, + { + "name": "left_shoulder", + "x": 0.6587, + "y": 0.3327, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4375, + "y": 0.3308, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7106, + "y": 0.4437, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.397, + "y": 0.4491, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7323, + "y": 0.5423, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3956, + "y": 0.5511, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.628, + "y": 0.5381, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4857, + "y": 0.5374, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6094, + "y": 0.6868, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4493, + "y": 0.6918, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5776, + "y": 0.8018, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4639, + "y": 0.7985, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 21, + "timestamp": 0.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0797, + "acceleration": 0.6535, + "fluidity": 0, + "expansion": 0.255, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0011, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.575, + "y": 0.2384, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6037, + "y": 0.2262, + "confidence": 0.96 + }, + { + "name": "right_eye", + "x": 0.5497, + "y": 0.2238, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.6292, + "y": 0.2388, + "confidence": 0.618 + }, + { + "name": "right_ear", + "x": 0.4983, + "y": 0.2332, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.6545, + "y": 0.3317, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4352, + "y": 0.3296, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7105, + "y": 0.4438, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3968, + "y": 0.45, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7429, + "y": 0.5437, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3965, + "y": 0.5534, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6285, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4872, + "y": 0.5363, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6114, + "y": 0.687, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4505, + "y": 0.6911, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5794, + "y": 0.8018, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4607, + "y": 0.7949, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 22, + "timestamp": 0.7333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1335, + "acceleration": 1.6134, + "fluidity": 0, + "expansion": 0.259, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0005, + "y": -0.0044 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5768, + "y": 0.2348, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6051, + "y": 0.2231, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.5508, + "y": 0.2199, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.6274, + "y": 0.2365, + "confidence": 0.644 + }, + { + "name": "right_ear", + "x": 0.497, + "y": 0.2298, + "confidence": 0.895 + }, + { + "name": "left_shoulder", + "x": 0.6526, + "y": 0.327, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4357, + "y": 0.3255, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7087, + "y": 0.4396, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3941, + "y": 0.4472, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7448, + "y": 0.5359, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3985, + "y": 0.5489, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6297, + "y": 0.5321, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4891, + "y": 0.5322, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6129, + "y": 0.6813, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4576, + "y": 0.6845, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5818, + "y": 0.7961, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.4593, + "y": 0.7987, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 23, + "timestamp": 0.7666666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1597, + "acceleration": 0.7866, + "fluidity": 0, + "expansion": 0.262, + "total_displacement": 0.0062, + "center_displacement": { + "x": -0.0015, + "y": -0.0061 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5804, + "y": 0.2299, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6077, + "y": 0.2177, + "confidence": 0.963 + }, + { + "name": "right_eye", + "x": 0.553, + "y": 0.2148, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.6277, + "y": 0.2298, + "confidence": 0.617 + }, + { + "name": "right_ear", + "x": 0.4959, + "y": 0.2242, + "confidence": 0.904 + }, + { + "name": "left_shoulder", + "x": 0.6511, + "y": 0.3197, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.435, + "y": 0.3189, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7072, + "y": 0.4331, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.391, + "y": 0.4421, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7476, + "y": 0.5285, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3983, + "y": 0.5462, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6275, + "y": 0.5266, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4877, + "y": 0.5274, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6117, + "y": 0.6768, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4612, + "y": 0.6823, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5806, + "y": 0.7949, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.4568, + "y": 0.8011, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 24, + "timestamp": 0.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1488, + "acceleration": -0.3266, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.0053, + "center_displacement": { + "x": -0.0026, + "y": -0.0046 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5797, + "y": 0.2256, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6064, + "y": 0.2139, + "confidence": 0.962 + }, + { + "name": "right_eye", + "x": 0.5523, + "y": 0.211, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.6254, + "y": 0.2264, + "confidence": 0.605 + }, + { + "name": "right_ear", + "x": 0.495, + "y": 0.2209, + "confidence": 0.906 + }, + { + "name": "left_shoulder", + "x": 0.6478, + "y": 0.3153, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4339, + "y": 0.3143, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7052, + "y": 0.4273, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3876, + "y": 0.4373, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7494, + "y": 0.5188, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.397, + "y": 0.542, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6239, + "y": 0.5219, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4852, + "y": 0.5228, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6093, + "y": 0.6716, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.463, + "y": 0.677, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5811, + "y": 0.7925, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.4521, + "y": 0.7983, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 25, + "timestamp": 0.8333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1256, + "acceleration": -0.6966, + "fluidity": 0, + "expansion": 0.27, + "total_displacement": 0.0043, + "center_displacement": { + "x": -0.0042, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5803, + "y": 0.2248, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6049, + "y": 0.2131, + "confidence": 0.952 + }, + { + "name": "right_eye", + "x": 0.553, + "y": 0.2103, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.6197, + "y": 0.2256, + "confidence": 0.527 + }, + { + "name": "right_ear", + "x": 0.4928, + "y": 0.2204, + "confidence": 0.916 + }, + { + "name": "left_shoulder", + "x": 0.6406, + "y": 0.314, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4307, + "y": 0.3135, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7037, + "y": 0.426, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.385, + "y": 0.4374, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.7549, + "y": 0.5148, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3957, + "y": 0.5403, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.6194, + "y": 0.521, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4832, + "y": 0.5224, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6073, + "y": 0.669, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4633, + "y": 0.6751, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5832, + "y": 0.792, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4503, + "y": 0.7986, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 26, + "timestamp": 0.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1161, + "acceleration": -0.2853, + "fluidity": 0, + "expansion": 0.272, + "total_displacement": 0.0033, + "center_displacement": { + "x": -0.0029, + "y": -0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.581, + "y": 0.2247, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6041, + "y": 0.2129, + "confidence": 0.942 + }, + { + "name": "right_eye", + "x": 0.5538, + "y": 0.2101, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4909, + "y": 0.2194, + "confidence": 0.923 + }, + { + "name": "left_shoulder", + "x": 0.6348, + "y": 0.3123, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4279, + "y": 0.3125, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6999, + "y": 0.4254, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3821, + "y": 0.4388, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7548, + "y": 0.5101, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3942, + "y": 0.5403, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.6168, + "y": 0.5189, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4828, + "y": 0.5209, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6064, + "y": 0.6666, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4636, + "y": 0.6741, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5828, + "y": 0.792, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4496, + "y": 0.7985, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 27, + "timestamp": 0.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1268, + "acceleration": 0.3211, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0041, + "center_displacement": { + "x": -0.0027, + "y": 0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5817, + "y": 0.2255, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.603, + "y": 0.2142, + "confidence": 0.928 + }, + { + "name": "right_eye", + "x": 0.555, + "y": 0.2109, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4889, + "y": 0.2205, + "confidence": 0.928 + }, + { + "name": "left_shoulder", + "x": 0.628, + "y": 0.3146, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4239, + "y": 0.315, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6971, + "y": 0.4251, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3793, + "y": 0.4401, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7552, + "y": 0.5089, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3915, + "y": 0.5411, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.6156, + "y": 0.5222, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4838, + "y": 0.5249, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6047, + "y": 0.6678, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4629, + "y": 0.6771, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5827, + "y": 0.7903, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4502, + "y": 0.7997, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 28, + "timestamp": 0.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1415, + "acceleration": 0.4407, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0047, + "center_displacement": { + "x": -0.0043, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5816, + "y": 0.2288, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.601, + "y": 0.2173, + "confidence": 0.905 + }, + { + "name": "right_eye", + "x": 0.5552, + "y": 0.2139, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4854, + "y": 0.2229, + "confidence": 0.933 + }, + { + "name": "left_shoulder", + "x": 0.6182, + "y": 0.316, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4204, + "y": 0.3179, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6889, + "y": 0.4248, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3766, + "y": 0.4438, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7528, + "y": 0.5088, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.388, + "y": 0.5448, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.6114, + "y": 0.5234, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.484, + "y": 0.5269, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6038, + "y": 0.6672, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4637, + "y": 0.6764, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5831, + "y": 0.7922, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4498, + "y": 0.8014, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 29, + "timestamp": 0.9666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1395, + "acceleration": -0.0578, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0052, + "center_displacement": { + "x": -0.0049, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.584, + "y": 0.2311, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6007, + "y": 0.2193, + "confidence": 0.873 + }, + { + "name": "right_eye", + "x": 0.5572, + "y": 0.2156, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4814, + "y": 0.2242, + "confidence": 0.935 + }, + { + "name": "left_shoulder", + "x": 0.6079, + "y": 0.3186, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4163, + "y": 0.3204, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6798, + "y": 0.4281, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3711, + "y": 0.4464, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7488, + "y": 0.5094, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3821, + "y": 0.5436, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6064, + "y": 0.5244, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.484, + "y": 0.5282, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6017, + "y": 0.6678, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4656, + "y": 0.6759, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5822, + "y": 0.7929, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.4514, + "y": 0.801, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 30, + "timestamp": 1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1038, + "acceleration": -1.0729, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.004, + "center_displacement": { + "x": -0.004, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5821, + "y": 0.2328, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5969, + "y": 0.2206, + "confidence": 0.851 + }, + { + "name": "right_eye", + "x": 0.555, + "y": 0.2173, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4769, + "y": 0.2257, + "confidence": 0.938 + }, + { + "name": "left_shoulder", + "x": 0.5979, + "y": 0.3196, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4143, + "y": 0.3217, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6693, + "y": 0.4283, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.366, + "y": 0.4458, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7425, + "y": 0.5075, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3772, + "y": 0.5427, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6015, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4848, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6012, + "y": 0.6667, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4695, + "y": 0.6748, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5831, + "y": 0.7932, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.4515, + "y": 0.7994, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 31, + "timestamp": 1.0333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0983, + "acceleration": -0.1643, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0016, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5798, + "y": 0.2322, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.594, + "y": 0.2204, + "confidence": 0.847 + }, + { + "name": "right_eye", + "x": 0.5525, + "y": 0.2173, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4744, + "y": 0.2263, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.5944, + "y": 0.3184, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4128, + "y": 0.3212, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6598, + "y": 0.425, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3625, + "y": 0.4432, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7366, + "y": 0.5062, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3731, + "y": 0.5398, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6004, + "y": 0.5235, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4843, + "y": 0.528, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6026, + "y": 0.6674, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4699, + "y": 0.6745, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5846, + "y": 0.7919, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.4507, + "y": 0.7989, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 32, + "timestamp": 1.0666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1413, + "acceleration": 1.2898, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0047, + "center_displacement": { + "x": -0.0045, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5775, + "y": 0.2342, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5905, + "y": 0.222, + "confidence": 0.845 + }, + { + "name": "right_eye", + "x": 0.5499, + "y": 0.2193, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4716, + "y": 0.2279, + "confidence": 0.938 + }, + { + "name": "left_shoulder", + "x": 0.5886, + "y": 0.3191, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4108, + "y": 0.3227, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6507, + "y": 0.423, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3587, + "y": 0.4423, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7294, + "y": 0.5027, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3688, + "y": 0.5399, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5943, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4802, + "y": 0.5298, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6063, + "y": 0.6696, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.469, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5847, + "y": 0.7915, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.4493, + "y": 0.799, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 33, + "timestamp": 1.1, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1613, + "acceleration": 0.5995, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0062, + "center_displacement": { + "x": -0.0059, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5745, + "y": 0.2354, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5855, + "y": 0.223, + "confidence": 0.83 + }, + { + "name": "right_eye", + "x": 0.5472, + "y": 0.2206, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4686, + "y": 0.2296, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.5809, + "y": 0.3224, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4081, + "y": 0.3246, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6411, + "y": 0.4272, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.3559, + "y": 0.4422, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7237, + "y": 0.5018, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3628, + "y": 0.5405, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5864, + "y": 0.5263, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4751, + "y": 0.5308, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6098, + "y": 0.6702, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4666, + "y": 0.6763, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5859, + "y": 0.7921, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.4483, + "y": 0.7983, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 34, + "timestamp": 1.1333333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1721, + "acceleration": 0.3258, + "fluidity": 0, + "expansion": 0.272, + "total_displacement": 0.0052, + "center_displacement": { + "x": -0.0051, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5743, + "y": 0.2371, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.585, + "y": 0.2245, + "confidence": 0.824 + }, + { + "name": "right_eye", + "x": 0.5471, + "y": 0.222, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4669, + "y": 0.2306, + "confidence": 0.935 + }, + { + "name": "left_shoulder", + "x": 0.5775, + "y": 0.3235, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4034, + "y": 0.3266, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6347, + "y": 0.4288, + "confidence": 0.981 + }, + { + "name": "right_elbow", + "x": 0.3526, + "y": 0.4467, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7142, + "y": 0.5018, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3568, + "y": 0.5445, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5812, + "y": 0.5273, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4682, + "y": 0.5323, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6165, + "y": 0.672, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4648, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5877, + "y": 0.7933, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.4473, + "y": 0.8008, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 35, + "timestamp": 1.1666666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1739, + "acceleration": 0.0517, + "fluidity": 0, + "expansion": 0.268, + "total_displacement": 0.0066, + "center_displacement": { + "x": -0.0063, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5734, + "y": 0.2399, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5841, + "y": 0.2269, + "confidence": 0.825 + }, + { + "name": "right_eye", + "x": 0.546, + "y": 0.2247, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4654, + "y": 0.2328, + "confidence": 0.931 + }, + { + "name": "left_shoulder", + "x": 0.5746, + "y": 0.3255, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.3996, + "y": 0.3286, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6291, + "y": 0.4328, + "confidence": 0.978 + }, + { + "name": "right_elbow", + "x": 0.3523, + "y": 0.4493, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7055, + "y": 0.5056, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3513, + "y": 0.5484, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5726, + "y": 0.5288, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4581, + "y": 0.5339, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6205, + "y": 0.6727, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.4624, + "y": 0.6796, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5863, + "y": 0.7957, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.4473, + "y": 0.8005, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 36, + "timestamp": 1.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1513, + "acceleration": -0.6767, + "fluidity": 0, + "expansion": 0.263, + "total_displacement": 0.005, + "center_displacement": { + "x": -0.0028, + "y": 0.0042 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5735, + "y": 0.2396, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.582, + "y": 0.2269, + "confidence": 0.852 + }, + { + "name": "right_eye", + "x": 0.5451, + "y": 0.2251, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4639, + "y": 0.2354, + "confidence": 0.949 + }, + { + "name": "left_shoulder", + "x": 0.5762, + "y": 0.3327, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.3952, + "y": 0.3328, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6248, + "y": 0.439, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.3563, + "y": 0.4538, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.698, + "y": 0.5103, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3529, + "y": 0.5536, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5706, + "y": 0.532, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4516, + "y": 0.536, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6229, + "y": 0.673, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4582, + "y": 0.6789, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5828, + "y": 0.795, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4476, + "y": 0.7939, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 37, + "timestamp": 1.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1097, + "acceleration": -1.249, + "fluidity": 0, + "expansion": 0.259, + "total_displacement": 0.0043, + "center_displacement": { + "x": -0.0041, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5694, + "y": 0.2411, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5802, + "y": 0.228, + "confidence": 0.887 + }, + { + "name": "right_eye", + "x": 0.5401, + "y": 0.2269, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4628, + "y": 0.2379, + "confidence": 0.948 + }, + { + "name": "left_shoulder", + "x": 0.5805, + "y": 0.334, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3924, + "y": 0.3352, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6218, + "y": 0.44, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3528, + "y": 0.455, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6924, + "y": 0.5178, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3512, + "y": 0.5553, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5643, + "y": 0.5322, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4398, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6291, + "y": 0.6713, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4535, + "y": 0.6781, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5807, + "y": 0.7942, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.444, + "y": 0.7952, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 38, + "timestamp": 1.2666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0644, + "acceleration": -1.3585, + "fluidity": 0, + "expansion": 0.256, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0013, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5688, + "y": 0.2427, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5803, + "y": 0.2295, + "confidence": 0.896 + }, + { + "name": "right_eye", + "x": 0.5393, + "y": 0.2285, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4625, + "y": 0.2391, + "confidence": 0.947 + }, + { + "name": "left_shoulder", + "x": 0.5833, + "y": 0.3349, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3896, + "y": 0.3358, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6197, + "y": 0.4437, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3501, + "y": 0.4578, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6843, + "y": 0.5226, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3505, + "y": 0.5578, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5638, + "y": 0.5335, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4349, + "y": 0.5376, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6302, + "y": 0.6738, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4481, + "y": 0.6797, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.581, + "y": 0.7952, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4422, + "y": 0.7959, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 39, + "timestamp": 1.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0574, + "acceleration": -0.2099, + "fluidity": 0, + "expansion": 0.254, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.001, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.569, + "y": 0.2427, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5803, + "y": 0.2297, + "confidence": 0.899 + }, + { + "name": "right_eye", + "x": 0.5393, + "y": 0.2288, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4636, + "y": 0.2397, + "confidence": 0.946 + }, + { + "name": "left_shoulder", + "x": 0.5866, + "y": 0.3345, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3887, + "y": 0.334, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6186, + "y": 0.4455, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.3458, + "y": 0.4541, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6769, + "y": 0.5278, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3473, + "y": 0.556, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5625, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.43, + "y": 0.5371, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6269, + "y": 0.6748, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4412, + "y": 0.6798, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.583, + "y": 0.7946, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.44, + "y": 0.7959, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 40, + "timestamp": 1.3333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0738, + "acceleration": 0.4923, + "fluidity": 0, + "expansion": 0.253, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0018, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5701, + "y": 0.2418, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5819, + "y": 0.2287, + "confidence": 0.905 + }, + { + "name": "right_eye", + "x": 0.5395, + "y": 0.2279, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4641, + "y": 0.2389, + "confidence": 0.944 + }, + { + "name": "left_shoulder", + "x": 0.5917, + "y": 0.3326, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3893, + "y": 0.3311, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6187, + "y": 0.4444, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3406, + "y": 0.4498, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6675, + "y": 0.53, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3435, + "y": 0.5516, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5647, + "y": 0.5332, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4291, + "y": 0.5357, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6212, + "y": 0.6773, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4377, + "y": 0.6795, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5865, + "y": 0.7935, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4382, + "y": 0.7956, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 41, + "timestamp": 1.3666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1292, + "acceleration": 1.6604, + "fluidity": 0, + "expansion": 0.254, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0016, + "y": -0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5687, + "y": 0.2375, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5828, + "y": 0.2244, + "confidence": 0.922 + }, + { + "name": "right_eye", + "x": 0.5374, + "y": 0.2234, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4642, + "y": 0.2353, + "confidence": 0.939 + }, + { + "name": "left_shoulder", + "x": 0.598, + "y": 0.3303, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3899, + "y": 0.327, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6215, + "y": 0.4432, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3378, + "y": 0.4445, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6608, + "y": 0.5296, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.34, + "y": 0.5475, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5663, + "y": 0.5319, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4271, + "y": 0.5331, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6134, + "y": 0.6775, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4325, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5889, + "y": 0.7935, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4384, + "y": 0.7951, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 42, + "timestamp": 1.4, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1463, + "acceleration": 0.5146, + "fluidity": 0, + "expansion": 0.257, + "total_displacement": 0.0074, + "center_displacement": { + "x": 0.0013, + "y": -0.0073 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5687, + "y": 0.2377, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5838, + "y": 0.2239, + "confidence": 0.914 + }, + { + "name": "right_eye", + "x": 0.5368, + "y": 0.2237, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4649, + "y": 0.2338, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.6034, + "y": 0.3219, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3905, + "y": 0.32, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6268, + "y": 0.4342, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3366, + "y": 0.4343, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6586, + "y": 0.5285, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3353, + "y": 0.5401, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5674, + "y": 0.5251, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4251, + "y": 0.5261, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6067, + "y": 0.6757, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4294, + "y": 0.6743, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5911, + "y": 0.7937, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4403, + "y": 0.7963, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 43, + "timestamp": 1.4333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0962, + "acceleration": -1.5028, + "fluidity": 0, + "expansion": 0.261, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0016, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5675, + "y": 0.2354, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5843, + "y": 0.2216, + "confidence": 0.927 + }, + { + "name": "right_eye", + "x": 0.5353, + "y": 0.2215, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4661, + "y": 0.2323, + "confidence": 0.934 + }, + { + "name": "left_shoulder", + "x": 0.6081, + "y": 0.3203, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.393, + "y": 0.3172, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6329, + "y": 0.4339, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3371, + "y": 0.4296, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6608, + "y": 0.5274, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3288, + "y": 0.5329, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5676, + "y": 0.5229, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4239, + "y": 0.5229, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5999, + "y": 0.6748, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4264, + "y": 0.672, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5935, + "y": 0.7934, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.44, + "y": 0.7939, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 44, + "timestamp": 1.4666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0787, + "acceleration": -0.5258, + "fluidity": 0, + "expansion": 0.265, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0017, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5664, + "y": 0.2346, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5845, + "y": 0.2203, + "confidence": 0.93 + }, + { + "name": "right_eye", + "x": 0.5339, + "y": 0.2206, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.467, + "y": 0.2315, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.6112, + "y": 0.3187, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3965, + "y": 0.3161, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6387, + "y": 0.4321, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.338, + "y": 0.4272, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6674, + "y": 0.5281, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3234, + "y": 0.529, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5671, + "y": 0.5228, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4244, + "y": 0.5224, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5928, + "y": 0.6748, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4252, + "y": 0.6711, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5934, + "y": 0.7915, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4394, + "y": 0.7913, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 45, + "timestamp": 1.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0921, + "acceleration": 0.402, + "fluidity": 0, + "expansion": 0.27, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0027, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5661, + "y": 0.2343, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5846, + "y": 0.2197, + "confidence": 0.935 + }, + { + "name": "right_eye", + "x": 0.5329, + "y": 0.2205, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4681, + "y": 0.232, + "confidence": 0.928 + }, + { + "name": "left_shoulder", + "x": 0.6169, + "y": 0.3189, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.401, + "y": 0.3158, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6492, + "y": 0.4316, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.342, + "y": 0.4245, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6748, + "y": 0.5273, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.318, + "y": 0.5247, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5678, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4246, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.589, + "y": 0.6783, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4249, + "y": 0.6709, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5924, + "y": 0.7924, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4377, + "y": 0.7894, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 46, + "timestamp": 1.5333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0899, + "acceleration": -0.067, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0038, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5663, + "y": 0.2356, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.585, + "y": 0.2211, + "confidence": 0.937 + }, + { + "name": "right_eye", + "x": 0.5331, + "y": 0.2221, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.47, + "y": 0.2337, + "confidence": 0.925 + }, + { + "name": "left_shoulder", + "x": 0.6223, + "y": 0.3192, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4056, + "y": 0.3158, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.661, + "y": 0.4327, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3476, + "y": 0.4226, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6813, + "y": 0.5284, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3162, + "y": 0.5206, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5702, + "y": 0.5257, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4271, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5834, + "y": 0.6789, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4262, + "y": 0.6708, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5906, + "y": 0.7943, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4383, + "y": 0.7915, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 47, + "timestamp": 1.5666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0929, + "acceleration": 0.0903, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0021, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5651, + "y": 0.2364, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.584, + "y": 0.2216, + "confidence": 0.94 + }, + { + "name": "right_eye", + "x": 0.5316, + "y": 0.2233, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4711, + "y": 0.2354, + "confidence": 0.921 + }, + { + "name": "left_shoulder", + "x": 0.6243, + "y": 0.3179, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4111, + "y": 0.3164, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6659, + "y": 0.43, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.354, + "y": 0.4227, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6847, + "y": 0.5272, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3167, + "y": 0.5203, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5693, + "y": 0.5249, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4289, + "y": 0.5226, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5769, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4277, + "y": 0.6701, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5887, + "y": 0.792, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4376, + "y": 0.7916, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 48, + "timestamp": 1.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1108, + "acceleration": 0.5381, + "fluidity": 0, + "expansion": 0.275, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0041, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5625, + "y": 0.2357, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5822, + "y": 0.2211, + "confidence": 0.95 + }, + { + "name": "right_eye", + "x": 0.5292, + "y": 0.2232, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5967, + "y": 0.2294, + "confidence": 0.533 + }, + { + "name": "right_ear", + "x": 0.4721, + "y": 0.2366, + "confidence": 0.913 + }, + { + "name": "left_shoulder", + "x": 0.6286, + "y": 0.3189, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4165, + "y": 0.3171, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6733, + "y": 0.4328, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3627, + "y": 0.4219, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6917, + "y": 0.5326, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3207, + "y": 0.5174, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.5725, + "y": 0.5251, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4326, + "y": 0.5222, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5757, + "y": 0.6774, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4288, + "y": 0.6701, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.588, + "y": 0.7937, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.437, + "y": 0.7918, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 49, + "timestamp": 1.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1244, + "acceleration": 0.4069, + "fluidity": 0, + "expansion": 0.275, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0038, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5613, + "y": 0.236, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5814, + "y": 0.2211, + "confidence": 0.955 + }, + { + "name": "right_eye", + "x": 0.5279, + "y": 0.2236, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.598, + "y": 0.2291, + "confidence": 0.578 + }, + { + "name": "right_ear", + "x": 0.4736, + "y": 0.2371, + "confidence": 0.906 + }, + { + "name": "left_shoulder", + "x": 0.6318, + "y": 0.3188, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4218, + "y": 0.3176, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6777, + "y": 0.4333, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.37, + "y": 0.4225, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6945, + "y": 0.5322, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3269, + "y": 0.5154, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.575, + "y": 0.5249, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4369, + "y": 0.5219, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5748, + "y": 0.6774, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4314, + "y": 0.6703, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5873, + "y": 0.794, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4391, + "y": 0.7924, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 50, + "timestamp": 1.6666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1373, + "acceleration": 0.3886, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0049, + "center_displacement": { + "x": 0.0049, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5599, + "y": 0.2364, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5808, + "y": 0.2215, + "confidence": 0.963 + }, + { + "name": "right_eye", + "x": 0.5269, + "y": 0.224, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.6, + "y": 0.2293, + "confidence": 0.641 + }, + { + "name": "right_ear", + "x": 0.4755, + "y": 0.2372, + "confidence": 0.895 + }, + { + "name": "left_shoulder", + "x": 0.6362, + "y": 0.3183, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4266, + "y": 0.3177, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6823, + "y": 0.4313, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3772, + "y": 0.4221, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6989, + "y": 0.5314, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3337, + "y": 0.5152, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.5801, + "y": 0.5244, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4421, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5785, + "y": 0.6774, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4327, + "y": 0.6719, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5879, + "y": 0.7944, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4392, + "y": 0.7957, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 51, + "timestamp": 1.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1528, + "acceleration": 0.4656, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0046, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5596, + "y": 0.2364, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5807, + "y": 0.2216, + "confidence": 0.968 + }, + { + "name": "right_eye", + "x": 0.5269, + "y": 0.2244, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.6018, + "y": 0.2293, + "confidence": 0.689 + }, + { + "name": "right_ear", + "x": 0.4778, + "y": 0.2379, + "confidence": 0.886 + }, + { + "name": "left_shoulder", + "x": 0.6408, + "y": 0.3191, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4308, + "y": 0.3185, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6872, + "y": 0.4339, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3837, + "y": 0.4221, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7046, + "y": 0.5349, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3422, + "y": 0.5138, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5852, + "y": 0.5256, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4466, + "y": 0.5228, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5828, + "y": 0.6767, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4318, + "y": 0.6723, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5888, + "y": 0.7949, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4386, + "y": 0.7955, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 52, + "timestamp": 1.7333333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1585, + "acceleration": 0.1689, + "fluidity": 0, + "expansion": 0.274, + "total_displacement": 0.006, + "center_displacement": { + "x": 0.0053, + "y": 0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5603, + "y": 0.2377, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5815, + "y": 0.2229, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.5281, + "y": 0.226, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.6037, + "y": 0.2305, + "confidence": 0.675 + }, + { + "name": "right_ear", + "x": 0.4794, + "y": 0.2395, + "confidence": 0.884 + }, + { + "name": "left_shoulder", + "x": 0.6442, + "y": 0.3208, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4336, + "y": 0.321, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6931, + "y": 0.4367, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3903, + "y": 0.4248, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7107, + "y": 0.5368, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3495, + "y": 0.5143, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5931, + "y": 0.5291, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4536, + "y": 0.5268, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5866, + "y": 0.6797, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4299, + "y": 0.6775, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5904, + "y": 0.7953, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4373, + "y": 0.7945, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 53, + "timestamp": 1.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1398, + "acceleration": -0.561, + "fluidity": 0, + "expansion": 0.273, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0039, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5607, + "y": 0.2392, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5826, + "y": 0.2242, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.5291, + "y": 0.2272, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.6056, + "y": 0.2322, + "confidence": 0.675 + }, + { + "name": "right_ear", + "x": 0.4801, + "y": 0.2404, + "confidence": 0.883 + }, + { + "name": "left_shoulder", + "x": 0.6455, + "y": 0.3241, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4355, + "y": 0.3236, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6991, + "y": 0.4436, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3973, + "y": 0.4289, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7218, + "y": 0.5432, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3555, + "y": 0.5204, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5991, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4599, + "y": 0.5291, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5887, + "y": 0.6824, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4252, + "y": 0.6815, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5929, + "y": 0.7983, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4368, + "y": 0.7936, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 54, + "timestamp": 1.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1434, + "acceleration": 0.108, + "fluidity": 0, + "expansion": 0.271, + "total_displacement": 0.004, + "center_displacement": { + "x": 0.0037, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5605, + "y": 0.2409, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5827, + "y": 0.2261, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.5297, + "y": 0.2287, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6054, + "y": 0.2345, + "confidence": 0.67 + }, + { + "name": "right_ear", + "x": 0.4808, + "y": 0.2415, + "confidence": 0.884 + }, + { + "name": "left_shoulder", + "x": 0.646, + "y": 0.3259, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4375, + "y": 0.326, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7016, + "y": 0.4435, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.404, + "y": 0.4319, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7276, + "y": 0.5463, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3613, + "y": 0.5251, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6049, + "y": 0.5323, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4665, + "y": 0.5298, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5907, + "y": 0.6819, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4224, + "y": 0.6805, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5935, + "y": 0.7994, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4378, + "y": 0.7942, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 55, + "timestamp": 1.8333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1266, + "acceleration": -0.5016, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0041, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5583, + "y": 0.2427, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.583, + "y": 0.2287, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5296, + "y": 0.2298, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6097, + "y": 0.2384, + "confidence": 0.727 + }, + { + "name": "right_ear", + "x": 0.4827, + "y": 0.242, + "confidence": 0.868 + }, + { + "name": "left_shoulder", + "x": 0.6469, + "y": 0.3306, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.439, + "y": 0.3304, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7023, + "y": 0.4472, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.4064, + "y": 0.4383, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7308, + "y": 0.551, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3678, + "y": 0.5314, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6113, + "y": 0.5352, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.474, + "y": 0.5336, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5923, + "y": 0.6818, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4235, + "y": 0.6843, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5906, + "y": 0.7988, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4428, + "y": 0.7922, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 56, + "timestamp": 1.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0865, + "acceleration": -1.2039, + "fluidity": 0.233, + "expansion": 0.265, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0007, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5587, + "y": 0.2413, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5822, + "y": 0.2268, + "confidence": 0.963 + }, + { + "name": "right_eye", + "x": 0.5286, + "y": 0.2286, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6066, + "y": 0.2362, + "confidence": 0.656 + }, + { + "name": "right_ear", + "x": 0.4799, + "y": 0.2412, + "confidence": 0.884 + }, + { + "name": "left_shoulder", + "x": 0.6484, + "y": 0.3289, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.437, + "y": 0.3284, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7051, + "y": 0.4463, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.4103, + "y": 0.4363, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7334, + "y": 0.5506, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3757, + "y": 0.5325, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6139, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4746, + "y": 0.531, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5961, + "y": 0.681, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4261, + "y": 0.68, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5926, + "y": 0.7983, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4498, + "y": 0.7942, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 57, + "timestamp": 1.9, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0803, + "acceleration": -0.1869, + "fluidity": 0.31, + "expansion": 0.262, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0004, + "y": -0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5562, + "y": 0.2388, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5794, + "y": 0.2249, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.5264, + "y": 0.2268, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6044, + "y": 0.2349, + "confidence": 0.674 + }, + { + "name": "right_ear", + "x": 0.4791, + "y": 0.2402, + "confidence": 0.88 + }, + { + "name": "left_shoulder", + "x": 0.6481, + "y": 0.3267, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4359, + "y": 0.3267, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7045, + "y": 0.4446, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.411, + "y": 0.4352, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7327, + "y": 0.548, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3822, + "y": 0.5327, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6157, + "y": 0.5304, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4757, + "y": 0.5289, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5994, + "y": 0.6776, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4331, + "y": 0.6795, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5933, + "y": 0.797, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4557, + "y": 0.7955, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 58, + "timestamp": 1.9333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0851, + "acceleration": 0.1459, + "fluidity": 0.367, + "expansion": 0.261, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0002, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5554, + "y": 0.236, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5794, + "y": 0.2226, + "confidence": 0.969 + }, + { + "name": "right_eye", + "x": 0.5255, + "y": 0.2238, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6049, + "y": 0.2335, + "confidence": 0.71 + }, + { + "name": "right_ear", + "x": 0.4786, + "y": 0.2375, + "confidence": 0.878 + }, + { + "name": "left_shoulder", + "x": 0.6482, + "y": 0.3243, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4362, + "y": 0.3239, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7055, + "y": 0.4402, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4118, + "y": 0.4322, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7317, + "y": 0.545, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3883, + "y": 0.5285, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.6156, + "y": 0.5271, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4761, + "y": 0.5258, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6005, + "y": 0.6748, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4423, + "y": 0.6776, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5925, + "y": 0.7934, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4586, + "y": 0.797, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 59, + "timestamp": 1.9666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0896, + "acceleration": 0.1329, + "fluidity": 0.386, + "expansion": 0.261, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0008, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5516, + "y": 0.2303, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5767, + "y": 0.2167, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.5217, + "y": 0.2181, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6053, + "y": 0.2279, + "confidence": 0.761 + }, + { + "name": "right_ear", + "x": 0.4769, + "y": 0.2324, + "confidence": 0.861 + }, + { + "name": "left_shoulder", + "x": 0.6477, + "y": 0.319, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4364, + "y": 0.3205, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7053, + "y": 0.4327, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4104, + "y": 0.4294, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7286, + "y": 0.5382, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3898, + "y": 0.5243, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6138, + "y": 0.5254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4751, + "y": 0.525, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6004, + "y": 0.674, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4487, + "y": 0.6779, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5928, + "y": 0.7943, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4611, + "y": 0.7965, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 60, + "timestamp": 2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0747, + "acceleration": -0.4457, + "fluidity": 0.129, + "expansion": 0.261, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0015, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5495, + "y": 0.2264, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5757, + "y": 0.2134, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.5199, + "y": 0.2139, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6046, + "y": 0.226, + "confidence": 0.782 + }, + { + "name": "right_ear", + "x": 0.4751, + "y": 0.2284, + "confidence": 0.86 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.3171, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.435, + "y": 0.3176, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7032, + "y": 0.4291, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4071, + "y": 0.4268, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7264, + "y": 0.5338, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3872, + "y": 0.5214, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6124, + "y": 0.5223, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.475, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6021, + "y": 0.6708, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4563, + "y": 0.673, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5914, + "y": 0.7918, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4596, + "y": 0.7933, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 61, + "timestamp": 2.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0656, + "acceleration": -0.2748, + "fluidity": 0.043, + "expansion": 0.261, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0004, + "y": -0.0012 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.546, + "y": 0.2237, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5726, + "y": 0.2106, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.5163, + "y": 0.211, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6027, + "y": 0.2241, + "confidence": 0.795 + }, + { + "name": "right_ear", + "x": 0.472, + "y": 0.2263, + "confidence": 0.85 + }, + { + "name": "left_shoulder", + "x": 0.6437, + "y": 0.3157, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4349, + "y": 0.3167, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7014, + "y": 0.4298, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3997, + "y": 0.427, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7231, + "y": 0.5299, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3857, + "y": 0.5213, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6124, + "y": 0.5208, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4743, + "y": 0.5205, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6034, + "y": 0.6683, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4633, + "y": 0.6699, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.594, + "y": 0.7879, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4593, + "y": 0.7929, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 62, + "timestamp": 2.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0825, + "acceleration": 0.507, + "fluidity": 0.014, + "expansion": 0.261, + "total_displacement": 0.0028, + "center_displacement": { + "x": -0.0026, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5423, + "y": 0.2216, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5694, + "y": 0.2088, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.5131, + "y": 0.2089, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5999, + "y": 0.223, + "confidence": 0.794 + }, + { + "name": "right_ear", + "x": 0.4692, + "y": 0.2245, + "confidence": 0.85 + }, + { + "name": "left_shoulder", + "x": 0.6403, + "y": 0.3144, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4315, + "y": 0.3158, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6992, + "y": 0.4273, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3953, + "y": 0.4271, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7206, + "y": 0.5279, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3825, + "y": 0.5225, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6105, + "y": 0.5202, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4723, + "y": 0.5202, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.604, + "y": 0.6679, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4648, + "y": 0.6699, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.594, + "y": 0.7876, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4565, + "y": 0.7934, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 63, + "timestamp": 2.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1097, + "acceleration": 0.8166, + "fluidity": 0.005, + "expansion": 0.261, + "total_displacement": 0.0033, + "center_displacement": { + "x": -0.0033, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5387, + "y": 0.2204, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5663, + "y": 0.2081, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.5101, + "y": 0.2075, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5963, + "y": 0.2233, + "confidence": 0.793 + }, + { + "name": "right_ear", + "x": 0.4659, + "y": 0.2234, + "confidence": 0.853 + }, + { + "name": "left_shoulder", + "x": 0.6357, + "y": 0.314, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4262, + "y": 0.316, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6969, + "y": 0.4249, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.389, + "y": 0.4291, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7171, + "y": 0.5263, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3776, + "y": 0.5253, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6092, + "y": 0.5195, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4704, + "y": 0.52, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6044, + "y": 0.6656, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4634, + "y": 0.6678, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5955, + "y": 0.7862, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4525, + "y": 0.7926, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 64, + "timestamp": 2.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1458, + "acceleration": 1.0835, + "fluidity": 0.002, + "expansion": 0.26, + "total_displacement": 0.0049, + "center_displacement": { + "x": -0.0048, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5348, + "y": 0.2205, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5622, + "y": 0.2083, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.5067, + "y": 0.2073, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5911, + "y": 0.2237, + "confidence": 0.789 + }, + { + "name": "right_ear", + "x": 0.462, + "y": 0.2228, + "confidence": 0.858 + }, + { + "name": "left_shoulder", + "x": 0.6306, + "y": 0.3149, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4188, + "y": 0.3167, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6931, + "y": 0.4273, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3797, + "y": 0.4333, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7113, + "y": 0.5279, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.373, + "y": 0.531, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6062, + "y": 0.5202, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4665, + "y": 0.521, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6035, + "y": 0.6648, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4603, + "y": 0.6672, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5952, + "y": 0.7869, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4539, + "y": 0.794, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 65, + "timestamp": 2.1666666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1617, + "acceleration": 0.4776, + "fluidity": 0.001, + "expansion": 0.26, + "total_displacement": 0.006, + "center_displacement": { + "x": -0.006, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5304, + "y": 0.2195, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5573, + "y": 0.2075, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.5025, + "y": 0.2067, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.585, + "y": 0.2232, + "confidence": 0.784 + }, + { + "name": "right_ear", + "x": 0.4576, + "y": 0.2226, + "confidence": 0.862 + }, + { + "name": "left_shoulder", + "x": 0.6252, + "y": 0.3137, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4114, + "y": 0.3167, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6873, + "y": 0.425, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3721, + "y": 0.4336, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7074, + "y": 0.5252, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3685, + "y": 0.5308, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6013, + "y": 0.5194, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4602, + "y": 0.521, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6015, + "y": 0.6642, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.457, + "y": 0.6675, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5951, + "y": 0.7873, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.458, + "y": 0.7952, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 66, + "timestamp": 2.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1585, + "acceleration": -0.0965, + "fluidity": 0.114, + "expansion": 0.259, + "total_displacement": 0.0053, + "center_displacement": { + "x": -0.0053, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.526, + "y": 0.2199, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.553, + "y": 0.208, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.4987, + "y": 0.2067, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5797, + "y": 0.2237, + "confidence": 0.788 + }, + { + "name": "right_ear", + "x": 0.4535, + "y": 0.2221, + "confidence": 0.864 + }, + { + "name": "left_shoulder", + "x": 0.6191, + "y": 0.3136, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4042, + "y": 0.3172, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6818, + "y": 0.4234, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3645, + "y": 0.436, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.7019, + "y": 0.5246, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3641, + "y": 0.5327, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5977, + "y": 0.52, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.456, + "y": 0.5221, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6011, + "y": 0.6652, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4536, + "y": 0.6679, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5953, + "y": 0.7872, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4596, + "y": 0.795, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 67, + "timestamp": 2.2333333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1696, + "acceleration": 0.3326, + "fluidity": 0.152, + "expansion": 0.26, + "total_displacement": 0.0052, + "center_displacement": { + "x": -0.0051, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5195, + "y": 0.2205, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5475, + "y": 0.2096, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.4932, + "y": 0.2071, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5743, + "y": 0.2261, + "confidence": 0.769 + }, + { + "name": "right_ear", + "x": 0.4474, + "y": 0.222, + "confidence": 0.871 + }, + { + "name": "left_shoulder", + "x": 0.6125, + "y": 0.3162, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3936, + "y": 0.3172, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6736, + "y": 0.4217, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3569, + "y": 0.4344, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6933, + "y": 0.5204, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3578, + "y": 0.5346, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5967, + "y": 0.5203, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4537, + "y": 0.5215, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5994, + "y": 0.6663, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4467, + "y": 0.6686, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5936, + "y": 0.7892, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4588, + "y": 0.7949, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 68, + "timestamp": 2.2666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1957, + "acceleration": 0.7835, + "fluidity": 0.051, + "expansion": 0.26, + "total_displacement": 0.0065, + "center_displacement": { + "x": -0.0065, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5153, + "y": 0.2199, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.543, + "y": 0.2091, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.489, + "y": 0.2065, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5682, + "y": 0.2256, + "confidence": 0.765 + }, + { + "name": "right_ear", + "x": 0.442, + "y": 0.221, + "confidence": 0.876 + }, + { + "name": "left_shoulder", + "x": 0.6054, + "y": 0.3151, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3849, + "y": 0.3167, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6621, + "y": 0.4183, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3474, + "y": 0.4343, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6823, + "y": 0.518, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3489, + "y": 0.5356, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5926, + "y": 0.5209, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4475, + "y": 0.5226, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6022, + "y": 0.6697, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4411, + "y": 0.671, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5955, + "y": 0.7902, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4552, + "y": 0.7959, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 69, + "timestamp": 2.3, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2155, + "acceleration": 0.5923, + "fluidity": 0.017, + "expansion": 0.26, + "total_displacement": 0.0074, + "center_displacement": { + "x": -0.0072, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5093, + "y": 0.2224, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5385, + "y": 0.2112, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4835, + "y": 0.2079, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.565, + "y": 0.2272, + "confidence": 0.813 + }, + { + "name": "right_ear", + "x": 0.4368, + "y": 0.221, + "confidence": 0.869 + }, + { + "name": "left_shoulder", + "x": 0.5987, + "y": 0.3172, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3776, + "y": 0.3187, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6541, + "y": 0.42, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3388, + "y": 0.4394, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.6726, + "y": 0.5177, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3425, + "y": 0.5431, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5858, + "y": 0.5224, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4397, + "y": 0.5243, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6076, + "y": 0.6703, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4355, + "y": 0.671, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5982, + "y": 0.7912, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.449, + "y": 0.7949, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 70, + "timestamp": 2.3333333333333335, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2212, + "acceleration": 0.1737, + "fluidity": 0.006, + "expansion": 0.262, + "total_displacement": 0.0076, + "center_displacement": { + "x": -0.0066, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5068, + "y": 0.2274, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5353, + "y": 0.2154, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4801, + "y": 0.2124, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5607, + "y": 0.2301, + "confidence": 0.808 + }, + { + "name": "right_ear", + "x": 0.4318, + "y": 0.225, + "confidence": 0.876 + }, + { + "name": "left_shoulder", + "x": 0.5927, + "y": 0.3209, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3724, + "y": 0.3237, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6435, + "y": 0.4225, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3293, + "y": 0.4449, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.6666, + "y": 0.5184, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3318, + "y": 0.545, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.578, + "y": 0.5252, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4322, + "y": 0.5277, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6109, + "y": 0.6743, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4299, + "y": 0.6737, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5996, + "y": 0.7912, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4437, + "y": 0.7967, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 71, + "timestamp": 2.3666666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2159, + "acceleration": -0.1611, + "fluidity": 0.002, + "expansion": 0.263, + "total_displacement": 0.0073, + "center_displacement": { + "x": -0.0063, + "y": 0.0038 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4998, + "y": 0.2314, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5278, + "y": 0.2192, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.473, + "y": 0.2166, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5545, + "y": 0.2335, + "confidence": 0.826 + }, + { + "name": "right_ear", + "x": 0.4266, + "y": 0.2295, + "confidence": 0.869 + }, + { + "name": "left_shoulder", + "x": 0.5885, + "y": 0.3249, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3674, + "y": 0.3283, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6351, + "y": 0.4244, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3226, + "y": 0.4489, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.6629, + "y": 0.519, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3218, + "y": 0.5494, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.5706, + "y": 0.5283, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4236, + "y": 0.5311, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6163, + "y": 0.6776, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4264, + "y": 0.6763, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5985, + "y": 0.7906, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4415, + "y": 0.798, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 72, + "timestamp": 2.4, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1803, + "acceleration": -1.0665, + "fluidity": 0.001, + "expansion": 0.264, + "total_displacement": 0.0069, + "center_displacement": { + "x": -0.0057, + "y": 0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4974, + "y": 0.2348, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5245, + "y": 0.2219, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4691, + "y": 0.2203, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5529, + "y": 0.2358, + "confidence": 0.798 + }, + { + "name": "right_ear", + "x": 0.422, + "y": 0.2339, + "confidence": 0.876 + }, + { + "name": "left_shoulder", + "x": 0.5847, + "y": 0.3305, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3641, + "y": 0.3338, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6315, + "y": 0.4305, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3241, + "y": 0.4562, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.6584, + "y": 0.5215, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.3127, + "y": 0.5544, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.5624, + "y": 0.5304, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4161, + "y": 0.5335, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6177, + "y": 0.6765, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4241, + "y": 0.6757, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5987, + "y": 0.7906, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4344, + "y": 0.7921, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 73, + "timestamp": 2.433333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1245, + "acceleration": -1.6732, + "fluidity": 0, + "expansion": 0.264, + "total_displacement": 0.0039, + "center_displacement": { + "x": -0.0039, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4938, + "y": 0.2351, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5208, + "y": 0.2223, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.4659, + "y": 0.221, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5507, + "y": 0.2364, + "confidence": 0.808 + }, + { + "name": "right_ear", + "x": 0.4205, + "y": 0.2351, + "confidence": 0.87 + }, + { + "name": "left_shoulder", + "x": 0.5837, + "y": 0.3324, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3623, + "y": 0.3341, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6275, + "y": 0.4358, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.322, + "y": 0.4564, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.6543, + "y": 0.5226, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.3043, + "y": 0.5573, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.5564, + "y": 0.5306, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4092, + "y": 0.5333, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6197, + "y": 0.6754, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4219, + "y": 0.6755, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5968, + "y": 0.7904, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4329, + "y": 0.7926, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 74, + "timestamp": 2.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1068, + "acceleration": -0.5323, + "fluidity": 0, + "expansion": 0.264, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0022, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4933, + "y": 0.2344, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5201, + "y": 0.2216, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4655, + "y": 0.2204, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5493, + "y": 0.2358, + "confidence": 0.79 + }, + { + "name": "right_ear", + "x": 0.4194, + "y": 0.2345, + "confidence": 0.873 + }, + { + "name": "left_shoulder", + "x": 0.5816, + "y": 0.3312, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3603, + "y": 0.3328, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6246, + "y": 0.4359, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3218, + "y": 0.455, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6502, + "y": 0.5231, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.3018, + "y": 0.5555, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5544, + "y": 0.5292, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4069, + "y": 0.5321, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6185, + "y": 0.674, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4209, + "y": 0.6756, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5971, + "y": 0.79, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4329, + "y": 0.793, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 75, + "timestamp": 2.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1068, + "acceleration": -0.0003, + "fluidity": 0, + "expansion": 0.264, + "total_displacement": 0.004, + "center_displacement": { + "x": -0.0005, + "y": -0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4917, + "y": 0.2326, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5184, + "y": 0.2199, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4649, + "y": 0.2184, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5477, + "y": 0.233, + "confidence": 0.773 + }, + { + "name": "right_ear", + "x": 0.4203, + "y": 0.231, + "confidence": 0.87 + }, + { + "name": "left_shoulder", + "x": 0.5814, + "y": 0.3277, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3602, + "y": 0.3273, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6251, + "y": 0.4338, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3191, + "y": 0.4466, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6483, + "y": 0.5269, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.3006, + "y": 0.5517, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5532, + "y": 0.5264, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4064, + "y": 0.528, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6181, + "y": 0.6747, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4191, + "y": 0.6727, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5981, + "y": 0.7905, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4358, + "y": 0.7922, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 76, + "timestamp": 2.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1007, + "acceleration": -0.1826, + "fluidity": 0, + "expansion": 0.265, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4943, + "y": 0.2283, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5218, + "y": 0.2156, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.4669, + "y": 0.2138, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5504, + "y": 0.2296, + "confidence": 0.784 + }, + { + "name": "right_ear", + "x": 0.4207, + "y": 0.2268, + "confidence": 0.874 + }, + { + "name": "left_shoulder", + "x": 0.5814, + "y": 0.3241, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3595, + "y": 0.3232, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6253, + "y": 0.4308, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3163, + "y": 0.4427, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6468, + "y": 0.5253, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3012, + "y": 0.5484, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5539, + "y": 0.5242, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4065, + "y": 0.5255, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6117, + "y": 0.6734, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4179, + "y": 0.6706, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6007, + "y": 0.792, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4356, + "y": 0.791, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 77, + "timestamp": 2.5666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0918, + "acceleration": -0.2664, + "fluidity": 0, + "expansion": 0.266, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0011, + "y": -0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4933, + "y": 0.223, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5214, + "y": 0.211, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4666, + "y": 0.209, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5507, + "y": 0.2267, + "confidence": 0.801 + }, + { + "name": "right_ear", + "x": 0.4218, + "y": 0.2232, + "confidence": 0.869 + }, + { + "name": "left_shoulder", + "x": 0.5807, + "y": 0.321, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3596, + "y": 0.3183, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6234, + "y": 0.4302, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3148, + "y": 0.4366, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6461, + "y": 0.5253, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3027, + "y": 0.5421, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5521, + "y": 0.5219, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4045, + "y": 0.5228, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6056, + "y": 0.6727, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.417, + "y": 0.6704, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6043, + "y": 0.7933, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4344, + "y": 0.7905, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 78, + "timestamp": 2.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0703, + "acceleration": -0.6471, + "fluidity": 0, + "expansion": 0.267, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0016, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4951, + "y": 0.22, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5222, + "y": 0.2085, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4682, + "y": 0.2065, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5499, + "y": 0.2248, + "confidence": 0.78 + }, + { + "name": "right_ear", + "x": 0.4234, + "y": 0.2217, + "confidence": 0.876 + }, + { + "name": "left_shoulder", + "x": 0.5829, + "y": 0.3192, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3603, + "y": 0.3158, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6254, + "y": 0.4292, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3135, + "y": 0.4328, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6457, + "y": 0.5249, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.305, + "y": 0.5361, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5543, + "y": 0.5207, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4057, + "y": 0.5211, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6009, + "y": 0.6735, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4158, + "y": 0.6703, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6049, + "y": 0.7924, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.435, + "y": 0.7918, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 79, + "timestamp": 2.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0568, + "acceleration": -0.4043, + "fluidity": 0.007, + "expansion": 0.266, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0011, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4974, + "y": 0.2176, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5245, + "y": 0.2058, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.4699, + "y": 0.2042, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5517, + "y": 0.2221, + "confidence": 0.758 + }, + { + "name": "right_ear", + "x": 0.4239, + "y": 0.2197, + "confidence": 0.881 + }, + { + "name": "left_shoulder", + "x": 0.5838, + "y": 0.3171, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.362, + "y": 0.3138, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6287, + "y": 0.429, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3137, + "y": 0.4305, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.6459, + "y": 0.5262, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3072, + "y": 0.531, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.5547, + "y": 0.5206, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.407, + "y": 0.5208, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5941, + "y": 0.6725, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.416, + "y": 0.669, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6041, + "y": 0.7925, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4332, + "y": 0.7893, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 80, + "timestamp": 2.6666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0649, + "acceleration": 0.2438, + "fluidity": 0.009, + "expansion": 0.265, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0017, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5002, + "y": 0.2172, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5271, + "y": 0.2053, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4727, + "y": 0.2038, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5537, + "y": 0.2213, + "confidence": 0.729 + }, + { + "name": "right_ear", + "x": 0.4259, + "y": 0.2189, + "confidence": 0.884 + }, + { + "name": "left_shoulder", + "x": 0.5857, + "y": 0.3163, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3638, + "y": 0.3123, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6327, + "y": 0.4293, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3149, + "y": 0.4281, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6466, + "y": 0.5285, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3087, + "y": 0.5276, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.556, + "y": 0.5212, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4089, + "y": 0.5208, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5888, + "y": 0.6742, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4164, + "y": 0.6693, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5995, + "y": 0.7925, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4327, + "y": 0.7864, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 81, + "timestamp": 2.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0887, + "acceleration": 0.7135, + "fluidity": 0.003, + "expansion": 0.263, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0027, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5038, + "y": 0.2165, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5308, + "y": 0.2045, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.4761, + "y": 0.203, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5575, + "y": 0.2207, + "confidence": 0.717 + }, + { + "name": "right_ear", + "x": 0.429, + "y": 0.2183, + "confidence": 0.886 + }, + { + "name": "left_shoulder", + "x": 0.5888, + "y": 0.3171, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3674, + "y": 0.3123, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6371, + "y": 0.4316, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.316, + "y": 0.4275, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.646, + "y": 0.5291, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3116, + "y": 0.5269, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.5573, + "y": 0.523, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4115, + "y": 0.522, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.583, + "y": 0.6746, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.418, + "y": 0.67, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5942, + "y": 0.7927, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4333, + "y": 0.7859, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 82, + "timestamp": 2.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1124, + "acceleration": 0.7108, + "fluidity": 0.001, + "expansion": 0.262, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.0039, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5046, + "y": 0.2159, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5319, + "y": 0.2039, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4768, + "y": 0.2028, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5606, + "y": 0.2206, + "confidence": 0.748 + }, + { + "name": "right_ear", + "x": 0.4318, + "y": 0.219, + "confidence": 0.877 + }, + { + "name": "left_shoulder", + "x": 0.5937, + "y": 0.3172, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3727, + "y": 0.3128, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6401, + "y": 0.4317, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3196, + "y": 0.4278, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6465, + "y": 0.53, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3152, + "y": 0.5277, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5596, + "y": 0.5225, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4145, + "y": 0.5215, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5784, + "y": 0.6725, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4189, + "y": 0.6687, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5909, + "y": 0.7935, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4337, + "y": 0.788, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 83, + "timestamp": 2.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1288, + "acceleration": 0.492, + "fluidity": 0, + "expansion": 0.26, + "total_displacement": 0.0044, + "center_displacement": { + "x": 0.0043, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5073, + "y": 0.2161, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5344, + "y": 0.2039, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.4795, + "y": 0.2032, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5645, + "y": 0.2204, + "confidence": 0.764 + }, + { + "name": "right_ear", + "x": 0.4359, + "y": 0.2198, + "confidence": 0.87 + }, + { + "name": "left_shoulder", + "x": 0.5995, + "y": 0.3176, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3784, + "y": 0.3135, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6458, + "y": 0.4341, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3243, + "y": 0.4283, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6491, + "y": 0.5324, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.319, + "y": 0.5258, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5626, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4174, + "y": 0.5224, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5779, + "y": 0.6744, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4192, + "y": 0.671, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5913, + "y": 0.795, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4339, + "y": 0.7897, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 84, + "timestamp": 2.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1498, + "acceleration": 0.6292, + "fluidity": 0, + "expansion": 0.26, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0047, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5096, + "y": 0.215, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5363, + "y": 0.2029, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4825, + "y": 0.2028, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5661, + "y": 0.2196, + "confidence": 0.804 + }, + { + "name": "right_ear", + "x": 0.4404, + "y": 0.2205, + "confidence": 0.854 + }, + { + "name": "left_shoulder", + "x": 0.6059, + "y": 0.3162, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.384, + "y": 0.3136, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6492, + "y": 0.435, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3286, + "y": 0.4263, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6512, + "y": 0.5333, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.326, + "y": 0.5238, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.567, + "y": 0.5236, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4199, + "y": 0.5228, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5788, + "y": 0.6738, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4193, + "y": 0.6732, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.59, + "y": 0.7925, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4379, + "y": 0.7907, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 85, + "timestamp": 2.8333333333333335, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1755, + "acceleration": 0.7717, + "fluidity": 0, + "expansion": 0.259, + "total_displacement": 0.0059, + "center_displacement": { + "x": 0.0058, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5144, + "y": 0.2159, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5411, + "y": 0.2039, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4868, + "y": 0.2039, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5711, + "y": 0.2209, + "confidence": 0.815 + }, + { + "name": "right_ear", + "x": 0.4446, + "y": 0.2223, + "confidence": 0.849 + }, + { + "name": "left_shoulder", + "x": 0.6139, + "y": 0.3175, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3892, + "y": 0.3152, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6578, + "y": 0.4348, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3381, + "y": 0.4253, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6549, + "y": 0.5333, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3314, + "y": 0.521, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5733, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4237, + "y": 0.5235, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5823, + "y": 0.6766, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4167, + "y": 0.6767, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5915, + "y": 0.794, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4363, + "y": 0.7942, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 86, + "timestamp": 2.8666666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1884, + "acceleration": 0.389, + "fluidity": 0.003, + "expansion": 0.258, + "total_displacement": 0.0066, + "center_displacement": { + "x": 0.0064, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5199, + "y": 0.2182, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5464, + "y": 0.2059, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4923, + "y": 0.2065, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.577, + "y": 0.2223, + "confidence": 0.818 + }, + { + "name": "right_ear", + "x": 0.4498, + "y": 0.2247, + "confidence": 0.847 + }, + { + "name": "left_shoulder", + "x": 0.6216, + "y": 0.3189, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3933, + "y": 0.3176, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6645, + "y": 0.4377, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3438, + "y": 0.4285, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.6597, + "y": 0.5368, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3401, + "y": 0.5252, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.5816, + "y": 0.5253, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4294, + "y": 0.5248, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5872, + "y": 0.6776, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4131, + "y": 0.6801, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5917, + "y": 0.796, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4345, + "y": 0.7949, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 87, + "timestamp": 2.9, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1912, + "acceleration": 0.0833, + "fluidity": 0.239, + "expansion": 0.257, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0058, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.524, + "y": 0.2233, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5515, + "y": 0.2109, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4972, + "y": 0.211, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5827, + "y": 0.2268, + "confidence": 0.812 + }, + { + "name": "right_ear", + "x": 0.4539, + "y": 0.2276, + "confidence": 0.847 + }, + { + "name": "left_shoulder", + "x": 0.6269, + "y": 0.323, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3962, + "y": 0.3209, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6738, + "y": 0.4421, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3495, + "y": 0.4315, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6704, + "y": 0.5405, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3477, + "y": 0.527, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5898, + "y": 0.5274, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4362, + "y": 0.5263, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5905, + "y": 0.6781, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4074, + "y": 0.6801, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5946, + "y": 0.7967, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4338, + "y": 0.7924, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 88, + "timestamp": 2.933333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2084, + "acceleration": 0.514, + "fluidity": 0.314, + "expansion": 0.255, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0036, + "y": 0.0053 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5283, + "y": 0.2274, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5562, + "y": 0.2146, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.5008, + "y": 0.2151, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5876, + "y": 0.2307, + "confidence": 0.789 + }, + { + "name": "right_ear", + "x": 0.4553, + "y": 0.232, + "confidence": 0.855 + }, + { + "name": "left_shoulder", + "x": 0.6307, + "y": 0.329, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3958, + "y": 0.3267, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6806, + "y": 0.4496, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3511, + "y": 0.4377, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6853, + "y": 0.5474, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3624, + "y": 0.5364, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5967, + "y": 0.532, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4403, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5941, + "y": 0.6815, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4019, + "y": 0.6848, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5978, + "y": 0.7982, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4316, + "y": 0.7886, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 89, + "timestamp": 2.966666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1811, + "acceleration": -0.8183, + "fluidity": 0.105, + "expansion": 0.258, + "total_displacement": 0.008, + "center_displacement": { + "x": 0.0061, + "y": 0.0051 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5291, + "y": 0.2294, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5566, + "y": 0.217, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.5023, + "y": 0.2179, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5896, + "y": 0.2341, + "confidence": 0.803 + }, + { + "name": "right_ear", + "x": 0.4578, + "y": 0.2363, + "confidence": 0.847 + }, + { + "name": "left_shoulder", + "x": 0.6329, + "y": 0.3331, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3993, + "y": 0.3335, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6827, + "y": 0.4498, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3531, + "y": 0.4449, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7016, + "y": 0.5481, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.373, + "y": 0.5413, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.6058, + "y": 0.536, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4501, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5988, + "y": 0.6803, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.405, + "y": 0.6877, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5978, + "y": 0.7979, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4297, + "y": 0.7867, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 90, + "timestamp": 3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1103, + "acceleration": -2.1219, + "fluidity": 0.035, + "expansion": 0.264, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.003, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5362, + "y": 0.2294, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5626, + "y": 0.2178, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.5084, + "y": 0.2184, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5906, + "y": 0.2355, + "confidence": 0.761 + }, + { + "name": "right_ear", + "x": 0.4604, + "y": 0.2369, + "confidence": 0.875 + }, + { + "name": "left_shoulder", + "x": 0.6331, + "y": 0.3326, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3999, + "y": 0.3321, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6912, + "y": 0.4454, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3562, + "y": 0.4417, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7256, + "y": 0.5412, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3872, + "y": 0.54, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6117, + "y": 0.5354, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4555, + "y": 0.5359, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6061, + "y": 0.6826, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4068, + "y": 0.6876, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6019, + "y": 0.7997, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4233, + "y": 0.7877, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 91, + "timestamp": 3.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1188, + "acceleration": 0.2541, + "fluidity": 0.012, + "expansion": 0.271, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0002, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5373, + "y": 0.2279, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5635, + "y": 0.216, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5092, + "y": 0.2166, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5909, + "y": 0.2329, + "confidence": 0.718 + }, + { + "name": "right_ear", + "x": 0.4596, + "y": 0.2342, + "confidence": 0.884 + }, + { + "name": "left_shoulder", + "x": 0.631, + "y": 0.3289, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4, + "y": 0.3305, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6997, + "y": 0.438, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3557, + "y": 0.4423, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7467, + "y": 0.5324, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.4049, + "y": 0.5314, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6118, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4582, + "y": 0.5356, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6051, + "y": 0.6799, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4146, + "y": 0.6863, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6011, + "y": 0.7985, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4198, + "y": 0.7889, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 92, + "timestamp": 3.0666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1841, + "acceleration": 1.9598, + "fluidity": 0.004, + "expansion": 0.281, + "total_displacement": 0.0064, + "center_displacement": { + "x": -0.004, + "y": -0.0049 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5397, + "y": 0.2229, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5637, + "y": 0.2106, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.5094, + "y": 0.2116, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.5873, + "y": 0.2273, + "confidence": 0.727 + }, + { + "name": "right_ear", + "x": 0.4565, + "y": 0.2303, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.6279, + "y": 0.3226, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.399, + "y": 0.3267, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7062, + "y": 0.4275, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3547, + "y": 0.4389, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7649, + "y": 0.5087, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.4377, + "y": 0.5177, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6053, + "y": 0.5278, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4528, + "y": 0.5317, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6035, + "y": 0.6756, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4233, + "y": 0.6846, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5958, + "y": 0.7944, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4206, + "y": 0.7937, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 93, + "timestamp": 3.1, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1684, + "acceleration": -0.4715, + "fluidity": 0.001, + "expansion": 0.295, + "total_displacement": 0.0081, + "center_displacement": { + "x": -0.0058, + "y": -0.0057 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5371, + "y": 0.2193, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5603, + "y": 0.2076, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.5072, + "y": 0.2084, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5819, + "y": 0.2255, + "confidence": 0.728 + }, + { + "name": "right_ear", + "x": 0.4543, + "y": 0.2278, + "confidence": 0.899 + }, + { + "name": "left_shoulder", + "x": 0.6207, + "y": 0.3188, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.397, + "y": 0.3228, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7164, + "y": 0.4167, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3598, + "y": 0.4319, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.7945, + "y": 0.4824, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.466, + "y": 0.4949, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5965, + "y": 0.5201, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4476, + "y": 0.5246, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5996, + "y": 0.6698, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4311, + "y": 0.6802, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5925, + "y": 0.7929, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.4207, + "y": 0.7924, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 94, + "timestamp": 3.1333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1614, + "acceleration": -0.2115, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0001, + "y": -0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5338, + "y": 0.2165, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5543, + "y": 0.2043, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5028, + "y": 0.2063, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5756, + "y": 0.2215, + "confidence": 0.665 + }, + { + "name": "right_ear", + "x": 0.4513, + "y": 0.2266, + "confidence": 0.906 + }, + { + "name": "left_shoulder", + "x": 0.6216, + "y": 0.3148, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3985, + "y": 0.3199, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7333, + "y": 0.404, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3663, + "y": 0.4249, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8298, + "y": 0.4506, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.5118, + "y": 0.466, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5952, + "y": 0.5183, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.447, + "y": 0.5229, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5946, + "y": 0.6679, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4318, + "y": 0.6756, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5921, + "y": 0.7909, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4168, + "y": 0.7917, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 95, + "timestamp": 3.1666666666666665, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2036, + "acceleration": 1.2681, + "fluidity": 0, + "expansion": 0.332, + "total_displacement": 0.0079, + "center_displacement": { + "x": -0.0065, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5298, + "y": 0.215, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5491, + "y": 0.2021, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.4988, + "y": 0.2048, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5699, + "y": 0.2177, + "confidence": 0.609 + }, + { + "name": "right_ear", + "x": 0.4492, + "y": 0.2242, + "confidence": 0.909 + }, + { + "name": "left_shoulder", + "x": 0.6146, + "y": 0.308, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3993, + "y": 0.3135, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7333, + "y": 0.387, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3828, + "y": 0.4132, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.8554, + "y": 0.4072, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5663, + "y": 0.4284, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.5836, + "y": 0.5157, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4386, + "y": 0.5207, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5899, + "y": 0.6663, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4324, + "y": 0.6737, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5953, + "y": 0.7906, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4206, + "y": 0.7943, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 96, + "timestamp": 3.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1809, + "acceleration": -0.681, + "fluidity": 0, + "expansion": 0.351, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.0058, + "y": -0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5288, + "y": 0.2141, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5462, + "y": 0.2009, + "confidence": 0.957 + }, + { + "name": "right_eye", + "x": 0.4965, + "y": 0.204, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4425, + "y": 0.224, + "confidence": 0.921 + }, + { + "name": "left_shoulder", + "x": 0.6086, + "y": 0.3041, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3957, + "y": 0.3092, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7431, + "y": 0.3733, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3992, + "y": 0.3966, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.873, + "y": 0.3639, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.583, + "y": 0.3836, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5772, + "y": 0.5118, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4316, + "y": 0.5165, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.588, + "y": 0.665, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4335, + "y": 0.6723, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5969, + "y": 0.7917, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4243, + "y": 0.7941, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 97, + "timestamp": 3.2333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1845, + "acceleration": 0.1057, + "fluidity": 0, + "expansion": 0.367, + "total_displacement": 0.0042, + "center_displacement": { + "x": -0.0042, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.527, + "y": 0.2111, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5451, + "y": 0.1983, + "confidence": 0.934 + }, + { + "name": "right_eye", + "x": 0.4945, + "y": 0.1996, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4359, + "y": 0.221, + "confidence": 0.936 + }, + { + "name": "left_shoulder", + "x": 0.5946, + "y": 0.3025, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3924, + "y": 0.3102, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7393, + "y": 0.3607, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4417, + "y": 0.392, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8763, + "y": 0.3264, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.6196, + "y": 0.3427, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.575, + "y": 0.5125, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.434, + "y": 0.517, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5822, + "y": 0.6674, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4355, + "y": 0.6714, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6016, + "y": 0.7917, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4224, + "y": 0.7941, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 98, + "timestamp": 3.2666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1757, + "acceleration": -0.2642, + "fluidity": 0, + "expansion": 0.379, + "total_displacement": 0.0082, + "center_displacement": { + "x": -0.0073, + "y": -0.0036 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5273, + "y": 0.2098, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5374, + "y": 0.1974, + "confidence": 0.897 + }, + { + "name": "right_eye", + "x": 0.4927, + "y": 0.2014, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4271, + "y": 0.2232, + "confidence": 0.925 + }, + { + "name": "left_shoulder", + "x": 0.584, + "y": 0.2918, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3946, + "y": 0.3023, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7379, + "y": 0.3422, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4715, + "y": 0.3689, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8724, + "y": 0.2784, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.6357, + "y": 0.2937, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.564, + "y": 0.5135, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4242, + "y": 0.5201, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5969, + "y": 0.6664, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.444, + "y": 0.6774, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5993, + "y": 0.7928, + "confidence": 0.957 + }, + { + "name": "right_ankle", + "x": 0.4346, + "y": 0.8003, + "confidence": 0.963 + } + ] + } + ] + }, + { + "frame_index": 99, + "timestamp": 3.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1606, + "acceleration": -0.4507, + "fluidity": 0, + "expansion": 0.387, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0006, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.524, + "y": 0.2102, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5326, + "y": 0.1982, + "confidence": 0.881 + }, + { + "name": "right_eye", + "x": 0.4902, + "y": 0.2021, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4243, + "y": 0.2249, + "confidence": 0.924 + }, + { + "name": "left_shoulder", + "x": 0.5799, + "y": 0.2934, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4004, + "y": 0.303, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7439, + "y": 0.3289, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5186, + "y": 0.3432, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8507, + "y": 0.2528, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.6549, + "y": 0.2515, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5615, + "y": 0.5192, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4228, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.608, + "y": 0.6666, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4366, + "y": 0.681, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5964, + "y": 0.7906, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.4291, + "y": 0.8001, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 100, + "timestamp": 3.3333333333333335, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2096, + "acceleration": 1.4684, + "fluidity": 0, + "expansion": 0.394, + "total_displacement": 0.007, + "center_displacement": { + "x": -0.0069, + "y": 0.0012 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5177, + "y": 0.2109, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5245, + "y": 0.1993, + "confidence": 0.834 + }, + { + "name": "right_eye", + "x": 0.485, + "y": 0.2033, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4191, + "y": 0.2267, + "confidence": 0.916 + }, + { + "name": "left_shoulder", + "x": 0.5655, + "y": 0.292, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.403, + "y": 0.3035, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7358, + "y": 0.3178, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.5476, + "y": 0.3327, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8251, + "y": 0.2257, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.6472, + "y": 0.2253, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5506, + "y": 0.522, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.418, + "y": 0.5277, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6173, + "y": 0.6661, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.437, + "y": 0.6828, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6029, + "y": 0.7909, + "confidence": 0.958 + }, + { + "name": "right_ankle", + "x": 0.4233, + "y": 0.7986, + "confidence": 0.966 + } + ] + } + ] + }, + { + "frame_index": 101, + "timestamp": 3.3666666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2279, + "acceleration": 0.5479, + "fluidity": 0, + "expansion": 0.397, + "total_displacement": 0.0086, + "center_displacement": { + "x": -0.0083, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5131, + "y": 0.2149, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.5185, + "y": 0.2038, + "confidence": 0.737 + }, + { + "name": "right_eye", + "x": 0.4822, + "y": 0.2071, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.413, + "y": 0.2297, + "confidence": 0.9 + }, + { + "name": "left_shoulder", + "x": 0.5494, + "y": 0.2955, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3993, + "y": 0.3073, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7265, + "y": 0.3092, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.5723, + "y": 0.3221, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8085, + "y": 0.2074, + "confidence": 0.994 + }, + { + "name": "right_wrist", + "x": 0.649, + "y": 0.1994, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5411, + "y": 0.523, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4142, + "y": 0.5293, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.629, + "y": 0.6617, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4373, + "y": 0.6824, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5893, + "y": 0.7902, + "confidence": 0.949 + }, + { + "name": "right_ankle", + "x": 0.4179, + "y": 0.7983, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 102, + "timestamp": 3.4, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2114, + "acceleration": -0.495, + "fluidity": 0, + "expansion": 0.396, + "total_displacement": 0.0072, + "center_displacement": { + "x": -0.0066, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5073, + "y": 0.2184, + "confidence": 0.978 + }, + { + "name": "left_eye", + "x": 0.5106, + "y": 0.2085, + "confidence": 0.616 + }, + { + "name": "right_eye", + "x": 0.4788, + "y": 0.2114, + "confidence": 0.958 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4116, + "y": 0.2345, + "confidence": 0.895 + }, + { + "name": "left_shoulder", + "x": 0.5339, + "y": 0.2996, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4001, + "y": 0.3116, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7137, + "y": 0.3046, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.5865, + "y": 0.3166, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7868, + "y": 0.1982, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.6338, + "y": 0.1866, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5309, + "y": 0.5242, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4127, + "y": 0.5308, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6351, + "y": 0.6594, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4383, + "y": 0.6823, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5794, + "y": 0.7876, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.4108, + "y": 0.7941, + "confidence": 0.961 + } + ] + } + ] + }, + { + "frame_index": 103, + "timestamp": 3.433333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1656, + "acceleration": -1.3725, + "fluidity": 0, + "expansion": 0.392, + "total_displacement": 0.0064, + "center_displacement": { + "x": -0.0057, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5002, + "y": 0.221, + "confidence": 0.971 + }, + { + "name": "left_eye", + "x": 0.5037, + "y": 0.2121, + "confidence": 0.557 + }, + { + "name": "right_eye", + "x": 0.4721, + "y": 0.2146, + "confidence": 0.951 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4081, + "y": 0.2391, + "confidence": 0.922 + }, + { + "name": "left_shoulder", + "x": 0.5306, + "y": 0.3041, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3952, + "y": 0.3185, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7087, + "y": 0.2974, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.5964, + "y": 0.3215, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7674, + "y": 0.1944, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.615, + "y": 0.2003, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5233, + "y": 0.5243, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4056, + "y": 0.5304, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6439, + "y": 0.6618, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4177, + "y": 0.6792, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5733, + "y": 0.7856, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4065, + "y": 0.7933, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 104, + "timestamp": 3.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1186, + "acceleration": -1.41, + "fluidity": 0.248, + "expansion": 0.387, + "total_displacement": 0.0031, + "center_displacement": { + "x": -0.0025, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4955, + "y": 0.222, + "confidence": 0.962 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4669, + "y": 0.2161, + "confidence": 0.94 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4044, + "y": 0.2423, + "confidence": 0.919 + }, + { + "name": "left_shoulder", + "x": 0.5273, + "y": 0.3062, + "confidence": 0.992 + }, + { + "name": "right_shoulder", + "x": 0.3977, + "y": 0.3212, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7008, + "y": 0.2925, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.603, + "y": 0.316, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7309, + "y": 0.1867, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.6008, + "y": 0.1995, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5175, + "y": 0.5259, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4021, + "y": 0.5315, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.644, + "y": 0.6628, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4115, + "y": 0.6799, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5708, + "y": 0.787, + "confidence": 0.973 + }, + { + "name": "right_ankle", + "x": 0.4031, + "y": 0.7947, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 105, + "timestamp": 3.5, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0842, + "acceleration": -1.0311, + "fluidity": 0.331, + "expansion": 0.382, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0017, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5035, + "y": 0.2254, + "confidence": 0.947 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4738, + "y": 0.2211, + "confidence": 0.923 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4098, + "y": 0.2514, + "confidence": 0.944 + }, + { + "name": "left_shoulder", + "x": 0.523, + "y": 0.3068, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3999, + "y": 0.3284, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6926, + "y": 0.2783, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.6185, + "y": 0.3172, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7013, + "y": 0.1682, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.6214, + "y": 0.2117, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5154, + "y": 0.5267, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3996, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6522, + "y": 0.6647, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4005, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5891, + "y": 0.7986, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4046, + "y": 0.7875, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 106, + "timestamp": 3.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0562, + "acceleration": -0.8407, + "fluidity": 0.11, + "expansion": 0.377, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0009, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4975, + "y": 0.2207, + "confidence": 0.94 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4683, + "y": 0.2165, + "confidence": 0.916 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4061, + "y": 0.2481, + "confidence": 0.946 + }, + { + "name": "left_shoulder", + "x": 0.516, + "y": 0.3062, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.4005, + "y": 0.3262, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6814, + "y": 0.2821, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.6236, + "y": 0.3169, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6799, + "y": 0.1712, + "confidence": 0.965 + }, + { + "name": "right_wrist", + "x": 0.6146, + "y": 0.2141, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5146, + "y": 0.5265, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4031, + "y": 0.5332, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6511, + "y": 0.6641, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4031, + "y": 0.6777, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.59, + "y": 0.7983, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.4075, + "y": 0.7898, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 107, + "timestamp": 3.5666666666666664, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0547, + "acceleration": -0.0444, + "fluidity": 0.037, + "expansion": 0.373, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0001, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4954, + "y": 0.2182, + "confidence": 0.944 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4664, + "y": 0.2141, + "confidence": 0.914 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4045, + "y": 0.2458, + "confidence": 0.939 + }, + { + "name": "left_shoulder", + "x": 0.5139, + "y": 0.3046, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3995, + "y": 0.3243, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6768, + "y": 0.2811, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.6222, + "y": 0.3152, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6707, + "y": 0.1723, + "confidence": 0.972 + }, + { + "name": "right_wrist", + "x": 0.615, + "y": 0.2131, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5157, + "y": 0.5252, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4048, + "y": 0.532, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6492, + "y": 0.6628, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4047, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5912, + "y": 0.7961, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4087, + "y": 0.789, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 108, + "timestamp": 3.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0644, + "acceleration": 0.2902, + "fluidity": 0.012, + "expansion": 0.368, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0015, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4934, + "y": 0.2164, + "confidence": 0.945 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4642, + "y": 0.2119, + "confidence": 0.912 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4014, + "y": 0.2427, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.5118, + "y": 0.3032, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3976, + "y": 0.3207, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6706, + "y": 0.2891, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.6204, + "y": 0.3134, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6569, + "y": 0.1765, + "confidence": 0.975 + }, + { + "name": "right_wrist", + "x": 0.6156, + "y": 0.207, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5147, + "y": 0.5251, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4036, + "y": 0.5315, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6495, + "y": 0.6617, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4072, + "y": 0.6764, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5936, + "y": 0.7973, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4088, + "y": 0.7872, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 109, + "timestamp": 3.6333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0737, + "acceleration": 0.278, + "fluidity": 0.182, + "expansion": 0.36, + "total_displacement": 0.0026, + "center_displacement": { + "x": -0.002, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4907, + "y": 0.216, + "confidence": 0.946 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4615, + "y": 0.211, + "confidence": 0.911 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3994, + "y": 0.2407, + "confidence": 0.925 + }, + { + "name": "left_shoulder", + "x": 0.5092, + "y": 0.3038, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3931, + "y": 0.3179, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6537, + "y": 0.2988, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.6095, + "y": 0.316, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6592, + "y": 0.1916, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.6304, + "y": 0.2154, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5149, + "y": 0.5234, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4025, + "y": 0.5293, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6482, + "y": 0.6612, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4107, + "y": 0.6749, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5935, + "y": 0.797, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.4107, + "y": 0.7876, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 110, + "timestamp": 3.6666666666666665, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0547, + "acceleration": -0.5677, + "fluidity": 0.239, + "expansion": 0.355, + "total_displacement": 0.0027, + "center_displacement": { + "x": -0.0026, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.491, + "y": 0.2156, + "confidence": 0.946 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4621, + "y": 0.2103, + "confidence": 0.92 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3982, + "y": 0.2397, + "confidence": 0.933 + }, + { + "name": "left_shoulder", + "x": 0.5033, + "y": 0.3056, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.3882, + "y": 0.3155, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6332, + "y": 0.3079, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.607, + "y": 0.3156, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6513, + "y": 0.204, + "confidence": 0.964 + }, + { + "name": "right_wrist", + "x": 0.648, + "y": 0.2212, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5154, + "y": 0.5234, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4022, + "y": 0.5285, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6478, + "y": 0.6613, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4108, + "y": 0.6742, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5929, + "y": 0.7969, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4111, + "y": 0.7874, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 111, + "timestamp": 3.6999999999999997, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0313, + "acceleration": -0.7033, + "fluidity": 0.08, + "expansion": 0.355, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4905, + "y": 0.2151, + "confidence": 0.948 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4611, + "y": 0.21, + "confidence": 0.925 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3975, + "y": 0.2401, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.5041, + "y": 0.3057, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.3873, + "y": 0.3153, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6304, + "y": 0.3073, + "confidence": 0.98 + }, + { + "name": "right_elbow", + "x": 0.6019, + "y": 0.3144, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6486, + "y": 0.2034, + "confidence": 0.961 + }, + { + "name": "right_wrist", + "x": 0.6462, + "y": 0.2215, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5157, + "y": 0.5228, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4013, + "y": 0.5278, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6477, + "y": 0.6618, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4106, + "y": 0.6742, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5924, + "y": 0.7971, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4102, + "y": 0.7899, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 112, + "timestamp": 3.7333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0407, + "acceleration": 0.2823, + "fluidity": 0.027, + "expansion": 0.357, + "total_displacement": 0.0009, + "center_displacement": { + "x": -0.0009, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4904, + "y": 0.2162, + "confidence": 0.953 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4617, + "y": 0.2108, + "confidence": 0.929 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3969, + "y": 0.2395, + "confidence": 0.935 + }, + { + "name": "left_shoulder", + "x": 0.5036, + "y": 0.3049, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3864, + "y": 0.3154, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6424, + "y": 0.306, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.605, + "y": 0.3161, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6573, + "y": 0.2032, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.6425, + "y": 0.2233, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5145, + "y": 0.5235, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4004, + "y": 0.5288, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6469, + "y": 0.6621, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4098, + "y": 0.6758, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5928, + "y": 0.7982, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4072, + "y": 0.7888, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 113, + "timestamp": 3.7666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0427, + "acceleration": 0.0603, + "fluidity": 0.009, + "expansion": 0.361, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0019, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4899, + "y": 0.2165, + "confidence": 0.955 + }, + { + "name": "left_eye", + "x": 0.4869, + "y": 0.2074, + "confidence": 0.526 + }, + { + "name": "right_eye", + "x": 0.4611, + "y": 0.2113, + "confidence": 0.929 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3974, + "y": 0.2404, + "confidence": 0.93 + }, + { + "name": "left_shoulder", + "x": 0.5107, + "y": 0.305, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3874, + "y": 0.3171, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6629, + "y": 0.2997, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.604, + "y": 0.312, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6649, + "y": 0.1991, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.6279, + "y": 0.2173, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5156, + "y": 0.5244, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3987, + "y": 0.5297, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6473, + "y": 0.6624, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4084, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5921, + "y": 0.7977, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.4053, + "y": 0.7883, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 114, + "timestamp": 3.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0339, + "acceleration": -0.2649, + "fluidity": 0.003, + "expansion": 0.365, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0001, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4971, + "y": 0.2187, + "confidence": 0.947 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4684, + "y": 0.2131, + "confidence": 0.918 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4017, + "y": 0.2414, + "confidence": 0.927 + }, + { + "name": "left_shoulder", + "x": 0.5124, + "y": 0.3062, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.3875, + "y": 0.3166, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6661, + "y": 0.3007, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.5999, + "y": 0.3098, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6656, + "y": 0.1904, + "confidence": 0.974 + }, + { + "name": "right_wrist", + "x": 0.625, + "y": 0.2077, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5148, + "y": 0.526, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3971, + "y": 0.5307, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6472, + "y": 0.6632, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4082, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5925, + "y": 0.7976, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.4049, + "y": 0.7891, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 115, + "timestamp": 3.8333333333333335, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0358, + "acceleration": 0.0581, + "fluidity": 0.044, + "expansion": 0.367, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0008, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4959, + "y": 0.2177, + "confidence": 0.948 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4675, + "y": 0.2125, + "confidence": 0.92 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4009, + "y": 0.2413, + "confidence": 0.93 + }, + { + "name": "left_shoulder", + "x": 0.5109, + "y": 0.3047, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3866, + "y": 0.3169, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.667, + "y": 0.2977, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.5981, + "y": 0.3106, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6633, + "y": 0.1871, + "confidence": 0.976 + }, + { + "name": "right_wrist", + "x": 0.6147, + "y": 0.2061, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5142, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3969, + "y": 0.5299, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6462, + "y": 0.6628, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4073, + "y": 0.6766, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5935, + "y": 0.7982, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4047, + "y": 0.7874, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 116, + "timestamp": 3.8666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0405, + "acceleration": 0.1414, + "fluidity": 0.071, + "expansion": 0.365, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0013, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.495, + "y": 0.2175, + "confidence": 0.942 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4673, + "y": 0.2123, + "confidence": 0.907 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4012, + "y": 0.2408, + "confidence": 0.926 + }, + { + "name": "left_shoulder", + "x": 0.5084, + "y": 0.3042, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3865, + "y": 0.316, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6659, + "y": 0.3008, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.6019, + "y": 0.3114, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6619, + "y": 0.1909, + "confidence": 0.979 + }, + { + "name": "right_wrist", + "x": 0.6152, + "y": 0.2066, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5124, + "y": 0.5246, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3963, + "y": 0.5298, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6453, + "y": 0.6626, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4073, + "y": 0.6776, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5925, + "y": 0.7983, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4063, + "y": 0.7866, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 117, + "timestamp": 3.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0543, + "acceleration": 0.4138, + "fluidity": 0.037, + "expansion": 0.359, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0015, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4928, + "y": 0.2174, + "confidence": 0.955 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4645, + "y": 0.2123, + "confidence": 0.925 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3996, + "y": 0.2409, + "confidence": 0.931 + }, + { + "name": "left_shoulder", + "x": 0.5085, + "y": 0.3045, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.3855, + "y": 0.3167, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6572, + "y": 0.3059, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.5996, + "y": 0.3167, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6576, + "y": 0.197, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.6191, + "y": 0.214, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5103, + "y": 0.5241, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3931, + "y": 0.5296, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.644, + "y": 0.6627, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4072, + "y": 0.6783, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5922, + "y": 0.7994, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4074, + "y": 0.7864, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 118, + "timestamp": 3.933333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0558, + "acceleration": 0.0427, + "fluidity": 0.012, + "expansion": 0.354, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0025, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4905, + "y": 0.2165, + "confidence": 0.956 + }, + { + "name": "left_eye", + "x": 0.4873, + "y": 0.2073, + "confidence": 0.501 + }, + { + "name": "right_eye", + "x": 0.4621, + "y": 0.2115, + "confidence": 0.932 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3975, + "y": 0.2402, + "confidence": 0.938 + }, + { + "name": "left_shoulder", + "x": 0.504, + "y": 0.3046, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3827, + "y": 0.3158, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6424, + "y": 0.3118, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.5979, + "y": 0.3197, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6543, + "y": 0.2111, + "confidence": 0.972 + }, + { + "name": "right_wrist", + "x": 0.6312, + "y": 0.2267, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5087, + "y": 0.5239, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3919, + "y": 0.5296, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6431, + "y": 0.6628, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4078, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5907, + "y": 0.8005, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4072, + "y": 0.7873, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 119, + "timestamp": 3.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0409, + "acceleration": -0.4447, + "fluidity": 0.033, + "expansion": 0.352, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0001, + "y": 0.0012 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.489, + "y": 0.2178, + "confidence": 0.959 + }, + { + "name": "left_eye", + "x": 0.4862, + "y": 0.208, + "confidence": 0.519 + }, + { + "name": "right_eye", + "x": 0.4597, + "y": 0.2127, + "confidence": 0.933 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.396, + "y": 0.2414, + "confidence": 0.936 + }, + { + "name": "left_shoulder", + "x": 0.5104, + "y": 0.3056, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.3823, + "y": 0.3169, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6548, + "y": 0.3164, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.5968, + "y": 0.323, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6567, + "y": 0.2146, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.6303, + "y": 0.2275, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5078, + "y": 0.5254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3873, + "y": 0.5308, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6442, + "y": 0.6632, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4104, + "y": 0.6795, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5892, + "y": 0.8001, + "confidence": 0.973 + }, + { + "name": "right_ankle", + "x": 0.4067, + "y": 0.79, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 120, + "timestamp": 4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0651, + "acceleration": 0.7247, + "fluidity": 0.039, + "expansion": 0.352, + "total_displacement": 0.001, + "center_displacement": { + "x": 0.0005, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4851, + "y": 0.2171, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4864, + "y": 0.2068, + "confidence": 0.675 + }, + { + "name": "right_eye", + "x": 0.4533, + "y": 0.2126, + "confidence": 0.953 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3933, + "y": 0.2436, + "confidence": 0.939 + }, + { + "name": "left_shoulder", + "x": 0.5227, + "y": 0.3075, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3837, + "y": 0.3184, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.668, + "y": 0.323, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.5945, + "y": 0.3225, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6591, + "y": 0.2252, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.621, + "y": 0.2283, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5053, + "y": 0.5258, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3781, + "y": 0.5306, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6429, + "y": 0.6629, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4119, + "y": 0.6799, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5898, + "y": 0.8006, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.4083, + "y": 0.7915, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 121, + "timestamp": 4.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1125, + "acceleration": 1.4214, + "fluidity": 0.013, + "expansion": 0.355, + "total_displacement": 0.0041, + "center_displacement": { + "x": -0.0038, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4815, + "y": 0.2243, + "confidence": 0.983 + }, + { + "name": "left_eye", + "x": 0.4853, + "y": 0.2137, + "confidence": 0.762 + }, + { + "name": "right_eye", + "x": 0.4491, + "y": 0.2196, + "confidence": 0.969 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3867, + "y": 0.2485, + "confidence": 0.939 + }, + { + "name": "left_shoulder", + "x": 0.528, + "y": 0.3124, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3681, + "y": 0.3206, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6727, + "y": 0.3343, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.5583, + "y": 0.3245, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6745, + "y": 0.2362, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.6104, + "y": 0.2302, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5086, + "y": 0.5256, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.37, + "y": 0.5301, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6406, + "y": 0.6637, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4116, + "y": 0.6811, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5883, + "y": 0.8029, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4068, + "y": 0.7918, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 122, + "timestamp": 4.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1026, + "acceleration": -0.2969, + "fluidity": 0.004, + "expansion": 0.361, + "total_displacement": 0.0049, + "center_displacement": { + "x": 0.0038, + "y": 0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4752, + "y": 0.2324, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4855, + "y": 0.2205, + "confidence": 0.895 + }, + { + "name": "right_eye", + "x": 0.4408, + "y": 0.2279, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3867, + "y": 0.2565, + "confidence": 0.927 + }, + { + "name": "left_shoulder", + "x": 0.5536, + "y": 0.3207, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3586, + "y": 0.3234, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6829, + "y": 0.3454, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4885, + "y": 0.3186, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.683, + "y": 0.2488, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5857, + "y": 0.2321, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.517, + "y": 0.5271, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3609, + "y": 0.5301, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6382, + "y": 0.665, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4174, + "y": 0.6812, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5919, + "y": 0.8017, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4065, + "y": 0.7923, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 123, + "timestamp": 4.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.105, + "acceleration": 0.0728, + "fluidity": 0.001, + "expansion": 0.37, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0004, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4589, + "y": 0.2362, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4716, + "y": 0.2231, + "confidence": 0.941 + }, + { + "name": "right_eye", + "x": 0.4261, + "y": 0.2308, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.4876, + "y": 0.2391, + "confidence": 0.602 + }, + { + "name": "right_ear", + "x": 0.3827, + "y": 0.2564, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.5574, + "y": 0.3256, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3533, + "y": 0.3217, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6866, + "y": 0.3664, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.4254, + "y": 0.3223, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6883, + "y": 0.2662, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5111, + "y": 0.2426, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.5173, + "y": 0.5292, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3605, + "y": 0.5307, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6371, + "y": 0.6648, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4202, + "y": 0.6815, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5964, + "y": 0.8024, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4041, + "y": 0.7915, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 124, + "timestamp": 4.133333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2297, + "acceleration": 3.742, + "fluidity": 0, + "expansion": 0.38, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0011, + "y": 0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4545, + "y": 0.2377, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4683, + "y": 0.2242, + "confidence": 0.956 + }, + { + "name": "right_eye", + "x": 0.4211, + "y": 0.2323, + "confidence": 0.962 + }, + { + "name": "left_ear", + "x": 0.4898, + "y": 0.2423, + "confidence": 0.723 + }, + { + "name": "right_ear", + "x": 0.3814, + "y": 0.2599, + "confidence": 0.855 + }, + { + "name": "left_shoulder", + "x": 0.5623, + "y": 0.3379, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3522, + "y": 0.3268, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.684, + "y": 0.3921, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3766, + "y": 0.3189, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6905, + "y": 0.3013, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4303, + "y": 0.2428, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.5176, + "y": 0.532, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.361, + "y": 0.5321, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6425, + "y": 0.6633, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.417, + "y": 0.6813, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6032, + "y": 0.7991, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4038, + "y": 0.7884, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 125, + "timestamp": 4.166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2422, + "acceleration": 0.3744, + "fluidity": 0, + "expansion": 0.39, + "total_displacement": 0.014, + "center_displacement": { + "x": 0.0135, + "y": 0.0034 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4373, + "y": 0.2386, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4546, + "y": 0.2234, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4104, + "y": 0.2324, + "confidence": 0.927 + }, + { + "name": "left_ear", + "x": 0.5026, + "y": 0.2387, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0.3964, + "y": 0.2585, + "confidence": 0.642 + }, + { + "name": "left_shoulder", + "x": 0.587, + "y": 0.3419, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3655, + "y": 0.3279, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6753, + "y": 0.4196, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3253, + "y": 0.3174, + "confidence": 0.96 + }, + { + "name": "left_wrist", + "x": 0.6935, + "y": 0.3488, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.375, + "y": 0.2264, + "confidence": 0.91 + }, + { + "name": "left_hip", + "x": 0.5254, + "y": 0.5364, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3693, + "y": 0.5363, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6475, + "y": 0.6642, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4091, + "y": 0.6817, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6064, + "y": 0.7946, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.399, + "y": 0.7855, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 126, + "timestamp": 4.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1452, + "acceleration": -2.9099, + "fluidity": 0, + "expansion": 0.398, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.002, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4257, + "y": 0.236, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4428, + "y": 0.2188, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.3985, + "y": 0.2299, + "confidence": 0.907 + }, + { + "name": "left_ear", + "x": 0.5006, + "y": 0.234, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0.3911, + "y": 0.2582, + "confidence": 0.549 + }, + { + "name": "left_shoulder", + "x": 0.595, + "y": 0.3459, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3638, + "y": 0.3274, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6771, + "y": 0.4274, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.294, + "y": 0.2998, + "confidence": 0.953 + }, + { + "name": "left_wrist", + "x": 0.6831, + "y": 0.3517, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.352, + "y": 0.2074, + "confidence": 0.894 + }, + { + "name": "left_hip", + "x": 0.5282, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3681, + "y": 0.5374, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6519, + "y": 0.6643, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4067, + "y": 0.6838, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6166, + "y": 0.7955, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.401, + "y": 0.782, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 127, + "timestamp": 4.233333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1563, + "acceleration": 0.331, + "fluidity": 0, + "expansion": 0.405, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0025, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4203, + "y": 0.2306, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4405, + "y": 0.2157, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.3966, + "y": 0.2229, + "confidence": 0.906 + }, + { + "name": "left_ear", + "x": 0.5038, + "y": 0.2338, + "confidence": 0.976 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.5963, + "y": 0.3447, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3626, + "y": 0.3229, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6669, + "y": 0.4274, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2696, + "y": 0.2851, + "confidence": 0.943 + }, + { + "name": "left_wrist", + "x": 0.6723, + "y": 0.4208, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.3048, + "y": 0.197, + "confidence": 0.881 + }, + { + "name": "left_hip", + "x": 0.5334, + "y": 0.536, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3729, + "y": 0.534, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6555, + "y": 0.669, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4037, + "y": 0.6792, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6266, + "y": 0.7909, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4059, + "y": 0.7819, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 128, + "timestamp": 4.266666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2015, + "acceleration": 1.3589, + "fluidity": 0, + "expansion": 0.413, + "total_displacement": 0.0069, + "center_displacement": { + "x": 0.0048, + "y": -0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4194, + "y": 0.2255, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4407, + "y": 0.2115, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.399, + "y": 0.2162, + "confidence": 0.89 + }, + { + "name": "left_ear", + "x": 0.5075, + "y": 0.2296, + "confidence": 0.98 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.5985, + "y": 0.3371, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3697, + "y": 0.3162, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.667, + "y": 0.4157, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.257, + "y": 0.2785, + "confidence": 0.945 + }, + { + "name": "left_wrist", + "x": 0.6775, + "y": 0.452, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.279, + "y": 0.1918, + "confidence": 0.893 + }, + { + "name": "left_hip", + "x": 0.5359, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3805, + "y": 0.531, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6484, + "y": 0.671, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4042, + "y": 0.6736, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6393, + "y": 0.7889, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.41, + "y": 0.7845, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 129, + "timestamp": 4.3, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2109, + "acceleration": 0.28, + "fluidity": 0, + "expansion": 0.424, + "total_displacement": 0.008, + "center_displacement": { + "x": 0.0061, + "y": -0.0052 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4193, + "y": 0.2214, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4419, + "y": 0.2099, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.405, + "y": 0.2117, + "confidence": 0.835 + }, + { + "name": "left_ear", + "x": 0.5104, + "y": 0.231, + "confidence": 0.981 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6012, + "y": 0.3324, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3763, + "y": 0.3091, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6761, + "y": 0.4173, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.2509, + "y": 0.2746, + "confidence": 0.947 + }, + { + "name": "left_wrist", + "x": 0.6736, + "y": 0.4806, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2574, + "y": 0.1906, + "confidence": 0.899 + }, + { + "name": "left_hip", + "x": 0.5425, + "y": 0.5294, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3891, + "y": 0.5262, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6406, + "y": 0.6733, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4059, + "y": 0.6758, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.665, + "y": 0.7897, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4126, + "y": 0.7891, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 130, + "timestamp": 4.333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1945, + "acceleration": -0.4922, + "fluidity": 0, + "expansion": 0.434, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.0062, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4192, + "y": 0.2222, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4439, + "y": 0.2093, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4082, + "y": 0.2114, + "confidence": 0.869 + }, + { + "name": "left_ear", + "x": 0.52, + "y": 0.2268, + "confidence": 0.973 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6029, + "y": 0.3259, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3855, + "y": 0.31, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6909, + "y": 0.4141, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2375, + "y": 0.2856, + "confidence": 0.974 + }, + { + "name": "left_wrist", + "x": 0.673, + "y": 0.4929, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2231, + "y": 0.1859, + "confidence": 0.961 + }, + { + "name": "left_hip", + "x": 0.5448, + "y": 0.5284, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4006, + "y": 0.5268, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.628, + "y": 0.6753, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4087, + "y": 0.677, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6806, + "y": 0.7976, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4142, + "y": 0.7898, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 131, + "timestamp": 4.366666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2103, + "acceleration": 0.4755, + "fluidity": 0, + "expansion": 0.436, + "total_displacement": 0.006, + "center_displacement": { + "x": 0.006, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4205, + "y": 0.221, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4458, + "y": 0.2091, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.413, + "y": 0.21, + "confidence": 0.839 + }, + { + "name": "left_ear", + "x": 0.5228, + "y": 0.2276, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.608, + "y": 0.3244, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3911, + "y": 0.3096, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7085, + "y": 0.4141, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2356, + "y": 0.2916, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.673, + "y": 0.5031, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2104, + "y": 0.1901, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.5507, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4081, + "y": 0.5283, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6211, + "y": 0.6816, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.412, + "y": 0.6774, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6859, + "y": 0.802, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4142, + "y": 0.7871, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 132, + "timestamp": 4.4, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2432, + "acceleration": 0.9866, + "fluidity": 0, + "expansion": 0.435, + "total_displacement": 0.0085, + "center_displacement": { + "x": 0.0085, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4242, + "y": 0.2221, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4502, + "y": 0.2093, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.4177, + "y": 0.2109, + "confidence": 0.827 + }, + { + "name": "left_ear", + "x": 0.5277, + "y": 0.2255, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6178, + "y": 0.3235, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3972, + "y": 0.3107, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7271, + "y": 0.4143, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2471, + "y": 0.296, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6761, + "y": 0.5026, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.1984, + "y": 0.1912, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.5585, + "y": 0.5302, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4183, + "y": 0.5263, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6193, + "y": 0.6794, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4151, + "y": 0.6765, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6671, + "y": 0.8, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4375, + "y": 0.7852, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 133, + "timestamp": 4.433333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2546, + "acceleration": 0.3427, + "fluidity": 0, + "expansion": 0.432, + "total_displacement": 0.0088, + "center_displacement": { + "x": 0.0087, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4274, + "y": 0.2238, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4522, + "y": 0.2113, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.4216, + "y": 0.2123, + "confidence": 0.777 + }, + { + "name": "left_ear", + "x": 0.5308, + "y": 0.2283, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6262, + "y": 0.3209, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4094, + "y": 0.3158, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7431, + "y": 0.4072, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.2497, + "y": 0.3179, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6902, + "y": 0.5041, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.202, + "y": 0.2149, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5652, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4257, + "y": 0.5281, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6113, + "y": 0.6889, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4164, + "y": 0.6753, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6803, + "y": 0.8031, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4134, + "y": 0.7848, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 134, + "timestamp": 4.466666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2883, + "acceleration": 1.0107, + "fluidity": 0, + "expansion": 0.426, + "total_displacement": 0.0085, + "center_displacement": { + "x": 0.0085, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.431, + "y": 0.2254, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4566, + "y": 0.2127, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4276, + "y": 0.2141, + "confidence": 0.778 + }, + { + "name": "left_ear", + "x": 0.5363, + "y": 0.2275, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6323, + "y": 0.3197, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4131, + "y": 0.319, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7533, + "y": 0.407, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2587, + "y": 0.335, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6946, + "y": 0.5004, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2002, + "y": 0.2313, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.576, + "y": 0.531, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4394, + "y": 0.5283, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6063, + "y": 0.6854, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4212, + "y": 0.6768, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6497, + "y": 0.8074, + "confidence": 0.973 + }, + { + "name": "right_ankle", + "x": 0.4292, + "y": 0.7901, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 135, + "timestamp": 4.5, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2876, + "acceleration": -0.0231, + "fluidity": 0, + "expansion": 0.421, + "total_displacement": 0.0118, + "center_displacement": { + "x": 0.0112, + "y": 0.0038 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4347, + "y": 0.2274, + "confidence": 0.983 + }, + { + "name": "left_eye", + "x": 0.4594, + "y": 0.2158, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4332, + "y": 0.2162, + "confidence": 0.673 + }, + { + "name": "left_ear", + "x": 0.54, + "y": 0.2329, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.642, + "y": 0.3189, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4289, + "y": 0.3256, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7705, + "y": 0.4033, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2863, + "y": 0.3636, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7269, + "y": 0.5004, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2093, + "y": 0.2673, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5856, + "y": 0.5355, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4488, + "y": 0.533, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6012, + "y": 0.693, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.414, + "y": 0.6774, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6654, + "y": 0.8041, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.412, + "y": 0.789, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 136, + "timestamp": 4.533333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2961, + "acceleration": 0.2562, + "fluidity": 0, + "expansion": 0.412, + "total_displacement": 0.0073, + "center_displacement": { + "x": 0.0067, + "y": 0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4406, + "y": 0.2306, + "confidence": 0.98 + }, + { + "name": "left_eye", + "x": 0.4649, + "y": 0.2191, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.4382, + "y": 0.2194, + "confidence": 0.645 + }, + { + "name": "left_ear", + "x": 0.5435, + "y": 0.2356, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6475, + "y": 0.3176, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4378, + "y": 0.3325, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7841, + "y": 0.4, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3177, + "y": 0.39, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7494, + "y": 0.5009, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2272, + "y": 0.2986, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5914, + "y": 0.5379, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4554, + "y": 0.5373, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5991, + "y": 0.6968, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4105, + "y": 0.6803, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6666, + "y": 0.7999, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4122, + "y": 0.7902, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 137, + "timestamp": 4.566666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3803, + "acceleration": 2.5257, + "fluidity": 0, + "expansion": 0.405, + "total_displacement": 0.0127, + "center_displacement": { + "x": 0.0125, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4481, + "y": 0.2317, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.4731, + "y": 0.2197, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4445, + "y": 0.219, + "confidence": 0.74 + }, + { + "name": "left_ear", + "x": 0.5518, + "y": 0.2371, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6554, + "y": 0.3214, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4537, + "y": 0.3356, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7875, + "y": 0.4084, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3632, + "y": 0.4121, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7862, + "y": 0.5002, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2496, + "y": 0.3449, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6038, + "y": 0.539, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4694, + "y": 0.5365, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5963, + "y": 0.696, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4111, + "y": 0.6803, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6684, + "y": 0.8, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4229, + "y": 0.7975, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 138, + "timestamp": 4.6, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4042, + "acceleration": 0.717, + "fluidity": 0, + "expansion": 0.401, + "total_displacement": 0.0155, + "center_displacement": { + "x": 0.0153, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4546, + "y": 0.2389, + "confidence": 0.985 + }, + { + "name": "left_eye", + "x": 0.4802, + "y": 0.2267, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4519, + "y": 0.2255, + "confidence": 0.704 + }, + { + "name": "left_ear", + "x": 0.5604, + "y": 0.2437, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6666, + "y": 0.3253, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4664, + "y": 0.3423, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7976, + "y": 0.4115, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3976, + "y": 0.4354, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.8358, + "y": 0.5028, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2681, + "y": 0.3838, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6224, + "y": 0.5396, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.488, + "y": 0.536, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6, + "y": 0.6946, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3994, + "y": 0.6729, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6746, + "y": 0.8011, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4326, + "y": 0.795, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 139, + "timestamp": 4.633333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3042, + "acceleration": -3.0002, + "fluidity": 0, + "expansion": 0.4, + "total_displacement": 0.0123, + "center_displacement": { + "x": 0.0086, + "y": 0.0087 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4687, + "y": 0.2466, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4974, + "y": 0.2339, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.4603, + "y": 0.2312, + "confidence": 0.826 + }, + { + "name": "left_ear", + "x": 0.5709, + "y": 0.2518, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6727, + "y": 0.3352, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4698, + "y": 0.3513, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.816, + "y": 0.4123, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4333, + "y": 0.453, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.8835, + "y": 0.489, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3092, + "y": 0.4275, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6358, + "y": 0.548, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4994, + "y": 0.5437, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6075, + "y": 0.6949, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3918, + "y": 0.6734, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6741, + "y": 0.798, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.438, + "y": 0.8014, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 140, + "timestamp": 4.666666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2335, + "acceleration": -2.1213, + "fluidity": 0, + "expansion": 0.405, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0033, + "y": 0.0033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.483, + "y": 0.2495, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5146, + "y": 0.2376, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.47, + "y": 0.2336, + "confidence": 0.915 + }, + { + "name": "left_ear", + "x": 0.5811, + "y": 0.2573, + "confidence": 0.939 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6703, + "y": 0.3397, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4609, + "y": 0.3547, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8117, + "y": 0.4037, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4405, + "y": 0.4648, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.9296, + "y": 0.4565, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3422, + "y": 0.455, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.6512, + "y": 0.5507, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5085, + "y": 0.5463, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6204, + "y": 0.699, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3922, + "y": 0.6731, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6798, + "y": 0.8012, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.4399, + "y": 0.801, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 141, + "timestamp": 4.7, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2012, + "acceleration": -0.9681, + "fluidity": 0, + "expansion": 0.412, + "total_displacement": 0.0085, + "center_displacement": { + "x": 0.0082, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4985, + "y": 0.2525, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5292, + "y": 0.2404, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.4835, + "y": 0.2366, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0.5911, + "y": 0.2598, + "confidence": 0.938 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6854, + "y": 0.3463, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4618, + "y": 0.3551, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8416, + "y": 0.4084, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4447, + "y": 0.465, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.9645, + "y": 0.4244, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3733, + "y": 0.4688, + "confidence": 0.969 + }, + { + "name": "left_hip", + "x": 0.6641, + "y": 0.5533, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5122, + "y": 0.5466, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6357, + "y": 0.7028, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3903, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6821, + "y": 0.8041, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4386, + "y": 0.7983, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 142, + "timestamp": 4.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1677, + "acceleration": -1.0047, + "fluidity": 0, + "expansion": 0.421, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0032, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5191, + "y": 0.252, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5497, + "y": 0.239, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5002, + "y": 0.2363, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.6029, + "y": 0.257, + "confidence": 0.928 + }, + { + "name": "right_ear", + "x": 0.4801, + "y": 0.2526, + "confidence": 0.644 + }, + { + "name": "left_shoulder", + "x": 0.6901, + "y": 0.3438, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4568, + "y": 0.3547, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8568, + "y": 0.3995, + "confidence": 0.98 + }, + { + "name": "right_elbow", + "x": 0.4457, + "y": 0.465, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.9787, + "y": 0.3734, + "confidence": 0.958 + }, + { + "name": "right_wrist", + "x": 0.4052, + "y": 0.4657, + "confidence": 0.949 + }, + { + "name": "left_hip", + "x": 0.6739, + "y": 0.5493, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5154, + "y": 0.545, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6516, + "y": 0.7011, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3928, + "y": 0.6841, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6865, + "y": 0.8057, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4385, + "y": 0.7978, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 143, + "timestamp": 4.766666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1604, + "acceleration": -0.2202, + "fluidity": 0, + "expansion": 0.428, + "total_displacement": 0.0062, + "center_displacement": { + "x": -0.0004, + "y": -0.0062 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5402, + "y": 0.2478, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.57, + "y": 0.2358, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5164, + "y": 0.2333, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.6103, + "y": 0.2556, + "confidence": 0.889 + }, + { + "name": "right_ear", + "x": 0.4835, + "y": 0.2514, + "confidence": 0.796 + }, + { + "name": "left_shoulder", + "x": 0.6882, + "y": 0.3405, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4545, + "y": 0.3493, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8546, + "y": 0.388, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.4503, + "y": 0.4577, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.9754, + "y": 0.334, + "confidence": 0.968 + }, + { + "name": "right_wrist", + "x": 0.4251, + "y": 0.4664, + "confidence": 0.96 + }, + { + "name": "left_hip", + "x": 0.6767, + "y": 0.5412, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5154, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.656, + "y": 0.6971, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.399, + "y": 0.6838, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6866, + "y": 0.8054, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.426, + "y": 0.7993, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 144, + "timestamp": 4.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1686, + "acceleration": 0.2472, + "fluidity": 0, + "expansion": 0.434, + "total_displacement": 0.0042, + "center_displacement": { + "x": -0.0011, + "y": -0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5589, + "y": 0.2418, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5843, + "y": 0.2285, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5304, + "y": 0.228, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.6133, + "y": 0.245, + "confidence": 0.838 + }, + { + "name": "right_ear", + "x": 0.4863, + "y": 0.2459, + "confidence": 0.872 + }, + { + "name": "left_shoulder", + "x": 0.6892, + "y": 0.3326, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4515, + "y": 0.3425, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8656, + "y": 0.3748, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.43, + "y": 0.4471, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.9684, + "y": 0.3, + "confidence": 0.96 + }, + { + "name": "right_wrist", + "x": 0.425, + "y": 0.465, + "confidence": 0.956 + }, + { + "name": "left_hip", + "x": 0.676, + "y": 0.5396, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5137, + "y": 0.5371, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.659, + "y": 0.6968, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4101, + "y": 0.6909, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6857, + "y": 0.804, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4188, + "y": 0.7988, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 145, + "timestamp": 4.833333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1827, + "acceleration": 0.4222, + "fluidity": 0, + "expansion": 0.435, + "total_displacement": 0.0073, + "center_displacement": { + "x": -0.0025, + "y": -0.0069 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5712, + "y": 0.2341, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5948, + "y": 0.2216, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.5432, + "y": 0.2202, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0.6169, + "y": 0.238, + "confidence": 0.722 + }, + { + "name": "right_ear", + "x": 0.4922, + "y": 0.2368, + "confidence": 0.906 + }, + { + "name": "left_shoulder", + "x": 0.6836, + "y": 0.3251, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4488, + "y": 0.3326, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8644, + "y": 0.3597, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.4174, + "y": 0.436, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.9539, + "y": 0.2767, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.4232, + "y": 0.4714, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6735, + "y": 0.5341, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5144, + "y": 0.5323, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6638, + "y": 0.6893, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4286, + "y": 0.6884, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6841, + "y": 0.8006, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4125, + "y": 0.7984, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 146, + "timestamp": 4.866666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1802, + "acceleration": -0.0738, + "fluidity": 0, + "expansion": 0.433, + "total_displacement": 0.0053, + "center_displacement": { + "x": -0.0044, + "y": -0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5831, + "y": 0.2281, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.605, + "y": 0.216, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5551, + "y": 0.2143, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0.6225, + "y": 0.2327, + "confidence": 0.599 + }, + { + "name": "right_ear", + "x": 0.4984, + "y": 0.2308, + "confidence": 0.927 + }, + { + "name": "left_shoulder", + "x": 0.6793, + "y": 0.3208, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4449, + "y": 0.3279, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8574, + "y": 0.3493, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.4029, + "y": 0.4343, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.9455, + "y": 0.2616, + "confidence": 0.976 + }, + { + "name": "right_wrist", + "x": 0.4468, + "y": 0.4839, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6682, + "y": 0.5317, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5104, + "y": 0.5318, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6664, + "y": 0.6829, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4432, + "y": 0.6876, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6815, + "y": 0.7963, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.409, + "y": 0.797, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 147, + "timestamp": 4.9, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1766, + "acceleration": -0.1094, + "fluidity": 0, + "expansion": 0.43, + "total_displacement": 0.0066, + "center_displacement": { + "x": -0.0061, + "y": -0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5968, + "y": 0.2223, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6143, + "y": 0.2109, + "confidence": 0.954 + }, + { + "name": "right_eye", + "x": 0.5683, + "y": 0.209, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.502, + "y": 0.2265, + "confidence": 0.942 + }, + { + "name": "left_shoulder", + "x": 0.6704, + "y": 0.3175, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4398, + "y": 0.3243, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8493, + "y": 0.3459, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3842, + "y": 0.4328, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.9329, + "y": 0.2522, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.4527, + "y": 0.4833, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.6612, + "y": 0.5287, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5072, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6673, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4623, + "y": 0.6886, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6791, + "y": 0.7941, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.405, + "y": 0.7979, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 148, + "timestamp": 4.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1569, + "acceleration": -0.5896, + "fluidity": 0, + "expansion": 0.424, + "total_displacement": 0.005, + "center_displacement": { + "x": -0.005, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6063, + "y": 0.2207, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6172, + "y": 0.2089, + "confidence": 0.911 + }, + { + "name": "right_eye", + "x": 0.5766, + "y": 0.2083, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5027, + "y": 0.2259, + "confidence": 0.951 + }, + { + "name": "left_shoulder", + "x": 0.6633, + "y": 0.3147, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4347, + "y": 0.3227, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8374, + "y": 0.3442, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3643, + "y": 0.4314, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.9179, + "y": 0.2507, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.4528, + "y": 0.4839, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.6559, + "y": 0.528, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5047, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6703, + "y": 0.6738, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4757, + "y": 0.6897, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6773, + "y": 0.7922, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4086, + "y": 0.7985, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 149, + "timestamp": 4.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1597, + "acceleration": 0.0843, + "fluidity": 0, + "expansion": 0.419, + "total_displacement": 0.0048, + "center_displacement": { + "x": -0.0043, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6106, + "y": 0.2228, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6191, + "y": 0.2112, + "confidence": 0.876 + }, + { + "name": "right_eye", + "x": 0.5815, + "y": 0.2106, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5058, + "y": 0.2277, + "confidence": 0.955 + }, + { + "name": "left_shoulder", + "x": 0.658, + "y": 0.3166, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4318, + "y": 0.3229, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8273, + "y": 0.3462, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3471, + "y": 0.4298, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.9041, + "y": 0.2512, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.4561, + "y": 0.4852, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.65, + "y": 0.5305, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5017, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6681, + "y": 0.6711, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4841, + "y": 0.6913, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6767, + "y": 0.7899, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4102, + "y": 0.8013, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 150, + "timestamp": 5, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1673, + "acceleration": 0.2276, + "fluidity": 0, + "expansion": 0.412, + "total_displacement": 0.006, + "center_displacement": { + "x": -0.0059, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6146, + "y": 0.2243, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.6197, + "y": 0.213, + "confidence": 0.789 + }, + { + "name": "right_eye", + "x": 0.5868, + "y": 0.2128, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5079, + "y": 0.2293, + "confidence": 0.96 + }, + { + "name": "left_shoulder", + "x": 0.6484, + "y": 0.317, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4267, + "y": 0.322, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8143, + "y": 0.3536, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3333, + "y": 0.4302, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8919, + "y": 0.2606, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4517, + "y": 0.4868, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6436, + "y": 0.5318, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4989, + "y": 0.5388, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.662, + "y": 0.6704, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4877, + "y": 0.694, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.673, + "y": 0.7934, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4106, + "y": 0.8022, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 151, + "timestamp": 5.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1779, + "acceleration": 0.3178, + "fluidity": 0, + "expansion": 0.404, + "total_displacement": 0.0054, + "center_displacement": { + "x": -0.0046, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6212, + "y": 0.2269, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.6224, + "y": 0.2157, + "confidence": 0.687 + }, + { + "name": "right_eye", + "x": 0.5944, + "y": 0.2154, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5118, + "y": 0.2312, + "confidence": 0.963 + }, + { + "name": "left_shoulder", + "x": 0.6403, + "y": 0.3205, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4242, + "y": 0.3232, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7982, + "y": 0.3601, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3179, + "y": 0.4279, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8715, + "y": 0.2721, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.4458, + "y": 0.4893, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6376, + "y": 0.5349, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4972, + "y": 0.5424, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6599, + "y": 0.6709, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4872, + "y": 0.6968, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.673, + "y": 0.7939, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4083, + "y": 0.8038, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 152, + "timestamp": 5.066666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2356, + "acceleration": 1.7295, + "fluidity": 0, + "expansion": 0.396, + "total_displacement": 0.0068, + "center_displacement": { + "x": -0.0062, + "y": 0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6221, + "y": 0.2308, + "confidence": 0.983 + }, + { + "name": "left_eye", + "x": 0.6206, + "y": 0.2202, + "confidence": 0.571 + }, + { + "name": "right_eye", + "x": 0.5965, + "y": 0.2196, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.512, + "y": 0.2356, + "confidence": 0.963 + }, + { + "name": "left_shoulder", + "x": 0.6302, + "y": 0.3275, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.42, + "y": 0.3251, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7749, + "y": 0.3751, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3068, + "y": 0.4261, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8473, + "y": 0.2892, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.431, + "y": 0.4924, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6308, + "y": 0.5361, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4933, + "y": 0.5429, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.661, + "y": 0.671, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.484, + "y": 0.6979, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6743, + "y": 0.7944, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4054, + "y": 0.8047, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 153, + "timestamp": 5.1, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2988, + "acceleration": 1.8962, + "fluidity": 0, + "expansion": 0.389, + "total_displacement": 0.0108, + "center_displacement": { + "x": -0.0108, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6188, + "y": 0.2342, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.595, + "y": 0.2227, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5094, + "y": 0.2364, + "confidence": 0.96 + }, + { + "name": "left_shoulder", + "x": 0.6124, + "y": 0.3302, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4133, + "y": 0.3242, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7384, + "y": 0.3903, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2971, + "y": 0.4263, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8263, + "y": 0.3094, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4036, + "y": 0.5003, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6187, + "y": 0.5363, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4865, + "y": 0.5435, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6676, + "y": 0.6701, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4786, + "y": 0.7019, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6744, + "y": 0.7967, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.3993, + "y": 0.8068, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 154, + "timestamp": 5.133333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3062, + "acceleration": 0.2243, + "fluidity": 0, + "expansion": 0.38, + "total_displacement": 0.0112, + "center_displacement": { + "x": -0.0105, + "y": 0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6163, + "y": 0.2374, + "confidence": 0.981 + }, + { + "name": "left_eye", + "x": 0.6147, + "y": 0.2262, + "confidence": 0.546 + }, + { + "name": "right_eye", + "x": 0.5914, + "y": 0.2256, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5053, + "y": 0.2397, + "confidence": 0.958 + }, + { + "name": "left_shoulder", + "x": 0.6018, + "y": 0.3369, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4094, + "y": 0.3284, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7036, + "y": 0.4064, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2818, + "y": 0.4277, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8074, + "y": 0.3346, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.3673, + "y": 0.512, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6033, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4747, + "y": 0.5462, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.679, + "y": 0.6668, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4769, + "y": 0.7027, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6721, + "y": 0.7949, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.3927, + "y": 0.8101, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 155, + "timestamp": 5.166666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.295, + "acceleration": -0.3363, + "fluidity": 0, + "expansion": 0.374, + "total_displacement": 0.0095, + "center_displacement": { + "x": -0.0086, + "y": 0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6119, + "y": 0.2373, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.6106, + "y": 0.2257, + "confidence": 0.64 + }, + { + "name": "right_eye", + "x": 0.5869, + "y": 0.2255, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5027, + "y": 0.2399, + "confidence": 0.972 + }, + { + "name": "left_shoulder", + "x": 0.5941, + "y": 0.3445, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4029, + "y": 0.3305, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6636, + "y": 0.426, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.2715, + "y": 0.4271, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.781, + "y": 0.3667, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.336, + "y": 0.5205, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.5928, + "y": 0.5415, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4647, + "y": 0.5489, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6842, + "y": 0.6676, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4722, + "y": 0.7045, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.658, + "y": 0.7952, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.397, + "y": 0.809, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 156, + "timestamp": 5.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.304, + "acceleration": 0.2686, + "fluidity": 0, + "expansion": 0.376, + "total_displacement": 0.0098, + "center_displacement": { + "x": -0.0098, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6023, + "y": 0.2381, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.6044, + "y": 0.2266, + "confidence": 0.755 + }, + { + "name": "right_eye", + "x": 0.575, + "y": 0.2271, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4944, + "y": 0.2427, + "confidence": 0.971 + }, + { + "name": "left_shoulder", + "x": 0.5897, + "y": 0.3486, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3974, + "y": 0.3287, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6337, + "y": 0.4378, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2471, + "y": 0.4146, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.7657, + "y": 0.3878, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2875, + "y": 0.5136, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5791, + "y": 0.5421, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4491, + "y": 0.5481, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6908, + "y": 0.6673, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4718, + "y": 0.7027, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.659, + "y": 0.7955, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.3918, + "y": 0.8105, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 157, + "timestamp": 5.233333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2555, + "acceleration": -1.456, + "fluidity": 0, + "expansion": 0.381, + "total_displacement": 0.0107, + "center_displacement": { + "x": -0.0107, + "y": 0.0012 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5934, + "y": 0.2404, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5996, + "y": 0.2284, + "confidence": 0.856 + }, + { + "name": "right_eye", + "x": 0.5646, + "y": 0.2283, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4863, + "y": 0.2429, + "confidence": 0.966 + }, + { + "name": "left_shoulder", + "x": 0.5881, + "y": 0.352, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3895, + "y": 0.326, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6227, + "y": 0.4443, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2297, + "y": 0.3996, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.752, + "y": 0.4076, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2479, + "y": 0.5031, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5647, + "y": 0.5452, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4303, + "y": 0.549, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6927, + "y": 0.6667, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4661, + "y": 0.6992, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6602, + "y": 0.7948, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.3903, + "y": 0.8105, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 158, + "timestamp": 5.266666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2124, + "acceleration": -1.292, + "fluidity": 0, + "expansion": 0.386, + "total_displacement": 0.0047, + "center_displacement": { + "x": -0.0038, + "y": -0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.568, + "y": 0.239, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5815, + "y": 0.2262, + "confidence": 0.937 + }, + { + "name": "right_eye", + "x": 0.5378, + "y": 0.2272, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4707, + "y": 0.242, + "confidence": 0.954 + }, + { + "name": "left_shoulder", + "x": 0.5957, + "y": 0.3499, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3797, + "y": 0.3223, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6248, + "y": 0.4461, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2127, + "y": 0.3815, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7397, + "y": 0.4318, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2126, + "y": 0.4808, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.5641, + "y": 0.5432, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4178, + "y": 0.546, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6949, + "y": 0.6649, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4493, + "y": 0.6968, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6639, + "y": 0.793, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.3864, + "y": 0.8102, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 159, + "timestamp": 5.3, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2069, + "acceleration": -0.1635, + "fluidity": 0, + "expansion": 0.39, + "total_displacement": 0.0081, + "center_displacement": { + "x": -0.0034, + "y": -0.0073 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5447, + "y": 0.2357, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5634, + "y": 0.2221, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.514, + "y": 0.2233, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.581, + "y": 0.2349, + "confidence": 0.555 + }, + { + "name": "right_ear", + "x": 0.4541, + "y": 0.2372, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.595, + "y": 0.343, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3678, + "y": 0.3161, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6222, + "y": 0.4386, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.1991, + "y": 0.3667, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7222, + "y": 0.4495, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.1907, + "y": 0.4615, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.5668, + "y": 0.5352, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4138, + "y": 0.538, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6821, + "y": 0.6641, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4365, + "y": 0.6924, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6651, + "y": 0.7964, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.3831, + "y": 0.8101, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 160, + "timestamp": 5.333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1757, + "acceleration": -0.9367, + "fluidity": 0, + "expansion": 0.393, + "total_displacement": 0.0056, + "center_displacement": { + "x": 0.0032, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5202, + "y": 0.2304, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.544, + "y": 0.2167, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4904, + "y": 0.2185, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5798, + "y": 0.2303, + "confidence": 0.8 + }, + { + "name": "right_ear", + "x": 0.4469, + "y": 0.2342, + "confidence": 0.872 + }, + { + "name": "left_shoulder", + "x": 0.6073, + "y": 0.3358, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3726, + "y": 0.3114, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6173, + "y": 0.4291, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2002, + "y": 0.3537, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.69, + "y": 0.4645, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.1737, + "y": 0.4357, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5682, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4082, + "y": 0.5341, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6771, + "y": 0.6677, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4236, + "y": 0.6867, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6728, + "y": 0.7971, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.3813, + "y": 0.8097, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 161, + "timestamp": 5.366666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1459, + "acceleration": -0.8943, + "fluidity": 0, + "expansion": 0.401, + "total_displacement": 0.0051, + "center_displacement": { + "x": -0.0027, + "y": -0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5011, + "y": 0.2266, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5282, + "y": 0.2141, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4749, + "y": 0.2139, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5738, + "y": 0.229, + "confidence": 0.89 + }, + { + "name": "right_ear", + "x": 0.4398, + "y": 0.2288, + "confidence": 0.797 + }, + { + "name": "left_shoulder", + "x": 0.6068, + "y": 0.3309, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3687, + "y": 0.3071, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6208, + "y": 0.4214, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.1915, + "y": 0.3458, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.6819, + "y": 0.4734, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.167, + "y": 0.4053, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.566, + "y": 0.5292, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4039, + "y": 0.5297, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6707, + "y": 0.6695, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4165, + "y": 0.6824, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6761, + "y": 0.7933, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3802, + "y": 0.8059, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 162, + "timestamp": 5.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1167, + "acceleration": -0.8754, + "fluidity": 0, + "expansion": 0.406, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0027, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.483, + "y": 0.2211, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5103, + "y": 0.2091, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4605, + "y": 0.2088, + "confidence": 0.968 + }, + { + "name": "left_ear", + "x": 0.5631, + "y": 0.2253, + "confidence": 0.959 + }, + { + "name": "right_ear", + "x": 0.4366, + "y": 0.2253, + "confidence": 0.656 + }, + { + "name": "left_shoulder", + "x": 0.6113, + "y": 0.3256, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3723, + "y": 0.3065, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6346, + "y": 0.4176, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.1975, + "y": 0.341, + "confidence": 0.959 + }, + { + "name": "left_wrist", + "x": 0.6782, + "y": 0.4766, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.1552, + "y": 0.358, + "confidence": 0.936 + }, + { + "name": "left_hip", + "x": 0.5676, + "y": 0.5277, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4051, + "y": 0.5277, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6648, + "y": 0.6752, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4074, + "y": 0.6806, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6751, + "y": 0.7968, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.388, + "y": 0.8031, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 163, + "timestamp": 5.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1205, + "acceleration": 0.1145, + "fluidity": 0, + "expansion": 0.409, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0007, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4651, + "y": 0.2188, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4938, + "y": 0.2067, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4483, + "y": 0.2055, + "confidence": 0.954 + }, + { + "name": "left_ear", + "x": 0.559, + "y": 0.2225, + "confidence": 0.979 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6135, + "y": 0.3193, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3748, + "y": 0.306, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6492, + "y": 0.4148, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.1929, + "y": 0.3462, + "confidence": 0.939 + }, + { + "name": "left_wrist", + "x": 0.675, + "y": 0.4863, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.1761, + "y": 0.3312, + "confidence": 0.909 + }, + { + "name": "left_hip", + "x": 0.5654, + "y": 0.5238, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4053, + "y": 0.5258, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6467, + "y": 0.6701, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.406, + "y": 0.6786, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6713, + "y": 0.7935, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3872, + "y": 0.8011, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 164, + "timestamp": 5.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1378, + "acceleration": 0.5184, + "fluidity": 0.062, + "expansion": 0.414, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.005, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4582, + "y": 0.2195, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4867, + "y": 0.2075, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4445, + "y": 0.2057, + "confidence": 0.95 + }, + { + "name": "left_ear", + "x": 0.5565, + "y": 0.2221, + "confidence": 0.977 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6174, + "y": 0.3147, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3817, + "y": 0.3083, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.663, + "y": 0.4108, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2015, + "y": 0.3584, + "confidence": 0.964 + }, + { + "name": "left_wrist", + "x": 0.673, + "y": 0.4982, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.1743, + "y": 0.3137, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5686, + "y": 0.5243, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4111, + "y": 0.5261, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6368, + "y": 0.6822, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4036, + "y": 0.6803, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6752, + "y": 0.7966, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.388, + "y": 0.8006, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 165, + "timestamp": 5.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.156, + "acceleration": 0.5458, + "fluidity": 0.083, + "expansion": 0.417, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.0044, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4548, + "y": 0.2175, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4847, + "y": 0.2063, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4442, + "y": 0.2038, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0.5564, + "y": 0.224, + "confidence": 0.972 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6167, + "y": 0.3156, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3899, + "y": 0.312, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6781, + "y": 0.4134, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2166, + "y": 0.3628, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.6762, + "y": 0.5053, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.1724, + "y": 0.2943, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.5704, + "y": 0.5262, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4193, + "y": 0.5274, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6237, + "y": 0.6849, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4052, + "y": 0.6795, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6805, + "y": 0.7996, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3904, + "y": 0.7976, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 166, + "timestamp": 5.533333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.188, + "acceleration": 0.9606, + "fluidity": 0.028, + "expansion": 0.417, + "total_displacement": 0.0062, + "center_displacement": { + "x": 0.0061, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4529, + "y": 0.2174, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4818, + "y": 0.2062, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4446, + "y": 0.2042, + "confidence": 0.924 + }, + { + "name": "left_ear", + "x": 0.5547, + "y": 0.2246, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6232, + "y": 0.3153, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4004, + "y": 0.3159, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7018, + "y": 0.4127, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2349, + "y": 0.3682, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6842, + "y": 0.5108, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.1827, + "y": 0.2889, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.572, + "y": 0.5266, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4251, + "y": 0.5276, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6154, + "y": 0.6854, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4074, + "y": 0.6789, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6763, + "y": 0.7993, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.3922, + "y": 0.797, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 167, + "timestamp": 5.566666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.256, + "acceleration": 2.04, + "fluidity": 0.009, + "expansion": 0.415, + "total_displacement": 0.0074, + "center_displacement": { + "x": 0.0072, + "y": -0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4535, + "y": 0.2176, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4819, + "y": 0.2064, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4466, + "y": 0.205, + "confidence": 0.911 + }, + { + "name": "left_ear", + "x": 0.5566, + "y": 0.224, + "confidence": 0.96 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6296, + "y": 0.3121, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4102, + "y": 0.3171, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7144, + "y": 0.4108, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2563, + "y": 0.3761, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.6937, + "y": 0.5107, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.1855, + "y": 0.2924, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5774, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4325, + "y": 0.5253, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6117, + "y": 0.6848, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4078, + "y": 0.6762, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6691, + "y": 0.8032, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.3933, + "y": 0.7957, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 168, + "timestamp": 5.6, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3025, + "acceleration": 1.3945, + "fluidity": 0.003, + "expansion": 0.412, + "total_displacement": 0.0119, + "center_displacement": { + "x": 0.0118, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4599, + "y": 0.2175, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4868, + "y": 0.2066, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4537, + "y": 0.2053, + "confidence": 0.902 + }, + { + "name": "left_ear", + "x": 0.5602, + "y": 0.2249, + "confidence": 0.962 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6383, + "y": 0.3148, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4274, + "y": 0.3195, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7277, + "y": 0.4188, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.2848, + "y": 0.38, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7054, + "y": 0.518, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.1966, + "y": 0.2965, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5855, + "y": 0.5261, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4458, + "y": 0.5253, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6086, + "y": 0.6826, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4088, + "y": 0.6751, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6603, + "y": 0.8025, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.392, + "y": 0.799, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 169, + "timestamp": 5.633333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3065, + "acceleration": 0.1199, + "fluidity": 0.001, + "expansion": 0.405, + "total_displacement": 0.0098, + "center_displacement": { + "x": 0.0098, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4638, + "y": 0.22, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4936, + "y": 0.2087, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4579, + "y": 0.2072, + "confidence": 0.884 + }, + { + "name": "left_ear", + "x": 0.5723, + "y": 0.2266, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6509, + "y": 0.3126, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4333, + "y": 0.3214, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7462, + "y": 0.4182, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3166, + "y": 0.3959, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7286, + "y": 0.5213, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2153, + "y": 0.3078, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5988, + "y": 0.5252, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.453, + "y": 0.5253, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.62, + "y": 0.6814, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4045, + "y": 0.6739, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6633, + "y": 0.8022, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.3963, + "y": 0.7966, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 170, + "timestamp": 5.666666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3797, + "acceleration": 2.1967, + "fluidity": 0, + "expansion": 0.393, + "total_displacement": 0.0108, + "center_displacement": { + "x": 0.0106, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4689, + "y": 0.2236, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4995, + "y": 0.2121, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4626, + "y": 0.2103, + "confidence": 0.881 + }, + { + "name": "left_ear", + "x": 0.5782, + "y": 0.2292, + "confidence": 0.951 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6571, + "y": 0.3139, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4433, + "y": 0.3234, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7529, + "y": 0.424, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3511, + "y": 0.411, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.7431, + "y": 0.53, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2408, + "y": 0.339, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.612, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.466, + "y": 0.5278, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6269, + "y": 0.6835, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3975, + "y": 0.6773, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6688, + "y": 0.8009, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.3963, + "y": 0.7979, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 171, + "timestamp": 5.7, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3975, + "acceleration": 0.5319, + "fluidity": 0, + "expansion": 0.382, + "total_displacement": 0.017, + "center_displacement": { + "x": 0.0159, + "y": 0.0058 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4768, + "y": 0.229, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5055, + "y": 0.2173, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.4716, + "y": 0.215, + "confidence": 0.859 + }, + { + "name": "left_ear", + "x": 0.5839, + "y": 0.2341, + "confidence": 0.945 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6723, + "y": 0.3216, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4643, + "y": 0.3309, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7632, + "y": 0.4323, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.391, + "y": 0.4238, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7543, + "y": 0.5352, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2695, + "y": 0.3633, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.625, + "y": 0.5339, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4805, + "y": 0.5298, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6308, + "y": 0.6871, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3979, + "y": 0.6716, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6742, + "y": 0.8002, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4032, + "y": 0.8, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 172, + "timestamp": 5.733333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3291, + "acceleration": -2.0509, + "fluidity": 0, + "expansion": 0.374, + "total_displacement": 0.0101, + "center_displacement": { + "x": 0.0087, + "y": 0.0053 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4832, + "y": 0.2336, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5126, + "y": 0.2226, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.4809, + "y": 0.2192, + "confidence": 0.854 + }, + { + "name": "left_ear", + "x": 0.591, + "y": 0.241, + "confidence": 0.936 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6792, + "y": 0.329, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4719, + "y": 0.3367, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7719, + "y": 0.4407, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.411, + "y": 0.4347, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7685, + "y": 0.5446, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2933, + "y": 0.3774, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.6352, + "y": 0.5385, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4904, + "y": 0.5331, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6369, + "y": 0.6897, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3902, + "y": 0.6725, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6799, + "y": 0.8033, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4037, + "y": 0.8018, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 173, + "timestamp": 5.766666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2415, + "acceleration": -2.6296, + "fluidity": 0, + "expansion": 0.373, + "total_displacement": 0.0095, + "center_displacement": { + "x": 0.0079, + "y": 0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4907, + "y": 0.2406, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5185, + "y": 0.2287, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.484, + "y": 0.2259, + "confidence": 0.868 + }, + { + "name": "left_ear", + "x": 0.5932, + "y": 0.2453, + "confidence": 0.944 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6887, + "y": 0.3357, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4788, + "y": 0.3415, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7792, + "y": 0.452, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4182, + "y": 0.4392, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7813, + "y": 0.5519, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3077, + "y": 0.3854, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6434, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4974, + "y": 0.5378, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6396, + "y": 0.6935, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3888, + "y": 0.676, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6767, + "y": 0.8008, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4089, + "y": 0.8067, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 174, + "timestamp": 5.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1711, + "acceleration": -2.1093, + "fluidity": 0, + "expansion": 0.381, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0036, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4968, + "y": 0.2419, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5242, + "y": 0.2303, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.4909, + "y": 0.2274, + "confidence": 0.853 + }, + { + "name": "left_ear", + "x": 0.597, + "y": 0.2474, + "confidence": 0.941 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6923, + "y": 0.3377, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4817, + "y": 0.3424, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7834, + "y": 0.4544, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.4119, + "y": 0.4369, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.7913, + "y": 0.5541, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3027, + "y": 0.3781, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.647, + "y": 0.544, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5014, + "y": 0.538, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6403, + "y": 0.6927, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3906, + "y": 0.6764, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6758, + "y": 0.8019, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4101, + "y": 0.8077, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 175, + "timestamp": 5.833333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1407, + "acceleration": -0.9135, + "fluidity": 0, + "expansion": 0.388, + "total_displacement": 0.0054, + "center_displacement": { + "x": 0.0019, + "y": -0.0051 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4959, + "y": 0.2399, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5242, + "y": 0.2285, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.4965, + "y": 0.225, + "confidence": 0.812 + }, + { + "name": "left_ear", + "x": 0.6019, + "y": 0.2443, + "confidence": 0.936 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6923, + "y": 0.3307, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4826, + "y": 0.3358, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7855, + "y": 0.4471, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4009, + "y": 0.4333, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7973, + "y": 0.5499, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2855, + "y": 0.3632, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6499, + "y": 0.5405, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5051, + "y": 0.5346, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6433, + "y": 0.694, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.386, + "y": 0.6777, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6856, + "y": 0.8117, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.4006, + "y": 0.8092, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 176, + "timestamp": 5.866666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1387, + "acceleration": -0.0586, + "fluidity": 0, + "expansion": 0.39, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0004, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4973, + "y": 0.2325, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5238, + "y": 0.2218, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4968, + "y": 0.219, + "confidence": 0.78 + }, + { + "name": "left_ear", + "x": 0.6031, + "y": 0.2396, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6976, + "y": 0.3279, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4893, + "y": 0.3331, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7914, + "y": 0.4405, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3981, + "y": 0.4239, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7981, + "y": 0.5418, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.299, + "y": 0.3574, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6435, + "y": 0.5373, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.501, + "y": 0.5318, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6385, + "y": 0.6902, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4049, + "y": 0.6757, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6798, + "y": 0.806, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.41, + "y": 0.8082, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 177, + "timestamp": 5.9, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1741, + "acceleration": 1.0612, + "fluidity": 0, + "expansion": 0.395, + "total_displacement": 0.0062, + "center_displacement": { + "x": 0.0008, + "y": -0.0062 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5015, + "y": 0.2252, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5274, + "y": 0.2143, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4996, + "y": 0.212, + "confidence": 0.771 + }, + { + "name": "left_ear", + "x": 0.6071, + "y": 0.2321, + "confidence": 0.951 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7027, + "y": 0.3203, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4939, + "y": 0.3267, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7966, + "y": 0.4325, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3955, + "y": 0.4155, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.799, + "y": 0.5355, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2981, + "y": 0.3425, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6399, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.498, + "y": 0.5267, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6352, + "y": 0.6871, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4151, + "y": 0.6733, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6768, + "y": 0.8027, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4119, + "y": 0.8091, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 178, + "timestamp": 5.933333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1384, + "acceleration": -1.07, + "fluidity": 0, + "expansion": 0.401, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0026, + "y": -0.006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5034, + "y": 0.2212, + "confidence": 0.982 + }, + { + "name": "left_eye", + "x": 0.5281, + "y": 0.2102, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5024, + "y": 0.2091, + "confidence": 0.661 + }, + { + "name": "left_ear", + "x": 0.6098, + "y": 0.2277, + "confidence": 0.95 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7097, + "y": 0.3134, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4995, + "y": 0.3225, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8058, + "y": 0.4213, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3908, + "y": 0.4048, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.7992, + "y": 0.5252, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2973, + "y": 0.3277, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6389, + "y": 0.5245, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4968, + "y": 0.5209, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6328, + "y": 0.6809, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4214, + "y": 0.6717, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6731, + "y": 0.8029, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.41, + "y": 0.8095, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 179, + "timestamp": 5.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0846, + "acceleration": -1.6167, + "fluidity": 0, + "expansion": 0.408, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0007, + "y": -0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5054, + "y": 0.2186, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0.5298, + "y": 0.2077, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.5046, + "y": 0.2068, + "confidence": 0.609 + }, + { + "name": "left_ear", + "x": 0.6121, + "y": 0.2258, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7117, + "y": 0.3108, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.504, + "y": 0.3215, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8134, + "y": 0.4123, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3882, + "y": 0.3981, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8063, + "y": 0.5203, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2944, + "y": 0.3168, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6361, + "y": 0.5235, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4963, + "y": 0.5202, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.631, + "y": 0.6797, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4273, + "y": 0.6698, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6731, + "y": 0.8024, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.4056, + "y": 0.8073, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 180, + "timestamp": 6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0866, + "acceleration": 0.062, + "fluidity": 0, + "expansion": 0.413, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0022, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5098, + "y": 0.2182, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0.5335, + "y": 0.2071, + "confidence": 0.968 + }, + { + "name": "right_eye", + "x": 0.5085, + "y": 0.2069, + "confidence": 0.603 + }, + { + "name": "left_ear", + "x": 0.6156, + "y": 0.2252, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7169, + "y": 0.3106, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5092, + "y": 0.322, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8252, + "y": 0.4086, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.386, + "y": 0.3929, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8142, + "y": 0.5156, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2941, + "y": 0.3082, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6347, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4961, + "y": 0.5216, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6297, + "y": 0.6808, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.434, + "y": 0.671, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6724, + "y": 0.8027, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.4064, + "y": 0.8059, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 181, + "timestamp": 6.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0912, + "acceleration": 0.1382, + "fluidity": 0, + "expansion": 0.416, + "total_displacement": 0.0035, + "center_displacement": { + "x": 0.0028, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5118, + "y": 0.2191, + "confidence": 0.976 + }, + { + "name": "left_eye", + "x": 0.5346, + "y": 0.2077, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.5107, + "y": 0.2076, + "confidence": 0.568 + }, + { + "name": "left_ear", + "x": 0.6164, + "y": 0.2254, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7211, + "y": 0.3117, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5147, + "y": 0.3231, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8361, + "y": 0.4069, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3864, + "y": 0.3909, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8216, + "y": 0.5148, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2943, + "y": 0.3029, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6344, + "y": 0.5284, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4979, + "y": 0.5243, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6276, + "y": 0.6846, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4379, + "y": 0.6703, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.674, + "y": 0.8031, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4107, + "y": 0.8036, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 182, + "timestamp": 6.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0632, + "acceleration": -0.8423, + "fluidity": 0, + "expansion": 0.418, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0007, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5153, + "y": 0.2222, + "confidence": 0.981 + }, + { + "name": "left_eye", + "x": 0.5386, + "y": 0.2101, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.5126, + "y": 0.2104, + "confidence": 0.631 + }, + { + "name": "left_ear", + "x": 0.6204, + "y": 0.2267, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7228, + "y": 0.3132, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5166, + "y": 0.3261, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8422, + "y": 0.4056, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3882, + "y": 0.3927, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8277, + "y": 0.5136, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2956, + "y": 0.3044, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6335, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.498, + "y": 0.5275, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6275, + "y": 0.6863, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4411, + "y": 0.672, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6756, + "y": 0.803, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.4125, + "y": 0.8044, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 183, + "timestamp": 6.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0788, + "acceleration": 0.4682, + "fluidity": 0, + "expansion": 0.416, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5165, + "y": 0.2229, + "confidence": 0.981 + }, + { + "name": "left_eye", + "x": 0.5406, + "y": 0.2114, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5148, + "y": 0.2113, + "confidence": 0.639 + }, + { + "name": "left_ear", + "x": 0.6241, + "y": 0.2272, + "confidence": 0.951 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.725, + "y": 0.3111, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5156, + "y": 0.3261, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8482, + "y": 0.4019, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3898, + "y": 0.3991, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.8324, + "y": 0.5174, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2934, + "y": 0.3103, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6342, + "y": 0.5319, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4982, + "y": 0.5286, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6276, + "y": 0.6896, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4363, + "y": 0.6719, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6734, + "y": 0.8031, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.4112, + "y": 0.8019, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 184, + "timestamp": 6.133333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1433, + "acceleration": 1.9372, + "fluidity": 0, + "expansion": 0.41, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0052, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5206, + "y": 0.2237, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.5455, + "y": 0.2121, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.5176, + "y": 0.2116, + "confidence": 0.725 + }, + { + "name": "left_ear", + "x": 0.6288, + "y": 0.2277, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7282, + "y": 0.3117, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5185, + "y": 0.3265, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8481, + "y": 0.4038, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3991, + "y": 0.4063, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.8358, + "y": 0.5178, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3036, + "y": 0.3214, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.642, + "y": 0.5305, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5051, + "y": 0.5263, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6266, + "y": 0.6897, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4312, + "y": 0.6685, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6738, + "y": 0.8029, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.4096, + "y": 0.8018, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 185, + "timestamp": 6.166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1903, + "acceleration": 1.41, + "fluidity": 0, + "expansion": 0.401, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0064, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5258, + "y": 0.225, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5519, + "y": 0.2134, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5222, + "y": 0.2116, + "confidence": 0.807 + }, + { + "name": "left_ear", + "x": 0.632, + "y": 0.23, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7287, + "y": 0.3143, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5236, + "y": 0.3294, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8433, + "y": 0.4112, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.425, + "y": 0.4216, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.8387, + "y": 0.5176, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.325, + "y": 0.349, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6519, + "y": 0.5302, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5152, + "y": 0.5252, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.627, + "y": 0.6862, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4264, + "y": 0.6661, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6787, + "y": 0.8023, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4118, + "y": 0.8049, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 186, + "timestamp": 6.2, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.255, + "acceleration": 1.9388, + "fluidity": 0, + "expansion": 0.393, + "total_displacement": 0.0078, + "center_displacement": { + "x": 0.0076, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5356, + "y": 0.2302, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5636, + "y": 0.2192, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5311, + "y": 0.2159, + "confidence": 0.845 + }, + { + "name": "left_ear", + "x": 0.6383, + "y": 0.2362, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7311, + "y": 0.3179, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5237, + "y": 0.3317, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8438, + "y": 0.4161, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4436, + "y": 0.4346, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.8507, + "y": 0.5178, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3364, + "y": 0.3704, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6675, + "y": 0.5313, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5275, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6311, + "y": 0.6873, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4153, + "y": 0.6621, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6803, + "y": 0.8022, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4097, + "y": 0.8033, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 187, + "timestamp": 6.233333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2724, + "acceleration": 0.5232, + "fluidity": 0, + "expansion": 0.387, + "total_displacement": 0.0114, + "center_displacement": { + "x": 0.0067, + "y": 0.0092 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5408, + "y": 0.2371, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5736, + "y": 0.2257, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5309, + "y": 0.2207, + "confidence": 0.886 + }, + { + "name": "left_ear", + "x": 0.6436, + "y": 0.2448, + "confidence": 0.947 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.729, + "y": 0.3315, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5217, + "y": 0.3363, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.845, + "y": 0.4312, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4688, + "y": 0.4373, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.873, + "y": 0.5189, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3546, + "y": 0.4017, + "confidence": 0.964 + }, + { + "name": "left_hip", + "x": 0.6836, + "y": 0.542, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5421, + "y": 0.5327, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6351, + "y": 0.6881, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4131, + "y": 0.6612, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6731, + "y": 0.8001, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4152, + "y": 0.7981, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 188, + "timestamp": 6.266666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2202, + "acceleration": -1.5673, + "fluidity": 0, + "expansion": 0.386, + "total_displacement": 0.0074, + "center_displacement": { + "x": 0.0052, + "y": 0.0053 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5595, + "y": 0.2446, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5953, + "y": 0.2332, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5442, + "y": 0.2265, + "confidence": 0.943 + }, + { + "name": "left_ear", + "x": 0.6564, + "y": 0.2538, + "confidence": 0.94 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7264, + "y": 0.3406, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.52, + "y": 0.3424, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.8405, + "y": 0.4368, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.4813, + "y": 0.4484, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.9098, + "y": 0.5256, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.375, + "y": 0.4364, + "confidence": 0.953 + }, + { + "name": "left_hip", + "x": 0.6965, + "y": 0.5454, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5542, + "y": 0.5351, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6425, + "y": 0.6892, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4076, + "y": 0.6594, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6798, + "y": 0.7986, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4095, + "y": 0.7965, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 189, + "timestamp": 6.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1538, + "acceleration": -1.9919, + "fluidity": 0, + "expansion": 0.39, + "total_displacement": 0.0056, + "center_displacement": { + "x": -0.0046, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5802, + "y": 0.2509, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.6155, + "y": 0.2402, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5597, + "y": 0.2322, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.6619, + "y": 0.2616, + "confidence": 0.91 + }, + { + "name": "right_ear", + "x": 0.531, + "y": 0.2451, + "confidence": 0.716 + }, + { + "name": "left_shoulder", + "x": 0.7224, + "y": 0.3499, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5033, + "y": 0.345, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8353, + "y": 0.438, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4741, + "y": 0.4542, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.9444, + "y": 0.5136, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4003, + "y": 0.4599, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.7026, + "y": 0.5467, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5506, + "y": 0.5346, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6562, + "y": 0.687, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3919, + "y": 0.653, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6795, + "y": 0.8008, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3968, + "y": 0.797, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 190, + "timestamp": 6.333333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1145, + "acceleration": -1.1791, + "fluidity": 0, + "expansion": 0.397, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.002, + "y": 0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5969, + "y": 0.2552, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.6305, + "y": 0.2443, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5734, + "y": 0.2363, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.67, + "y": 0.2656, + "confidence": 0.922 + }, + { + "name": "right_ear", + "x": 0.5378, + "y": 0.2489, + "confidence": 0.796 + }, + { + "name": "left_shoulder", + "x": 0.7324, + "y": 0.3584, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4978, + "y": 0.345, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.8536, + "y": 0.4483, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.4557, + "y": 0.4501, + "confidence": 0.964 + }, + { + "name": "left_wrist", + "x": 0.9699, + "y": 0.4951, + "confidence": 0.965 + }, + { + "name": "right_wrist", + "x": 0.4327, + "y": 0.4664, + "confidence": 0.93 + }, + { + "name": "left_hip", + "x": 0.7086, + "y": 0.5463, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5482, + "y": 0.5322, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6614, + "y": 0.6875, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3908, + "y": 0.6537, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6788, + "y": 0.8016, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.3962, + "y": 0.794, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 191, + "timestamp": 6.366666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1554, + "acceleration": 1.2273, + "fluidity": 0, + "expansion": 0.403, + "total_displacement": 0.0038, + "center_displacement": { + "x": -0.0025, + "y": -0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.614, + "y": 0.2548, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6416, + "y": 0.2434, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5883, + "y": 0.2374, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.6712, + "y": 0.262, + "confidence": 0.816 + }, + { + "name": "right_ear", + "x": 0.5452, + "y": 0.25, + "confidence": 0.88 + }, + { + "name": "left_shoulder", + "x": 0.734, + "y": 0.356, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4934, + "y": 0.3415, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8613, + "y": 0.4325, + "confidence": 0.962 + }, + { + "name": "right_elbow", + "x": 0.4321, + "y": 0.4397, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.9953, + "y": 0.4478, + "confidence": 0.928 + }, + { + "name": "right_wrist", + "x": 0.4414, + "y": 0.4759, + "confidence": 0.954 + }, + { + "name": "left_hip", + "x": 0.7057, + "y": 0.5428, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5437, + "y": 0.5301, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6647, + "y": 0.6844, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3976, + "y": 0.6571, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6787, + "y": 0.8008, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4012, + "y": 0.7962, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 192, + "timestamp": 6.4, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2031, + "acceleration": 1.433, + "fluidity": 0, + "expansion": 0.407, + "total_displacement": 0.0079, + "center_displacement": { + "x": -0.0049, + "y": -0.0062 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6313, + "y": 0.2492, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6552, + "y": 0.2383, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.6062, + "y": 0.2325, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0.6746, + "y": 0.2565, + "confidence": 0.655 + }, + { + "name": "right_ear", + "x": 0.5527, + "y": 0.2442, + "confidence": 0.919 + }, + { + "name": "left_shoulder", + "x": 0.7289, + "y": 0.3503, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4848, + "y": 0.3336, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8613, + "y": 0.4218, + "confidence": 0.969 + }, + { + "name": "right_elbow", + "x": 0.4221, + "y": 0.4305, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.9876, + "y": 0.409, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.4615, + "y": 0.4812, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.7037, + "y": 0.5362, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5397, + "y": 0.5256, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6676, + "y": 0.6765, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4024, + "y": 0.6619, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6803, + "y": 0.8, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.4032, + "y": 0.7954, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 193, + "timestamp": 6.433333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2304, + "acceleration": 0.8184, + "fluidity": 0, + "expansion": 0.413, + "total_displacement": 0.0073, + "center_displacement": { + "x": -0.0054, + "y": -0.0049 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.638, + "y": 0.2404, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6581, + "y": 0.2297, + "confidence": 0.958 + }, + { + "name": "right_eye", + "x": 0.6125, + "y": 0.2252, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0.6719, + "y": 0.2478, + "confidence": 0.512 + }, + { + "name": "right_ear", + "x": 0.5538, + "y": 0.2389, + "confidence": 0.936 + }, + { + "name": "left_shoulder", + "x": 0.7254, + "y": 0.3417, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.479, + "y": 0.3292, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8653, + "y": 0.4007, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.4174, + "y": 0.4266, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.9835, + "y": 0.3643, + "confidence": 0.951 + }, + { + "name": "right_wrist", + "x": 0.4768, + "y": 0.4837, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6985, + "y": 0.5315, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5328, + "y": 0.5237, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6741, + "y": 0.6736, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4126, + "y": 0.6665, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6815, + "y": 0.7976, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4043, + "y": 0.7931, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 194, + "timestamp": 6.466666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2413, + "acceleration": 0.3269, + "fluidity": 0, + "expansion": 0.419, + "total_displacement": 0.009, + "center_displacement": { + "x": -0.0072, + "y": -0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6439, + "y": 0.2379, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6611, + "y": 0.2273, + "confidence": 0.927 + }, + { + "name": "right_eye", + "x": 0.6198, + "y": 0.2226, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5522, + "y": 0.2337, + "confidence": 0.95 + }, + { + "name": "left_shoulder", + "x": 0.7092, + "y": 0.3355, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4722, + "y": 0.3244, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8631, + "y": 0.3888, + "confidence": 0.969 + }, + { + "name": "right_elbow", + "x": 0.4167, + "y": 0.4253, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.9853, + "y": 0.3274, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.4917, + "y": 0.4867, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.6924, + "y": 0.5251, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5331, + "y": 0.5196, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6784, + "y": 0.6719, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.423, + "y": 0.672, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6812, + "y": 0.7994, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.3983, + "y": 0.791, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 195, + "timestamp": 6.5, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2249, + "acceleration": -0.4915, + "fluidity": 0, + "expansion": 0.423, + "total_displacement": 0.0074, + "center_displacement": { + "x": -0.006, + "y": -0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6482, + "y": 0.2337, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6615, + "y": 0.2232, + "confidence": 0.892 + }, + { + "name": "right_eye", + "x": 0.6244, + "y": 0.2193, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5501, + "y": 0.23, + "confidence": 0.956 + }, + { + "name": "left_shoulder", + "x": 0.7007, + "y": 0.3259, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4646, + "y": 0.3201, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.8673, + "y": 0.3744, + "confidence": 0.972 + }, + { + "name": "right_elbow", + "x": 0.4083, + "y": 0.4253, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.974, + "y": 0.3006, + "confidence": 0.968 + }, + { + "name": "right_wrist", + "x": 0.4917, + "y": 0.4857, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.688, + "y": 0.5219, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5295, + "y": 0.5193, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6763, + "y": 0.6671, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4315, + "y": 0.6739, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6812, + "y": 0.7969, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.3967, + "y": 0.7854, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 196, + "timestamp": 6.533333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.225, + "acceleration": 0.0017, + "fluidity": 0, + "expansion": 0.425, + "total_displacement": 0.007, + "center_displacement": { + "x": -0.0069, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6465, + "y": 0.2322, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.657, + "y": 0.2221, + "confidence": 0.875 + }, + { + "name": "right_eye", + "x": 0.6227, + "y": 0.2184, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5455, + "y": 0.2303, + "confidence": 0.957 + }, + { + "name": "left_shoulder", + "x": 0.6928, + "y": 0.3243, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4573, + "y": 0.3203, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8647, + "y": 0.3666, + "confidence": 0.981 + }, + { + "name": "right_elbow", + "x": 0.3936, + "y": 0.4258, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.9609, + "y": 0.2808, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.4874, + "y": 0.4855, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.6813, + "y": 0.5193, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5236, + "y": 0.5188, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6776, + "y": 0.662, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4398, + "y": 0.675, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6818, + "y": 0.7924, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.3906, + "y": 0.7879, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 197, + "timestamp": 6.566666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2404, + "acceleration": 0.4626, + "fluidity": 0, + "expansion": 0.425, + "total_displacement": 0.008, + "center_displacement": { + "x": -0.0077, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.644, + "y": 0.2347, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6514, + "y": 0.2245, + "confidence": 0.838 + }, + { + "name": "right_eye", + "x": 0.6201, + "y": 0.2215, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5399, + "y": 0.2335, + "confidence": 0.958 + }, + { + "name": "left_shoulder", + "x": 0.6815, + "y": 0.3242, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4495, + "y": 0.3234, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8538, + "y": 0.3613, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.3742, + "y": 0.4282, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.9436, + "y": 0.2725, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.4791, + "y": 0.4873, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6742, + "y": 0.5209, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5191, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6768, + "y": 0.6586, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4445, + "y": 0.6777, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6821, + "y": 0.7882, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.3828, + "y": 0.7889, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 198, + "timestamp": 6.6, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2494, + "acceleration": 0.2688, + "fluidity": 0.075, + "expansion": 0.422, + "total_displacement": 0.0085, + "center_displacement": { + "x": -0.0077, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6368, + "y": 0.2369, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.6439, + "y": 0.2268, + "confidence": 0.799 + }, + { + "name": "right_eye", + "x": 0.6133, + "y": 0.2247, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5362, + "y": 0.2381, + "confidence": 0.961 + }, + { + "name": "left_shoulder", + "x": 0.6726, + "y": 0.3273, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4444, + "y": 0.3287, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8451, + "y": 0.3594, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.3555, + "y": 0.4313, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.9265, + "y": 0.2712, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.4707, + "y": 0.4914, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.664, + "y": 0.5233, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5124, + "y": 0.527, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6729, + "y": 0.6603, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4488, + "y": 0.6815, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6822, + "y": 0.7876, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.3766, + "y": 0.787, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 199, + "timestamp": 6.633333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2741, + "acceleration": 0.7408, + "fluidity": 0.1, + "expansion": 0.416, + "total_displacement": 0.0084, + "center_displacement": { + "x": -0.008, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6304, + "y": 0.2388, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.6345, + "y": 0.228, + "confidence": 0.738 + }, + { + "name": "right_eye", + "x": 0.6063, + "y": 0.227, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.528, + "y": 0.2409, + "confidence": 0.962 + }, + { + "name": "left_shoulder", + "x": 0.6608, + "y": 0.3279, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4377, + "y": 0.331, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.827, + "y": 0.3647, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3405, + "y": 0.4363, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.9074, + "y": 0.2774, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.4609, + "y": 0.5004, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.6554, + "y": 0.5254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5073, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6694, + "y": 0.6594, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4508, + "y": 0.6866, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6804, + "y": 0.7844, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.372, + "y": 0.7916, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 200, + "timestamp": 6.666666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.308, + "acceleration": 1.0173, + "fluidity": 0.033, + "expansion": 0.409, + "total_displacement": 0.0107, + "center_displacement": { + "x": -0.0103, + "y": 0.0029 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6207, + "y": 0.2411, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.6242, + "y": 0.2297, + "confidence": 0.722 + }, + { + "name": "right_eye", + "x": 0.5951, + "y": 0.2298, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5166, + "y": 0.244, + "confidence": 0.96 + }, + { + "name": "left_shoulder", + "x": 0.651, + "y": 0.3295, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4288, + "y": 0.3317, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.8114, + "y": 0.373, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.328, + "y": 0.4369, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8914, + "y": 0.2884, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4536, + "y": 0.5079, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.644, + "y": 0.5296, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4962, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.664, + "y": 0.6593, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4546, + "y": 0.6912, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6787, + "y": 0.7843, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.3718, + "y": 0.7963, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 201, + "timestamp": 6.7, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3396, + "acceleration": 0.9498, + "fluidity": 0.011, + "expansion": 0.401, + "total_displacement": 0.0109, + "center_displacement": { + "x": -0.0109, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6144, + "y": 0.2416, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.6143, + "y": 0.2305, + "confidence": 0.624 + }, + { + "name": "right_eye", + "x": 0.5896, + "y": 0.2312, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5083, + "y": 0.2453, + "confidence": 0.962 + }, + { + "name": "left_shoulder", + "x": 0.6316, + "y": 0.3309, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4211, + "y": 0.3306, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7777, + "y": 0.3862, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3229, + "y": 0.4371, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8665, + "y": 0.3026, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4392, + "y": 0.5108, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6333, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4905, + "y": 0.5388, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6632, + "y": 0.6628, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4505, + "y": 0.6967, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6786, + "y": 0.7868, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.3654, + "y": 0.7968, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 202, + "timestamp": 6.733333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.38, + "acceleration": 1.2098, + "fluidity": 0.004, + "expansion": 0.39, + "total_displacement": 0.0128, + "center_displacement": { + "x": -0.0127, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6052, + "y": 0.2423, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.6057, + "y": 0.2311, + "confidence": 0.646 + }, + { + "name": "right_eye", + "x": 0.5802, + "y": 0.2312, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.497, + "y": 0.2445, + "confidence": 0.96 + }, + { + "name": "left_shoulder", + "x": 0.6141, + "y": 0.3319, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4105, + "y": 0.3313, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7418, + "y": 0.3943, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3129, + "y": 0.4415, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8376, + "y": 0.3198, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.4209, + "y": 0.5146, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6208, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4804, + "y": 0.5408, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6655, + "y": 0.6669, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4431, + "y": 0.7011, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6795, + "y": 0.7878, + "confidence": 0.973 + }, + { + "name": "right_ankle", + "x": 0.3581, + "y": 0.8011, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 203, + "timestamp": 6.766666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3828, + "acceleration": 0.0847, + "fluidity": 0.001, + "expansion": 0.372, + "total_displacement": 0.0139, + "center_displacement": { + "x": -0.0132, + "y": 0.0044 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5976, + "y": 0.243, + "confidence": 0.984 + }, + { + "name": "left_eye", + "x": 0.5979, + "y": 0.2322, + "confidence": 0.605 + }, + { + "name": "right_eye", + "x": 0.5737, + "y": 0.2318, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4914, + "y": 0.2463, + "confidence": 0.957 + }, + { + "name": "left_shoulder", + "x": 0.5979, + "y": 0.3403, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4007, + "y": 0.3343, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.7053, + "y": 0.4167, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3018, + "y": 0.4437, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8141, + "y": 0.353, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.4035, + "y": 0.5232, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.6061, + "y": 0.5367, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4683, + "y": 0.5434, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6705, + "y": 0.6718, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4351, + "y": 0.7039, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6809, + "y": 0.7923, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.3604, + "y": 0.8027, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 204, + "timestamp": 6.8, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3994, + "acceleration": 0.5, + "fluidity": 0, + "expansion": 0.354, + "total_displacement": 0.0117, + "center_displacement": { + "x": -0.0115, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5944, + "y": 0.2439, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5958, + "y": 0.233, + "confidence": 0.703 + }, + { + "name": "right_eye", + "x": 0.5695, + "y": 0.2319, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4825, + "y": 0.2454, + "confidence": 0.97 + }, + { + "name": "left_shoulder", + "x": 0.5817, + "y": 0.346, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.391, + "y": 0.3353, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6526, + "y": 0.4343, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3067, + "y": 0.4479, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.7744, + "y": 0.38, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3923, + "y": 0.5363, + "confidence": 1 + }, + { + "name": "left_hip", + "x": 0.5945, + "y": 0.5377, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4599, + "y": 0.5449, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6725, + "y": 0.6709, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.438, + "y": 0.705, + "confidence": 1 + }, + { + "name": "left_ankle", + "x": 0.6673, + "y": 0.7941, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.3745, + "y": 0.8026, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 205, + "timestamp": 6.833333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4097, + "acceleration": 0.3089, + "fluidity": 0, + "expansion": 0.343, + "total_displacement": 0.0155, + "center_displacement": { + "x": -0.0145, + "y": 0.0055 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5843, + "y": 0.2455, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5859, + "y": 0.2336, + "confidence": 0.749 + }, + { + "name": "right_eye", + "x": 0.5571, + "y": 0.2344, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4737, + "y": 0.2504, + "confidence": 0.967 + }, + { + "name": "left_shoulder", + "x": 0.5719, + "y": 0.3507, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3852, + "y": 0.3407, + "confidence": 1 + }, + { + "name": "left_elbow", + "x": 0.6215, + "y": 0.4484, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2954, + "y": 0.451, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.7542, + "y": 0.4059, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.359, + "y": 0.541, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5726, + "y": 0.5433, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4394, + "y": 0.5511, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6815, + "y": 0.6715, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4379, + "y": 0.7057, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6585, + "y": 0.7933, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.3735, + "y": 0.8029, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 206, + "timestamp": 6.866666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3277, + "acceleration": -2.462, + "fluidity": 0, + "expansion": 0.335, + "total_displacement": 0.0122, + "center_displacement": { + "x": -0.012, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5663, + "y": 0.2467, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5754, + "y": 0.2336, + "confidence": 0.877 + }, + { + "name": "right_eye", + "x": 0.5363, + "y": 0.2359, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4597, + "y": 0.2525, + "confidence": 0.963 + }, + { + "name": "left_shoulder", + "x": 0.5693, + "y": 0.351, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3773, + "y": 0.344, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6063, + "y": 0.4535, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.2837, + "y": 0.4543, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7424, + "y": 0.4368, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3268, + "y": 0.5483, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5553, + "y": 0.5447, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.419, + "y": 0.5529, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6828, + "y": 0.6706, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.439, + "y": 0.7019, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6486, + "y": 0.7971, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.3708, + "y": 0.8027, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 207, + "timestamp": 6.8999999999999995, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.203, + "acceleration": -3.7391, + "fluidity": 0, + "expansion": 0.331, + "total_displacement": 0.0069, + "center_displacement": { + "x": -0.0069, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5448, + "y": 0.2491, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5611, + "y": 0.2347, + "confidence": 0.952 + }, + { + "name": "right_eye", + "x": 0.5123, + "y": 0.2385, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4498, + "y": 0.2564, + "confidence": 0.944 + }, + { + "name": "left_shoulder", + "x": 0.5788, + "y": 0.3495, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3759, + "y": 0.3466, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6034, + "y": 0.4496, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2715, + "y": 0.451, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7058, + "y": 0.4685, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2916, + "y": 0.547, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.5407, + "y": 0.544, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3979, + "y": 0.5512, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6759, + "y": 0.6699, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4359, + "y": 0.6933, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6425, + "y": 0.7972, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.3634, + "y": 0.8066, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 208, + "timestamp": 6.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1492, + "acceleration": -1.6155, + "fluidity": 0, + "expansion": 0.334, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0023, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5187, + "y": 0.2488, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5383, + "y": 0.2347, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.4887, + "y": 0.2383, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.563, + "y": 0.2475, + "confidence": 0.733 + }, + { + "name": "right_ear", + "x": 0.4413, + "y": 0.2567, + "confidence": 0.903 + }, + { + "name": "left_shoulder", + "x": 0.5853, + "y": 0.3479, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3729, + "y": 0.3481, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6102, + "y": 0.4454, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.2663, + "y": 0.4459, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6731, + "y": 0.4883, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.2488, + "y": 0.5268, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5461, + "y": 0.5427, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3982, + "y": 0.5496, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6638, + "y": 0.6719, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4179, + "y": 0.6898, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6444, + "y": 0.7993, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3649, + "y": 0.8091, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 209, + "timestamp": 6.966666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1499, + "acceleration": 0.0225, + "fluidity": 0, + "expansion": 0.342, + "total_displacement": 0.0057, + "center_displacement": { + "x": -0.0052, + "y": -0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4963, + "y": 0.2462, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5197, + "y": 0.2324, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.4691, + "y": 0.2349, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5552, + "y": 0.2461, + "confidence": 0.89 + }, + { + "name": "right_ear", + "x": 0.4314, + "y": 0.2532, + "confidence": 0.834 + }, + { + "name": "left_shoulder", + "x": 0.5873, + "y": 0.3458, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3668, + "y": 0.3453, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6124, + "y": 0.4433, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2565, + "y": 0.4336, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.6526, + "y": 0.5014, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.2167, + "y": 0.5, + "confidence": 0.957 + }, + { + "name": "left_hip", + "x": 0.5406, + "y": 0.5413, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3869, + "y": 0.5465, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6586, + "y": 0.6727, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3955, + "y": 0.6858, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.647, + "y": 0.8002, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3605, + "y": 0.8078, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 210, + "timestamp": 7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1482, + "acceleration": -0.0509, + "fluidity": 0, + "expansion": 0.352, + "total_displacement": 0.0043, + "center_displacement": { + "x": -0.0004, + "y": -0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4692, + "y": 0.2409, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.495, + "y": 0.2281, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.447, + "y": 0.2296, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.545, + "y": 0.2434, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0.4224, + "y": 0.2482, + "confidence": 0.682 + }, + { + "name": "left_shoulder", + "x": 0.5922, + "y": 0.3417, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3648, + "y": 0.3403, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6216, + "y": 0.4401, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2496, + "y": 0.4204, + "confidence": 0.951 + }, + { + "name": "left_wrist", + "x": 0.6408, + "y": 0.5032, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.1991, + "y": 0.4626, + "confidence": 0.93 + }, + { + "name": "left_hip", + "x": 0.5408, + "y": 0.5378, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3823, + "y": 0.5419, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6547, + "y": 0.671, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3858, + "y": 0.6819, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6494, + "y": 0.7971, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.361, + "y": 0.8059, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 211, + "timestamp": 7.033333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1528, + "acceleration": 0.1354, + "fluidity": 0, + "expansion": 0.361, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0009, + "y": -0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.451, + "y": 0.2364, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4791, + "y": 0.2233, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4308, + "y": 0.2239, + "confidence": 0.969 + }, + { + "name": "left_ear", + "x": 0.5394, + "y": 0.238, + "confidence": 0.972 + }, + { + "name": "right_ear", + "x": 0.4118, + "y": 0.2412, + "confidence": 0.544 + }, + { + "name": "left_shoulder", + "x": 0.5938, + "y": 0.335, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3645, + "y": 0.3334, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6273, + "y": 0.4383, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2518, + "y": 0.4096, + "confidence": 0.937 + }, + { + "name": "left_wrist", + "x": 0.6337, + "y": 0.5106, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.1821, + "y": 0.4319, + "confidence": 0.909 + }, + { + "name": "left_hip", + "x": 0.5428, + "y": 0.5342, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3825, + "y": 0.5373, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6519, + "y": 0.6706, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3805, + "y": 0.6786, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6548, + "y": 0.7952, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3621, + "y": 0.8033, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 212, + "timestamp": 7.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1491, + "acceleration": -0.1109, + "fluidity": 0.06, + "expansion": 0.371, + "total_displacement": 0.0048, + "center_displacement": { + "x": 0.002, + "y": -0.0044 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.442, + "y": 0.2305, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4696, + "y": 0.2176, + "confidence": 0.997 + }, + { + "name": "right_eye", + "x": 0.4232, + "y": 0.2179, + "confidence": 0.961 + }, + { + "name": "left_ear", + "x": 0.5348, + "y": 0.2327, + "confidence": 0.978 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.5969, + "y": 0.329, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3675, + "y": 0.3289, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6285, + "y": 0.4336, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2471, + "y": 0.405, + "confidence": 0.943 + }, + { + "name": "left_wrist", + "x": 0.6314, + "y": 0.5166, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.1788, + "y": 0.4097, + "confidence": 0.915 + }, + { + "name": "left_hip", + "x": 0.544, + "y": 0.5311, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3834, + "y": 0.5335, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6461, + "y": 0.6749, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3764, + "y": 0.6762, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.661, + "y": 0.7912, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3606, + "y": 0.8, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 213, + "timestamp": 7.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1547, + "acceleration": 0.1703, + "fluidity": 0.08, + "expansion": 0.384, + "total_displacement": 0.005, + "center_displacement": { + "x": 0.0012, + "y": -0.0049 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.438, + "y": 0.2305, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4644, + "y": 0.2167, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4194, + "y": 0.218, + "confidence": 0.957 + }, + { + "name": "left_ear", + "x": 0.5323, + "y": 0.2297, + "confidence": 0.974 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6009, + "y": 0.324, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3672, + "y": 0.3262, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6371, + "y": 0.4283, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.232, + "y": 0.3987, + "confidence": 0.969 + }, + { + "name": "left_wrist", + "x": 0.6351, + "y": 0.5189, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.1564, + "y": 0.3873, + "confidence": 0.953 + }, + { + "name": "left_hip", + "x": 0.5449, + "y": 0.5257, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3835, + "y": 0.5272, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6383, + "y": 0.6786, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3715, + "y": 0.6719, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6668, + "y": 0.7939, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.3604, + "y": 0.7974, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 214, + "timestamp": 7.133333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.159, + "acceleration": 0.1271, + "fluidity": 0.027, + "expansion": 0.396, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0055, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.434, + "y": 0.2281, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4591, + "y": 0.2143, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4175, + "y": 0.2162, + "confidence": 0.941 + }, + { + "name": "left_ear", + "x": 0.5317, + "y": 0.2281, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.611, + "y": 0.3222, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3748, + "y": 0.3263, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6543, + "y": 0.4278, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2296, + "y": 0.3959, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.6418, + "y": 0.5195, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.1472, + "y": 0.3631, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.5473, + "y": 0.5254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3852, + "y": 0.5263, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6329, + "y": 0.6825, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3703, + "y": 0.6719, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6718, + "y": 0.7933, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.361, + "y": 0.7965, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 215, + "timestamp": 7.166666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1631, + "acceleration": 0.1232, + "fluidity": 0.009, + "expansion": 0.407, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0052, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4321, + "y": 0.2278, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4571, + "y": 0.2143, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4184, + "y": 0.2156, + "confidence": 0.926 + }, + { + "name": "left_ear", + "x": 0.5321, + "y": 0.2276, + "confidence": 0.97 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6135, + "y": 0.3197, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3817, + "y": 0.3255, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6688, + "y": 0.4231, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2257, + "y": 0.3911, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6504, + "y": 0.5187, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.1431, + "y": 0.3387, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5508, + "y": 0.5266, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3932, + "y": 0.5281, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6259, + "y": 0.6827, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3737, + "y": 0.6735, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6748, + "y": 0.7893, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3619, + "y": 0.7958, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 216, + "timestamp": 7.2, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2038, + "acceleration": 1.2222, + "fluidity": 0.003, + "expansion": 0.414, + "total_displacement": 0.0058, + "center_displacement": { + "x": 0.0052, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4314, + "y": 0.2289, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4571, + "y": 0.2156, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4192, + "y": 0.2164, + "confidence": 0.92 + }, + { + "name": "left_ear", + "x": 0.5321, + "y": 0.2297, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6143, + "y": 0.3217, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3858, + "y": 0.3274, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6838, + "y": 0.4236, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.23, + "y": 0.3868, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6616, + "y": 0.5206, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.1451, + "y": 0.3197, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5571, + "y": 0.53, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4026, + "y": 0.5311, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6228, + "y": 0.6867, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3752, + "y": 0.6766, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6763, + "y": 0.7941, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3621, + "y": 0.7956, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 217, + "timestamp": 7.233333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2501, + "acceleration": 1.388, + "fluidity": 0.147, + "expansion": 0.415, + "total_displacement": 0.0092, + "center_displacement": { + "x": 0.0092, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4335, + "y": 0.2293, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4601, + "y": 0.217, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4241, + "y": 0.2168, + "confidence": 0.906 + }, + { + "name": "left_ear", + "x": 0.5365, + "y": 0.233, + "confidence": 0.968 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6216, + "y": 0.3221, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3953, + "y": 0.3282, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7068, + "y": 0.4224, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.2446, + "y": 0.3886, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.678, + "y": 0.5196, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.1571, + "y": 0.3164, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5661, + "y": 0.5291, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4136, + "y": 0.5293, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6166, + "y": 0.6862, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3771, + "y": 0.6755, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6758, + "y": 0.7965, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.361, + "y": 0.7953, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 218, + "timestamp": 7.266666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2878, + "acceleration": 1.1324, + "fluidity": 0.195, + "expansion": 0.413, + "total_displacement": 0.009, + "center_displacement": { + "x": 0.009, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4352, + "y": 0.2302, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4621, + "y": 0.2183, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4276, + "y": 0.2177, + "confidence": 0.874 + }, + { + "name": "left_ear", + "x": 0.5379, + "y": 0.2354, + "confidence": 0.959 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6272, + "y": 0.3223, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4036, + "y": 0.3302, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7238, + "y": 0.4219, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.2635, + "y": 0.3948, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.6911, + "y": 0.5223, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.174, + "y": 0.319, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5763, + "y": 0.529, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4256, + "y": 0.5286, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6125, + "y": 0.6862, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.376, + "y": 0.6739, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6739, + "y": 0.7978, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3591, + "y": 0.7963, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 219, + "timestamp": 7.3, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3259, + "acceleration": 1.1422, + "fluidity": 0.111, + "expansion": 0.407, + "total_displacement": 0.0114, + "center_displacement": { + "x": 0.0111, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4383, + "y": 0.233, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4667, + "y": 0.221, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.433, + "y": 0.2197, + "confidence": 0.875 + }, + { + "name": "left_ear", + "x": 0.544, + "y": 0.2375, + "confidence": 0.954 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6312, + "y": 0.323, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4138, + "y": 0.3334, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7415, + "y": 0.4192, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2872, + "y": 0.4035, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.7092, + "y": 0.5193, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.1923, + "y": 0.3299, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5892, + "y": 0.5319, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4431, + "y": 0.5317, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6097, + "y": 0.6872, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3751, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6728, + "y": 0.8004, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.3614, + "y": 0.7959, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 220, + "timestamp": 7.333333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3971, + "acceleration": 2.1366, + "fluidity": 0.083, + "expansion": 0.394, + "total_displacement": 0.0116, + "center_displacement": { + "x": 0.0113, + "y": 0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4465, + "y": 0.2385, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4764, + "y": 0.2269, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4418, + "y": 0.224, + "confidence": 0.907 + }, + { + "name": "left_ear", + "x": 0.5494, + "y": 0.2428, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6335, + "y": 0.3244, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4208, + "y": 0.3379, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7576, + "y": 0.42, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3219, + "y": 0.424, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7334, + "y": 0.5227, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2228, + "y": 0.3532, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6058, + "y": 0.5338, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4625, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6113, + "y": 0.6873, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3737, + "y": 0.6745, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6738, + "y": 0.801, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.3698, + "y": 0.7963, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 221, + "timestamp": 7.366666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.4002, + "acceleration": 0.0912, + "fluidity": 0.028, + "expansion": 0.374, + "total_displacement": 0.0173, + "center_displacement": { + "x": 0.0154, + "y": 0.0079 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4596, + "y": 0.2441, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.489, + "y": 0.2317, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4514, + "y": 0.2289, + "confidence": 0.925 + }, + { + "name": "left_ear", + "x": 0.5601, + "y": 0.2479, + "confidence": 0.945 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6475, + "y": 0.3351, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4385, + "y": 0.3455, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7645, + "y": 0.434, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3751, + "y": 0.4395, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.7526, + "y": 0.5267, + "confidence": 0.993 + }, + { + "name": "right_wrist", + "x": 0.2633, + "y": 0.3958, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6211, + "y": 0.5423, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4768, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6224, + "y": 0.6911, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3808, + "y": 0.6737, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.682, + "y": 0.8009, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.3902, + "y": 0.7988, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 222, + "timestamp": 7.3999999999999995, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.276, + "acceleration": -3.7256, + "fluidity": 0.009, + "expansion": 0.356, + "total_displacement": 0.0095, + "center_displacement": { + "x": 0.008, + "y": 0.0052 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4729, + "y": 0.2487, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5045, + "y": 0.2369, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4587, + "y": 0.2329, + "confidence": 0.949 + }, + { + "name": "left_ear", + "x": 0.5662, + "y": 0.2556, + "confidence": 0.941 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6506, + "y": 0.3438, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4369, + "y": 0.3507, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7698, + "y": 0.4442, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4086, + "y": 0.4518, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.7728, + "y": 0.5372, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3084, + "y": 0.4407, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.6391, + "y": 0.5461, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4893, + "y": 0.5414, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6381, + "y": 0.6926, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3851, + "y": 0.6768, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6833, + "y": 0.7992, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3954, + "y": 0.803, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 223, + "timestamp": 7.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.164, + "acceleration": -3.3599, + "fluidity": 0.003, + "expansion": 0.339, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0026, + "y": 0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4877, + "y": 0.2525, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5203, + "y": 0.2407, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4692, + "y": 0.2366, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0.5741, + "y": 0.2599, + "confidence": 0.943 + }, + { + "name": "right_ear", + "x": 0.4481, + "y": 0.2518, + "confidence": 0.635 + }, + { + "name": "left_shoulder", + "x": 0.6502, + "y": 0.3508, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4299, + "y": 0.354, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7669, + "y": 0.4489, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4101, + "y": 0.4527, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7914, + "y": 0.5489, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3333, + "y": 0.4745, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.6502, + "y": 0.5482, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4963, + "y": 0.5448, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6529, + "y": 0.6926, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3808, + "y": 0.6821, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6843, + "y": 0.7989, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.3935, + "y": 0.8042, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 224, + "timestamp": 7.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1161, + "acceleration": -1.4379, + "fluidity": 0.001, + "expansion": 0.326, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.0005, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4997, + "y": 0.25, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5308, + "y": 0.2393, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4789, + "y": 0.2359, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.5785, + "y": 0.2597, + "confidence": 0.931 + }, + { + "name": "right_ear", + "x": 0.4509, + "y": 0.2524, + "confidence": 0.736 + }, + { + "name": "left_shoulder", + "x": 0.6524, + "y": 0.3519, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.422, + "y": 0.3496, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.768, + "y": 0.4511, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4077, + "y": 0.4437, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.802, + "y": 0.5525, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3966, + "y": 0.5048, + "confidence": 0.967 + }, + { + "name": "left_hip", + "x": 0.658, + "y": 0.5445, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4963, + "y": 0.5422, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6606, + "y": 0.6886, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3911, + "y": 0.6896, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6827, + "y": 0.7999, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.3907, + "y": 0.8069, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 225, + "timestamp": 7.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1106, + "acceleration": -0.1648, + "fluidity": 0.088, + "expansion": 0.321, + "total_displacement": 0.0037, + "center_displacement": { + "x": 0.0002, + "y": -0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5143, + "y": 0.2443, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.541, + "y": 0.2327, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4891, + "y": 0.2322, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.582, + "y": 0.2533, + "confidence": 0.831 + }, + { + "name": "right_ear", + "x": 0.4548, + "y": 0.2523, + "confidence": 0.842 + }, + { + "name": "left_shoulder", + "x": 0.6528, + "y": 0.3464, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4176, + "y": 0.3486, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.764, + "y": 0.4404, + "confidence": 0.965 + }, + { + "name": "right_elbow", + "x": 0.393, + "y": 0.4474, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.8192, + "y": 0.5341, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.4238, + "y": 0.5154, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.6623, + "y": 0.5383, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4967, + "y": 0.5401, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6636, + "y": 0.6861, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.4043, + "y": 0.6931, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.68, + "y": 0.8011, + "confidence": 0.968 + }, + { + "name": "right_ankle", + "x": 0.3877, + "y": 0.809, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 226, + "timestamp": 7.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1406, + "acceleration": 0.9024, + "fluidity": 0.117, + "expansion": 0.318, + "total_displacement": 0.0035, + "center_displacement": { + "x": -0.003, + "y": -0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5318, + "y": 0.2362, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5557, + "y": 0.2238, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.5018, + "y": 0.2245, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5882, + "y": 0.2429, + "confidence": 0.782 + }, + { + "name": "right_ear", + "x": 0.4552, + "y": 0.2453, + "confidence": 0.873 + }, + { + "name": "left_shoulder", + "x": 0.6542, + "y": 0.3406, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.414, + "y": 0.3452, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7617, + "y": 0.4372, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3841, + "y": 0.4528, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.8245, + "y": 0.5185, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.4609, + "y": 0.5286, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6588, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4905, + "y": 0.5418, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6764, + "y": 0.6811, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4173, + "y": 0.6927, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6875, + "y": 0.7949, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.389, + "y": 0.8075, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 227, + "timestamp": 7.566666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2144, + "acceleration": 2.2131, + "fluidity": 0.039, + "expansion": 0.322, + "total_displacement": 0.0069, + "center_displacement": { + "x": -0.0063, + "y": -0.0027 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5377, + "y": 0.2297, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5596, + "y": 0.2174, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.5067, + "y": 0.2188, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5878, + "y": 0.2367, + "confidence": 0.707 + }, + { + "name": "right_ear", + "x": 0.4566, + "y": 0.2412, + "confidence": 0.896 + }, + { + "name": "left_shoulder", + "x": 0.6496, + "y": 0.333, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.41, + "y": 0.3428, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7643, + "y": 0.4203, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3749, + "y": 0.4551, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.8358, + "y": 0.4974, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4795, + "y": 0.5289, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6498, + "y": 0.5368, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4828, + "y": 0.5427, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6751, + "y": 0.6796, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4283, + "y": 0.6925, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6865, + "y": 0.7914, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.3862, + "y": 0.8051, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 228, + "timestamp": 7.6, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3094, + "acceleration": 2.8509, + "fluidity": 0.013, + "expansion": 0.332, + "total_displacement": 0.0099, + "center_displacement": { + "x": -0.0081, + "y": -0.0057 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5405, + "y": 0.2238, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5609, + "y": 0.2117, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.5084, + "y": 0.2138, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.5855, + "y": 0.2314, + "confidence": 0.64 + }, + { + "name": "right_ear", + "x": 0.4542, + "y": 0.2378, + "confidence": 0.913 + }, + { + "name": "left_shoulder", + "x": 0.6417, + "y": 0.3245, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4031, + "y": 0.3396, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7641, + "y": 0.4035, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3682, + "y": 0.4569, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.8485, + "y": 0.4693, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4997, + "y": 0.525, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6406, + "y": 0.5298, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4744, + "y": 0.5388, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6707, + "y": 0.671, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4359, + "y": 0.6884, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6838, + "y": 0.7858, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.3828, + "y": 0.8, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 229, + "timestamp": 7.633333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.314, + "acceleration": 0.1378, + "fluidity": 0.004, + "expansion": 0.345, + "total_displacement": 0.0139, + "center_displacement": { + "x": -0.0115, + "y": -0.0078 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5475, + "y": 0.219, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5641, + "y": 0.2066, + "confidence": 0.954 + }, + { + "name": "right_eye", + "x": 0.5162, + "y": 0.2084, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4536, + "y": 0.2298, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.6247, + "y": 0.3124, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3936, + "y": 0.3338, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7681, + "y": 0.3784, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3562, + "y": 0.4544, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.8611, + "y": 0.4292, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.5099, + "y": 0.5109, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.6274, + "y": 0.5214, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4681, + "y": 0.5338, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6636, + "y": 0.6662, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4345, + "y": 0.688, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6806, + "y": 0.7883, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.3799, + "y": 0.8025, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 230, + "timestamp": 7.666666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3399, + "acceleration": 0.7748, + "fluidity": 0.001, + "expansion": 0.359, + "total_displacement": 0.0072, + "center_displacement": { + "x": -0.0069, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5506, + "y": 0.217, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5618, + "y": 0.2041, + "confidence": 0.922 + }, + { + "name": "right_eye", + "x": 0.5185, + "y": 0.2064, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4512, + "y": 0.2277, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.617, + "y": 0.309, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3919, + "y": 0.3297, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7672, + "y": 0.3656, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3662, + "y": 0.4444, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.8704, + "y": 0.3954, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.5401, + "y": 0.4884, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.6169, + "y": 0.5215, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4604, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6582, + "y": 0.6665, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4298, + "y": 0.6853, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6753, + "y": 0.7873, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.3778, + "y": 0.8033, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 231, + "timestamp": 7.7, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3799, + "acceleration": 1.2002, + "fluidity": 0, + "expansion": 0.372, + "total_displacement": 0.0163, + "center_displacement": { + "x": -0.0153, + "y": -0.0058 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5494, + "y": 0.2133, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5563, + "y": 0.2006, + "confidence": 0.857 + }, + { + "name": "right_eye", + "x": 0.5187, + "y": 0.2034, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4476, + "y": 0.224, + "confidence": 0.942 + }, + { + "name": "left_shoulder", + "x": 0.5949, + "y": 0.2995, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3901, + "y": 0.3223, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7442, + "y": 0.3436, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3977, + "y": 0.4288, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8713, + "y": 0.3566, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.5722, + "y": 0.453, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5944, + "y": 0.518, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4456, + "y": 0.5304, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6593, + "y": 0.6656, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4252, + "y": 0.6842, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6718, + "y": 0.7884, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.3752, + "y": 0.8035, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 232, + "timestamp": 7.733333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.345, + "acceleration": -1.0474, + "fluidity": 0, + "expansion": 0.385, + "total_displacement": 0.0103, + "center_displacement": { + "x": -0.0093, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5449, + "y": 0.2104, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5503, + "y": 0.1982, + "confidence": 0.818 + }, + { + "name": "right_eye", + "x": 0.5141, + "y": 0.1999, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4395, + "y": 0.2208, + "confidence": 0.951 + }, + { + "name": "left_shoulder", + "x": 0.5851, + "y": 0.296, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3894, + "y": 0.3133, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7442, + "y": 0.3295, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.4534, + "y": 0.4055, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8792, + "y": 0.317, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.6232, + "y": 0.42, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5817, + "y": 0.517, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4318, + "y": 0.5258, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6614, + "y": 0.6646, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4189, + "y": 0.6786, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6704, + "y": 0.7908, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.3776, + "y": 0.8047, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 233, + "timestamp": 7.766666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.3063, + "acceleration": -1.1602, + "fluidity": 0, + "expansion": 0.39, + "total_displacement": 0.0115, + "center_displacement": { + "x": -0.0113, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5399, + "y": 0.2094, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5443, + "y": 0.1977, + "confidence": 0.809 + }, + { + "name": "right_eye", + "x": 0.5097, + "y": 0.2006, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4375, + "y": 0.2231, + "confidence": 0.952 + }, + { + "name": "left_shoulder", + "x": 0.5793, + "y": 0.2918, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3877, + "y": 0.3092, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7486, + "y": 0.3137, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4957, + "y": 0.3838, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8719, + "y": 0.2742, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.682, + "y": 0.3824, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5649, + "y": 0.5168, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4108, + "y": 0.5258, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6628, + "y": 0.6635, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4157, + "y": 0.6821, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6686, + "y": 0.7936, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.3762, + "y": 0.803, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 234, + "timestamp": 7.8, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2945, + "acceleration": -0.354, + "fluidity": 0, + "expansion": 0.397, + "total_displacement": 0.0076, + "center_displacement": { + "x": -0.0072, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5334, + "y": 0.2124, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5355, + "y": 0.1999, + "confidence": 0.759 + }, + { + "name": "right_eye", + "x": 0.5014, + "y": 0.2043, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4292, + "y": 0.226, + "confidence": 0.96 + }, + { + "name": "left_shoulder", + "x": 0.5676, + "y": 0.2846, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.3828, + "y": 0.3086, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7216, + "y": 0.2998, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.5451, + "y": 0.3583, + "confidence": 1 + }, + { + "name": "left_wrist", + "x": 0.8326, + "y": 0.2747, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.7526, + "y": 0.3099, + "confidence": 0.999 + }, + { + "name": "left_hip", + "x": 0.5588, + "y": 0.5144, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4047, + "y": 0.5262, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6667, + "y": 0.6637, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4066, + "y": 0.6801, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6563, + "y": 0.793, + "confidence": 0.973 + }, + { + "name": "right_ankle", + "x": 0.3701, + "y": 0.8036, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 235, + "timestamp": 7.833333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2855, + "acceleration": -0.2689, + "fluidity": 0, + "expansion": 0.408, + "total_displacement": 0.0116, + "center_displacement": { + "x": -0.0102, + "y": 0.0055 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5242, + "y": 0.2176, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.5261, + "y": 0.2059, + "confidence": 0.749 + }, + { + "name": "right_eye", + "x": 0.4951, + "y": 0.2091, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4257, + "y": 0.2318, + "confidence": 0.948 + }, + { + "name": "left_shoulder", + "x": 0.561, + "y": 0.296, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.3859, + "y": 0.3112, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.752, + "y": 0.2934, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.5532, + "y": 0.3382, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8326, + "y": 0.2222, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.7308, + "y": 0.2788, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5386, + "y": 0.5207, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3875, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.669, + "y": 0.6628, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.4036, + "y": 0.6824, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6557, + "y": 0.7981, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.3621, + "y": 0.8052, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 236, + "timestamp": 7.866666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2879, + "acceleration": 0.0707, + "fluidity": 0, + "expansion": 0.408, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.0033, + "y": 0.0063 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5131, + "y": 0.2201, + "confidence": 0.98 + }, + { + "name": "left_eye", + "x": 0.5137, + "y": 0.2087, + "confidence": 0.675 + }, + { + "name": "right_eye", + "x": 0.4837, + "y": 0.2125, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4184, + "y": 0.2372, + "confidence": 0.933 + }, + { + "name": "left_shoulder", + "x": 0.5383, + "y": 0.3008, + "confidence": 0.985 + }, + { + "name": "right_shoulder", + "x": 0.3977, + "y": 0.3143, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7114, + "y": 0.2931, + "confidence": 0.96 + }, + { + "name": "right_elbow", + "x": 0.6097, + "y": 0.3152, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8151, + "y": 0.2102, + "confidence": 0.957 + }, + { + "name": "right_wrist", + "x": 0.7885, + "y": 0.2192, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5294, + "y": 0.5294, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3944, + "y": 0.5365, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6682, + "y": 0.6691, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3975, + "y": 0.6903, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6505, + "y": 0.797, + "confidence": 0.92 + }, + { + "name": "right_ankle", + "x": 0.3624, + "y": 0.8075, + "confidence": 0.955 + } + ] + } + ] + }, + { + "frame_index": 237, + "timestamp": 7.8999999999999995, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2945, + "acceleration": 0.1989, + "fluidity": 0, + "expansion": 0.4, + "total_displacement": 0.0122, + "center_displacement": { + "x": -0.0119, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5053, + "y": 0.2225, + "confidence": 0.976 + }, + { + "name": "left_eye", + "x": 0.5054, + "y": 0.2123, + "confidence": 0.628 + }, + { + "name": "right_eye", + "x": 0.4773, + "y": 0.2151, + "confidence": 0.966 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4099, + "y": 0.2404, + "confidence": 0.924 + }, + { + "name": "left_shoulder", + "x": 0.5238, + "y": 0.3043, + "confidence": 0.99 + }, + { + "name": "right_shoulder", + "x": 0.386, + "y": 0.3233, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6923, + "y": 0.2917, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.6013, + "y": 0.3281, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.7718, + "y": 0.2082, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.7235, + "y": 0.2208, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5158, + "y": 0.5264, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3864, + "y": 0.536, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6672, + "y": 0.6699, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3865, + "y": 0.6912, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6364, + "y": 0.7906, + "confidence": 0.949 + }, + { + "name": "right_ankle", + "x": 0.3638, + "y": 0.8091, + "confidence": 0.968 + } + ] + } + ] + }, + { + "frame_index": 238, + "timestamp": 7.933333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2539, + "acceleration": -1.2196, + "fluidity": 0.067, + "expansion": 0.395, + "total_displacement": 0.0077, + "center_displacement": { + "x": -0.0045, + "y": 0.0062 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5012, + "y": 0.2238, + "confidence": 0.97 + }, + { + "name": "left_eye", + "x": 0.4953, + "y": 0.2105, + "confidence": 0.651 + }, + { + "name": "right_eye", + "x": 0.467, + "y": 0.2174, + "confidence": 0.957 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3952, + "y": 0.248, + "confidence": 0.93 + }, + { + "name": "left_shoulder", + "x": 0.5133, + "y": 0.3065, + "confidence": 0.991 + }, + { + "name": "right_shoulder", + "x": 0.388, + "y": 0.3309, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6683, + "y": 0.3066, + "confidence": 0.978 + }, + { + "name": "right_elbow", + "x": 0.6105, + "y": 0.3459, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6927, + "y": 0.2033, + "confidence": 0.961 + }, + { + "name": "right_wrist", + "x": 0.6617, + "y": 0.2401, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.5088, + "y": 0.5334, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3838, + "y": 0.5441, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6677, + "y": 0.6648, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3827, + "y": 0.6877, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6527, + "y": 0.7976, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.3658, + "y": 0.7995, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 239, + "timestamp": 7.966666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1907, + "acceleration": -1.8943, + "fluidity": 0.09, + "expansion": 0.394, + "total_displacement": 0.0079, + "center_displacement": { + "x": -0.0057, + "y": -0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4957, + "y": 0.2215, + "confidence": 0.964 + }, + { + "name": "left_eye", + "x": 0.4946, + "y": 0.2103, + "confidence": 0.534 + }, + { + "name": "right_eye", + "x": 0.4682, + "y": 0.2145, + "confidence": 0.95 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4012, + "y": 0.2421, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.5067, + "y": 0.3032, + "confidence": 0.99 + }, + { + "name": "right_shoulder", + "x": 0.3874, + "y": 0.3246, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6792, + "y": 0.3018, + "confidence": 0.981 + }, + { + "name": "right_elbow", + "x": 0.6291, + "y": 0.3382, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6916, + "y": 0.1985, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.6561, + "y": 0.2274, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.4996, + "y": 0.5278, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3774, + "y": 0.5377, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6679, + "y": 0.6638, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3813, + "y": 0.6903, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6507, + "y": 0.8037, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.3713, + "y": 0.8056, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 240, + "timestamp": 8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1251, + "acceleration": -1.9697, + "fluidity": 0.03, + "expansion": 0.393, + "total_displacement": 0.0027, + "center_displacement": { + "x": -0.0021, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4938, + "y": 0.2203, + "confidence": 0.958 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4666, + "y": 0.2135, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3986, + "y": 0.2407, + "confidence": 0.936 + }, + { + "name": "left_shoulder", + "x": 0.4997, + "y": 0.3008, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3866, + "y": 0.3216, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6757, + "y": 0.305, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.6244, + "y": 0.3378, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6844, + "y": 0.2011, + "confidence": 0.961 + }, + { + "name": "right_wrist", + "x": 0.6329, + "y": 0.2293, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.4971, + "y": 0.5271, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3791, + "y": 0.537, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6646, + "y": 0.6627, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.383, + "y": 0.6906, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6513, + "y": 0.8043, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.3713, + "y": 0.8067, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 241, + "timestamp": 8.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1605, + "acceleration": 1.0634, + "fluidity": 0.01, + "expansion": 0.391, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0033, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4887, + "y": 0.2201, + "confidence": 0.958 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4636, + "y": 0.2127, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3933, + "y": 0.2378, + "confidence": 0.933 + }, + { + "name": "left_shoulder", + "x": 0.4891, + "y": 0.3004, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3782, + "y": 0.3188, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.667, + "y": 0.3115, + "confidence": 0.977 + }, + { + "name": "right_elbow", + "x": 0.6153, + "y": 0.3388, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6784, + "y": 0.2101, + "confidence": 0.966 + }, + { + "name": "right_wrist", + "x": 0.615, + "y": 0.2298, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.4993, + "y": 0.5267, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3828, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6631, + "y": 0.6616, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3846, + "y": 0.6912, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6524, + "y": 0.8049, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.3723, + "y": 0.8048, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 242, + "timestamp": 8.066666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1841, + "acceleration": 0.7065, + "fluidity": 0.003, + "expansion": 0.389, + "total_displacement": 0.0085, + "center_displacement": { + "x": 0.0084, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.48, + "y": 0.2184, + "confidence": 0.946 + }, + { + "name": "left_eye", + "x": 0.4699, + "y": 0.207, + "confidence": 0.525 + }, + { + "name": "right_eye", + "x": 0.449, + "y": 0.2106, + "confidence": 0.922 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3752, + "y": 0.2391, + "confidence": 0.864 + }, + { + "name": "left_shoulder", + "x": 0.4839, + "y": 0.3019, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3825, + "y": 0.3188, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6475, + "y": 0.3072, + "confidence": 0.969 + }, + { + "name": "right_elbow", + "x": 0.6018, + "y": 0.3317, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6333, + "y": 0.2028, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.619, + "y": 0.2305, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.514, + "y": 0.5301, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4025, + "y": 0.5368, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6579, + "y": 0.6643, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.395, + "y": 0.6849, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6617, + "y": 0.7979, + "confidence": 0.947 + }, + { + "name": "right_ankle", + "x": 0.363, + "y": 0.8035, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 243, + "timestamp": 8.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2064, + "acceleration": 0.6716, + "fluidity": 0.001, + "expansion": 0.386, + "total_displacement": 0.0046, + "center_displacement": { + "x": -0.0046, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4729, + "y": 0.2173, + "confidence": 0.95 + }, + { + "name": "left_eye", + "x": 0.4631, + "y": 0.2061, + "confidence": 0.537 + }, + { + "name": "right_eye", + "x": 0.4418, + "y": 0.2095, + "confidence": 0.932 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3679, + "y": 0.2385, + "confidence": 0.873 + }, + { + "name": "left_shoulder", + "x": 0.4734, + "y": 0.3016, + "confidence": 0.978 + }, + { + "name": "right_shoulder", + "x": 0.3776, + "y": 0.319, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6267, + "y": 0.3089, + "confidence": 0.963 + }, + { + "name": "right_elbow", + "x": 0.5949, + "y": 0.3355, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6275, + "y": 0.2035, + "confidence": 0.943 + }, + { + "name": "right_wrist", + "x": 0.6189, + "y": 0.2327, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.511, + "y": 0.5299, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4025, + "y": 0.5371, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6566, + "y": 0.6643, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3952, + "y": 0.6845, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6631, + "y": 0.7969, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.3626, + "y": 0.804, + "confidence": 0.96 + } + ] + } + ] + }, + { + "frame_index": 244, + "timestamp": 8.133333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2023, + "acceleration": -0.1239, + "fluidity": 0, + "expansion": 0.382, + "total_displacement": 0.0099, + "center_displacement": { + "x": -0.0092, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4647, + "y": 0.2199, + "confidence": 0.955 + }, + { + "name": "left_eye", + "x": 0.4584, + "y": 0.2085, + "confidence": 0.506 + }, + { + "name": "right_eye", + "x": 0.4344, + "y": 0.2129, + "confidence": 0.942 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3636, + "y": 0.2417, + "confidence": 0.918 + }, + { + "name": "left_shoulder", + "x": 0.4667, + "y": 0.3067, + "confidence": 0.985 + }, + { + "name": "right_shoulder", + "x": 0.366, + "y": 0.3226, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6063, + "y": 0.3281, + "confidence": 0.969 + }, + { + "name": "right_elbow", + "x": 0.5977, + "y": 0.3433, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6293, + "y": 0.2153, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.6378, + "y": 0.2285, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5036, + "y": 0.5316, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3915, + "y": 0.5415, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6588, + "y": 0.6626, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3854, + "y": 0.6881, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.661, + "y": 0.7966, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.3671, + "y": 0.8018, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 245, + "timestamp": 8.166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1304, + "acceleration": -2.1571, + "fluidity": 0, + "expansion": 0.378, + "total_displacement": 0.0034, + "center_displacement": { + "x": 0.0033, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4577, + "y": 0.2192, + "confidence": 0.947 + }, + { + "name": "left_eye", + "x": 0.4505, + "y": 0.2078, + "confidence": 0.556 + }, + { + "name": "right_eye", + "x": 0.4273, + "y": 0.2117, + "confidence": 0.928 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3601, + "y": 0.2415, + "confidence": 0.87 + }, + { + "name": "left_shoulder", + "x": 0.4639, + "y": 0.3066, + "confidence": 0.977 + }, + { + "name": "right_shoulder", + "x": 0.3722, + "y": 0.3222, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6053, + "y": 0.3243, + "confidence": 0.952 + }, + { + "name": "right_elbow", + "x": 0.5899, + "y": 0.3429, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6311, + "y": 0.2242, + "confidence": 0.922 + }, + { + "name": "right_wrist", + "x": 0.6371, + "y": 0.2427, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5056, + "y": 0.5311, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3993, + "y": 0.5385, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6548, + "y": 0.6644, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.3954, + "y": 0.6863, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6639, + "y": 0.7968, + "confidence": 0.945 + }, + { + "name": "right_ankle", + "x": 0.3661, + "y": 0.8042, + "confidence": 0.961 + } + ] + } + ] + }, + { + "frame_index": 246, + "timestamp": 8.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1478, + "acceleration": 0.522, + "fluidity": 0, + "expansion": 0.375, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0028, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4535, + "y": 0.2193, + "confidence": 0.933 + }, + { + "name": "left_eye", + "x": 0.4453, + "y": 0.2081, + "confidence": 0.501 + }, + { + "name": "right_eye", + "x": 0.424, + "y": 0.2122, + "confidence": 0.907 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3572, + "y": 0.2421, + "confidence": 0.851 + }, + { + "name": "left_shoulder", + "x": 0.4587, + "y": 0.3065, + "confidence": 0.976 + }, + { + "name": "right_shoulder", + "x": 0.3662, + "y": 0.3232, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6005, + "y": 0.3284, + "confidence": 0.957 + }, + { + "name": "right_elbow", + "x": 0.5774, + "y": 0.3479, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6284, + "y": 0.2353, + "confidence": 0.929 + }, + { + "name": "right_wrist", + "x": 0.6302, + "y": 0.2507, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5053, + "y": 0.5311, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3994, + "y": 0.5397, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6525, + "y": 0.6655, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3951, + "y": 0.6897, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6657, + "y": 0.7974, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.3686, + "y": 0.8051, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 247, + "timestamp": 8.233333333333333, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1297, + "acceleration": -0.544, + "fluidity": 0, + "expansion": 0.376, + "total_displacement": 0.0076, + "center_displacement": { + "x": -0.0075, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4559, + "y": 0.2201, + "confidence": 0.944 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4261, + "y": 0.2136, + "confidence": 0.926 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3581, + "y": 0.2436, + "confidence": 0.91 + }, + { + "name": "left_shoulder", + "x": 0.4598, + "y": 0.3066, + "confidence": 0.985 + }, + { + "name": "right_shoulder", + "x": 0.3587, + "y": 0.3246, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5985, + "y": 0.3289, + "confidence": 0.97 + }, + { + "name": "right_elbow", + "x": 0.5853, + "y": 0.3487, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6312, + "y": 0.2272, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.6343, + "y": 0.2381, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.4966, + "y": 0.5308, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3845, + "y": 0.5414, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6536, + "y": 0.6631, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3831, + "y": 0.6878, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.661, + "y": 0.7972, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.3667, + "y": 0.8034, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 248, + "timestamp": 8.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0803, + "acceleration": -1.4796, + "fluidity": 0, + "expansion": 0.38, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4584, + "y": 0.2209, + "confidence": 0.949 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4288, + "y": 0.2139, + "confidence": 0.926 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3611, + "y": 0.2429, + "confidence": 0.908 + }, + { + "name": "left_shoulder", + "x": 0.4655, + "y": 0.3063, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3608, + "y": 0.3231, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6133, + "y": 0.3269, + "confidence": 0.978 + }, + { + "name": "right_elbow", + "x": 0.5891, + "y": 0.3441, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6298, + "y": 0.2211, + "confidence": 0.962 + }, + { + "name": "right_wrist", + "x": 0.6273, + "y": 0.2323, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4937, + "y": 0.5331, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3797, + "y": 0.5429, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6487, + "y": 0.6646, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3817, + "y": 0.69, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6575, + "y": 0.7988, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.366, + "y": 0.8037, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 249, + "timestamp": 8.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1605, + "acceleration": 2.4038, + "fluidity": 0, + "expansion": 0.383, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0032, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4549, + "y": 0.2202, + "confidence": 0.941 + }, + { + "name": "left_eye", + "x": 0.4462, + "y": 0.2091, + "confidence": 0.513 + }, + { + "name": "right_eye", + "x": 0.425, + "y": 0.2127, + "confidence": 0.913 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3576, + "y": 0.2424, + "confidence": 0.853 + }, + { + "name": "left_shoulder", + "x": 0.4599, + "y": 0.3057, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3668, + "y": 0.3214, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6136, + "y": 0.3169, + "confidence": 0.968 + }, + { + "name": "right_elbow", + "x": 0.5783, + "y": 0.339, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.636, + "y": 0.2139, + "confidence": 0.948 + }, + { + "name": "right_wrist", + "x": 0.6206, + "y": 0.2349, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.4959, + "y": 0.5353, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.39, + "y": 0.5421, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6391, + "y": 0.6702, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3887, + "y": 0.6892, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6599, + "y": 0.8006, + "confidence": 0.939 + }, + { + "name": "right_ankle", + "x": 0.3621, + "y": 0.8085, + "confidence": 0.953 + } + ] + } + ] + }, + { + "frame_index": 250, + "timestamp": 8.333333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1837, + "acceleration": 0.698, + "fluidity": 0, + "expansion": 0.381, + "total_displacement": 0.0101, + "center_displacement": { + "x": -0.0101, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4552, + "y": 0.2212, + "confidence": 0.952 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4247, + "y": 0.2141, + "confidence": 0.936 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3548, + "y": 0.2437, + "confidence": 0.916 + }, + { + "name": "left_shoulder", + "x": 0.4578, + "y": 0.3053, + "confidence": 0.986 + }, + { + "name": "right_shoulder", + "x": 0.3548, + "y": 0.3228, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6037, + "y": 0.3195, + "confidence": 0.972 + }, + { + "name": "right_elbow", + "x": 0.5827, + "y": 0.342, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6275, + "y": 0.205, + "confidence": 0.955 + }, + { + "name": "right_wrist", + "x": 0.6271, + "y": 0.2239, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4862, + "y": 0.5326, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3732, + "y": 0.5421, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.636, + "y": 0.6667, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3764, + "y": 0.6897, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.653, + "y": 0.8, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.3646, + "y": 0.8077, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 251, + "timestamp": 8.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1014, + "acceleration": -2.4692, + "fluidity": 0, + "expansion": 0.371, + "total_displacement": 0.0029, + "center_displacement": { + "x": -0.0028, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4511, + "y": 0.2206, + "confidence": 0.947 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.4216, + "y": 0.2134, + "confidence": 0.926 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3553, + "y": 0.2422, + "confidence": 0.911 + }, + { + "name": "left_shoulder", + "x": 0.4555, + "y": 0.306, + "confidence": 0.987 + }, + { + "name": "right_shoulder", + "x": 0.3535, + "y": 0.3204, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5902, + "y": 0.3364, + "confidence": 0.971 + }, + { + "name": "right_elbow", + "x": 0.5785, + "y": 0.3473, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6128, + "y": 0.2341, + "confidence": 0.949 + }, + { + "name": "right_wrist", + "x": 0.627, + "y": 0.2393, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.4823, + "y": 0.5324, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3696, + "y": 0.5411, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6323, + "y": 0.6671, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3733, + "y": 0.6903, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6513, + "y": 0.8008, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.3663, + "y": 0.8068, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 252, + "timestamp": 8.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0705, + "acceleration": -0.9279, + "fluidity": 0, + "expansion": 0.361, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0009, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4539, + "y": 0.2197, + "confidence": 0.938 + }, + { + "name": "left_eye", + "x": 0.4466, + "y": 0.2079, + "confidence": 0.603 + }, + { + "name": "right_eye", + "x": 0.4208, + "y": 0.2129, + "confidence": 0.912 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3577, + "y": 0.2418, + "confidence": 0.929 + }, + { + "name": "left_shoulder", + "x": 0.4527, + "y": 0.3043, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3581, + "y": 0.3188, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.5971, + "y": 0.3456, + "confidence": 0.958 + }, + { + "name": "right_elbow", + "x": 0.5657, + "y": 0.3532, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.622, + "y": 0.258, + "confidence": 0.918 + }, + { + "name": "right_wrist", + "x": 0.6226, + "y": 0.2548, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.4755, + "y": 0.531, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3781, + "y": 0.5429, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6166, + "y": 0.6676, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.379, + "y": 0.6904, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6472, + "y": 0.8029, + "confidence": 0.946 + }, + { + "name": "right_ankle", + "x": 0.3716, + "y": 0.8119, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 253, + "timestamp": 8.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0774, + "acceleration": 0.2054, + "fluidity": 0, + "expansion": 0.355, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0015, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4528, + "y": 0.2227, + "confidence": 0.946 + }, + { + "name": "left_eye", + "x": 0.4462, + "y": 0.2106, + "confidence": 0.63 + }, + { + "name": "right_eye", + "x": 0.4193, + "y": 0.2156, + "confidence": 0.923 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3554, + "y": 0.2436, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.4531, + "y": 0.3071, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3576, + "y": 0.321, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6027, + "y": 0.3511, + "confidence": 0.956 + }, + { + "name": "right_elbow", + "x": 0.5683, + "y": 0.3574, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.6261, + "y": 0.2694, + "confidence": 0.92 + }, + { + "name": "right_wrist", + "x": 0.6243, + "y": 0.2647, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.4724, + "y": 0.533, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3753, + "y": 0.5443, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.614, + "y": 0.6704, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3779, + "y": 0.692, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.644, + "y": 0.8044, + "confidence": 0.949 + }, + { + "name": "right_ankle", + "x": 0.3699, + "y": 0.8119, + "confidence": 0.963 + } + ] + } + ] + }, + { + "frame_index": 254, + "timestamp": 8.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1022, + "acceleration": 0.7456, + "fluidity": 0, + "expansion": 0.35, + "total_displacement": 0.0028, + "center_displacement": { + "x": -0.0028, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4512, + "y": 0.2245, + "confidence": 0.953 + }, + { + "name": "left_eye", + "x": 0.4453, + "y": 0.2118, + "confidence": 0.652 + }, + { + "name": "right_eye", + "x": 0.4168, + "y": 0.2171, + "confidence": 0.933 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3519, + "y": 0.2443, + "confidence": 0.936 + }, + { + "name": "left_shoulder", + "x": 0.4514, + "y": 0.3073, + "confidence": 0.989 + }, + { + "name": "right_shoulder", + "x": 0.3536, + "y": 0.3218, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5918, + "y": 0.3569, + "confidence": 0.961 + }, + { + "name": "right_elbow", + "x": 0.5618, + "y": 0.3655, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6233, + "y": 0.2765, + "confidence": 0.929 + }, + { + "name": "right_wrist", + "x": 0.6249, + "y": 0.2756, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.4703, + "y": 0.5321, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3718, + "y": 0.5438, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6104, + "y": 0.6705, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.3776, + "y": 0.6917, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6408, + "y": 0.8053, + "confidence": 0.954 + }, + { + "name": "right_ankle", + "x": 0.3707, + "y": 0.8127, + "confidence": 0.966 + } + ] + } + ] + }, + { + "frame_index": 255, + "timestamp": 8.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0991, + "acceleration": -0.0925, + "fluidity": 0, + "expansion": 0.347, + "total_displacement": 0.0048, + "center_displacement": { + "x": -0.0047, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4511, + "y": 0.2262, + "confidence": 0.951 + }, + { + "name": "left_eye", + "x": 0.4437, + "y": 0.2136, + "confidence": 0.618 + }, + { + "name": "right_eye", + "x": 0.4173, + "y": 0.2184, + "confidence": 0.933 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3501, + "y": 0.245, + "confidence": 0.939 + }, + { + "name": "left_shoulder", + "x": 0.4434, + "y": 0.3094, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3502, + "y": 0.3231, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5828, + "y": 0.3625, + "confidence": 0.96 + }, + { + "name": "right_elbow", + "x": 0.5582, + "y": 0.3698, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.6192, + "y": 0.2845, + "confidence": 0.931 + }, + { + "name": "right_wrist", + "x": 0.6255, + "y": 0.2833, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.4651, + "y": 0.5326, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3697, + "y": 0.5444, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6076, + "y": 0.6706, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.3772, + "y": 0.6917, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6393, + "y": 0.805, + "confidence": 0.956 + }, + { + "name": "right_ankle", + "x": 0.3701, + "y": 0.8135, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 256, + "timestamp": 8.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0824, + "acceleration": -0.5004, + "fluidity": 0, + "expansion": 0.347, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0006, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4502, + "y": 0.228, + "confidence": 0.953 + }, + { + "name": "left_eye", + "x": 0.4439, + "y": 0.2155, + "confidence": 0.643 + }, + { + "name": "right_eye", + "x": 0.4168, + "y": 0.22, + "confidence": 0.936 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3505, + "y": 0.2459, + "confidence": 0.94 + }, + { + "name": "left_shoulder", + "x": 0.4462, + "y": 0.3112, + "confidence": 0.989 + }, + { + "name": "right_shoulder", + "x": 0.3501, + "y": 0.3239, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5939, + "y": 0.3637, + "confidence": 0.959 + }, + { + "name": "right_elbow", + "x": 0.5647, + "y": 0.3693, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.6295, + "y": 0.2895, + "confidence": 0.928 + }, + { + "name": "right_wrist", + "x": 0.6348, + "y": 0.2896, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.4635, + "y": 0.5346, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3664, + "y": 0.5462, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6086, + "y": 0.671, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.3754, + "y": 0.694, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6371, + "y": 0.8042, + "confidence": 0.957 + }, + { + "name": "right_ankle", + "x": 0.3687, + "y": 0.8144, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 257, + "timestamp": 8.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1287, + "acceleration": 1.3867, + "fluidity": 0, + "expansion": 0.348, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0025, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4459, + "y": 0.2308, + "confidence": 0.972 + }, + { + "name": "left_eye", + "x": 0.4434, + "y": 0.2179, + "confidence": 0.709 + }, + { + "name": "right_eye", + "x": 0.4136, + "y": 0.2221, + "confidence": 0.961 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3478, + "y": 0.2476, + "confidence": 0.943 + }, + { + "name": "left_shoulder", + "x": 0.4516, + "y": 0.3157, + "confidence": 0.991 + }, + { + "name": "right_shoulder", + "x": 0.3488, + "y": 0.3252, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6, + "y": 0.362, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.5892, + "y": 0.3627, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6554, + "y": 0.2821, + "confidence": 0.943 + }, + { + "name": "right_wrist", + "x": 0.665, + "y": 0.2843, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.4614, + "y": 0.5369, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3544, + "y": 0.5462, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6133, + "y": 0.6726, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3696, + "y": 0.6962, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6322, + "y": 0.8024, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.3686, + "y": 0.8122, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 258, + "timestamp": 8.6, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1544, + "acceleration": 0.7733, + "fluidity": 0, + "expansion": 0.349, + "total_displacement": 0.0069, + "center_displacement": { + "x": -0.0055, + "y": -0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4499, + "y": 0.2314, + "confidence": 0.976 + }, + { + "name": "left_eye", + "x": 0.45, + "y": 0.219, + "confidence": 0.639 + }, + { + "name": "right_eye", + "x": 0.4211, + "y": 0.2229, + "confidence": 0.966 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.353, + "y": 0.2463, + "confidence": 0.935 + }, + { + "name": "left_shoulder", + "x": 0.4546, + "y": 0.3136, + "confidence": 0.99 + }, + { + "name": "right_shoulder", + "x": 0.346, + "y": 0.3218, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6114, + "y": 0.3654, + "confidence": 0.973 + }, + { + "name": "right_elbow", + "x": 0.593, + "y": 0.3603, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6858, + "y": 0.297, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.6553, + "y": 0.2958, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4543, + "y": 0.5325, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3391, + "y": 0.5398, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6133, + "y": 0.673, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3642, + "y": 0.7016, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6246, + "y": 0.8096, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.3674, + "y": 0.8106, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 259, + "timestamp": 8.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1232, + "acceleration": -0.9372, + "fluidity": 0, + "expansion": 0.35, + "total_displacement": 0.0043, + "center_displacement": { + "x": 0.0011, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4594, + "y": 0.2315, + "confidence": 0.977 + }, + { + "name": "left_eye", + "x": 0.4595, + "y": 0.219, + "confidence": 0.665 + }, + { + "name": "right_eye", + "x": 0.4282, + "y": 0.2227, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3592, + "y": 0.2467, + "confidence": 0.957 + }, + { + "name": "left_shoulder", + "x": 0.4575, + "y": 0.3182, + "confidence": 0.99 + }, + { + "name": "right_shoulder", + "x": 0.3525, + "y": 0.3237, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.603, + "y": 0.3724, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.6203, + "y": 0.361, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6696, + "y": 0.3145, + "confidence": 0.958 + }, + { + "name": "right_wrist", + "x": 0.7125, + "y": 0.3025, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4496, + "y": 0.5375, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3391, + "y": 0.5447, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6067, + "y": 0.6792, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.355, + "y": 0.6996, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6157, + "y": 0.8095, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.3683, + "y": 0.8073, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 260, + "timestamp": 8.666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0895, + "acceleration": -1.0123, + "fluidity": 0, + "expansion": 0.349, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0029, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4728, + "y": 0.2336, + "confidence": 0.983 + }, + { + "name": "left_eye", + "x": 0.4741, + "y": 0.22, + "confidence": 0.734 + }, + { + "name": "right_eye", + "x": 0.4387, + "y": 0.225, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3689, + "y": 0.2494, + "confidence": 0.961 + }, + { + "name": "left_shoulder", + "x": 0.4685, + "y": 0.3183, + "confidence": 0.991 + }, + { + "name": "right_shoulder", + "x": 0.3638, + "y": 0.3237, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6075, + "y": 0.3721, + "confidence": 0.97 + }, + { + "name": "right_elbow", + "x": 0.6312, + "y": 0.36, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7006, + "y": 0.3185, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.7418, + "y": 0.3082, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4438, + "y": 0.5381, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.334, + "y": 0.5448, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5942, + "y": 0.6804, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3543, + "y": 0.6988, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6083, + "y": 0.8098, + "confidence": 0.972 + }, + { + "name": "right_ankle", + "x": 0.3677, + "y": 0.8053, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 261, + "timestamp": 8.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0901, + "acceleration": 0.0182, + "fluidity": 0, + "expansion": 0.353, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0019, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4893, + "y": 0.2336, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4872, + "y": 0.2202, + "confidence": 0.637 + }, + { + "name": "right_eye", + "x": 0.4551, + "y": 0.2252, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3858, + "y": 0.251, + "confidence": 0.97 + }, + { + "name": "left_shoulder", + "x": 0.4719, + "y": 0.319, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3807, + "y": 0.3228, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6053, + "y": 0.3688, + "confidence": 0.907 + }, + { + "name": "right_elbow", + "x": 0.6415, + "y": 0.3536, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6979, + "y": 0.3304, + "confidence": 0.88 + }, + { + "name": "right_wrist", + "x": 0.7391, + "y": 0.3201, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.433, + "y": 0.5383, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3323, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5831, + "y": 0.6813, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.3527, + "y": 0.6985, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6004, + "y": 0.8079, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.3643, + "y": 0.8076, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 262, + "timestamp": 8.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1421, + "acceleration": 1.5606, + "fluidity": 0, + "expansion": 0.366, + "total_displacement": 0.0041, + "center_displacement": { + "x": -0.004, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.505, + "y": 0.232, + "confidence": 0.971 + }, + { + "name": "left_eye", + "x": 0.5037, + "y": 0.2182, + "confidence": 0.575 + }, + { + "name": "right_eye", + "x": 0.4703, + "y": 0.2243, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3983, + "y": 0.2539, + "confidence": 0.97 + }, + { + "name": "left_shoulder", + "x": 0.4722, + "y": 0.3154, + "confidence": 0.964 + }, + { + "name": "right_shoulder", + "x": 0.393, + "y": 0.3246, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5793, + "y": 0.3611, + "confidence": 0.801 + }, + { + "name": "right_elbow", + "x": 0.6579, + "y": 0.3519, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.6746, + "y": 0.332, + "confidence": 0.766 + }, + { + "name": "right_wrist", + "x": 0.7779, + "y": 0.3213, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.4176, + "y": 0.5372, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3191, + "y": 0.5429, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5695, + "y": 0.6771, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.3575, + "y": 0.7005, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5918, + "y": 0.8055, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.3576, + "y": 0.8087, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 263, + "timestamp": 8.766666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.18, + "acceleration": 1.136, + "fluidity": 0, + "expansion": 0.378, + "total_displacement": 0.0071, + "center_displacement": { + "x": 0.0071, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5211, + "y": 0.2367, + "confidence": 0.969 + }, + { + "name": "left_eye", + "x": 0.52, + "y": 0.2229, + "confidence": 0.559 + }, + { + "name": "right_eye", + "x": 0.4866, + "y": 0.2283, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.418, + "y": 0.2564, + "confidence": 0.972 + }, + { + "name": "left_shoulder", + "x": 0.4848, + "y": 0.3184, + "confidence": 0.966 + }, + { + "name": "right_shoulder", + "x": 0.4125, + "y": 0.3234, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5824, + "y": 0.3646, + "confidence": 0.807 + }, + { + "name": "right_elbow", + "x": 0.6837, + "y": 0.3545, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6909, + "y": 0.3377, + "confidence": 0.769 + }, + { + "name": "right_wrist", + "x": 0.8284, + "y": 0.3324, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.4136, + "y": 0.5398, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3192, + "y": 0.5422, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5587, + "y": 0.6869, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.3579, + "y": 0.6995, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5843, + "y": 0.8082, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.356, + "y": 0.8101, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 264, + "timestamp": 8.8, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1721, + "acceleration": -0.2346, + "fluidity": 0, + "expansion": 0.388, + "total_displacement": 0.0061, + "center_displacement": { + "x": 0.0061, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5394, + "y": 0.2374, + "confidence": 0.959 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.5053, + "y": 0.2286, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4383, + "y": 0.2568, + "confidence": 0.975 + }, + { + "name": "left_shoulder", + "x": 0.4957, + "y": 0.3197, + "confidence": 0.961 + }, + { + "name": "right_shoulder", + "x": 0.4297, + "y": 0.3219, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5928, + "y": 0.3667, + "confidence": 0.754 + }, + { + "name": "right_elbow", + "x": 0.6994, + "y": 0.3549, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7206, + "y": 0.3423, + "confidence": 0.703 + }, + { + "name": "right_wrist", + "x": 0.863, + "y": 0.3385, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.4096, + "y": 0.5414, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3197, + "y": 0.542, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5515, + "y": 0.6922, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.3575, + "y": 0.6995, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5832, + "y": 0.8053, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.3532, + "y": 0.8104, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 265, + "timestamp": 8.833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.187, + "acceleration": 0.4471, + "fluidity": 0, + "expansion": 0.421, + "total_displacement": 0.0051, + "center_displacement": { + "x": 0.0049, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5542, + "y": 0.242, + "confidence": 0.948 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.5203, + "y": 0.2335, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.454, + "y": 0.2619, + "confidence": 0.978 + }, + { + "name": "left_shoulder", + "x": 0.4992, + "y": 0.3232, + "confidence": 0.946 + }, + { + "name": "right_shoulder", + "x": 0.4458, + "y": 0.3243, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.582, + "y": 0.3739, + "confidence": 0.64 + }, + { + "name": "right_elbow", + "x": 0.7173, + "y": 0.3566, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7206, + "y": 0.3551, + "confidence": 0.578 + }, + { + "name": "right_wrist", + "x": 0.9003, + "y": 0.3484, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.4058, + "y": 0.5412, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3235, + "y": 0.5414, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5435, + "y": 0.6922, + "confidence": 0.994 + }, + { + "name": "right_knee", + "x": 0.3586, + "y": 0.6985, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5816, + "y": 0.8075, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.3553, + "y": 0.8111, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 266, + "timestamp": 8.866666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2209, + "acceleration": 1.017, + "fluidity": 0.217, + "expansion": 0.459, + "total_displacement": 0.0079, + "center_displacement": { + "x": 0.0076, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5759, + "y": 0.2484, + "confidence": 0.949 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.541, + "y": 0.2391, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.471, + "y": 0.2666, + "confidence": 0.98 + }, + { + "name": "left_shoulder", + "x": 0.514, + "y": 0.3274, + "confidence": 0.934 + }, + { + "name": "right_shoulder", + "x": 0.4599, + "y": 0.3271, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6137, + "y": 0.3761, + "confidence": 0.54 + }, + { + "name": "right_elbow", + "x": 0.7352, + "y": 0.3595, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_wrist", + "x": 0.9264, + "y": 0.3543, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.4061, + "y": 0.5419, + "confidence": 0.997 + }, + { + "name": "right_hip", + "x": 0.3248, + "y": 0.5415, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5411, + "y": 0.6926, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.3643, + "y": 0.6983, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5797, + "y": 0.8075, + "confidence": 0.969 + }, + { + "name": "right_ankle", + "x": 0.3579, + "y": 0.8124, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 267, + "timestamp": 8.9, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3287, + "acceleration": 3.234, + "fluidity": 0.29, + "expansion": 0.482, + "total_displacement": 0.008, + "center_displacement": { + "x": 0.0079, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5907, + "y": 0.2487, + "confidence": 0.952 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.5559, + "y": 0.2397, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.488, + "y": 0.2678, + "confidence": 0.98 + }, + { + "name": "left_shoulder", + "x": 0.5283, + "y": 0.3272, + "confidence": 0.934 + }, + { + "name": "right_shoulder", + "x": 0.4741, + "y": 0.328, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6224, + "y": 0.376, + "confidence": 0.526 + }, + { + "name": "right_elbow", + "x": 0.7428, + "y": 0.3631, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_wrist", + "x": 0.9403, + "y": 0.3613, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.4076, + "y": 0.5404, + "confidence": 0.996 + }, + { + "name": "right_hip", + "x": 0.3268, + "y": 0.54, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5376, + "y": 0.6911, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.3667, + "y": 0.6973, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5791, + "y": 0.8065, + "confidence": 0.971 + }, + { + "name": "right_ankle", + "x": 0.3568, + "y": 0.8116, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 268, + "timestamp": 8.933333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3738, + "acceleration": 1.3532, + "fluidity": 0.097, + "expansion": 0.496, + "total_displacement": 0.0175, + "center_displacement": { + "x": 0.0175, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5982, + "y": 0.2508, + "confidence": 0.953 + }, + { + "name": "left_eye", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_eye", + "x": 0.5656, + "y": 0.2425, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5008, + "y": 0.2711, + "confidence": 0.974 + }, + { + "name": "left_shoulder", + "x": 0.5474, + "y": 0.3274, + "confidence": 0.934 + }, + { + "name": "right_shoulder", + "x": 0.489, + "y": 0.3329, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6635, + "y": 0.3708, + "confidence": 0.52 + }, + { + "name": "right_elbow", + "x": 0.7483, + "y": 0.3648, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_wrist", + "x": 0.9581, + "y": 0.361, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.4273, + "y": 0.5411, + "confidence": 0.995 + }, + { + "name": "right_hip", + "x": 0.3429, + "y": 0.5403, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5406, + "y": 0.6876, + "confidence": 0.985 + }, + { + "name": "right_knee", + "x": 0.3622, + "y": 0.6961, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5752, + "y": 0.8016, + "confidence": 0.936 + }, + { + "name": "right_ankle", + "x": 0.3303, + "y": 0.8032, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 269, + "timestamp": 8.966666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2863, + "acceleration": -2.626, + "fluidity": 0.032, + "expansion": 0.463, + "total_displacement": 0.0089, + "center_displacement": { + "x": 0.0088, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6073, + "y": 0.2527, + "confidence": 0.968 + }, + { + "name": "left_eye", + "x": 0.6069, + "y": 0.239, + "confidence": 0.567 + }, + { + "name": "right_eye", + "x": 0.5739, + "y": 0.2447, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.507, + "y": 0.2729, + "confidence": 0.974 + }, + { + "name": "left_shoulder", + "x": 0.5652, + "y": 0.3288, + "confidence": 0.941 + }, + { + "name": "right_shoulder", + "x": 0.4918, + "y": 0.3331, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6996, + "y": 0.3719, + "confidence": 0.56 + }, + { + "name": "right_elbow", + "x": 0.7489, + "y": 0.3665, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_wrist", + "x": 0.9634, + "y": 0.369, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.4382, + "y": 0.5384, + "confidence": 0.994 + }, + { + "name": "right_hip", + "x": 0.3467, + "y": 0.5371, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5379, + "y": 0.6842, + "confidence": 0.986 + }, + { + "name": "right_knee", + "x": 0.3652, + "y": 0.693, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.573, + "y": 0.8002, + "confidence": 0.938 + }, + { + "name": "right_ankle", + "x": 0.3355, + "y": 0.7986, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 270, + "timestamp": 9, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2246, + "acceleration": -1.8526, + "fluidity": 0.011, + "expansion": 0.408, + "total_displacement": 0.0073, + "center_displacement": { + "x": 0.0073, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6133, + "y": 0.2538, + "confidence": 0.974 + }, + { + "name": "left_eye", + "x": 0.6133, + "y": 0.2401, + "confidence": 0.612 + }, + { + "name": "right_eye", + "x": 0.5796, + "y": 0.2456, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5111, + "y": 0.2729, + "confidence": 0.973 + }, + { + "name": "left_shoulder", + "x": 0.5769, + "y": 0.3308, + "confidence": 0.94 + }, + { + "name": "right_shoulder", + "x": 0.4908, + "y": 0.333, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7163, + "y": 0.3789, + "confidence": 0.558 + }, + { + "name": "right_elbow", + "x": 0.7354, + "y": 0.3692, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.9277, + "y": 0.3719, + "confidence": 0.511 + }, + { + "name": "right_wrist", + "x": 0.9605, + "y": 0.3735, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.45, + "y": 0.5365, + "confidence": 0.995 + }, + { + "name": "right_hip", + "x": 0.3531, + "y": 0.5347, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5381, + "y": 0.6819, + "confidence": 0.988 + }, + { + "name": "right_knee", + "x": 0.3686, + "y": 0.69, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5702, + "y": 0.7981, + "confidence": 0.949 + }, + { + "name": "right_ankle", + "x": 0.3399, + "y": 0.7979, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 271, + "timestamp": 9.033333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2283, + "acceleration": 0.1119, + "fluidity": 0.004, + "expansion": 0.379, + "total_displacement": 0.0056, + "center_displacement": { + "x": 0.0054, + "y": -0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6158, + "y": 0.2527, + "confidence": 0.974 + }, + { + "name": "left_eye", + "x": 0.6161, + "y": 0.2393, + "confidence": 0.69 + }, + { + "name": "right_eye", + "x": 0.5811, + "y": 0.2437, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5149, + "y": 0.2691, + "confidence": 0.969 + }, + { + "name": "left_shoulder", + "x": 0.5872, + "y": 0.3308, + "confidence": 0.979 + }, + { + "name": "right_shoulder", + "x": 0.4884, + "y": 0.3309, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.729, + "y": 0.3801, + "confidence": 0.846 + }, + { + "name": "right_elbow", + "x": 0.7157, + "y": 0.3742, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.9433, + "y": 0.3854, + "confidence": 0.804 + }, + { + "name": "right_wrist", + "x": 0.9374, + "y": 0.3865, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.4574, + "y": 0.5339, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3593, + "y": 0.5327, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5414, + "y": 0.6847, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.383, + "y": 0.6886, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5706, + "y": 0.8019, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.3663, + "y": 0.8073, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 272, + "timestamp": 9.066666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2765, + "acceleration": 1.4451, + "fluidity": 0.001, + "expansion": 0.359, + "total_displacement": 0.0097, + "center_displacement": { + "x": 0.009, + "y": -0.0036 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6168, + "y": 0.252, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0.6184, + "y": 0.2385, + "confidence": 0.711 + }, + { + "name": "right_eye", + "x": 0.5819, + "y": 0.2434, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5148, + "y": 0.2675, + "confidence": 0.964 + }, + { + "name": "left_shoulder", + "x": 0.595, + "y": 0.3237, + "confidence": 0.987 + }, + { + "name": "right_shoulder", + "x": 0.4833, + "y": 0.3315, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7166, + "y": 0.366, + "confidence": 0.931 + }, + { + "name": "right_elbow", + "x": 0.6886, + "y": 0.3828, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.9043, + "y": 0.3792, + "confidence": 0.92 + }, + { + "name": "right_wrist", + "x": 0.9104, + "y": 0.3931, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.4776, + "y": 0.5291, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3727, + "y": 0.5299, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5475, + "y": 0.684, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3903, + "y": 0.6848, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.571, + "y": 0.8036, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.3702, + "y": 0.8069, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 273, + "timestamp": 9.1, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3498, + "acceleration": 2.2003, + "fluidity": 0, + "expansion": 0.347, + "total_displacement": 0.0103, + "center_displacement": { + "x": 0.01, + "y": -0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6145, + "y": 0.2518, + "confidence": 0.985 + }, + { + "name": "left_eye", + "x": 0.6202, + "y": 0.2376, + "confidence": 0.763 + }, + { + "name": "right_eye", + "x": 0.5791, + "y": 0.244, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5162, + "y": 0.2674, + "confidence": 0.964 + }, + { + "name": "left_shoulder", + "x": 0.6092, + "y": 0.3183, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.4787, + "y": 0.3323, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6937, + "y": 0.3533, + "confidence": 0.946 + }, + { + "name": "right_elbow", + "x": 0.634, + "y": 0.3873, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.8259, + "y": 0.3641, + "confidence": 0.945 + }, + { + "name": "right_wrist", + "x": 0.8234, + "y": 0.3964, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.4976, + "y": 0.5262, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3832, + "y": 0.5278, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5521, + "y": 0.6834, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3924, + "y": 0.6835, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5719, + "y": 0.8028, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.3664, + "y": 0.8054, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 274, + "timestamp": 9.133333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3682, + "acceleration": 0.5507, + "fluidity": 0, + "expansion": 0.341, + "total_displacement": 0.0154, + "center_displacement": { + "x": 0.0149, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6126, + "y": 0.2554, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.6237, + "y": 0.2404, + "confidence": 0.91 + }, + { + "name": "right_eye", + "x": 0.5747, + "y": 0.2449, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5136, + "y": 0.2665, + "confidence": 0.949 + }, + { + "name": "left_shoulder", + "x": 0.6371, + "y": 0.3325, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4748, + "y": 0.3316, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7285, + "y": 0.3772, + "confidence": 0.972 + }, + { + "name": "right_elbow", + "x": 0.588, + "y": 0.3744, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.8435, + "y": 0.3885, + "confidence": 0.965 + }, + { + "name": "right_wrist", + "x": 0.766, + "y": 0.3825, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.5226, + "y": 0.5303, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.394, + "y": 0.5262, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5602, + "y": 0.6859, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3958, + "y": 0.6806, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5734, + "y": 0.804, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.3616, + "y": 0.8055, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 275, + "timestamp": 9.166666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3506, + "acceleration": -0.5273, + "fluidity": 0, + "expansion": 0.334, + "total_displacement": 0.0097, + "center_displacement": { + "x": 0.0097, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6022, + "y": 0.2562, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6171, + "y": 0.2426, + "confidence": 0.938 + }, + { + "name": "right_eye", + "x": 0.567, + "y": 0.2456, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.5121, + "y": 0.2659, + "confidence": 0.934 + }, + { + "name": "left_shoulder", + "x": 0.6505, + "y": 0.3363, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4699, + "y": 0.3313, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7416, + "y": 0.3775, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.509, + "y": 0.367, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7864, + "y": 0.3936, + "confidence": 0.97 + }, + { + "name": "right_wrist", + "x": 0.6147, + "y": 0.3836, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.54, + "y": 0.5305, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4069, + "y": 0.5235, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5623, + "y": 0.6847, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4031, + "y": 0.6755, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.576, + "y": 0.8036, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.3606, + "y": 0.8035, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 276, + "timestamp": 9.2, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3423, + "acceleration": -0.2486, + "fluidity": 0, + "expansion": 0.337, + "total_displacement": 0.0131, + "center_displacement": { + "x": 0.0121, + "y": 0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5958, + "y": 0.2579, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6168, + "y": 0.244, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.562, + "y": 0.2462, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.6353, + "y": 0.2572, + "confidence": 0.634 + }, + { + "name": "right_ear", + "x": 0.5113, + "y": 0.2649, + "confidence": 0.898 + }, + { + "name": "left_shoulder", + "x": 0.6633, + "y": 0.3421, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4717, + "y": 0.3364, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7297, + "y": 0.396, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.4245, + "y": 0.372, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6563, + "y": 0.4101, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.4093, + "y": 0.3768, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5571, + "y": 0.5353, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4236, + "y": 0.5276, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5662, + "y": 0.6825, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4103, + "y": 0.6772, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5784, + "y": 0.8043, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.3597, + "y": 0.8069, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 277, + "timestamp": 9.233333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3285, + "acceleration": -0.414, + "fluidity": 0, + "expansion": 0.351, + "total_displacement": 0.0095, + "center_displacement": { + "x": 0.0092, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5945, + "y": 0.26, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6166, + "y": 0.2458, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.5605, + "y": 0.2494, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.64, + "y": 0.2573, + "confidence": 0.707 + }, + { + "name": "right_ear", + "x": 0.5104, + "y": 0.2693, + "confidence": 0.861 + }, + { + "name": "left_shoulder", + "x": 0.6773, + "y": 0.3382, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4621, + "y": 0.344, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7132, + "y": 0.3784, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.3533, + "y": 0.3819, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6101, + "y": 0.3904, + "confidence": 0.975 + }, + { + "name": "right_wrist", + "x": 0.2614, + "y": 0.3886, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5804, + "y": 0.5365, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4326, + "y": 0.5319, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5846, + "y": 0.6848, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4102, + "y": 0.6762, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5827, + "y": 0.8025, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.3639, + "y": 0.8008, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 278, + "timestamp": 9.266666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2601, + "acceleration": -2.0515, + "fluidity": 0, + "expansion": 0.367, + "total_displacement": 0.012, + "center_displacement": { + "x": 0.012, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5928, + "y": 0.2605, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6157, + "y": 0.2476, + "confidence": 0.955 + }, + { + "name": "right_eye", + "x": 0.5597, + "y": 0.251, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6416, + "y": 0.2588, + "confidence": 0.575 + }, + { + "name": "right_ear", + "x": 0.5107, + "y": 0.2705, + "confidence": 0.867 + }, + { + "name": "left_shoulder", + "x": 0.6841, + "y": 0.3378, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4628, + "y": 0.3427, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6992, + "y": 0.3787, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3369, + "y": 0.3772, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.5535, + "y": 0.3853, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.1854, + "y": 0.3835, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.6018, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4516, + "y": 0.531, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5875, + "y": 0.6873, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4104, + "y": 0.6796, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5805, + "y": 0.8047, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.3655, + "y": 0.8069, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 279, + "timestamp": 9.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1517, + "acceleration": -3.2521, + "fluidity": 0, + "expansion": 0.378, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0025, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5863, + "y": 0.2637, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6082, + "y": 0.2496, + "confidence": 0.957 + }, + { + "name": "right_eye", + "x": 0.5532, + "y": 0.2541, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.6369, + "y": 0.2592, + "confidence": 0.602 + }, + { + "name": "right_ear", + "x": 0.506, + "y": 0.2729, + "confidence": 0.858 + }, + { + "name": "left_shoulder", + "x": 0.6827, + "y": 0.3407, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.4564, + "y": 0.3447, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6745, + "y": 0.3814, + "confidence": 0.979 + }, + { + "name": "right_elbow", + "x": 0.2909, + "y": 0.3741, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.5041, + "y": 0.3758, + "confidence": 0.976 + }, + { + "name": "right_wrist", + "x": 0.1117, + "y": 0.3823, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.612, + "y": 0.5379, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.459, + "y": 0.5326, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5949, + "y": 0.6909, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4082, + "y": 0.6815, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5765, + "y": 0.8094, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.3623, + "y": 0.8062, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 280, + "timestamp": 9.333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1119, + "acceleration": -1.1954, + "fluidity": 0, + "expansion": 0.382, + "total_displacement": 0.0034, + "center_displacement": { + "x": 0.0034, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5731, + "y": 0.2661, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5958, + "y": 0.2527, + "confidence": 0.964 + }, + { + "name": "right_eye", + "x": 0.5423, + "y": 0.2568, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.6302, + "y": 0.2621, + "confidence": 0.678 + }, + { + "name": "right_ear", + "x": 0.5009, + "y": 0.2747, + "confidence": 0.814 + }, + { + "name": "left_shoulder", + "x": 0.6806, + "y": 0.3417, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4503, + "y": 0.3445, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6458, + "y": 0.3796, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.2641, + "y": 0.3716, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.4485, + "y": 0.3741, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.0874, + "y": 0.3838, + "confidence": 0.992 + }, + { + "name": "left_hip", + "x": 0.6249, + "y": 0.5377, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.468, + "y": 0.5321, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5987, + "y": 0.6919, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4136, + "y": 0.6805, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5777, + "y": 0.8106, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.3648, + "y": 0.805, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 281, + "timestamp": 9.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1049, + "acceleration": -0.2077, + "fluidity": 0, + "expansion": 0.38, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0026, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5666, + "y": 0.2674, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5905, + "y": 0.2538, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.5359, + "y": 0.2577, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.6306, + "y": 0.2624, + "confidence": 0.766 + }, + { + "name": "right_ear", + "x": 0.4974, + "y": 0.2746, + "confidence": 0.775 + }, + { + "name": "left_shoulder", + "x": 0.6817, + "y": 0.3429, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4486, + "y": 0.3435, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6299, + "y": 0.3813, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.2518, + "y": 0.3692, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.4286, + "y": 0.3751, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.0797, + "y": 0.3856, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.6317, + "y": 0.5393, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4721, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6049, + "y": 0.691, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4174, + "y": 0.6812, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5804, + "y": 0.8088, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.3655, + "y": 0.806, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 282, + "timestamp": 9.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0906, + "acceleration": -0.4304, + "fluidity": 0, + "expansion": 0.371, + "total_displacement": 0.004, + "center_displacement": { + "x": 0.004, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5564, + "y": 0.2677, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5812, + "y": 0.2542, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.5265, + "y": 0.2579, + "confidence": 0.969 + }, + { + "name": "left_ear", + "x": 0.6265, + "y": 0.2631, + "confidence": 0.806 + }, + { + "name": "right_ear", + "x": 0.4922, + "y": 0.2743, + "confidence": 0.729 + }, + { + "name": "left_shoulder", + "x": 0.6783, + "y": 0.3439, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4524, + "y": 0.3411, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6132, + "y": 0.3812, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2614, + "y": 0.3614, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.4069, + "y": 0.3758, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.0948, + "y": 0.3787, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6384, + "y": 0.5414, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4812, + "y": 0.5347, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6056, + "y": 0.6944, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4201, + "y": 0.6833, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5834, + "y": 0.8093, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.3695, + "y": 0.8055, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 283, + "timestamp": 9.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0783, + "acceleration": -0.3697, + "fluidity": 0, + "expansion": 0.358, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0004, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5492, + "y": 0.2669, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5757, + "y": 0.2545, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5216, + "y": 0.2564, + "confidence": 0.964 + }, + { + "name": "left_ear", + "x": 0.6271, + "y": 0.2633, + "confidence": 0.882 + }, + { + "name": "right_ear", + "x": 0.4915, + "y": 0.2708, + "confidence": 0.641 + }, + { + "name": "left_shoulder", + "x": 0.6767, + "y": 0.3448, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4599, + "y": 0.3357, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6022, + "y": 0.383, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2867, + "y": 0.3547, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.3865, + "y": 0.3778, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.1335, + "y": 0.3759, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.632, + "y": 0.5484, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4799, + "y": 0.5381, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6011, + "y": 0.6994, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4228, + "y": 0.684, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5867, + "y": 0.8112, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.3793, + "y": 0.8054, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 284, + "timestamp": 9.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0712, + "acceleration": -0.2106, + "fluidity": 0, + "expansion": 0.344, + "total_displacement": 0.0033, + "center_displacement": { + "x": 0.0028, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5405, + "y": 0.2659, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5692, + "y": 0.2542, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.5173, + "y": 0.2547, + "confidence": 0.956 + }, + { + "name": "left_ear", + "x": 0.6278, + "y": 0.2634, + "confidence": 0.93 + }, + { + "name": "right_ear", + "x": 0.4936, + "y": 0.2676, + "confidence": 0.516 + }, + { + "name": "left_shoulder", + "x": 0.6727, + "y": 0.3421, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4686, + "y": 0.3332, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6001, + "y": 0.3759, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3101, + "y": 0.3528, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.4078, + "y": 0.3735, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.1703, + "y": 0.378, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.6312, + "y": 0.5472, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4872, + "y": 0.5374, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5965, + "y": 0.6976, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4286, + "y": 0.6834, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5849, + "y": 0.8136, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3956, + "y": 0.8017, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 285, + "timestamp": 9.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1343, + "acceleration": 1.8919, + "fluidity": 0, + "expansion": 0.328, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0012, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5342, + "y": 0.2586, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5653, + "y": 0.2478, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5142, + "y": 0.2471, + "confidence": 0.949 + }, + { + "name": "left_ear", + "x": 0.6279, + "y": 0.2607, + "confidence": 0.952 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6659, + "y": 0.3389, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4779, + "y": 0.3342, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5993, + "y": 0.3655, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3487, + "y": 0.3582, + "confidence": 0.971 + }, + { + "name": "left_wrist", + "x": 0.432, + "y": 0.3598, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.2235, + "y": 0.3774, + "confidence": 0.959 + }, + { + "name": "left_hip", + "x": 0.6273, + "y": 0.5465, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4933, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5915, + "y": 0.6968, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4357, + "y": 0.6855, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5855, + "y": 0.8119, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.4183, + "y": 0.798, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 286, + "timestamp": 9.533333333333333, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2471, + "acceleration": 3.3823, + "fluidity": 0, + "expansion": 0.315, + "total_displacement": 0.0098, + "center_displacement": { + "x": 0.0097, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5293, + "y": 0.257, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5604, + "y": 0.2458, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5118, + "y": 0.245, + "confidence": 0.933 + }, + { + "name": "left_ear", + "x": 0.6261, + "y": 0.258, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6666, + "y": 0.3353, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4951, + "y": 0.3335, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.5929, + "y": 0.3616, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3857, + "y": 0.3711, + "confidence": 0.958 + }, + { + "name": "left_wrist", + "x": 0.4255, + "y": 0.3439, + "confidence": 0.978 + }, + { + "name": "right_wrist", + "x": 0.2786, + "y": 0.383, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.6327, + "y": 0.5463, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5088, + "y": 0.5376, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5849, + "y": 0.6993, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4432, + "y": 0.6809, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5859, + "y": 0.8131, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.4396, + "y": 0.798, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 287, + "timestamp": 9.566666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.212, + "acceleration": -1.0513, + "fluidity": 0, + "expansion": 0.303, + "total_displacement": 0.0104, + "center_displacement": { + "x": -0.0092, + "y": -0.0049 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5265, + "y": 0.2476, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5597, + "y": 0.2381, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5096, + "y": 0.2368, + "confidence": 0.927 + }, + { + "name": "left_ear", + "x": 0.6261, + "y": 0.2549, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6449, + "y": 0.3244, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4959, + "y": 0.3289, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.5541, + "y": 0.3316, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4183, + "y": 0.3624, + "confidence": 0.956 + }, + { + "name": "left_wrist", + "x": 0.4705, + "y": 0.323, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.3169, + "y": 0.3865, + "confidence": 0.932 + }, + { + "name": "left_hip", + "x": 0.6195, + "y": 0.5424, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5062, + "y": 0.5374, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5793, + "y": 0.697, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4463, + "y": 0.6799, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.594, + "y": 0.8129, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.4675, + "y": 0.7857, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 288, + "timestamp": 9.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1455, + "acceleration": -1.9967, + "fluidity": 0, + "expansion": 0.294, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0015, + "y": -0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5199, + "y": 0.2421, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5543, + "y": 0.2328, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5071, + "y": 0.231, + "confidence": 0.883 + }, + { + "name": "left_ear", + "x": 0.6263, + "y": 0.2506, + "confidence": 0.978 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6384, + "y": 0.3189, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.511, + "y": 0.3255, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.5323, + "y": 0.3267, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.4578, + "y": 0.3678, + "confidence": 0.94 + }, + { + "name": "left_wrist", + "x": 0.4404, + "y": 0.3212, + "confidence": 0.977 + }, + { + "name": "right_wrist", + "x": 0.3631, + "y": 0.3878, + "confidence": 0.904 + }, + { + "name": "left_hip", + "x": 0.6122, + "y": 0.5431, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.511, + "y": 0.5373, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5682, + "y": 0.7013, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4506, + "y": 0.676, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5969, + "y": 0.8201, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.492, + "y": 0.7767, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 289, + "timestamp": 9.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1443, + "acceleration": -0.0337, + "fluidity": 0, + "expansion": 0.295, + "total_displacement": 0.0049, + "center_displacement": { + "x": -0.0038, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5172, + "y": 0.2365, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5531, + "y": 0.2271, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.5064, + "y": 0.2243, + "confidence": 0.885 + }, + { + "name": "left_ear", + "x": 0.62, + "y": 0.2451, + "confidence": 0.97 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6348, + "y": 0.3136, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4994, + "y": 0.3204, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.5832, + "y": 0.3192, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4662, + "y": 0.3633, + "confidence": 0.943 + }, + { + "name": "left_wrist", + "x": 0.4849, + "y": 0.3036, + "confidence": 0.981 + }, + { + "name": "right_wrist", + "x": 0.3861, + "y": 0.3855, + "confidence": 0.916 + }, + { + "name": "left_hip", + "x": 0.6124, + "y": 0.5415, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5107, + "y": 0.5367, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5647, + "y": 0.6988, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.459, + "y": 0.6794, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.611, + "y": 0.8202, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5183, + "y": 0.7717, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 290, + "timestamp": 9.666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1234, + "acceleration": -0.6291, + "fluidity": 0, + "expansion": 0.296, + "total_displacement": 0.0047, + "center_displacement": { + "x": 0.0001, + "y": -0.0047 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5201, + "y": 0.2319, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5548, + "y": 0.2215, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5096, + "y": 0.2195, + "confidence": 0.884 + }, + { + "name": "left_ear", + "x": 0.6163, + "y": 0.2386, + "confidence": 0.963 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6353, + "y": 0.3079, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4981, + "y": 0.3171, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6178, + "y": 0.3139, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4715, + "y": 0.3544, + "confidence": 0.94 + }, + { + "name": "left_wrist", + "x": 0.5056, + "y": 0.3044, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4049, + "y": 0.3722, + "confidence": 0.925 + }, + { + "name": "left_hip", + "x": 0.6116, + "y": 0.5358, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5127, + "y": 0.5327, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.559, + "y": 0.6937, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.461, + "y": 0.6803, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6311, + "y": 0.8235, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5391, + "y": 0.7758, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 291, + "timestamp": 9.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0818, + "acceleration": -1.2458, + "fluidity": 0, + "expansion": 0.298, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0003, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5219, + "y": 0.2273, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5574, + "y": 0.2164, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5112, + "y": 0.2138, + "confidence": 0.903 + }, + { + "name": "left_ear", + "x": 0.6161, + "y": 0.2334, + "confidence": 0.965 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6392, + "y": 0.3042, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4957, + "y": 0.3132, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6496, + "y": 0.3136, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4763, + "y": 0.3508, + "confidence": 0.926 + }, + { + "name": "left_wrist", + "x": 0.5126, + "y": 0.3102, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4095, + "y": 0.3722, + "confidence": 0.917 + }, + { + "name": "left_hip", + "x": 0.612, + "y": 0.534, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5123, + "y": 0.5308, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5545, + "y": 0.6892, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4624, + "y": 0.6779, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6474, + "y": 0.8238, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5572, + "y": 0.7799, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 292, + "timestamp": 9.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0407, + "acceleration": -1.2331, + "fluidity": 0, + "expansion": 0.302, + "total_displacement": 0.0012, + "center_displacement": { + "x": -0.0011, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5209, + "y": 0.2195, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5581, + "y": 0.2101, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5118, + "y": 0.2058, + "confidence": 0.91 + }, + { + "name": "left_ear", + "x": 0.6171, + "y": 0.2322, + "confidence": 0.965 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6435, + "y": 0.3082, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4914, + "y": 0.309, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6768, + "y": 0.324, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4684, + "y": 0.3462, + "confidence": 0.925 + }, + { + "name": "left_wrist", + "x": 0.5352, + "y": 0.312, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4093, + "y": 0.3767, + "confidence": 0.922 + }, + { + "name": "left_hip", + "x": 0.6111, + "y": 0.5343, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5087, + "y": 0.5287, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.554, + "y": 0.6872, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4716, + "y": 0.6776, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6572, + "y": 0.8252, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5643, + "y": 0.7875, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 293, + "timestamp": 9.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0853, + "acceleration": 1.3365, + "fluidity": 0, + "expansion": 0.303, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5206, + "y": 0.2159, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5579, + "y": 0.2064, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5128, + "y": 0.2022, + "confidence": 0.897 + }, + { + "name": "left_ear", + "x": 0.6174, + "y": 0.2293, + "confidence": 0.969 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6471, + "y": 0.3072, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4923, + "y": 0.3089, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.6969, + "y": 0.33, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4658, + "y": 0.3494, + "confidence": 0.896 + }, + { + "name": "left_wrist", + "x": 0.5358, + "y": 0.3154, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4109, + "y": 0.3723, + "confidence": 0.896 + }, + { + "name": "left_hip", + "x": 0.6086, + "y": 0.5346, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5062, + "y": 0.5293, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5549, + "y": 0.6865, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.479, + "y": 0.6792, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6692, + "y": 0.8287, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5716, + "y": 0.7903, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 294, + "timestamp": 9.8, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1331, + "acceleration": 1.4333, + "fluidity": 0, + "expansion": 0.305, + "total_displacement": 0.007, + "center_displacement": { + "x": -0.0058, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.52, + "y": 0.2141, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5581, + "y": 0.2043, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5123, + "y": 0.2, + "confidence": 0.896 + }, + { + "name": "left_ear", + "x": 0.615, + "y": 0.2289, + "confidence": 0.967 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6467, + "y": 0.3081, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4756, + "y": 0.3175, + "confidence": 0.989 + }, + { + "name": "left_elbow", + "x": 0.7133, + "y": 0.336, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4367, + "y": 0.3739, + "confidence": 0.893 + }, + { + "name": "left_wrist", + "x": 0.5424, + "y": 0.3226, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4191, + "y": 0.3689, + "confidence": 0.892 + }, + { + "name": "left_hip", + "x": 0.6092, + "y": 0.5364, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4996, + "y": 0.5344, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5578, + "y": 0.6871, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4885, + "y": 0.6807, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6733, + "y": 0.8299, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5735, + "y": 0.7929, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 295, + "timestamp": 9.833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1088, + "acceleration": -0.7272, + "fluidity": 0, + "expansion": 0.307, + "total_displacement": 0.0034, + "center_displacement": { + "x": 0.0007, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5168, + "y": 0.2136, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5532, + "y": 0.2036, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5097, + "y": 0.1995, + "confidence": 0.888 + }, + { + "name": "left_ear", + "x": 0.6137, + "y": 0.2259, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6483, + "y": 0.3081, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4815, + "y": 0.3068, + "confidence": 0.991 + }, + { + "name": "left_elbow", + "x": 0.7153, + "y": 0.3357, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4337, + "y": 0.343, + "confidence": 0.931 + }, + { + "name": "left_wrist", + "x": 0.5422, + "y": 0.3249, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4135, + "y": 0.3583, + "confidence": 0.936 + }, + { + "name": "left_hip", + "x": 0.6052, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4991, + "y": 0.5312, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5617, + "y": 0.6892, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5001, + "y": 0.6796, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6769, + "y": 0.831, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.575, + "y": 0.7916, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 296, + "timestamp": 9.866666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0862, + "acceleration": -0.6789, + "fluidity": 0, + "expansion": 0.31, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0023, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5136, + "y": 0.214, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5475, + "y": 0.2039, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5092, + "y": 0.2004, + "confidence": 0.837 + }, + { + "name": "left_ear", + "x": 0.6139, + "y": 0.2241, + "confidence": 0.95 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6528, + "y": 0.3091, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4903, + "y": 0.3004, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.7141, + "y": 0.3378, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.419, + "y": 0.3236, + "confidence": 0.932 + }, + { + "name": "left_wrist", + "x": 0.54, + "y": 0.3238, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.4061, + "y": 0.3492, + "confidence": 0.94 + }, + { + "name": "left_hip", + "x": 0.601, + "y": 0.5367, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4992, + "y": 0.5289, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5627, + "y": 0.6877, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5113, + "y": 0.6791, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6742, + "y": 0.8294, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5717, + "y": 0.7903, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 297, + "timestamp": 9.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0865, + "acceleration": 0.0095, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.002, + "center_displacement": { + "x": -0.0014, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5134, + "y": 0.2108, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.5468, + "y": 0.2009, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5101, + "y": 0.1975, + "confidence": 0.82 + }, + { + "name": "left_ear", + "x": 0.6143, + "y": 0.2218, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6513, + "y": 0.3085, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4911, + "y": 0.2991, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.7088, + "y": 0.3408, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.407, + "y": 0.3241, + "confidence": 0.933 + }, + { + "name": "left_wrist", + "x": 0.5394, + "y": 0.3241, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3963, + "y": 0.3445, + "confidence": 0.94 + }, + { + "name": "left_hip", + "x": 0.5973, + "y": 0.5345, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4981, + "y": 0.5274, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5654, + "y": 0.6857, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5217, + "y": 0.6805, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6702, + "y": 0.8281, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.569, + "y": 0.7932, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 298, + "timestamp": 9.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0881, + "acceleration": 0.0483, + "fluidity": 0, + "expansion": 0.314, + "total_displacement": 0.0038, + "center_displacement": { + "x": 0.0009, + "y": -0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5122, + "y": 0.2081, + "confidence": 0.987 + }, + { + "name": "left_eye", + "x": 0.5445, + "y": 0.1983, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5096, + "y": 0.1949, + "confidence": 0.779 + }, + { + "name": "left_ear", + "x": 0.6162, + "y": 0.2183, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6556, + "y": 0.3061, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4922, + "y": 0.293, + "confidence": 0.99 + }, + { + "name": "left_elbow", + "x": 0.6943, + "y": 0.345, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3874, + "y": 0.3191, + "confidence": 0.932 + }, + { + "name": "left_wrist", + "x": 0.5273, + "y": 0.3242, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3814, + "y": 0.3403, + "confidence": 0.939 + }, + { + "name": "left_hip", + "x": 0.5974, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4963, + "y": 0.524, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5687, + "y": 0.6835, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5309, + "y": 0.6794, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6666, + "y": 0.8262, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5693, + "y": 0.7969, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 299, + "timestamp": 9.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0659, + "acceleration": -0.6653, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0016, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5152, + "y": 0.208, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.5472, + "y": 0.1982, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5128, + "y": 0.1947, + "confidence": 0.791 + }, + { + "name": "left_ear", + "x": 0.62, + "y": 0.2178, + "confidence": 0.957 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6586, + "y": 0.3064, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4903, + "y": 0.291, + "confidence": 0.991 + }, + { + "name": "left_elbow", + "x": 0.6834, + "y": 0.3485, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3736, + "y": 0.3176, + "confidence": 0.93 + }, + { + "name": "left_wrist", + "x": 0.5145, + "y": 0.3253, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.3737, + "y": 0.3419, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.5952, + "y": 0.5297, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4908, + "y": 0.5222, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5743, + "y": 0.681, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5333, + "y": 0.6789, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6658, + "y": 0.8235, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5711, + "y": 0.7978, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 300, + "timestamp": 10, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.064, + "acceleration": -0.0583, + "fluidity": 0, + "expansion": 0.307, + "total_displacement": 0.0015, + "center_displacement": { + "x": -0.0012, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5182, + "y": 0.2116, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5494, + "y": 0.2018, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.5153, + "y": 0.1982, + "confidence": 0.82 + }, + { + "name": "left_ear", + "x": 0.622, + "y": 0.2204, + "confidence": 0.962 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6591, + "y": 0.3068, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4891, + "y": 0.2918, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6693, + "y": 0.3503, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3618, + "y": 0.3212, + "confidence": 0.937 + }, + { + "name": "left_wrist", + "x": 0.5092, + "y": 0.3323, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3733, + "y": 0.3475, + "confidence": 0.939 + }, + { + "name": "left_hip", + "x": 0.5941, + "y": 0.5266, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4881, + "y": 0.52, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5723, + "y": 0.6785, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5314, + "y": 0.6775, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6658, + "y": 0.8192, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5693, + "y": 0.7991, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 301, + "timestamp": 10.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1053, + "acceleration": 1.2393, + "fluidity": 0, + "expansion": 0.298, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0008, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5205, + "y": 0.2141, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5503, + "y": 0.2038, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5169, + "y": 0.2015, + "confidence": 0.798 + }, + { + "name": "left_ear", + "x": 0.6263, + "y": 0.2225, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6612, + "y": 0.3112, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.494, + "y": 0.2949, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.626, + "y": 0.3606, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3562, + "y": 0.3286, + "confidence": 0.946 + }, + { + "name": "left_wrist", + "x": 0.4832, + "y": 0.3361, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3745, + "y": 0.3576, + "confidence": 0.942 + }, + { + "name": "left_hip", + "x": 0.5926, + "y": 0.5277, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4857, + "y": 0.5215, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.578, + "y": 0.6792, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5307, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6585, + "y": 0.8171, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5731, + "y": 0.8005, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 302, + "timestamp": 10.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1389, + "acceleration": 1.0078, + "fluidity": 0, + "expansion": 0.29, + "total_displacement": 0.0057, + "center_displacement": { + "x": 0.0038, + "y": 0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5181, + "y": 0.2219, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.5455, + "y": 0.2111, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5155, + "y": 0.2099, + "confidence": 0.726 + }, + { + "name": "left_ear", + "x": 0.6261, + "y": 0.2273, + "confidence": 0.969 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6651, + "y": 0.316, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5029, + "y": 0.2999, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6148, + "y": 0.3683, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3578, + "y": 0.3334, + "confidence": 0.942 + }, + { + "name": "left_wrist", + "x": 0.4745, + "y": 0.3477, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3808, + "y": 0.3619, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5923, + "y": 0.5315, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4883, + "y": 0.5252, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5792, + "y": 0.681, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5335, + "y": 0.6794, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6516, + "y": 0.8173, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5723, + "y": 0.7999, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 303, + "timestamp": 10.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1235, + "acceleration": -0.4615, + "fluidity": 0, + "expansion": 0.282, + "total_displacement": 0.0046, + "center_displacement": { + "x": 0.0028, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5186, + "y": 0.2287, + "confidence": 0.985 + }, + { + "name": "left_eye", + "x": 0.5436, + "y": 0.2176, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5153, + "y": 0.2173, + "confidence": 0.695 + }, + { + "name": "left_ear", + "x": 0.6247, + "y": 0.2317, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6669, + "y": 0.3201, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5089, + "y": 0.3028, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.5966, + "y": 0.3793, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3679, + "y": 0.3395, + "confidence": 0.931 + }, + { + "name": "left_wrist", + "x": 0.4622, + "y": 0.3552, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3856, + "y": 0.3669, + "confidence": 0.926 + }, + { + "name": "left_hip", + "x": 0.5941, + "y": 0.5358, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4901, + "y": 0.5286, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5827, + "y": 0.6856, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5309, + "y": 0.6812, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6506, + "y": 0.818, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5736, + "y": 0.8018, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 304, + "timestamp": 10.133333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0935, + "acceleration": -0.8995, + "fluidity": 0, + "expansion": 0.276, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0017, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5194, + "y": 0.2316, + "confidence": 0.985 + }, + { + "name": "left_eye", + "x": 0.5437, + "y": 0.2201, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5148, + "y": 0.2202, + "confidence": 0.696 + }, + { + "name": "left_ear", + "x": 0.6237, + "y": 0.2341, + "confidence": 0.971 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6671, + "y": 0.3243, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5084, + "y": 0.3067, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.5892, + "y": 0.3858, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3665, + "y": 0.3471, + "confidence": 0.923 + }, + { + "name": "left_wrist", + "x": 0.4523, + "y": 0.3633, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4002, + "y": 0.3745, + "confidence": 0.921 + }, + { + "name": "left_hip", + "x": 0.5982, + "y": 0.537, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4931, + "y": 0.5296, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5877, + "y": 0.6871, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5291, + "y": 0.6796, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6548, + "y": 0.8172, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5699, + "y": 0.8029, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 305, + "timestamp": 10.166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0764, + "acceleration": -0.5137, + "fluidity": 0.005, + "expansion": 0.273, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0013, + "y": 0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5212, + "y": 0.2314, + "confidence": 0.984 + }, + { + "name": "left_eye", + "x": 0.5456, + "y": 0.22, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5164, + "y": 0.2201, + "confidence": 0.692 + }, + { + "name": "left_ear", + "x": 0.625, + "y": 0.2343, + "confidence": 0.97 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6679, + "y": 0.326, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.507, + "y": 0.3085, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.587, + "y": 0.3886, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3628, + "y": 0.3513, + "confidence": 0.929 + }, + { + "name": "left_wrist", + "x": 0.4467, + "y": 0.367, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4017, + "y": 0.3804, + "confidence": 0.923 + }, + { + "name": "left_hip", + "x": 0.602, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4951, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5959, + "y": 0.6893, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5319, + "y": 0.6798, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6536, + "y": 0.821, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5666, + "y": 0.8013, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 306, + "timestamp": 10.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.075, + "acceleration": -0.042, + "fluidity": 0.022, + "expansion": 0.274, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0023, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5231, + "y": 0.23, + "confidence": 0.986 + }, + { + "name": "left_eye", + "x": 0.5477, + "y": 0.218, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5175, + "y": 0.2184, + "confidence": 0.736 + }, + { + "name": "left_ear", + "x": 0.6275, + "y": 0.2318, + "confidence": 0.97 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6697, + "y": 0.325, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.506, + "y": 0.3082, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.5895, + "y": 0.3867, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3577, + "y": 0.3522, + "confidence": 0.934 + }, + { + "name": "left_wrist", + "x": 0.4553, + "y": 0.3656, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4051, + "y": 0.3834, + "confidence": 0.929 + }, + { + "name": "left_hip", + "x": 0.6066, + "y": 0.5377, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4989, + "y": 0.5311, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.603, + "y": 0.6878, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.536, + "y": 0.6798, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6537, + "y": 0.821, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5665, + "y": 0.8025, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 307, + "timestamp": 10.233333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0833, + "acceleration": 0.2484, + "fluidity": 0.023, + "expansion": 0.277, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0.0016, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5266, + "y": 0.2264, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.5526, + "y": 0.2145, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5203, + "y": 0.2144, + "confidence": 0.777 + }, + { + "name": "left_ear", + "x": 0.6316, + "y": 0.2289, + "confidence": 0.966 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6712, + "y": 0.323, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5031, + "y": 0.3061, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.5968, + "y": 0.384, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3536, + "y": 0.3525, + "confidence": 0.946 + }, + { + "name": "left_wrist", + "x": 0.4592, + "y": 0.3555, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4031, + "y": 0.3817, + "confidence": 0.943 + }, + { + "name": "left_hip", + "x": 0.6117, + "y": 0.5357, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5018, + "y": 0.5292, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6073, + "y": 0.6859, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5405, + "y": 0.6785, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6535, + "y": 0.8213, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5662, + "y": 0.8006, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 308, + "timestamp": 10.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0832, + "acceleration": -0.0015, + "fluidity": 0.008, + "expansion": 0.281, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0031, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5309, + "y": 0.2251, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5574, + "y": 0.2133, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5237, + "y": 0.2129, + "confidence": 0.799 + }, + { + "name": "left_ear", + "x": 0.6349, + "y": 0.2277, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6729, + "y": 0.3215, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5033, + "y": 0.3046, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6021, + "y": 0.3779, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3508, + "y": 0.3488, + "confidence": 0.949 + }, + { + "name": "left_wrist", + "x": 0.4673, + "y": 0.3485, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4049, + "y": 0.3788, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.6171, + "y": 0.5352, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5068, + "y": 0.5288, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6125, + "y": 0.6857, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5471, + "y": 0.6775, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6558, + "y": 0.8214, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5663, + "y": 0.7996, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 309, + "timestamp": 10.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0679, + "acceleration": -0.459, + "fluidity": 0.003, + "expansion": 0.285, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0023, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5341, + "y": 0.2238, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5605, + "y": 0.2119, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5262, + "y": 0.2118, + "confidence": 0.818 + }, + { + "name": "left_ear", + "x": 0.637, + "y": 0.2261, + "confidence": 0.964 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6748, + "y": 0.3197, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5015, + "y": 0.3044, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6014, + "y": 0.37, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3428, + "y": 0.3485, + "confidence": 0.955 + }, + { + "name": "left_wrist", + "x": 0.4628, + "y": 0.3338, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4043, + "y": 0.3768, + "confidence": 0.951 + }, + { + "name": "left_hip", + "x": 0.6228, + "y": 0.5352, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5101, + "y": 0.5295, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6194, + "y": 0.686, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5512, + "y": 0.6772, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6555, + "y": 0.8222, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.566, + "y": 0.7982, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 310, + "timestamp": 10.333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0705, + "acceleration": 0.0756, + "fluidity": 0.001, + "expansion": 0.288, + "total_displacement": 0.0017, + "center_displacement": { + "x": 0.0017, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5375, + "y": 0.2238, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.564, + "y": 0.2118, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5282, + "y": 0.2118, + "confidence": 0.841 + }, + { + "name": "left_ear", + "x": 0.6393, + "y": 0.2257, + "confidence": 0.96 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6767, + "y": 0.3187, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4997, + "y": 0.305, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6033, + "y": 0.3624, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3366, + "y": 0.3464, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.4627, + "y": 0.3276, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4035, + "y": 0.374, + "confidence": 0.961 + }, + { + "name": "left_hip", + "x": 0.6271, + "y": 0.535, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5125, + "y": 0.5299, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6255, + "y": 0.6856, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5572, + "y": 0.6753, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6555, + "y": 0.8213, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5672, + "y": 0.7966, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 311, + "timestamp": 10.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.07, + "acceleration": -0.0126, + "fluidity": 0, + "expansion": 0.291, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.003, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5408, + "y": 0.224, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5668, + "y": 0.212, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5314, + "y": 0.2122, + "confidence": 0.839 + }, + { + "name": "left_ear", + "x": 0.641, + "y": 0.2255, + "confidence": 0.957 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6812, + "y": 0.317, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5004, + "y": 0.3052, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.615, + "y": 0.3566, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3333, + "y": 0.3455, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.4717, + "y": 0.323, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.403, + "y": 0.3719, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.6314, + "y": 0.5342, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5151, + "y": 0.5295, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6286, + "y": 0.6853, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5599, + "y": 0.6744, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6575, + "y": 0.821, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5675, + "y": 0.7959, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 312, + "timestamp": 10.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0568, + "acceleration": -0.3977, + "fluidity": 0.093, + "expansion": 0.293, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0015, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5456, + "y": 0.2227, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5726, + "y": 0.2113, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5365, + "y": 0.2107, + "confidence": 0.854 + }, + { + "name": "left_ear", + "x": 0.6447, + "y": 0.2263, + "confidence": 0.95 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6839, + "y": 0.3184, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4986, + "y": 0.3065, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6273, + "y": 0.3548, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3306, + "y": 0.3475, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.4774, + "y": 0.3152, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4041, + "y": 0.3709, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.6348, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5169, + "y": 0.5289, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6312, + "y": 0.6845, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5618, + "y": 0.6735, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6564, + "y": 0.8211, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5675, + "y": 0.7951, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 313, + "timestamp": 10.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0656, + "acceleration": 0.2642, + "fluidity": 0.123, + "expansion": 0.296, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0018, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5512, + "y": 0.2212, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.5791, + "y": 0.2098, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5416, + "y": 0.209, + "confidence": 0.867 + }, + { + "name": "left_ear", + "x": 0.6493, + "y": 0.2253, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6857, + "y": 0.3182, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4985, + "y": 0.3069, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6305, + "y": 0.3562, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3313, + "y": 0.3534, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.4876, + "y": 0.3119, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4082, + "y": 0.3752, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.6379, + "y": 0.5334, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5192, + "y": 0.5289, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6324, + "y": 0.6842, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5612, + "y": 0.6739, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6555, + "y": 0.8216, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5684, + "y": 0.7953, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 314, + "timestamp": 10.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.064, + "acceleration": -0.0476, + "fluidity": 0.041, + "expansion": 0.3, + "total_displacement": 0.0029, + "center_displacement": { + "x": 0.0029, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5525, + "y": 0.2205, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5805, + "y": 0.2085, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5425, + "y": 0.2081, + "confidence": 0.873 + }, + { + "name": "left_ear", + "x": 0.6533, + "y": 0.2236, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6883, + "y": 0.3179, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5019, + "y": 0.3064, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6262, + "y": 0.3562, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3281, + "y": 0.3564, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.5, + "y": 0.3059, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4057, + "y": 0.3857, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.6404, + "y": 0.5335, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5224, + "y": 0.5292, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6323, + "y": 0.6849, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5608, + "y": 0.6757, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6552, + "y": 0.8223, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5675, + "y": 0.7968, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 315, + "timestamp": 10.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0399, + "acceleration": -0.7218, + "fluidity": 0.014, + "expansion": 0.305, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0007, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5514, + "y": 0.2202, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5799, + "y": 0.2084, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5421, + "y": 0.208, + "confidence": 0.878 + }, + { + "name": "left_ear", + "x": 0.6555, + "y": 0.2241, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6867, + "y": 0.3184, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5033, + "y": 0.304, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6067, + "y": 0.3612, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3248, + "y": 0.3605, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.4998, + "y": 0.2933, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.4005, + "y": 0.397, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.6418, + "y": 0.5325, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.524, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.625, + "y": 0.6836, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5545, + "y": 0.677, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6563, + "y": 0.8221, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5675, + "y": 0.7987, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 316, + "timestamp": 10.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0397, + "acceleration": -0.0085, + "fluidity": 0.005, + "expansion": 0.308, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0001, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5515, + "y": 0.2223, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5797, + "y": 0.2104, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5425, + "y": 0.2105, + "confidence": 0.862 + }, + { + "name": "left_ear", + "x": 0.656, + "y": 0.2266, + "confidence": 0.951 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6855, + "y": 0.3211, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5063, + "y": 0.3043, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5865, + "y": 0.3715, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.332, + "y": 0.3696, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.4998, + "y": 0.2865, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3973, + "y": 0.4235, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.641, + "y": 0.5325, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5236, + "y": 0.5271, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6163, + "y": 0.6844, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5415, + "y": 0.6809, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6549, + "y": 0.8249, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5694, + "y": 0.8021, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 317, + "timestamp": 10.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0663, + "acceleration": 0.7995, + "fluidity": 0.002, + "expansion": 0.311, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0009, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5532, + "y": 0.2228, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.5824, + "y": 0.2115, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.5426, + "y": 0.2119, + "confidence": 0.841 + }, + { + "name": "left_ear", + "x": 0.6541, + "y": 0.2311, + "confidence": 0.936 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6818, + "y": 0.3262, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5006, + "y": 0.3064, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5724, + "y": 0.3833, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3329, + "y": 0.3767, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4976, + "y": 0.2874, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3902, + "y": 0.4516, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.6458, + "y": 0.533, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5247, + "y": 0.5269, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6071, + "y": 0.6839, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5279, + "y": 0.6832, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.655, + "y": 0.8254, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5668, + "y": 0.7993, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 318, + "timestamp": 10.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0916, + "acceleration": 0.7592, + "fluidity": 0.001, + "expansion": 0.317, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0011, + "y": 0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5594, + "y": 0.2252, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.5898, + "y": 0.2137, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.5462, + "y": 0.214, + "confidence": 0.893 + }, + { + "name": "left_ear", + "x": 0.658, + "y": 0.2343, + "confidence": 0.937 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6818, + "y": 0.3308, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4994, + "y": 0.311, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.565, + "y": 0.3904, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3363, + "y": 0.3854, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.4991, + "y": 0.2908, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3652, + "y": 0.4681, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.6447, + "y": 0.535, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5224, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5977, + "y": 0.6885, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5115, + "y": 0.6852, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6553, + "y": 0.8255, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5693, + "y": 0.7997, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 319, + "timestamp": 10.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1213, + "acceleration": 0.8911, + "fluidity": 0, + "expansion": 0.327, + "total_displacement": 0.0037, + "center_displacement": { + "x": -0.0003, + "y": 0.0037 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.565, + "y": 0.2258, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5962, + "y": 0.215, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.552, + "y": 0.2149, + "confidence": 0.869 + }, + { + "name": "left_ear", + "x": 0.6607, + "y": 0.239, + "confidence": 0.932 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6825, + "y": 0.337, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5022, + "y": 0.3154, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5589, + "y": 0.4002, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.34, + "y": 0.3901, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.4982, + "y": 0.2929, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.325, + "y": 0.4777, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.6422, + "y": 0.5377, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5201, + "y": 0.5293, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5922, + "y": 0.6918, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4977, + "y": 0.6884, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6551, + "y": 0.827, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5709, + "y": 0.801, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 320, + "timestamp": 10.666666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.1081, + "acceleration": -0.3981, + "fluidity": 0, + "expansion": 0.338, + "total_displacement": 0.0054, + "center_displacement": { + "x": 0.0019, + "y": 0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5668, + "y": 0.2302, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5996, + "y": 0.2197, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5552, + "y": 0.2171, + "confidence": 0.904 + }, + { + "name": "left_ear", + "x": 0.6652, + "y": 0.2435, + "confidence": 0.946 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6849, + "y": 0.3433, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5126, + "y": 0.3196, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5685, + "y": 0.4101, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3558, + "y": 0.3981, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5144, + "y": 0.3059, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2747, + "y": 0.4614, + "confidence": 0.969 + }, + { + "name": "left_hip", + "x": 0.6367, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5203, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5949, + "y": 0.6958, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4904, + "y": 0.6864, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6483, + "y": 0.8231, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5673, + "y": 0.8046, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 321, + "timestamp": 10.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0658, + "acceleration": -1.2671, + "fluidity": 0.061, + "expansion": 0.345, + "total_displacement": 0.0014, + "center_displacement": { + "x": 0.0014, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5701, + "y": 0.2312, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.603, + "y": 0.2213, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5593, + "y": 0.2184, + "confidence": 0.901 + }, + { + "name": "left_ear", + "x": 0.6676, + "y": 0.2454, + "confidence": 0.948 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6862, + "y": 0.3446, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5188, + "y": 0.3193, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5784, + "y": 0.4288, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3667, + "y": 0.3944, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5071, + "y": 0.3342, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2343, + "y": 0.4271, + "confidence": 0.967 + }, + { + "name": "left_hip", + "x": 0.6343, + "y": 0.5441, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5206, + "y": 0.5322, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5941, + "y": 0.6961, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4901, + "y": 0.6868, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6496, + "y": 0.8256, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5678, + "y": 0.8031, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 322, + "timestamp": 10.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0888, + "acceleration": 0.691, + "fluidity": 0.081, + "expansion": 0.35, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0015, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5685, + "y": 0.2277, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6019, + "y": 0.2181, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5572, + "y": 0.2156, + "confidence": 0.909 + }, + { + "name": "left_ear", + "x": 0.6664, + "y": 0.2434, + "confidence": 0.947 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6858, + "y": 0.3436, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5186, + "y": 0.3198, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5931, + "y": 0.4347, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3697, + "y": 0.3844, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5031, + "y": 0.3562, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.216, + "y": 0.389, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.631, + "y": 0.5449, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5186, + "y": 0.5342, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5975, + "y": 0.6955, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4992, + "y": 0.6904, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6483, + "y": 0.825, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.569, + "y": 0.8043, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 323, + "timestamp": 10.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1312, + "acceleration": 1.2696, + "fluidity": 0.263, + "expansion": 0.356, + "total_displacement": 0.0051, + "center_displacement": { + "x": -0.0025, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5756, + "y": 0.2227, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6087, + "y": 0.2127, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5599, + "y": 0.2118, + "confidence": 0.917 + }, + { + "name": "left_ear", + "x": 0.6678, + "y": 0.237, + "confidence": 0.929 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6918, + "y": 0.3347, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.505, + "y": 0.3166, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6162, + "y": 0.4282, + "confidence": 0.996 + }, + { + "name": "right_elbow", + "x": 0.3504, + "y": 0.3662, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.481, + "y": 0.3813, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2081, + "y": 0.3428, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.635, + "y": 0.541, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5122, + "y": 0.5322, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6006, + "y": 0.6956, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5116, + "y": 0.6892, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.648, + "y": 0.8272, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5734, + "y": 0.8009, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 324, + "timestamp": 10.8, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1801, + "acceleration": 1.4677, + "fluidity": 0.323, + "expansion": 0.362, + "total_displacement": 0.005, + "center_displacement": { + "x": 0, + "y": -0.005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5814, + "y": 0.2183, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6143, + "y": 0.2081, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5654, + "y": 0.2069, + "confidence": 0.919 + }, + { + "name": "left_ear", + "x": 0.6723, + "y": 0.2301, + "confidence": 0.926 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6935, + "y": 0.3262, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5047, + "y": 0.3086, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.633, + "y": 0.4177, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3359, + "y": 0.3364, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.4933, + "y": 0.4102, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2087, + "y": 0.2862, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6334, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5127, + "y": 0.5313, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.606, + "y": 0.6912, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5292, + "y": 0.6866, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6451, + "y": 0.8241, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.578, + "y": 0.799, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 325, + "timestamp": 10.833333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.22, + "acceleration": 1.1959, + "fluidity": 0.108, + "expansion": 0.366, + "total_displacement": 0.0086, + "center_displacement": { + "x": 0.0022, + "y": -0.0083 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5818, + "y": 0.2145, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6167, + "y": 0.2057, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5675, + "y": 0.203, + "confidence": 0.942 + }, + { + "name": "left_ear", + "x": 0.6751, + "y": 0.2288, + "confidence": 0.907 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6994, + "y": 0.3192, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5013, + "y": 0.2966, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6415, + "y": 0.4097, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3394, + "y": 0.309, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.4768, + "y": 0.4276, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2484, + "y": 0.2362, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6403, + "y": 0.5316, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5122, + "y": 0.5238, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6134, + "y": 0.6875, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5394, + "y": 0.682, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.654, + "y": 0.824, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.5954, + "y": 0.8121, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 326, + "timestamp": 10.866666666666667, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1864, + "acceleration": -1.0078, + "fluidity": 0.036, + "expansion": 0.365, + "total_displacement": 0.0074, + "center_displacement": { + "x": -0.0054, + "y": -0.0051 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5861, + "y": 0.2111, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6203, + "y": 0.2036, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5711, + "y": 0.1999, + "confidence": 0.952 + }, + { + "name": "left_ear", + "x": 0.6734, + "y": 0.2281, + "confidence": 0.911 + }, + { + "name": "right_ear", + "x": 0.553, + "y": 0.2184, + "confidence": 0.505 + }, + { + "name": "left_shoulder", + "x": 0.6931, + "y": 0.3165, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4947, + "y": 0.2919, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6433, + "y": 0.403, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3373, + "y": 0.2867, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.4849, + "y": 0.4411, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.288, + "y": 0.1997, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.6356, + "y": 0.5249, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5084, + "y": 0.5174, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6143, + "y": 0.6841, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5412, + "y": 0.6803, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6582, + "y": 0.8222, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.5972, + "y": 0.8097, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 327, + "timestamp": 10.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1126, + "acceleration": -2.2142, + "fluidity": 0.012, + "expansion": 0.36, + "total_displacement": 0.0039, + "center_displacement": { + "x": 0.001, + "y": 0.0038 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5881, + "y": 0.2137, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6201, + "y": 0.2055, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.5723, + "y": 0.2025, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0.6734, + "y": 0.2281, + "confidence": 0.93 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6943, + "y": 0.3196, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4963, + "y": 0.2929, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6408, + "y": 0.3993, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3345, + "y": 0.2726, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.4671, + "y": 0.4445, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3474, + "y": 0.1852, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6366, + "y": 0.5303, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5085, + "y": 0.5231, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6198, + "y": 0.6844, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5464, + "y": 0.6787, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6521, + "y": 0.8226, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.5752, + "y": 0.8037, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 328, + "timestamp": 10.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0804, + "acceleration": -0.9638, + "fluidity": 0.004, + "expansion": 0.354, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0004, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5913, + "y": 0.215, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6226, + "y": 0.2054, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5725, + "y": 0.2033, + "confidence": 0.951 + }, + { + "name": "left_ear", + "x": 0.6744, + "y": 0.2265, + "confidence": 0.911 + }, + { + "name": "right_ear", + "x": 0.5515, + "y": 0.2209, + "confidence": 0.555 + }, + { + "name": "left_shoulder", + "x": 0.6951, + "y": 0.3211, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4938, + "y": 0.2928, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6367, + "y": 0.3948, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3428, + "y": 0.2663, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.4566, + "y": 0.4352, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4, + "y": 0.1861, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6383, + "y": 0.532, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5072, + "y": 0.5242, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.628, + "y": 0.6868, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5506, + "y": 0.6773, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6559, + "y": 0.8231, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5749, + "y": 0.8008, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 329, + "timestamp": 10.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0822, + "acceleration": 0.0538, + "fluidity": 0.001, + "expansion": 0.349, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5928, + "y": 0.2177, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6237, + "y": 0.2072, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5735, + "y": 0.2059, + "confidence": 0.951 + }, + { + "name": "left_ear", + "x": 0.6768, + "y": 0.2276, + "confidence": 0.904 + }, + { + "name": "right_ear", + "x": 0.5534, + "y": 0.2237, + "confidence": 0.549 + }, + { + "name": "left_shoulder", + "x": 0.6977, + "y": 0.3234, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4961, + "y": 0.2956, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.631, + "y": 0.3864, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3533, + "y": 0.2635, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.4414, + "y": 0.4207, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4359, + "y": 0.1904, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6364, + "y": 0.5358, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5041, + "y": 0.5279, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6319, + "y": 0.6884, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5502, + "y": 0.6776, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6576, + "y": 0.8213, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5765, + "y": 0.7989, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 330, + "timestamp": 11, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.053, + "acceleration": -0.8773, + "fluidity": 0, + "expansion": 0.342, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0006, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5949, + "y": 0.2199, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6262, + "y": 0.2097, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5743, + "y": 0.2091, + "confidence": 0.954 + }, + { + "name": "left_ear", + "x": 0.6803, + "y": 0.2316, + "confidence": 0.892 + }, + { + "name": "right_ear", + "x": 0.5544, + "y": 0.2277, + "confidence": 0.597 + }, + { + "name": "left_shoulder", + "x": 0.7019, + "y": 0.3279, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4975, + "y": 0.2953, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6234, + "y": 0.3845, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3485, + "y": 0.2644, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.4197, + "y": 0.4021, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4759, + "y": 0.2013, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6368, + "y": 0.5382, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5007, + "y": 0.5307, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6299, + "y": 0.6838, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.5458, + "y": 0.6796, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6613, + "y": 0.8127, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.5854, + "y": 0.8028, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 331, + "timestamp": 11.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0413, + "acceleration": -0.3491, + "fluidity": 0, + "expansion": 0.334, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5983, + "y": 0.2222, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6291, + "y": 0.2107, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5805, + "y": 0.2099, + "confidence": 0.948 + }, + { + "name": "left_ear", + "x": 0.6855, + "y": 0.2295, + "confidence": 0.902 + }, + { + "name": "right_ear", + "x": 0.5644, + "y": 0.225, + "confidence": 0.537 + }, + { + "name": "left_shoulder", + "x": 0.7041, + "y": 0.3274, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.506, + "y": 0.2933, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6181, + "y": 0.3782, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3544, + "y": 0.2685, + "confidence": 0.967 + }, + { + "name": "left_wrist", + "x": 0.4133, + "y": 0.3782, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.486, + "y": 0.2235, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.6292, + "y": 0.5397, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4977, + "y": 0.5309, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6305, + "y": 0.6861, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.5419, + "y": 0.6798, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6626, + "y": 0.816, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.5881, + "y": 0.8043, + "confidence": 0.959 + } + ] + } + ] + }, + { + "frame_index": 332, + "timestamp": 11.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1267, + "acceleration": 2.561, + "fluidity": 0, + "expansion": 0.323, + "total_displacement": 0.0022, + "center_displacement": { + "x": -0.0016, + "y": 0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6007, + "y": 0.2248, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6315, + "y": 0.2131, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5826, + "y": 0.2126, + "confidence": 0.947 + }, + { + "name": "left_ear", + "x": 0.6907, + "y": 0.231, + "confidence": 0.914 + }, + { + "name": "right_ear", + "x": 0.5672, + "y": 0.2281, + "confidence": 0.506 + }, + { + "name": "left_shoulder", + "x": 0.7113, + "y": 0.3261, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5052, + "y": 0.2955, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6158, + "y": 0.363, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3554, + "y": 0.2746, + "confidence": 0.96 + }, + { + "name": "left_wrist", + "x": 0.4174, + "y": 0.347, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.492, + "y": 0.2408, + "confidence": 0.966 + }, + { + "name": "left_hip", + "x": 0.6259, + "y": 0.542, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4881, + "y": 0.5339, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6345, + "y": 0.688, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.5364, + "y": 0.6806, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.6594, + "y": 0.8148, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.5915, + "y": 0.8049, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 333, + "timestamp": 11.1, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2503, + "acceleration": 3.7091, + "fluidity": 0, + "expansion": 0.313, + "total_displacement": 0.0091, + "center_displacement": { + "x": 0.0003, + "y": -0.0091 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6112, + "y": 0.2277, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6423, + "y": 0.2161, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5909, + "y": 0.2144, + "confidence": 0.944 + }, + { + "name": "left_ear", + "x": 0.6986, + "y": 0.2304, + "confidence": 0.935 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7068, + "y": 0.3207, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5183, + "y": 0.2846, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6054, + "y": 0.3604, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4033, + "y": 0.2648, + "confidence": 0.958 + }, + { + "name": "left_wrist", + "x": 0.4391, + "y": 0.3144, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4524, + "y": 0.2594, + "confidence": 0.947 + }, + { + "name": "left_hip", + "x": 0.619, + "y": 0.5343, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4878, + "y": 0.5214, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6355, + "y": 0.6849, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5432, + "y": 0.6747, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6554, + "y": 0.8169, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5732, + "y": 0.7964, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 334, + "timestamp": 11.133333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2613, + "acceleration": 0.3298, + "fluidity": 0, + "expansion": 0.307, + "total_displacement": 0.0117, + "center_displacement": { + "x": 0.0021, + "y": 0.0115 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6087, + "y": 0.2328, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6427, + "y": 0.22, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.5851, + "y": 0.2194, + "confidence": 0.94 + }, + { + "name": "left_ear", + "x": 0.6986, + "y": 0.2374, + "confidence": 0.963 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7024, + "y": 0.3224, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5349, + "y": 0.3153, + "confidence": 0.991 + }, + { + "name": "left_elbow", + "x": 0.6209, + "y": 0.3484, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4503, + "y": 0.3376, + "confidence": 0.892 + }, + { + "name": "left_wrist", + "x": 0.4266, + "y": 0.2871, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3899, + "y": 0.3027, + "confidence": 0.874 + }, + { + "name": "left_hip", + "x": 0.61, + "y": 0.5378, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4928, + "y": 0.5317, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6321, + "y": 0.6846, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5412, + "y": 0.6755, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6545, + "y": 0.8139, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5747, + "y": 0.7998, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 335, + "timestamp": 11.166666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1797, + "acceleration": -2.448, + "fluidity": 0, + "expansion": 0.308, + "total_displacement": 0.0061, + "center_displacement": { + "x": -0.0061, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6099, + "y": 0.2388, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.64, + "y": 0.2252, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.5908, + "y": 0.2254, + "confidence": 0.943 + }, + { + "name": "left_ear", + "x": 0.7015, + "y": 0.238, + "confidence": 0.939 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7116, + "y": 0.3265, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5121, + "y": 0.3096, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6175, + "y": 0.3351, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3466, + "y": 0.31, + "confidence": 0.96 + }, + { + "name": "left_wrist", + "x": 0.4624, + "y": 0.2735, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4504, + "y": 0.3133, + "confidence": 0.956 + }, + { + "name": "left_hip", + "x": 0.6112, + "y": 0.5377, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.481, + "y": 0.5319, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.628, + "y": 0.6843, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5423, + "y": 0.6756, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6545, + "y": 0.8159, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5672, + "y": 0.7984, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 336, + "timestamp": 11.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1187, + "acceleration": -1.8319, + "fluidity": 0, + "expansion": 0.316, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.0031, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6171, + "y": 0.24, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6433, + "y": 0.2254, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5947, + "y": 0.2278, + "confidence": 0.954 + }, + { + "name": "left_ear", + "x": 0.6992, + "y": 0.2364, + "confidence": 0.887 + }, + { + "name": "right_ear", + "x": 0.5788, + "y": 0.2438, + "confidence": 0.528 + }, + { + "name": "left_shoulder", + "x": 0.7146, + "y": 0.3248, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.517, + "y": 0.3104, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5866, + "y": 0.3214, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3439, + "y": 0.317, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4395, + "y": 0.2377, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4333, + "y": 0.3322, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6131, + "y": 0.5401, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4837, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6227, + "y": 0.6886, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.5291, + "y": 0.6725, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6499, + "y": 0.812, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.5902, + "y": 0.8053, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 337, + "timestamp": 11.233333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1423, + "acceleration": 0.7076, + "fluidity": 0, + "expansion": 0.322, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0026, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6171, + "y": 0.2434, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6429, + "y": 0.2281, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.595, + "y": 0.2311, + "confidence": 0.953 + }, + { + "name": "left_ear", + "x": 0.7007, + "y": 0.2382, + "confidence": 0.897 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.717, + "y": 0.3263, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5236, + "y": 0.3129, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5918, + "y": 0.3275, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3483, + "y": 0.3312, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.4701, + "y": 0.2297, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4143, + "y": 0.3617, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.6121, + "y": 0.5399, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.486, + "y": 0.5324, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6137, + "y": 0.6871, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.5218, + "y": 0.671, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6463, + "y": 0.8137, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.5839, + "y": 0.806, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 338, + "timestamp": 11.266666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1288, + "acceleration": -0.404, + "fluidity": 0, + "expansion": 0.324, + "total_displacement": 0.0076, + "center_displacement": { + "x": -0.0068, + "y": 0.0035 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6127, + "y": 0.2478, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6419, + "y": 0.2339, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5935, + "y": 0.235, + "confidence": 0.947 + }, + { + "name": "left_ear", + "x": 0.7066, + "y": 0.2468, + "confidence": 0.943 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.716, + "y": 0.3337, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5221, + "y": 0.3187, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6146, + "y": 0.341, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3406, + "y": 0.3385, + "confidence": 0.967 + }, + { + "name": "left_wrist", + "x": 0.5108, + "y": 0.2574, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3826, + "y": 0.3698, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.5997, + "y": 0.5399, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4739, + "y": 0.5331, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6066, + "y": 0.6888, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5236, + "y": 0.6796, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6524, + "y": 0.8149, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5654, + "y": 0.8033, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 339, + "timestamp": 11.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.073, + "acceleration": -1.6728, + "fluidity": 0, + "expansion": 0.332, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0002, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.607, + "y": 0.2547, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6363, + "y": 0.2407, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.59, + "y": 0.2411, + "confidence": 0.928 + }, + { + "name": "left_ear", + "x": 0.7022, + "y": 0.2497, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7142, + "y": 0.3315, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.533, + "y": 0.316, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6291, + "y": 0.3583, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3712, + "y": 0.3444, + "confidence": 0.94 + }, + { + "name": "left_wrist", + "x": 0.5236, + "y": 0.2948, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3487, + "y": 0.3752, + "confidence": 0.933 + }, + { + "name": "left_hip", + "x": 0.5914, + "y": 0.5419, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4724, + "y": 0.5338, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6005, + "y": 0.6887, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5179, + "y": 0.6815, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6515, + "y": 0.8159, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.5619, + "y": 0.8066, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 340, + "timestamp": 11.333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0503, + "acceleration": -0.6823, + "fluidity": 0, + "expansion": 0.341, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0015, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6107, + "y": 0.2538, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.6389, + "y": 0.2391, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.591, + "y": 0.2408, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0.7021, + "y": 0.25, + "confidence": 0.958 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7176, + "y": 0.3358, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.533, + "y": 0.3195, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6342, + "y": 0.3554, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3681, + "y": 0.336, + "confidence": 0.954 + }, + { + "name": "left_wrist", + "x": 0.5342, + "y": 0.2764, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3162, + "y": 0.3654, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5874, + "y": 0.5428, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4668, + "y": 0.5329, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5937, + "y": 0.693, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5062, + "y": 0.6805, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6519, + "y": 0.817, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.5655, + "y": 0.8043, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 341, + "timestamp": 11.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0513, + "acceleration": 0.0302, + "fluidity": 0, + "expansion": 0.343, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6095, + "y": 0.2558, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.6373, + "y": 0.24, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.5881, + "y": 0.2425, + "confidence": 0.945 + }, + { + "name": "left_ear", + "x": 0.7001, + "y": 0.2494, + "confidence": 0.961 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7162, + "y": 0.335, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5402, + "y": 0.3197, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6374, + "y": 0.3616, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3876, + "y": 0.3332, + "confidence": 0.954 + }, + { + "name": "left_wrist", + "x": 0.5371, + "y": 0.2988, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3007, + "y": 0.3525, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5816, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4663, + "y": 0.5327, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5819, + "y": 0.6969, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.4961, + "y": 0.6798, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6505, + "y": 0.8179, + "confidence": 0.997 + }, + { + "name": "right_ankle", + "x": 0.5652, + "y": 0.8022, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 342, + "timestamp": 11.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0826, + "acceleration": 0.9383, + "fluidity": 0.199, + "expansion": 0.34, + "total_displacement": 0.0033, + "center_displacement": { + "x": -0.0021, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6081, + "y": 0.2594, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6358, + "y": 0.2428, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5863, + "y": 0.2471, + "confidence": 0.939 + }, + { + "name": "left_ear", + "x": 0.6973, + "y": 0.2527, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7196, + "y": 0.335, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5448, + "y": 0.3271, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6498, + "y": 0.3688, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.4052, + "y": 0.3427, + "confidence": 0.943 + }, + { + "name": "left_wrist", + "x": 0.5346, + "y": 0.3156, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.2876, + "y": 0.3392, + "confidence": 0.933 + }, + { + "name": "left_hip", + "x": 0.5741, + "y": 0.5445, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4576, + "y": 0.5349, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5725, + "y": 0.6975, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4967, + "y": 0.6822, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6437, + "y": 0.8115, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5696, + "y": 0.8008, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 343, + "timestamp": 11.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0791, + "acceleration": -0.1056, + "fluidity": 0.266, + "expansion": 0.337, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0026, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6069, + "y": 0.264, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6344, + "y": 0.247, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.5842, + "y": 0.2523, + "confidence": 0.942 + }, + { + "name": "left_ear", + "x": 0.6942, + "y": 0.2561, + "confidence": 0.954 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.718, + "y": 0.3364, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5382, + "y": 0.3314, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6419, + "y": 0.372, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3992, + "y": 0.3433, + "confidence": 0.944 + }, + { + "name": "left_wrist", + "x": 0.4934, + "y": 0.3346, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.2863, + "y": 0.3268, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5751, + "y": 0.5453, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4544, + "y": 0.5361, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5645, + "y": 0.6999, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4867, + "y": 0.6815, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6424, + "y": 0.8142, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.569, + "y": 0.7957, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 344, + "timestamp": 11.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0616, + "acceleration": -0.5253, + "fluidity": 0.089, + "expansion": 0.336, + "total_displacement": 0.0019, + "center_displacement": { + "x": 0.0012, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.608, + "y": 0.2666, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6329, + "y": 0.2492, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5853, + "y": 0.2552, + "confidence": 0.941 + }, + { + "name": "left_ear", + "x": 0.6937, + "y": 0.2562, + "confidence": 0.952 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7161, + "y": 0.3386, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.538, + "y": 0.328, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6386, + "y": 0.3839, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3819, + "y": 0.3268, + "confidence": 0.969 + }, + { + "name": "left_wrist", + "x": 0.5005, + "y": 0.3568, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.291, + "y": 0.3045, + "confidence": 0.963 + }, + { + "name": "left_hip", + "x": 0.5764, + "y": 0.5433, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4603, + "y": 0.5335, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5543, + "y": 0.7001, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4775, + "y": 0.684, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6492, + "y": 0.8177, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.564, + "y": 0.7954, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 345, + "timestamp": 11.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.071, + "acceleration": 0.2824, + "fluidity": 0.03, + "expansion": 0.335, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0012, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.608, + "y": 0.2689, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6308, + "y": 0.2506, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5848, + "y": 0.2582, + "confidence": 0.937 + }, + { + "name": "left_ear", + "x": 0.6924, + "y": 0.2564, + "confidence": 0.953 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7188, + "y": 0.3408, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5419, + "y": 0.3305, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6336, + "y": 0.3923, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3778, + "y": 0.3246, + "confidence": 0.972 + }, + { + "name": "left_wrist", + "x": 0.4756, + "y": 0.3679, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3053, + "y": 0.2833, + "confidence": 0.967 + }, + { + "name": "left_hip", + "x": 0.5747, + "y": 0.5431, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4599, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5482, + "y": 0.7017, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4783, + "y": 0.6847, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6494, + "y": 0.8182, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5625, + "y": 0.7963, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 346, + "timestamp": 11.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0841, + "acceleration": 0.3944, + "fluidity": 0.01, + "expansion": 0.332, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0028, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6083, + "y": 0.2706, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6304, + "y": 0.252, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5837, + "y": 0.26, + "confidence": 0.939 + }, + { + "name": "left_ear", + "x": 0.6903, + "y": 0.258, + "confidence": 0.946 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7144, + "y": 0.3448, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5355, + "y": 0.3296, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6163, + "y": 0.4051, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3609, + "y": 0.3171, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.4731, + "y": 0.3769, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3313, + "y": 0.2578, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.5754, + "y": 0.5457, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4589, + "y": 0.5356, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5431, + "y": 0.7044, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4776, + "y": 0.6872, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6518, + "y": 0.8173, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5601, + "y": 0.7966, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 347, + "timestamp": 11.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.086, + "acceleration": 0.0554, + "fluidity": 0.003, + "expansion": 0.325, + "total_displacement": 0.0026, + "center_displacement": { + "x": 0, + "y": 0.0026 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6077, + "y": 0.2722, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6292, + "y": 0.2538, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5841, + "y": 0.2616, + "confidence": 0.938 + }, + { + "name": "left_ear", + "x": 0.6887, + "y": 0.2606, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7133, + "y": 0.3482, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5346, + "y": 0.334, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6056, + "y": 0.4093, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3615, + "y": 0.3224, + "confidence": 0.974 + }, + { + "name": "left_wrist", + "x": 0.4565, + "y": 0.3911, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.3636, + "y": 0.2575, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.5764, + "y": 0.5466, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4598, + "y": 0.5373, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5417, + "y": 0.7051, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4748, + "y": 0.6875, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6527, + "y": 0.8168, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5623, + "y": 0.7988, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 348, + "timestamp": 11.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0623, + "acceleration": -0.7111, + "fluidity": 0.001, + "expansion": 0.318, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.0025, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6077, + "y": 0.2726, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6299, + "y": 0.2539, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.583, + "y": 0.2617, + "confidence": 0.941 + }, + { + "name": "left_ear", + "x": 0.6873, + "y": 0.2616, + "confidence": 0.941 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7114, + "y": 0.3498, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5265, + "y": 0.3357, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6046, + "y": 0.4153, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3652, + "y": 0.3252, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.4513, + "y": 0.4035, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4058, + "y": 0.2551, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.5787, + "y": 0.5485, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4576, + "y": 0.5402, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5398, + "y": 0.7049, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4731, + "y": 0.6892, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6549, + "y": 0.8159, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5639, + "y": 0.7999, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 349, + "timestamp": 11.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0503, + "acceleration": -0.3576, + "fluidity": 0, + "expansion": 0.31, + "total_displacement": 0.0002, + "center_displacement": { + "x": 0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.2735, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6293, + "y": 0.2549, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.5843, + "y": 0.2622, + "confidence": 0.939 + }, + { + "name": "left_ear", + "x": 0.6865, + "y": 0.2623, + "confidence": 0.932 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7107, + "y": 0.3497, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5256, + "y": 0.3372, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6008, + "y": 0.4142, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3733, + "y": 0.3298, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.4451, + "y": 0.4206, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4466, + "y": 0.2672, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.58, + "y": 0.5474, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4585, + "y": 0.5398, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5363, + "y": 0.7039, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4678, + "y": 0.6873, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6562, + "y": 0.8161, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.566, + "y": 0.8006, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 350, + "timestamp": 11.666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0759, + "acceleration": 0.767, + "fluidity": 0, + "expansion": 0.301, + "total_displacement": 0.0028, + "center_displacement": { + "x": -0.0026, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6077, + "y": 0.2737, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6312, + "y": 0.2556, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.5855, + "y": 0.2618, + "confidence": 0.938 + }, + { + "name": "left_ear", + "x": 0.6875, + "y": 0.2643, + "confidence": 0.931 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7083, + "y": 0.3507, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5197, + "y": 0.3381, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5947, + "y": 0.4137, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3754, + "y": 0.3362, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.4364, + "y": 0.4282, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.4742, + "y": 0.286, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5805, + "y": 0.5486, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4561, + "y": 0.5411, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5316, + "y": 0.7046, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4615, + "y": 0.6874, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6538, + "y": 0.818, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.5673, + "y": 0.8003, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 351, + "timestamp": 11.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0869, + "acceleration": 0.3286, + "fluidity": 0.212, + "expansion": 0.291, + "total_displacement": 0.0031, + "center_displacement": { + "x": 0.0005, + "y": -0.0031 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6045, + "y": 0.276, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6281, + "y": 0.2566, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5824, + "y": 0.2633, + "confidence": 0.935 + }, + { + "name": "left_ear", + "x": 0.687, + "y": 0.2622, + "confidence": 0.913 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7131, + "y": 0.345, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.5126, + "y": 0.3343, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5871, + "y": 0.4144, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3775, + "y": 0.3387, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.4175, + "y": 0.4307, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4895, + "y": 0.3124, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5874, + "y": 0.5474, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4534, + "y": 0.5394, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5229, + "y": 0.7026, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4573, + "y": 0.6862, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6493, + "y": 0.8182, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.571, + "y": 0.7987, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 352, + "timestamp": 11.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0797, + "acceleration": -0.2138, + "fluidity": 0.282, + "expansion": 0.28, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0012, + "y": 0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.2754, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6343, + "y": 0.2583, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.5858, + "y": 0.2615, + "confidence": 0.931 + }, + { + "name": "left_ear", + "x": 0.6906, + "y": 0.2669, + "confidence": 0.956 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7064, + "y": 0.3521, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.528, + "y": 0.3319, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.5814, + "y": 0.4191, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4066, + "y": 0.3429, + "confidence": 0.949 + }, + { + "name": "left_wrist", + "x": 0.4106, + "y": 0.4247, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4577, + "y": 0.3373, + "confidence": 0.941 + }, + { + "name": "left_hip", + "x": 0.579, + "y": 0.5526, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4578, + "y": 0.5408, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5219, + "y": 0.7089, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4525, + "y": 0.6919, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6474, + "y": 0.8191, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5681, + "y": 0.8054, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 353, + "timestamp": 11.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0989, + "acceleration": 0.5757, + "fluidity": 0.094, + "expansion": 0.274, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.0019, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.2738, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6344, + "y": 0.2574, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.5868, + "y": 0.2604, + "confidence": 0.926 + }, + { + "name": "left_ear", + "x": 0.6902, + "y": 0.2678, + "confidence": 0.947 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7011, + "y": 0.3511, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5288, + "y": 0.3358, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.5527, + "y": 0.4093, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.4, + "y": 0.3591, + "confidence": 0.963 + }, + { + "name": "left_wrist", + "x": 0.4032, + "y": 0.4118, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.4596, + "y": 0.3662, + "confidence": 0.957 + }, + { + "name": "left_hip", + "x": 0.5832, + "y": 0.5519, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4655, + "y": 0.5418, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5203, + "y": 0.7121, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4518, + "y": 0.6937, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6451, + "y": 0.8191, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.5732, + "y": 0.8079, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 354, + "timestamp": 11.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1158, + "acceleration": 0.5073, + "fluidity": 0.031, + "expansion": 0.272, + "total_displacement": 0.0052, + "center_displacement": { + "x": 0.0026, + "y": 0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6047, + "y": 0.2723, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6341, + "y": 0.2572, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.5839, + "y": 0.2586, + "confidence": 0.931 + }, + { + "name": "left_ear", + "x": 0.6897, + "y": 0.2704, + "confidence": 0.959 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7007, + "y": 0.3516, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5367, + "y": 0.3419, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.5628, + "y": 0.3929, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.4089, + "y": 0.3711, + "confidence": 0.951 + }, + { + "name": "left_wrist", + "x": 0.3785, + "y": 0.3711, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.348, + "y": 0.3752, + "confidence": 0.942 + }, + { + "name": "left_hip", + "x": 0.5818, + "y": 0.5581, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4697, + "y": 0.5471, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5178, + "y": 0.719, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4521, + "y": 0.697, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.637, + "y": 0.8182, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.5785, + "y": 0.8072, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 355, + "timestamp": 11.833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1205, + "acceleration": 0.1395, + "fluidity": 0.01, + "expansion": 0.277, + "total_displacement": 0.0031, + "center_displacement": { + "x": -0.0006, + "y": 0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6045, + "y": 0.2709, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.634, + "y": 0.2553, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.585, + "y": 0.2567, + "confidence": 0.942 + }, + { + "name": "left_ear", + "x": 0.6906, + "y": 0.2694, + "confidence": 0.934 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7062, + "y": 0.356, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5174, + "y": 0.3447, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5742, + "y": 0.3894, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3615, + "y": 0.3821, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.4213, + "y": 0.3556, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4102, + "y": 0.4221, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.5927, + "y": 0.5597, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4701, + "y": 0.5504, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5102, + "y": 0.7183, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4441, + "y": 0.6997, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6426, + "y": 0.8195, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5834, + "y": 0.8093, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 356, + "timestamp": 11.866666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1125, + "acceleration": -0.2406, + "fluidity": 0.003, + "expansion": 0.292, + "total_displacement": 0.0051, + "center_displacement": { + "x": 0.0048, + "y": -0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6042, + "y": 0.2689, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6341, + "y": 0.2543, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.5871, + "y": 0.2552, + "confidence": 0.934 + }, + { + "name": "left_ear", + "x": 0.6944, + "y": 0.2688, + "confidence": 0.931 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7052, + "y": 0.3516, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5215, + "y": 0.3413, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5471, + "y": 0.3697, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3525, + "y": 0.3867, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.4313, + "y": 0.2974, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.4036, + "y": 0.4422, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.6003, + "y": 0.5599, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4789, + "y": 0.5515, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.512, + "y": 0.7191, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4437, + "y": 0.7024, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6418, + "y": 0.818, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5861, + "y": 0.8088, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 357, + "timestamp": 11.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0887, + "acceleration": -0.713, + "fluidity": 0.001, + "expansion": 0.303, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0014, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6044, + "y": 0.2656, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6363, + "y": 0.2519, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5895, + "y": 0.2514, + "confidence": 0.929 + }, + { + "name": "left_ear", + "x": 0.6972, + "y": 0.2683, + "confidence": 0.929 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7029, + "y": 0.3499, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5236, + "y": 0.3434, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5449, + "y": 0.3642, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3619, + "y": 0.4041, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4293, + "y": 0.2785, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3867, + "y": 0.4681, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.602, + "y": 0.5626, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4827, + "y": 0.555, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5138, + "y": 0.719, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4451, + "y": 0.7038, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6381, + "y": 0.8179, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5881, + "y": 0.8072, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 358, + "timestamp": 11.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0841, + "acceleration": -0.1363, + "fluidity": 0, + "expansion": 0.31, + "total_displacement": 0.003, + "center_displacement": { + "x": 0.0029, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6041, + "y": 0.2633, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6373, + "y": 0.2504, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5902, + "y": 0.2493, + "confidence": 0.924 + }, + { + "name": "left_ear", + "x": 0.6989, + "y": 0.2689, + "confidence": 0.933 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7061, + "y": 0.3513, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5236, + "y": 0.3437, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5605, + "y": 0.3676, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.361, + "y": 0.4053, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.4441, + "y": 0.275, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.358, + "y": 0.4692, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.607, + "y": 0.5634, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4861, + "y": 0.5554, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5157, + "y": 0.7189, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4462, + "y": 0.7061, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6376, + "y": 0.8193, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.5882, + "y": 0.8053, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 359, + "timestamp": 11.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0795, + "acceleration": -0.1395, + "fluidity": 0.034, + "expansion": 0.317, + "total_displacement": 0.0025, + "center_displacement": { + "x": 0.002, + "y": -0.0014 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6048, + "y": 0.2602, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6386, + "y": 0.2484, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5907, + "y": 0.2465, + "confidence": 0.932 + }, + { + "name": "left_ear", + "x": 0.6969, + "y": 0.2692, + "confidence": 0.927 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7048, + "y": 0.3527, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5197, + "y": 0.3431, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5708, + "y": 0.3717, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3602, + "y": 0.4058, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4653, + "y": 0.2801, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3426, + "y": 0.4768, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.6146, + "y": 0.5604, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.492, + "y": 0.552, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5233, + "y": 0.7146, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4459, + "y": 0.7029, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6372, + "y": 0.8208, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5817, + "y": 0.8067, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 360, + "timestamp": 12, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.093, + "acceleration": 0.4063, + "fluidity": 0.045, + "expansion": 0.323, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0008, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6037, + "y": 0.2551, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6382, + "y": 0.2435, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5897, + "y": 0.2411, + "confidence": 0.939 + }, + { + "name": "left_ear", + "x": 0.6945, + "y": 0.2654, + "confidence": 0.921 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.7033, + "y": 0.351, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5168, + "y": 0.3397, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5828, + "y": 0.3772, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3568, + "y": 0.4036, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.4701, + "y": 0.2811, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3161, + "y": 0.4699, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.6186, + "y": 0.5581, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4957, + "y": 0.5492, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.527, + "y": 0.7124, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4482, + "y": 0.7024, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6401, + "y": 0.8233, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5786, + "y": 0.8085, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 361, + "timestamp": 12.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1105, + "acceleration": 0.5234, + "fluidity": 0.324, + "expansion": 0.324, + "total_displacement": 0.004, + "center_displacement": { + "x": 0.001, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6044, + "y": 0.2508, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6391, + "y": 0.2392, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5887, + "y": 0.2362, + "confidence": 0.952 + }, + { + "name": "left_ear", + "x": 0.6907, + "y": 0.2606, + "confidence": 0.907 + }, + { + "name": "right_ear", + "x": 0.571, + "y": 0.2557, + "confidence": 0.56 + }, + { + "name": "left_shoulder", + "x": 0.7036, + "y": 0.3494, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5109, + "y": 0.3339, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6186, + "y": 0.3901, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3522, + "y": 0.3953, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.5059, + "y": 0.3135, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2977, + "y": 0.4585, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6241, + "y": 0.5549, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4998, + "y": 0.5444, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5344, + "y": 0.7084, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.453, + "y": 0.6962, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6417, + "y": 0.825, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5677, + "y": 0.8062, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 362, + "timestamp": 12.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1454, + "acceleration": 1.0476, + "fluidity": 0.416, + "expansion": 0.325, + "total_displacement": 0.004, + "center_displacement": { + "x": -0.0004, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6063, + "y": 0.2429, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6418, + "y": 0.2329, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5893, + "y": 0.2288, + "confidence": 0.958 + }, + { + "name": "left_ear", + "x": 0.6877, + "y": 0.257, + "confidence": 0.894 + }, + { + "name": "right_ear", + "x": 0.5662, + "y": 0.2493, + "confidence": 0.646 + }, + { + "name": "left_shoulder", + "x": 0.7025, + "y": 0.3463, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5036, + "y": 0.3305, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.649, + "y": 0.3922, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3549, + "y": 0.3865, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.5241, + "y": 0.3353, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.284, + "y": 0.4359, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.629, + "y": 0.5501, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5017, + "y": 0.54, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5501, + "y": 0.7042, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4681, + "y": 0.6946, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6372, + "y": 0.8239, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5601, + "y": 0.8065, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 363, + "timestamp": 12.1, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1836, + "acceleration": 1.1467, + "fluidity": 0.139, + "expansion": 0.328, + "total_displacement": 0.0069, + "center_displacement": { + "x": 0.0024, + "y": -0.0064 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6012, + "y": 0.2352, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.636, + "y": 0.2262, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.5872, + "y": 0.222, + "confidence": 0.947 + }, + { + "name": "left_ear", + "x": 0.6835, + "y": 0.2505, + "confidence": 0.91 + }, + { + "name": "right_ear", + "x": 0.5676, + "y": 0.2421, + "confidence": 0.582 + }, + { + "name": "left_shoulder", + "x": 0.7051, + "y": 0.3392, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5007, + "y": 0.3237, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6645, + "y": 0.3925, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3446, + "y": 0.3713, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.5226, + "y": 0.3606, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2707, + "y": 0.4132, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6348, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.506, + "y": 0.5344, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5643, + "y": 0.6993, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4825, + "y": 0.6912, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6433, + "y": 0.8236, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5705, + "y": 0.8036, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 364, + "timestamp": 12.133333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.185, + "acceleration": 0.0404, + "fluidity": 0.046, + "expansion": 0.333, + "total_displacement": 0.0066, + "center_displacement": { + "x": 0.0026, + "y": -0.0061 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6071, + "y": 0.2272, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6419, + "y": 0.218, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5905, + "y": 0.2143, + "confidence": 0.953 + }, + { + "name": "left_ear", + "x": 0.6871, + "y": 0.2419, + "confidence": 0.911 + }, + { + "name": "right_ear", + "x": 0.5666, + "y": 0.2347, + "confidence": 0.617 + }, + { + "name": "left_shoulder", + "x": 0.7085, + "y": 0.3317, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.501, + "y": 0.3187, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6868, + "y": 0.3885, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3409, + "y": 0.3587, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.5342, + "y": 0.3786, + "confidence": 0.991 + }, + { + "name": "right_wrist", + "x": 0.2625, + "y": 0.381, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6382, + "y": 0.5371, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5092, + "y": 0.5291, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5799, + "y": 0.6932, + "confidence": 1 + }, + { + "name": "right_knee", + "x": 0.5018, + "y": 0.6856, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6437, + "y": 0.8233, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5669, + "y": 0.8012, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 365, + "timestamp": 12.166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1899, + "acceleration": 0.1475, + "fluidity": 0.015, + "expansion": 0.341, + "total_displacement": 0.0058, + "center_displacement": { + "x": 0.0032, + "y": -0.0048 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6074, + "y": 0.2198, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6428, + "y": 0.2116, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5918, + "y": 0.207, + "confidence": 0.951 + }, + { + "name": "left_ear", + "x": 0.6857, + "y": 0.2355, + "confidence": 0.917 + }, + { + "name": "right_ear", + "x": 0.5678, + "y": 0.2261, + "confidence": 0.613 + }, + { + "name": "left_shoulder", + "x": 0.707, + "y": 0.3219, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.5065, + "y": 0.3091, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6962, + "y": 0.3796, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3634, + "y": 0.3434, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5394, + "y": 0.3886, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2545, + "y": 0.3527, + "confidence": 0.971 + }, + { + "name": "left_hip", + "x": 0.6418, + "y": 0.5372, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5146, + "y": 0.5295, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5953, + "y": 0.6933, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5199, + "y": 0.684, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6462, + "y": 0.8209, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.5701, + "y": 0.8009, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 366, + "timestamp": 12.2, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1893, + "acceleration": -0.019, + "fluidity": 0.005, + "expansion": 0.351, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.0028, + "y": -0.0065 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6101, + "y": 0.2132, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.645, + "y": 0.2059, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.5943, + "y": 0.201, + "confidence": 0.96 + }, + { + "name": "left_ear", + "x": 0.6869, + "y": 0.2313, + "confidence": 0.895 + }, + { + "name": "right_ear", + "x": 0.5684, + "y": 0.2203, + "confidence": 0.624 + }, + { + "name": "left_shoulder", + "x": 0.7061, + "y": 0.3154, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4979, + "y": 0.3024, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6941, + "y": 0.3736, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.3404, + "y": 0.3269, + "confidence": 0.974 + }, + { + "name": "left_wrist", + "x": 0.5225, + "y": 0.3854, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2315, + "y": 0.318, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.6429, + "y": 0.5307, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5116, + "y": 0.5232, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6019, + "y": 0.6861, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5321, + "y": 0.6834, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6334, + "y": 0.8194, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.575, + "y": 0.8037, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 367, + "timestamp": 12.233333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1403, + "acceleration": -1.4689, + "fluidity": 0.002, + "expansion": 0.363, + "total_displacement": 0.0055, + "center_displacement": { + "x": 0.0035, + "y": -0.0043 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6132, + "y": 0.2129, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6478, + "y": 0.2054, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.5955, + "y": 0.2002, + "confidence": 0.967 + }, + { + "name": "left_ear", + "x": 0.6883, + "y": 0.2297, + "confidence": 0.866 + }, + { + "name": "right_ear", + "x": 0.5665, + "y": 0.2181, + "confidence": 0.67 + }, + { + "name": "left_shoulder", + "x": 0.7102, + "y": 0.3124, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4915, + "y": 0.2982, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6837, + "y": 0.3536, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3163, + "y": 0.3025, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4929, + "y": 0.3618, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.2289, + "y": 0.2809, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6543, + "y": 0.5257, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5164, + "y": 0.5182, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6246, + "y": 0.6833, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.5489, + "y": 0.6775, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6425, + "y": 0.8153, + "confidence": 0.96 + }, + { + "name": "right_ankle", + "x": 0.5883, + "y": 0.8062, + "confidence": 0.956 + } + ] + } + ] + }, + { + "frame_index": 368, + "timestamp": 12.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1336, + "acceleration": -0.2006, + "fluidity": 0.001, + "expansion": 0.377, + "total_displacement": 0.0022, + "center_displacement": { + "x": 0.0003, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6183, + "y": 0.2146, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6532, + "y": 0.2075, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.6005, + "y": 0.2021, + "confidence": 0.967 + }, + { + "name": "left_ear", + "x": 0.6934, + "y": 0.2323, + "confidence": 0.814 + }, + { + "name": "right_ear", + "x": 0.5702, + "y": 0.2201, + "confidence": 0.685 + }, + { + "name": "left_shoulder", + "x": 0.7084, + "y": 0.3125, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4935, + "y": 0.2987, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6594, + "y": 0.3435, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.3155, + "y": 0.2919, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.4565, + "y": 0.3256, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.217, + "y": 0.2318, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.6551, + "y": 0.5292, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.5167, + "y": 0.5227, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6398, + "y": 0.6835, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.5595, + "y": 0.6785, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.6406, + "y": 0.8087, + "confidence": 0.948 + }, + { + "name": "right_ankle", + "x": 0.5943, + "y": 0.8023, + "confidence": 0.951 + } + ] + } + ] + }, + { + "frame_index": 369, + "timestamp": 12.3, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.1271, + "acceleration": -0.1942, + "fluidity": 0, + "expansion": 0.386, + "total_displacement": 0.0065, + "center_displacement": { + "x": -0.0026, + "y": 0.0059 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6249, + "y": 0.2179, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6588, + "y": 0.2114, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.605, + "y": 0.2061, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0.6976, + "y": 0.2346, + "confidence": 0.769 + }, + { + "name": "right_ear", + "x": 0.5735, + "y": 0.2236, + "confidence": 0.718 + }, + { + "name": "left_shoulder", + "x": 0.6996, + "y": 0.3132, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4981, + "y": 0.3012, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6083, + "y": 0.3248, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3181, + "y": 0.2946, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.4217, + "y": 0.2723, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.2329, + "y": 0.1884, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.6494, + "y": 0.539, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.516, + "y": 0.5335, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6565, + "y": 0.694, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5647, + "y": 0.6756, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6557, + "y": 0.8113, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.6045, + "y": 0.8, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 370, + "timestamp": 12.333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0815, + "acceleration": -1.368, + "fluidity": 0, + "expansion": 0.385, + "total_displacement": 0.0018, + "center_displacement": { + "x": 0.0002, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6302, + "y": 0.2184, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6646, + "y": 0.2136, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.6087, + "y": 0.2076, + "confidence": 0.968 + }, + { + "name": "left_ear", + "x": 0.701, + "y": 0.2401, + "confidence": 0.76 + }, + { + "name": "right_ear", + "x": 0.5747, + "y": 0.2275, + "confidence": 0.757 + }, + { + "name": "left_shoulder", + "x": 0.702, + "y": 0.3181, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4963, + "y": 0.297, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5855, + "y": 0.2999, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.323, + "y": 0.265, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.3744, + "y": 0.1828, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2705, + "y": 0.1608, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.6538, + "y": 0.5433, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.512, + "y": 0.5354, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6618, + "y": 0.6949, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5557, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6547, + "y": 0.8086, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.6016, + "y": 0.8019, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 371, + "timestamp": 12.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0805, + "acceleration": -0.0297, + "fluidity": 0, + "expansion": 0.377, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.002, + "y": 0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.638, + "y": 0.2176, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6724, + "y": 0.2121, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.6135, + "y": 0.2057, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0.7026, + "y": 0.2393, + "confidence": 0.778 + }, + { + "name": "right_ear", + "x": 0.5751, + "y": 0.2259, + "confidence": 0.8 + }, + { + "name": "left_shoulder", + "x": 0.6961, + "y": 0.3196, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.498, + "y": 0.298, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5748, + "y": 0.2991, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.338, + "y": 0.2731, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.3861, + "y": 0.1735, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3075, + "y": 0.1734, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.6496, + "y": 0.5435, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5122, + "y": 0.5354, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6574, + "y": 0.6967, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5546, + "y": 0.6783, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6529, + "y": 0.808, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.6042, + "y": 0.8035, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 372, + "timestamp": 12.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0787, + "acceleration": -0.0551, + "fluidity": 0, + "expansion": 0.371, + "total_displacement": 0.0032, + "center_displacement": { + "x": 0.003, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6422, + "y": 0.218, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6786, + "y": 0.2116, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.6153, + "y": 0.2052, + "confidence": 0.968 + }, + { + "name": "left_ear", + "x": 0.7115, + "y": 0.2385, + "confidence": 0.767 + }, + { + "name": "right_ear", + "x": 0.5737, + "y": 0.2248, + "confidence": 0.811 + }, + { + "name": "left_shoulder", + "x": 0.6965, + "y": 0.3218, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5036, + "y": 0.2927, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5769, + "y": 0.3137, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3441, + "y": 0.2734, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.4451, + "y": 0.1846, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3688, + "y": 0.1753, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6513, + "y": 0.5474, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5167, + "y": 0.5384, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6534, + "y": 0.7017, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.556, + "y": 0.6798, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6455, + "y": 0.815, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5788, + "y": 0.8063, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 373, + "timestamp": 12.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0581, + "acceleration": -0.6186, + "fluidity": 0, + "expansion": 0.367, + "total_displacement": 0.002, + "center_displacement": { + "x": 0.0006, + "y": -0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.644, + "y": 0.22, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6816, + "y": 0.2125, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.6182, + "y": 0.2061, + "confidence": 0.966 + }, + { + "name": "left_ear", + "x": 0.7171, + "y": 0.2369, + "confidence": 0.812 + }, + { + "name": "right_ear", + "x": 0.5801, + "y": 0.2236, + "confidence": 0.78 + }, + { + "name": "left_shoulder", + "x": 0.6892, + "y": 0.317, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5186, + "y": 0.2917, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5567, + "y": 0.3134, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3619, + "y": 0.2855, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.4802, + "y": 0.1863, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3808, + "y": 0.1896, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6418, + "y": 0.5461, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.521, + "y": 0.5379, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6472, + "y": 0.7026, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5559, + "y": 0.6795, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6457, + "y": 0.8155, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.5761, + "y": 0.8081, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 374, + "timestamp": 12.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0608, + "acceleration": 0.0806, + "fluidity": 0, + "expansion": 0.364, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0005, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6447, + "y": 0.2217, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6834, + "y": 0.2144, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.6201, + "y": 0.208, + "confidence": 0.964 + }, + { + "name": "left_ear", + "x": 0.7214, + "y": 0.2396, + "confidence": 0.842 + }, + { + "name": "right_ear", + "x": 0.5852, + "y": 0.2263, + "confidence": 0.758 + }, + { + "name": "left_shoulder", + "x": 0.6857, + "y": 0.3175, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5262, + "y": 0.2952, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5377, + "y": 0.3088, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3668, + "y": 0.2919, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.4817, + "y": 0.1788, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3918, + "y": 0.1941, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.6376, + "y": 0.5458, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5232, + "y": 0.5386, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6437, + "y": 0.7024, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5536, + "y": 0.6794, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6453, + "y": 0.8146, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5751, + "y": 0.808, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 375, + "timestamp": 12.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0591, + "acceleration": -0.0507, + "fluidity": 0, + "expansion": 0.36, + "total_displacement": 0.003, + "center_displacement": { + "x": -0.0017, + "y": 0.0024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6477, + "y": 0.2233, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6859, + "y": 0.2158, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.6231, + "y": 0.2094, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0.7218, + "y": 0.241, + "confidence": 0.817 + }, + { + "name": "right_ear", + "x": 0.5871, + "y": 0.2276, + "confidence": 0.775 + }, + { + "name": "left_shoulder", + "x": 0.6862, + "y": 0.3196, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5247, + "y": 0.298, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5394, + "y": 0.309, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3683, + "y": 0.296, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.4748, + "y": 0.1771, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.4027, + "y": 0.1932, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.6353, + "y": 0.5482, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5196, + "y": 0.5409, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6443, + "y": 0.7047, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5514, + "y": 0.6796, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6461, + "y": 0.8142, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5759, + "y": 0.8072, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 376, + "timestamp": 12.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0369, + "acceleration": -0.6654, + "fluidity": 0.117, + "expansion": 0.356, + "total_displacement": 0.0009, + "center_displacement": { + "x": -0.0007, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6483, + "y": 0.2243, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6872, + "y": 0.2168, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.6245, + "y": 0.2101, + "confidence": 0.964 + }, + { + "name": "left_ear", + "x": 0.7238, + "y": 0.2423, + "confidence": 0.806 + }, + { + "name": "right_ear", + "x": 0.5892, + "y": 0.2285, + "confidence": 0.771 + }, + { + "name": "left_shoulder", + "x": 0.6856, + "y": 0.3203, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5265, + "y": 0.3004, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5353, + "y": 0.3088, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3752, + "y": 0.3007, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.4652, + "y": 0.1758, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.4097, + "y": 0.1924, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.6327, + "y": 0.5476, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5182, + "y": 0.5407, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6417, + "y": 0.7035, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.549, + "y": 0.6793, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6438, + "y": 0.8128, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5761, + "y": 0.8067, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 377, + "timestamp": 12.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0266, + "acceleration": -0.3087, + "fluidity": 0.271, + "expansion": 0.353, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0006, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6497, + "y": 0.2241, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6885, + "y": 0.2172, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.627, + "y": 0.2106, + "confidence": 0.962 + }, + { + "name": "left_ear", + "x": 0.7246, + "y": 0.2436, + "confidence": 0.822 + }, + { + "name": "right_ear", + "x": 0.5935, + "y": 0.23, + "confidence": 0.763 + }, + { + "name": "left_shoulder", + "x": 0.6814, + "y": 0.3195, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5319, + "y": 0.3015, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5155, + "y": 0.3117, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3855, + "y": 0.3087, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.4537, + "y": 0.1769, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.415, + "y": 0.1938, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.6288, + "y": 0.5465, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5183, + "y": 0.5397, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6394, + "y": 0.7047, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5457, + "y": 0.6785, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6432, + "y": 0.816, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5763, + "y": 0.8082, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 378, + "timestamp": 12.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0407, + "acceleration": 0.4216, + "fluidity": 0.206, + "expansion": 0.35, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0003, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6501, + "y": 0.224, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6883, + "y": 0.2172, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.6278, + "y": 0.2114, + "confidence": 0.96 + }, + { + "name": "left_ear", + "x": 0.7249, + "y": 0.2433, + "confidence": 0.843 + }, + { + "name": "right_ear", + "x": 0.5964, + "y": 0.2319, + "confidence": 0.752 + }, + { + "name": "left_shoulder", + "x": 0.6781, + "y": 0.3171, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5347, + "y": 0.3033, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.4929, + "y": 0.3122, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3833, + "y": 0.3195, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.4473, + "y": 0.1789, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.4244, + "y": 0.2038, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.627, + "y": 0.5448, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5194, + "y": 0.5396, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.638, + "y": 0.7047, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5414, + "y": 0.6797, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6443, + "y": 0.817, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.5756, + "y": 0.8108, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 379, + "timestamp": 12.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0847, + "acceleration": 1.3216, + "fluidity": 0.069, + "expansion": 0.35, + "total_displacement": 0.0025, + "center_displacement": { + "x": -0.0023, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6481, + "y": 0.2242, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.6864, + "y": 0.2174, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.6272, + "y": 0.2112, + "confidence": 0.96 + }, + { + "name": "left_ear", + "x": 0.7223, + "y": 0.2426, + "confidence": 0.838 + }, + { + "name": "right_ear", + "x": 0.5962, + "y": 0.23, + "confidence": 0.755 + }, + { + "name": "left_shoulder", + "x": 0.6739, + "y": 0.3157, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5317, + "y": 0.3021, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.4929, + "y": 0.3127, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3775, + "y": 0.3223, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.4489, + "y": 0.181, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.4205, + "y": 0.2085, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6252, + "y": 0.5438, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5193, + "y": 0.5389, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6366, + "y": 0.704, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.541, + "y": 0.6794, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6438, + "y": 0.8173, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.5747, + "y": 0.8105, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 380, + "timestamp": 12.666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1447, + "acceleration": 1.7983, + "fluidity": 0.023, + "expansion": 0.349, + "total_displacement": 0.0046, + "center_displacement": { + "x": -0.0035, + "y": 0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6438, + "y": 0.2252, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.683, + "y": 0.2182, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.6227, + "y": 0.2115, + "confidence": 0.96 + }, + { + "name": "left_ear", + "x": 0.7202, + "y": 0.2442, + "confidence": 0.813 + }, + { + "name": "right_ear", + "x": 0.5907, + "y": 0.2301, + "confidence": 0.759 + }, + { + "name": "left_shoulder", + "x": 0.6745, + "y": 0.3195, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5232, + "y": 0.3041, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5079, + "y": 0.3127, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3662, + "y": 0.3184, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.4531, + "y": 0.1806, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.4207, + "y": 0.2014, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.6243, + "y": 0.5468, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5142, + "y": 0.542, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.636, + "y": 0.705, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5409, + "y": 0.6818, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6437, + "y": 0.8176, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.5728, + "y": 0.8118, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 381, + "timestamp": 12.7, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.1524, + "acceleration": 0.2324, + "fluidity": 0.008, + "expansion": 0.354, + "total_displacement": 0.0071, + "center_displacement": { + "x": -0.007, + "y": 0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6392, + "y": 0.2274, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6797, + "y": 0.2187, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.6168, + "y": 0.2113, + "confidence": 0.964 + }, + { + "name": "left_ear", + "x": 0.7207, + "y": 0.244, + "confidence": 0.843 + }, + { + "name": "right_ear", + "x": 0.5822, + "y": 0.2283, + "confidence": 0.721 + }, + { + "name": "left_shoulder", + "x": 0.6718, + "y": 0.3241, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5099, + "y": 0.3056, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.519, + "y": 0.316, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.3592, + "y": 0.3062, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.4485, + "y": 0.2016, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.4144, + "y": 0.2023, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.6212, + "y": 0.5452, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5052, + "y": 0.5406, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6344, + "y": 0.6936, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5495, + "y": 0.6769, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6493, + "y": 0.8197, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5695, + "y": 0.8046, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 382, + "timestamp": 12.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1009, + "acceleration": -1.5447, + "fluidity": 0.003, + "expansion": 0.362, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0028, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6409, + "y": 0.2262, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6796, + "y": 0.2194, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.6185, + "y": 0.2112, + "confidence": 0.967 + }, + { + "name": "left_ear", + "x": 0.7143, + "y": 0.2463, + "confidence": 0.824 + }, + { + "name": "right_ear", + "x": 0.5825, + "y": 0.2287, + "confidence": 0.768 + }, + { + "name": "left_shoulder", + "x": 0.6703, + "y": 0.3231, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5042, + "y": 0.3018, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5252, + "y": 0.3117, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3461, + "y": 0.3048, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.4716, + "y": 0.1758, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.4003, + "y": 0.1916, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6204, + "y": 0.5444, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5021, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.627, + "y": 0.7026, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5459, + "y": 0.6826, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6469, + "y": 0.8221, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5759, + "y": 0.8136, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 383, + "timestamp": 12.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0588, + "acceleration": -1.2628, + "fluidity": 0.001, + "expansion": 0.366, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0014, + "y": -0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6395, + "y": 0.226, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6784, + "y": 0.2195, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.6177, + "y": 0.2109, + "confidence": 0.967 + }, + { + "name": "left_ear", + "x": 0.7126, + "y": 0.2466, + "confidence": 0.824 + }, + { + "name": "right_ear", + "x": 0.582, + "y": 0.2282, + "confidence": 0.767 + }, + { + "name": "left_shoulder", + "x": 0.667, + "y": 0.3223, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5041, + "y": 0.3013, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5212, + "y": 0.3121, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3475, + "y": 0.3068, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.4676, + "y": 0.1779, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3896, + "y": 0.1943, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6184, + "y": 0.5435, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5019, + "y": 0.5374, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6255, + "y": 0.7027, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5447, + "y": 0.6814, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6456, + "y": 0.8242, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5748, + "y": 0.8135, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 384, + "timestamp": 12.8, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.058, + "acceleration": -0.024, + "fluidity": 0, + "expansion": 0.36, + "total_displacement": 0.0009, + "center_displacement": { + "x": -0.0008, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6371, + "y": 0.226, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6767, + "y": 0.2197, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.6159, + "y": 0.2109, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0.7108, + "y": 0.2475, + "confidence": 0.821 + }, + { + "name": "right_ear", + "x": 0.5806, + "y": 0.2284, + "confidence": 0.763 + }, + { + "name": "left_shoulder", + "x": 0.6614, + "y": 0.3217, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.5056, + "y": 0.302, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5081, + "y": 0.311, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.357, + "y": 0.3106, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.4598, + "y": 0.1734, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3855, + "y": 0.1962, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6174, + "y": 0.5425, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5039, + "y": 0.5369, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.624, + "y": 0.7023, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.54, + "y": 0.6822, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6454, + "y": 0.8231, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.5747, + "y": 0.8139, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 385, + "timestamp": 12.833333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0721, + "acceleration": 0.4212, + "fluidity": 0, + "expansion": 0.351, + "total_displacement": 0.003, + "center_displacement": { + "x": -0.0021, + "y": 0.0021 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6322, + "y": 0.2243, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6746, + "y": 0.2177, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.6115, + "y": 0.2084, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0.7114, + "y": 0.2466, + "confidence": 0.829 + }, + { + "name": "right_ear", + "x": 0.5757, + "y": 0.2262, + "confidence": 0.756 + }, + { + "name": "left_shoulder", + "x": 0.6545, + "y": 0.3233, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.5009, + "y": 0.3054, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.4958, + "y": 0.3187, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3619, + "y": 0.3182, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.4328, + "y": 0.203, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3983, + "y": 0.2125, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.6184, + "y": 0.5434, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.5058, + "y": 0.5393, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6312, + "y": 0.6934, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5442, + "y": 0.6771, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6481, + "y": 0.8211, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5681, + "y": 0.8083, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 386, + "timestamp": 12.866666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0834, + "acceleration": 0.3408, + "fluidity": 0, + "expansion": 0.352, + "total_displacement": 0.0023, + "center_displacement": { + "x": -0.0022, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6287, + "y": 0.2247, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.6708, + "y": 0.219, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.61, + "y": 0.2091, + "confidence": 0.964 + }, + { + "name": "left_ear", + "x": 0.707, + "y": 0.2478, + "confidence": 0.814 + }, + { + "name": "right_ear", + "x": 0.5749, + "y": 0.226, + "confidence": 0.752 + }, + { + "name": "left_shoulder", + "x": 0.6526, + "y": 0.3223, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4962, + "y": 0.3051, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5051, + "y": 0.3194, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3608, + "y": 0.3225, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.4286, + "y": 0.2085, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3926, + "y": 0.2213, + "confidence": 0.975 + }, + { + "name": "left_hip", + "x": 0.6181, + "y": 0.5425, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.504, + "y": 0.5385, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6288, + "y": 0.6928, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5431, + "y": 0.6777, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.647, + "y": 0.8214, + "confidence": 0.994 + }, + { + "name": "right_ankle", + "x": 0.5658, + "y": 0.8072, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 387, + "timestamp": 12.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1098, + "acceleration": 0.7895, + "fluidity": 0, + "expansion": 0.359, + "total_displacement": 0.0036, + "center_displacement": { + "x": -0.0036, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6262, + "y": 0.2251, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.665, + "y": 0.2194, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.6056, + "y": 0.2105, + "confidence": 0.966 + }, + { + "name": "left_ear", + "x": 0.6975, + "y": 0.2475, + "confidence": 0.813 + }, + { + "name": "right_ear", + "x": 0.5701, + "y": 0.2284, + "confidence": 0.773 + }, + { + "name": "left_shoulder", + "x": 0.6547, + "y": 0.3214, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4904, + "y": 0.3052, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5066, + "y": 0.308, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3468, + "y": 0.3204, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.4197, + "y": 0.1724, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3871, + "y": 0.2033, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.615, + "y": 0.544, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4963, + "y": 0.5393, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.624, + "y": 0.7037, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5365, + "y": 0.6828, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.644, + "y": 0.822, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5736, + "y": 0.8141, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 388, + "timestamp": 12.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1057, + "acceleration": -0.1207, + "fluidity": 0, + "expansion": 0.363, + "total_displacement": 0.0045, + "center_displacement": { + "x": -0.0043, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6225, + "y": 0.2258, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6601, + "y": 0.2202, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.6004, + "y": 0.2117, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0.6897, + "y": 0.247, + "confidence": 0.793 + }, + { + "name": "right_ear", + "x": 0.5618, + "y": 0.2292, + "confidence": 0.809 + }, + { + "name": "left_shoulder", + "x": 0.6522, + "y": 0.3189, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4779, + "y": 0.3037, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5129, + "y": 0.3027, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.3265, + "y": 0.3156, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.4197, + "y": 0.1772, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3744, + "y": 0.2047, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6164, + "y": 0.5426, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4927, + "y": 0.5388, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6229, + "y": 0.7046, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5345, + "y": 0.6832, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6467, + "y": 0.8241, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5771, + "y": 0.8152, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 389, + "timestamp": 12.966666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1175, + "acceleration": 0.3538, + "fluidity": 0, + "expansion": 0.366, + "total_displacement": 0.0024, + "center_displacement": { + "x": -0.0023, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6182, + "y": 0.2252, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6552, + "y": 0.219, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.594, + "y": 0.2114, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.6845, + "y": 0.2449, + "confidence": 0.772 + }, + { + "name": "right_ear", + "x": 0.5526, + "y": 0.229, + "confidence": 0.823 + }, + { + "name": "left_shoulder", + "x": 0.6539, + "y": 0.3186, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4702, + "y": 0.3025, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5314, + "y": 0.3033, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.316, + "y": 0.3088, + "confidence": 0.99 + }, + { + "name": "left_wrist", + "x": 0.4272, + "y": 0.1804, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3665, + "y": 0.2018, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.617, + "y": 0.5444, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4888, + "y": 0.5402, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6209, + "y": 0.7066, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5352, + "y": 0.6847, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6471, + "y": 0.8258, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5747, + "y": 0.8136, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 390, + "timestamp": 13, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.111, + "acceleration": -0.1946, + "fluidity": 0, + "expansion": 0.372, + "total_displacement": 0.0059, + "center_displacement": { + "x": -0.0057, + "y": -0.0015 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6128, + "y": 0.2222, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6507, + "y": 0.2167, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.5882, + "y": 0.2082, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.6764, + "y": 0.2439, + "confidence": 0.741 + }, + { + "name": "right_ear", + "x": 0.5429, + "y": 0.2257, + "confidence": 0.851 + }, + { + "name": "left_shoulder", + "x": 0.647, + "y": 0.3156, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4558, + "y": 0.3002, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5418, + "y": 0.299, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.305, + "y": 0.3067, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.4364, + "y": 0.1827, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.3587, + "y": 0.2028, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.618, + "y": 0.5435, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4864, + "y": 0.5407, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6154, + "y": 0.7045, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5328, + "y": 0.6881, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6453, + "y": 0.8244, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.5744, + "y": 0.8186, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 391, + "timestamp": 13.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0629, + "acceleration": -1.4437, + "fluidity": 0.241, + "expansion": 0.379, + "total_displacement": 0.0013, + "center_displacement": { + "x": -0.0011, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.6004, + "y": 0.2227, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6382, + "y": 0.2154, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.577, + "y": 0.208, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.6689, + "y": 0.2395, + "confidence": 0.757 + }, + { + "name": "right_ear", + "x": 0.5352, + "y": 0.2239, + "confidence": 0.82 + }, + { + "name": "left_shoulder", + "x": 0.6489, + "y": 0.3124, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4516, + "y": 0.3023, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5652, + "y": 0.2924, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2863, + "y": 0.3092, + "confidence": 0.992 + }, + { + "name": "left_wrist", + "x": 0.4508, + "y": 0.183, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.332, + "y": 0.2052, + "confidence": 0.99 + }, + { + "name": "left_hip", + "x": 0.6167, + "y": 0.5419, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4856, + "y": 0.5405, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6096, + "y": 0.7048, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5271, + "y": 0.689, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6428, + "y": 0.826, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.5717, + "y": 0.8187, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 392, + "timestamp": 13.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.1872, + "acceleration": 3.7277, + "fluidity": 0.322, + "expansion": 0.386, + "total_displacement": 0.0013, + "center_displacement": { + "x": 0.0009, + "y": -0.0008 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5905, + "y": 0.2194, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.6298, + "y": 0.2109, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.5681, + "y": 0.2048, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.668, + "y": 0.2338, + "confidence": 0.827 + }, + { + "name": "right_ear", + "x": 0.5296, + "y": 0.2207, + "confidence": 0.777 + }, + { + "name": "left_shoulder", + "x": 0.6595, + "y": 0.3088, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4455, + "y": 0.3026, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.5969, + "y": 0.2927, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.2595, + "y": 0.3141, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.4762, + "y": 0.1946, + "confidence": 0.979 + }, + { + "name": "right_wrist", + "x": 0.3106, + "y": 0.2154, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.6202, + "y": 0.5407, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4813, + "y": 0.5416, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6147, + "y": 0.6981, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5189, + "y": 0.6865, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6347, + "y": 0.8177, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.5584, + "y": 0.8142, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 393, + "timestamp": 13.1, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2498, + "acceleration": 1.8796, + "fluidity": 0.107, + "expansion": 0.395, + "total_displacement": 0.0154, + "center_displacement": { + "x": -0.01, + "y": -0.0117 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5811, + "y": 0.2175, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6187, + "y": 0.2085, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.5638, + "y": 0.2001, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.6475, + "y": 0.2288, + "confidence": 0.691 + }, + { + "name": "right_ear", + "x": 0.5222, + "y": 0.2094, + "confidence": 0.814 + }, + { + "name": "left_shoulder", + "x": 0.6395, + "y": 0.3016, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4287, + "y": 0.2945, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6343, + "y": 0.3038, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2694, + "y": 0.3219, + "confidence": 0.994 + }, + { + "name": "left_wrist", + "x": 0.5055, + "y": 0.1977, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2934, + "y": 0.219, + "confidence": 0.993 + }, + { + "name": "left_hip", + "x": 0.616, + "y": 0.5266, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4823, + "y": 0.5243, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5898, + "y": 0.6881, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.5142, + "y": 0.6777, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6364, + "y": 0.8255, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.5547, + "y": 0.8053, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 394, + "timestamp": 13.133333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1919, + "acceleration": -1.7373, + "fluidity": 0.036, + "expansion": 0.393, + "total_displacement": 0.0034, + "center_displacement": { + "x": -0.0008, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5757, + "y": 0.2174, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.6099, + "y": 0.2053, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.5529, + "y": 0.2007, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.6349, + "y": 0.2179, + "confidence": 0.617 + }, + { + "name": "right_ear", + "x": 0.5028, + "y": 0.2077, + "confidence": 0.861 + }, + { + "name": "left_shoulder", + "x": 0.6422, + "y": 0.2938, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4175, + "y": 0.2931, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6624, + "y": 0.3139, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2445, + "y": 0.3357, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.5211, + "y": 0.2098, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2672, + "y": 0.2356, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.6208, + "y": 0.5232, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4827, + "y": 0.5238, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5922, + "y": 0.6887, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4977, + "y": 0.6762, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6385, + "y": 0.8276, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.5404, + "y": 0.8013, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 395, + "timestamp": 13.166666666666666, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2388, + "acceleration": 1.4061, + "fluidity": 0.012, + "expansion": 0.385, + "total_displacement": 0.0075, + "center_displacement": { + "x": 0.0067, + "y": -0.0033 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5563, + "y": 0.224, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5887, + "y": 0.2087, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.5282, + "y": 0.2084, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.6206, + "y": 0.2156, + "confidence": 0.769 + }, + { + "name": "right_ear", + "x": 0.4795, + "y": 0.2148, + "confidence": 0.813 + }, + { + "name": "left_shoulder", + "x": 0.6485, + "y": 0.2901, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4153, + "y": 0.2962, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6855, + "y": 0.3287, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2563, + "y": 0.3513, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.5341, + "y": 0.242, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.2695, + "y": 0.274, + "confidence": 0.985 + }, + { + "name": "left_hip", + "x": 0.6352, + "y": 0.5157, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4909, + "y": 0.5185, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5938, + "y": 0.6733, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4968, + "y": 0.6654, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6412, + "y": 0.8106, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.5382, + "y": 0.7831, + "confidence": 0.961 + } + ] + } + ] + }, + { + "frame_index": 396, + "timestamp": 13.2, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2646, + "acceleration": 0.7743, + "fluidity": 0.004, + "expansion": 0.371, + "total_displacement": 0.01, + "center_displacement": { + "x": -0.0097, + "y": 0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5441, + "y": 0.2315, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5805, + "y": 0.2163, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.5196, + "y": 0.2136, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.6146, + "y": 0.2225, + "confidence": 0.782 + }, + { + "name": "right_ear", + "x": 0.4683, + "y": 0.2164, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.2985, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3993, + "y": 0.3033, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.722, + "y": 0.3569, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2482, + "y": 0.3763, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.5601, + "y": 0.2875, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2446, + "y": 0.314, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6277, + "y": 0.5138, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4795, + "y": 0.5142, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5799, + "y": 0.6785, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4705, + "y": 0.6702, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.631, + "y": 0.8207, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.5082, + "y": 0.7803, + "confidence": 0.988 + } + ] + } + ] + }, + { + "frame_index": 397, + "timestamp": 13.233333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2849, + "acceleration": 0.6093, + "fluidity": 0.001, + "expansion": 0.348, + "total_displacement": 0.0085, + "center_displacement": { + "x": -0.0016, + "y": 0.0083 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5324, + "y": 0.2496, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5687, + "y": 0.2334, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.508, + "y": 0.2319, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.6068, + "y": 0.235, + "confidence": 0.806 + }, + { + "name": "right_ear", + "x": 0.4572, + "y": 0.2309, + "confidence": 0.779 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.3104, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3987, + "y": 0.313, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7529, + "y": 0.3818, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.2611, + "y": 0.3805, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.582, + "y": 0.341, + "confidence": 0.992 + }, + { + "name": "right_wrist", + "x": 0.2602, + "y": 0.3533, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.6235, + "y": 0.52, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4781, + "y": 0.5198, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5682, + "y": 0.6761, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4682, + "y": 0.6771, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6089, + "y": 0.8123, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4932, + "y": 0.7733, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 398, + "timestamp": 13.266666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4447, + "acceleration": 4.795, + "fluidity": 0, + "expansion": 0.324, + "total_displacement": 0.0112, + "center_displacement": { + "x": -0.0057, + "y": 0.0096 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5243, + "y": 0.27, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5618, + "y": 0.2532, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.502, + "y": 0.2506, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5986, + "y": 0.2503, + "confidence": 0.822 + }, + { + "name": "right_ear", + "x": 0.4505, + "y": 0.2433, + "confidence": 0.775 + }, + { + "name": "left_shoulder", + "x": 0.6343, + "y": 0.3233, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3952, + "y": 0.3248, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.765, + "y": 0.4169, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2804, + "y": 0.4066, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.5962, + "y": 0.3958, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2647, + "y": 0.4016, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.6162, + "y": 0.527, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4761, + "y": 0.5264, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5599, + "y": 0.6818, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4544, + "y": 0.6891, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5978, + "y": 0.8085, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4813, + "y": 0.7707, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 399, + "timestamp": 13.299999999999999, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.5831, + "acceleration": 4.1508, + "fluidity": 0, + "expansion": 0.3, + "total_displacement": 0.0238, + "center_displacement": { + "x": -0.0056, + "y": 0.0231 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5226, + "y": 0.2899, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.558, + "y": 0.2739, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.498, + "y": 0.271, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5928, + "y": 0.2742, + "confidence": 0.827 + }, + { + "name": "right_ear", + "x": 0.4462, + "y": 0.267, + "confidence": 0.809 + }, + { + "name": "left_shoulder", + "x": 0.6354, + "y": 0.3534, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3941, + "y": 0.3464, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7744, + "y": 0.4474, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2877, + "y": 0.418, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.612, + "y": 0.4409, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2988, + "y": 0.4387, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6051, + "y": 0.5484, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4647, + "y": 0.5459, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5549, + "y": 0.6958, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4618, + "y": 0.7071, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5786, + "y": 0.8152, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.4705, + "y": 0.7963, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 400, + "timestamp": 13.333333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.5816, + "acceleration": -0.0444, + "fluidity": 0, + "expansion": 0.278, + "total_displacement": 0.0197, + "center_displacement": { + "x": -0.0048, + "y": 0.0191 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5199, + "y": 0.3133, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5535, + "y": 0.2973, + "confidence": 0.981 + }, + { + "name": "right_eye", + "x": 0.4977, + "y": 0.2943, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5868, + "y": 0.2948, + "confidence": 0.802 + }, + { + "name": "right_ear", + "x": 0.4493, + "y": 0.2871, + "confidence": 0.807 + }, + { + "name": "left_shoulder", + "x": 0.629, + "y": 0.3733, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3971, + "y": 0.3651, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7763, + "y": 0.4695, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.3049, + "y": 0.4404, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6296, + "y": 0.4712, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3298, + "y": 0.4771, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5937, + "y": 0.5676, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4602, + "y": 0.5644, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5507, + "y": 0.7126, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4571, + "y": 0.7225, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5707, + "y": 0.8237, + "confidence": 0.988 + }, + { + "name": "right_ankle", + "x": 0.4734, + "y": 0.8036, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 401, + "timestamp": 13.366666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.5321, + "acceleration": -1.4839, + "fluidity": 0, + "expansion": 0.259, + "total_displacement": 0.019, + "center_displacement": { + "x": -0.0038, + "y": 0.0187 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5228, + "y": 0.3334, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5564, + "y": 0.3169, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.4977, + "y": 0.3132, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5868, + "y": 0.3163, + "confidence": 0.779 + }, + { + "name": "right_ear", + "x": 0.4456, + "y": 0.3077, + "confidence": 0.836 + }, + { + "name": "left_shoulder", + "x": 0.6271, + "y": 0.3977, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3977, + "y": 0.3883, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7726, + "y": 0.4884, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3241, + "y": 0.4611, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.6309, + "y": 0.4984, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.3604, + "y": 0.4993, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5856, + "y": 0.5818, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4546, + "y": 0.5772, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5498, + "y": 0.7224, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.459, + "y": 0.7256, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5587, + "y": 0.8221, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.477, + "y": 0.8092, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 402, + "timestamp": 13.4, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4338, + "acceleration": -2.9516, + "fluidity": 0, + "expansion": 0.25, + "total_displacement": 0.0148, + "center_displacement": { + "x": -0.0051, + "y": 0.0139 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.527, + "y": 0.3498, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5596, + "y": 0.3342, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.5017, + "y": 0.3299, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5842, + "y": 0.3358, + "confidence": 0.74 + }, + { + "name": "right_ear", + "x": 0.4468, + "y": 0.3261, + "confidence": 0.855 + }, + { + "name": "left_shoulder", + "x": 0.619, + "y": 0.413, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3985, + "y": 0.4056, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7647, + "y": 0.499, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3452, + "y": 0.4796, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.6395, + "y": 0.5128, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3769, + "y": 0.5144, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.5772, + "y": 0.593, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4498, + "y": 0.589, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5462, + "y": 0.7304, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4598, + "y": 0.7326, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5596, + "y": 0.825, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.481, + "y": 0.816, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 403, + "timestamp": 13.433333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3056, + "acceleration": -3.8457, + "fluidity": 0, + "expansion": 0.249, + "total_displacement": 0.0109, + "center_displacement": { + "x": -0.0037, + "y": 0.0102 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5309, + "y": 0.3563, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5631, + "y": 0.3418, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.5066, + "y": 0.3373, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5847, + "y": 0.3463, + "confidence": 0.717 + }, + { + "name": "right_ear", + "x": 0.4505, + "y": 0.3358, + "confidence": 0.863 + }, + { + "name": "left_shoulder", + "x": 0.6119, + "y": 0.422, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3965, + "y": 0.418, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7518, + "y": 0.5021, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.35, + "y": 0.4947, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6498, + "y": 0.5214, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.379, + "y": 0.5281, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.5736, + "y": 0.6018, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4478, + "y": 0.5996, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5456, + "y": 0.7369, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.4568, + "y": 0.7409, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5591, + "y": 0.8284, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4816, + "y": 0.8182, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 404, + "timestamp": 13.466666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2012, + "acceleration": -3.1317, + "fluidity": 0, + "expansion": 0.257, + "total_displacement": 0.0052, + "center_displacement": { + "x": -0.0023, + "y": 0.0047 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5319, + "y": 0.3551, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5627, + "y": 0.3411, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.5092, + "y": 0.3372, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5838, + "y": 0.3468, + "confidence": 0.719 + }, + { + "name": "right_ear", + "x": 0.4557, + "y": 0.3376, + "confidence": 0.863 + }, + { + "name": "left_shoulder", + "x": 0.6117, + "y": 0.4256, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3927, + "y": 0.4238, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7459, + "y": 0.5085, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.3298, + "y": 0.5095, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6578, + "y": 0.5131, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.3681, + "y": 0.5273, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.572, + "y": 0.6058, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4443, + "y": 0.6051, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5493, + "y": 0.7395, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4519, + "y": 0.7436, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5585, + "y": 0.8296, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4796, + "y": 0.817, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 405, + "timestamp": 13.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1492, + "acceleration": -1.558, + "fluidity": 0, + "expansion": 0.275, + "total_displacement": 0.0047, + "center_displacement": { + "x": -0.0042, + "y": 0.0022 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5311, + "y": 0.3495, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5619, + "y": 0.3358, + "confidence": 0.964 + }, + { + "name": "right_eye", + "x": 0.5105, + "y": 0.3317, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5838, + "y": 0.3432, + "confidence": 0.646 + }, + { + "name": "right_ear", + "x": 0.4594, + "y": 0.3333, + "confidence": 0.868 + }, + { + "name": "left_shoulder", + "x": 0.6103, + "y": 0.4243, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3846, + "y": 0.4272, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.749, + "y": 0.5071, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.3018, + "y": 0.5267, + "confidence": 0.991 + }, + { + "name": "left_wrist", + "x": 0.6743, + "y": 0.498, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3594, + "y": 0.5129, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.5694, + "y": 0.6078, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4398, + "y": 0.6096, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5509, + "y": 0.7418, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4514, + "y": 0.7454, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.56, + "y": 0.8298, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4778, + "y": 0.8187, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 406, + "timestamp": 13.533333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1596, + "acceleration": 0.3111, + "fluidity": 0, + "expansion": 0.304, + "total_displacement": 0.0035, + "center_displacement": { + "x": -0.0027, + "y": -0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5304, + "y": 0.3394, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5609, + "y": 0.326, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.5097, + "y": 0.3222, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5852, + "y": 0.3347, + "confidence": 0.752 + }, + { + "name": "right_ear", + "x": 0.462, + "y": 0.3258, + "confidence": 0.857 + }, + { + "name": "left_shoulder", + "x": 0.6168, + "y": 0.4194, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3789, + "y": 0.4219, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7641, + "y": 0.4984, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.2654, + "y": 0.5216, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7059, + "y": 0.4704, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3364, + "y": 0.4891, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5662, + "y": 0.6081, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4314, + "y": 0.6102, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5512, + "y": 0.7433, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4518, + "y": 0.745, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5591, + "y": 0.8297, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4759, + "y": 0.8174, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 407, + "timestamp": 13.566666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2562, + "acceleration": 2.8982, + "fluidity": 0, + "expansion": 0.337, + "total_displacement": 0.0075, + "center_displacement": { + "x": -0.002, + "y": -0.0072 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5294, + "y": 0.3246, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5581, + "y": 0.311, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.5075, + "y": 0.3088, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5823, + "y": 0.3214, + "confidence": 0.698 + }, + { + "name": "right_ear", + "x": 0.4607, + "y": 0.3167, + "confidence": 0.869 + }, + { + "name": "left_shoulder", + "x": 0.6226, + "y": 0.4068, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.373, + "y": 0.4152, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7803, + "y": 0.4689, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.2253, + "y": 0.5054, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.7187, + "y": 0.4327, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2882, + "y": 0.4546, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.5642, + "y": 0.6025, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4255, + "y": 0.6066, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5434, + "y": 0.7404, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4546, + "y": 0.741, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5581, + "y": 0.8272, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4772, + "y": 0.8171, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 408, + "timestamp": 13.6, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3823, + "acceleration": 3.7814, + "fluidity": 0, + "expansion": 0.367, + "total_displacement": 0.0128, + "center_displacement": { + "x": -0.0037, + "y": -0.0123 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5293, + "y": 0.3059, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5545, + "y": 0.2921, + "confidence": 0.953 + }, + { + "name": "right_eye", + "x": 0.5039, + "y": 0.2918, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5754, + "y": 0.3019, + "confidence": 0.528 + }, + { + "name": "right_ear", + "x": 0.4527, + "y": 0.302, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.6194, + "y": 0.3875, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3651, + "y": 0.3985, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7881, + "y": 0.4343, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.1996, + "y": 0.4785, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7477, + "y": 0.3813, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.2845, + "y": 0.4066, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.5634, + "y": 0.5951, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4225, + "y": 0.6008, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5401, + "y": 0.7411, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4636, + "y": 0.7397, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5546, + "y": 0.8271, + "confidence": 0.976 + }, + { + "name": "right_ankle", + "x": 0.4707, + "y": 0.8141, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 409, + "timestamp": 13.633333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4756, + "acceleration": 2.7993, + "fluidity": 0, + "expansion": 0.396, + "total_displacement": 0.0168, + "center_displacement": { + "x": -0.0059, + "y": -0.0158 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5243, + "y": 0.2864, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5496, + "y": 0.2727, + "confidence": 0.947 + }, + { + "name": "right_eye", + "x": 0.4985, + "y": 0.2732, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5706, + "y": 0.2826, + "confidence": 0.511 + }, + { + "name": "right_ear", + "x": 0.4457, + "y": 0.2847, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.6188, + "y": 0.3638, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.351, + "y": 0.3823, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7955, + "y": 0.3836, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.1788, + "y": 0.4453, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.7436, + "y": 0.3298, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.2758, + "y": 0.3567, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.5635, + "y": 0.5817, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4135, + "y": 0.5908, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5468, + "y": 0.7331, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.459, + "y": 0.7353, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5523, + "y": 0.8251, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.4684, + "y": 0.81, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 410, + "timestamp": 13.666666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.5271, + "acceleration": 1.5443, + "fluidity": 0, + "expansion": 0.426, + "total_displacement": 0.018, + "center_displacement": { + "x": -0.0029, + "y": -0.0177 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5215, + "y": 0.2658, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.544, + "y": 0.2524, + "confidence": 0.941 + }, + { + "name": "right_eye", + "x": 0.4948, + "y": 0.2539, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5644, + "y": 0.2616, + "confidence": 0.519 + }, + { + "name": "right_ear", + "x": 0.446, + "y": 0.2664, + "confidence": 0.899 + }, + { + "name": "left_shoulder", + "x": 0.6219, + "y": 0.341, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3512, + "y": 0.3574, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.799, + "y": 0.342, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.1626, + "y": 0.3999, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7461, + "y": 0.2714, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.268, + "y": 0.3052, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.5582, + "y": 0.5705, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4039, + "y": 0.5789, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5561, + "y": 0.7248, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4576, + "y": 0.725, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5652, + "y": 0.817, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4566, + "y": 0.8097, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 411, + "timestamp": 13.7, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.6011, + "acceleration": 2.2222, + "fluidity": 0, + "expansion": 0.455, + "total_displacement": 0.0189, + "center_displacement": { + "x": -0.0095, + "y": -0.0163 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5294, + "y": 0.2445, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5449, + "y": 0.2283, + "confidence": 0.933 + }, + { + "name": "right_eye", + "x": 0.4978, + "y": 0.2297, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4333, + "y": 0.2408, + "confidence": 0.941 + }, + { + "name": "left_shoulder", + "x": 0.5978, + "y": 0.3256, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3492, + "y": 0.3396, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7895, + "y": 0.3034, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.1731, + "y": 0.3491, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.75, + "y": 0.2202, + "confidence": 0.969 + }, + { + "name": "right_wrist", + "x": 0.2656, + "y": 0.2447, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5456, + "y": 0.5545, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4048, + "y": 0.5627, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5806, + "y": 0.7103, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4432, + "y": 0.7096, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5798, + "y": 0.8046, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.4379, + "y": 0.8067, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 412, + "timestamp": 13.733333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.5704, + "acceleration": -0.9212, + "fluidity": 0, + "expansion": 0.485, + "total_displacement": 0.0237, + "center_displacement": { + "x": -0.0078, + "y": -0.0223 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5309, + "y": 0.2288, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5446, + "y": 0.2138, + "confidence": 0.914 + }, + { + "name": "right_eye", + "x": 0.5003, + "y": 0.2134, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4309, + "y": 0.224, + "confidence": 0.935 + }, + { + "name": "left_shoulder", + "x": 0.5875, + "y": 0.3061, + "confidence": 0.989 + }, + { + "name": "right_shoulder", + "x": 0.3418, + "y": 0.3179, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.765, + "y": 0.2618, + "confidence": 0.956 + }, + { + "name": "right_elbow", + "x": 0.1773, + "y": 0.3046, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.7307, + "y": 0.1688, + "confidence": 0.962 + }, + { + "name": "right_wrist", + "x": 0.2487, + "y": 0.1966, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5411, + "y": 0.5302, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3958, + "y": 0.5389, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5974, + "y": 0.6886, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.4198, + "y": 0.6941, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5957, + "y": 0.792, + "confidence": 0.943 + }, + { + "name": "right_ankle", + "x": 0.4233, + "y": 0.8109, + "confidence": 0.965 + } + ] + } + ] + }, + { + "frame_index": 413, + "timestamp": 13.766666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.4073, + "acceleration": -4.8933, + "fluidity": 0, + "expansion": 0.515, + "total_displacement": 0.0133, + "center_displacement": { + "x": -0.01, + "y": -0.0089 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5274, + "y": 0.2157, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5367, + "y": 0.2007, + "confidence": 0.871 + }, + { + "name": "right_eye", + "x": 0.4966, + "y": 0.2013, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.424, + "y": 0.2134, + "confidence": 0.93 + }, + { + "name": "left_shoulder", + "x": 0.5716, + "y": 0.2951, + "confidence": 0.989 + }, + { + "name": "right_shoulder", + "x": 0.3376, + "y": 0.3044, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7423, + "y": 0.235, + "confidence": 0.967 + }, + { + "name": "right_elbow", + "x": 0.1709, + "y": 0.266, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7235, + "y": 0.125, + "confidence": 0.97 + }, + { + "name": "right_wrist", + "x": 0.2253, + "y": 0.1439, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5299, + "y": 0.5248, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3871, + "y": 0.5334, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6047, + "y": 0.681, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4012, + "y": 0.6892, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5987, + "y": 0.7928, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.3977, + "y": 0.809, + "confidence": 0.979 + } + ] + } + ] + }, + { + "frame_index": 414, + "timestamp": 13.799999999999999, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.343, + "acceleration": -1.9296, + "fluidity": 0, + "expansion": 0.54, + "total_displacement": 0.0084, + "center_displacement": { + "x": -0.006, + "y": -0.0059 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5202, + "y": 0.2096, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5293, + "y": 0.1959, + "confidence": 0.864 + }, + { + "name": "right_eye", + "x": 0.4894, + "y": 0.1965, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.418, + "y": 0.2107, + "confidence": 0.919 + }, + { + "name": "left_shoulder", + "x": 0.562, + "y": 0.2878, + "confidence": 0.991 + }, + { + "name": "right_shoulder", + "x": 0.3369, + "y": 0.2944, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.7185, + "y": 0.2115, + "confidence": 0.979 + }, + { + "name": "right_elbow", + "x": 0.1787, + "y": 0.237, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.7183, + "y": 0.089, + "confidence": 0.979 + }, + { + "name": "right_wrist", + "x": 0.2131, + "y": 0.113, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5244, + "y": 0.5225, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3791, + "y": 0.5294, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6074, + "y": 0.6801, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.377, + "y": 0.6863, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6148, + "y": 0.795, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.3704, + "y": 0.8087, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 415, + "timestamp": 13.833333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2809, + "acceleration": -1.8618, + "fluidity": 0, + "expansion": 0.556, + "total_displacement": 0.0123, + "center_displacement": { + "x": -0.0083, + "y": -0.0092 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5142, + "y": 0.2068, + "confidence": 0.979 + }, + { + "name": "left_eye", + "x": 0.5185, + "y": 0.1943, + "confidence": 0.774 + }, + { + "name": "right_eye", + "x": 0.4819, + "y": 0.1951, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4092, + "y": 0.211, + "confidence": 0.9 + }, + { + "name": "left_shoulder", + "x": 0.5467, + "y": 0.2852, + "confidence": 0.97 + }, + { + "name": "right_shoulder", + "x": 0.3419, + "y": 0.2877, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6776, + "y": 0.1918, + "confidence": 0.935 + }, + { + "name": "right_elbow", + "x": 0.208, + "y": 0.1936, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.7097, + "y": 0.0751, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.1927, + "y": 0.0554, + "confidence": 0.997 + }, + { + "name": "left_hip", + "x": 0.5068, + "y": 0.5109, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3739, + "y": 0.5137, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5867, + "y": 0.6803, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.3561, + "y": 0.6757, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5593, + "y": 0.8044, + "confidence": 0.94 + }, + { + "name": "right_ankle", + "x": 0.3639, + "y": 0.8201, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 416, + "timestamp": 13.866666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2144, + "acceleration": -1.9964, + "fluidity": 0, + "expansion": 0.56, + "total_displacement": 0.0043, + "center_displacement": { + "x": -0.0043, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.507, + "y": 0.2145, + "confidence": 0.975 + }, + { + "name": "left_eye", + "x": 0.5094, + "y": 0.2018, + "confidence": 0.68 + }, + { + "name": "right_eye", + "x": 0.476, + "y": 0.2036, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.4025, + "y": 0.2163, + "confidence": 0.878 + }, + { + "name": "left_shoulder", + "x": 0.5279, + "y": 0.284, + "confidence": 0.969 + }, + { + "name": "right_shoulder", + "x": 0.346, + "y": 0.2837, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6437, + "y": 0.1891, + "confidence": 0.96 + }, + { + "name": "right_elbow", + "x": 0.2345, + "y": 0.1761, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6978, + "y": 0.0638, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.1745, + "y": 0.043, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.5003, + "y": 0.5123, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3781, + "y": 0.5144, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5767, + "y": 0.679, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.3481, + "y": 0.6788, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5469, + "y": 0.81, + "confidence": 0.92 + }, + { + "name": "right_ankle", + "x": 0.363, + "y": 0.8203, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 417, + "timestamp": 13.9, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3909, + "acceleration": 5.294, + "fluidity": 0, + "expansion": 0.568, + "total_displacement": 0.0078, + "center_displacement": { + "x": -0.0005, + "y": 0.0077 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4985, + "y": 0.2255, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4981, + "y": 0.213, + "confidence": 0.679 + }, + { + "name": "right_eye", + "x": 0.4657, + "y": 0.2177, + "confidence": 0.961 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3977, + "y": 0.2337, + "confidence": 0.878 + }, + { + "name": "left_shoulder", + "x": 0.5198, + "y": 0.2907, + "confidence": 0.97 + }, + { + "name": "right_shoulder", + "x": 0.3558, + "y": 0.2961, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.6117, + "y": 0.1872, + "confidence": 0.959 + }, + { + "name": "right_elbow", + "x": 0.25, + "y": 0.1831, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6651, + "y": 0.057, + "confidence": 0.967 + }, + { + "name": "right_wrist", + "x": 0.1672, + "y": 0.0557, + "confidence": 0.998 + }, + { + "name": "left_hip", + "x": 0.4938, + "y": 0.5179, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3808, + "y": 0.5207, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5661, + "y": 0.6864, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.3474, + "y": 0.6864, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5248, + "y": 0.8153, + "confidence": 0.917 + }, + { + "name": "right_ankle", + "x": 0.3549, + "y": 0.8253, + "confidence": 0.956 + } + ] + } + ] + }, + { + "frame_index": 418, + "timestamp": 13.933333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.491, + "acceleration": 3.0034, + "fluidity": 0, + "expansion": 0.577, + "total_displacement": 0.0242, + "center_displacement": { + "x": -0.0023, + "y": 0.0241 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4981, + "y": 0.2398, + "confidence": 0.965 + }, + { + "name": "left_eye", + "x": 0.5037, + "y": 0.228, + "confidence": 0.668 + }, + { + "name": "right_eye", + "x": 0.4625, + "y": 0.2297, + "confidence": 0.967 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3869, + "y": 0.2509, + "confidence": 0.934 + }, + { + "name": "left_shoulder", + "x": 0.5085, + "y": 0.2997, + "confidence": 0.966 + }, + { + "name": "right_shoulder", + "x": 0.3426, + "y": 0.3097, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6202, + "y": 0.1741, + "confidence": 0.904 + }, + { + "name": "right_elbow", + "x": 0.2438, + "y": 0.1988, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.6443, + "y": 0.0442, + "confidence": 0.833 + }, + { + "name": "right_wrist", + "x": 0.2726, + "y": 0.0667, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.5134, + "y": 0.5529, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3767, + "y": 0.5595, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5908, + "y": 0.7069, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3311, + "y": 0.7106, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6697, + "y": 0.8247, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.2404, + "y": 0.8227, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 419, + "timestamp": 13.966666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3242, + "acceleration": -5.0032, + "fluidity": 0, + "expansion": 0.575, + "total_displacement": 0.0119, + "center_displacement": { + "x": -0.0058, + "y": 0.0104 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4929, + "y": 0.2515, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4985, + "y": 0.2383, + "confidence": 0.704 + }, + { + "name": "right_eye", + "x": 0.4573, + "y": 0.2409, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.383, + "y": 0.2611, + "confidence": 0.937 + }, + { + "name": "left_shoulder", + "x": 0.4989, + "y": 0.3078, + "confidence": 0.972 + }, + { + "name": "right_shoulder", + "x": 0.3417, + "y": 0.3239, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.6031, + "y": 0.174, + "confidence": 0.934 + }, + { + "name": "right_elbow", + "x": 0.2372, + "y": 0.2184, + "confidence": 0.999 + }, + { + "name": "left_wrist", + "x": 0.6227, + "y": 0.0338, + "confidence": 0.892 + }, + { + "name": "right_wrist", + "x": 0.2707, + "y": 0.0842, + "confidence": 0.996 + }, + { + "name": "left_hip", + "x": 0.5035, + "y": 0.5613, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3739, + "y": 0.5703, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5853, + "y": 0.7101, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3284, + "y": 0.7159, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6682, + "y": 0.8238, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.2447, + "y": 0.8252, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 420, + "timestamp": 14, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1898, + "acceleration": -4.0312, + "fluidity": 0.084, + "expansion": 0.572, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0007, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4892, + "y": 0.2556, + "confidence": 0.976 + }, + { + "name": "left_eye", + "x": 0.4972, + "y": 0.2421, + "confidence": 0.765 + }, + { + "name": "right_eye", + "x": 0.4513, + "y": 0.2458, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3812, + "y": 0.2684, + "confidence": 0.933 + }, + { + "name": "left_shoulder", + "x": 0.5025, + "y": 0.314, + "confidence": 0.973 + }, + { + "name": "right_shoulder", + "x": 0.3464, + "y": 0.3277, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5781, + "y": 0.177, + "confidence": 0.933 + }, + { + "name": "right_elbow", + "x": 0.2278, + "y": 0.2112, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.5659, + "y": 0.0328, + "confidence": 0.885 + }, + { + "name": "right_wrist", + "x": 0.2535, + "y": 0.0779, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.5008, + "y": 0.5653, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3708, + "y": 0.5727, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.583, + "y": 0.7135, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3312, + "y": 0.7154, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6691, + "y": 0.8234, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.245, + "y": 0.8229, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 421, + "timestamp": 14.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1425, + "acceleration": -1.421, + "fluidity": 0.309, + "expansion": 0.571, + "total_displacement": 0.004, + "center_displacement": { + "x": -0.0035, + "y": -0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4846, + "y": 0.2543, + "confidence": 0.97 + }, + { + "name": "left_eye", + "x": 0.4916, + "y": 0.2397, + "confidence": 0.728 + }, + { + "name": "right_eye", + "x": 0.446, + "y": 0.2445, + "confidence": 0.968 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3759, + "y": 0.2666, + "confidence": 0.929 + }, + { + "name": "left_shoulder", + "x": 0.4983, + "y": 0.3127, + "confidence": 0.974 + }, + { + "name": "right_shoulder", + "x": 0.3416, + "y": 0.3242, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5709, + "y": 0.1825, + "confidence": 0.936 + }, + { + "name": "right_elbow", + "x": 0.2184, + "y": 0.2027, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.5564, + "y": 0.0365, + "confidence": 0.887 + }, + { + "name": "right_wrist", + "x": 0.2573, + "y": 0.0654, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.4983, + "y": 0.5636, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3685, + "y": 0.5711, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5797, + "y": 0.7112, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3293, + "y": 0.7159, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6676, + "y": 0.8241, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.2446, + "y": 0.8234, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 422, + "timestamp": 14.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1262, + "acceleration": -0.4887, + "fluidity": 0.571, + "expansion": 0.571, + "total_displacement": 0.0039, + "center_displacement": { + "x": -0.0037, + "y": -0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4829, + "y": 0.2524, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4884, + "y": 0.237, + "confidence": 0.729 + }, + { + "name": "right_eye", + "x": 0.4432, + "y": 0.242, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.368, + "y": 0.2637, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.493, + "y": 0.3094, + "confidence": 0.967 + }, + { + "name": "right_shoulder", + "x": 0.3357, + "y": 0.3251, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5765, + "y": 0.1773, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.2201, + "y": 0.2119, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.5682, + "y": 0.0301, + "confidence": 0.866 + }, + { + "name": "right_wrist", + "x": 0.256, + "y": 0.0761, + "confidence": 0.995 + }, + { + "name": "left_hip", + "x": 0.4963, + "y": 0.5619, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3669, + "y": 0.5707, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5809, + "y": 0.7099, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3278, + "y": 0.7148, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6661, + "y": 0.8228, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.244, + "y": 0.8231, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 423, + "timestamp": 14.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.0985, + "acceleration": -0.8293, + "fluidity": 0.462, + "expansion": 0.574, + "total_displacement": 0.004, + "center_displacement": { + "x": 0.001, + "y": -0.0038 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4813, + "y": 0.2496, + "confidence": 0.973 + }, + { + "name": "left_eye", + "x": 0.4889, + "y": 0.2349, + "confidence": 0.752 + }, + { + "name": "right_eye", + "x": 0.4424, + "y": 0.2391, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3708, + "y": 0.2606, + "confidence": 0.932 + }, + { + "name": "left_shoulder", + "x": 0.4974, + "y": 0.3061, + "confidence": 0.974 + }, + { + "name": "right_shoulder", + "x": 0.334, + "y": 0.3208, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5801, + "y": 0.1727, + "confidence": 0.932 + }, + { + "name": "right_elbow", + "x": 0.2192, + "y": 0.2093, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.5739, + "y": 0.0225, + "confidence": 0.878 + }, + { + "name": "right_wrist", + "x": 0.2716, + "y": 0.0702, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.4992, + "y": 0.5582, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3651, + "y": 0.5667, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5826, + "y": 0.7087, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3266, + "y": 0.7124, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6699, + "y": 0.8229, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.2444, + "y": 0.824, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 424, + "timestamp": 14.133333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0562, + "acceleration": -1.2682, + "fluidity": 0.154, + "expansion": 0.58, + "total_displacement": 0.0017, + "center_displacement": { + "x": -0.0002, + "y": -0.0017 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4819, + "y": 0.2492, + "confidence": 0.974 + }, + { + "name": "left_eye", + "x": 0.4898, + "y": 0.234, + "confidence": 0.779 + }, + { + "name": "right_eye", + "x": 0.4425, + "y": 0.2384, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3707, + "y": 0.2589, + "confidence": 0.929 + }, + { + "name": "left_shoulder", + "x": 0.5032, + "y": 0.3035, + "confidence": 0.978 + }, + { + "name": "right_shoulder", + "x": 0.3303, + "y": 0.3181, + "confidence": 0.999 + }, + { + "name": "left_elbow", + "x": 0.5882, + "y": 0.1668, + "confidence": 0.943 + }, + { + "name": "right_elbow", + "x": 0.2021, + "y": 0.2043, + "confidence": 0.998 + }, + { + "name": "left_wrist", + "x": 0.5749, + "y": 0.0164, + "confidence": 0.891 + }, + { + "name": "right_wrist", + "x": 0.25, + "y": 0.0663, + "confidence": 0.994 + }, + { + "name": "left_hip", + "x": 0.5, + "y": 0.5575, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3615, + "y": 0.5659, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5819, + "y": 0.7085, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3242, + "y": 0.7111, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6668, + "y": 0.8224, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.2479, + "y": 0.8229, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 425, + "timestamp": 14.166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0306, + "acceleration": -0.7692, + "fluidity": 0.218, + "expansion": 0.583, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0001, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4804, + "y": 0.2501, + "confidence": 0.975 + }, + { + "name": "left_eye", + "x": 0.489, + "y": 0.2353, + "confidence": 0.809 + }, + { + "name": "right_eye", + "x": 0.4417, + "y": 0.239, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3717, + "y": 0.2584, + "confidence": 0.922 + }, + { + "name": "left_shoulder", + "x": 0.5055, + "y": 0.3033, + "confidence": 0.977 + }, + { + "name": "right_shoulder", + "x": 0.3296, + "y": 0.3163, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5937, + "y": 0.1629, + "confidence": 0.938 + }, + { + "name": "right_elbow", + "x": 0.194, + "y": 0.2011, + "confidence": 0.997 + }, + { + "name": "left_wrist", + "x": 0.5834, + "y": 0.0087, + "confidence": 0.876 + }, + { + "name": "right_wrist", + "x": 0.2393, + "y": 0.064, + "confidence": 0.991 + }, + { + "name": "left_hip", + "x": 0.5002, + "y": 0.5577, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3602, + "y": 0.5652, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5815, + "y": 0.7084, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.321, + "y": 0.7093, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6681, + "y": 0.8225, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.2461, + "y": 0.8245, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 426, + "timestamp": 14.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0247, + "acceleration": -0.1774, + "fluidity": 0.239, + "expansion": 0.584, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0004, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4785, + "y": 0.2503, + "confidence": 0.978 + }, + { + "name": "left_eye", + "x": 0.4888, + "y": 0.2355, + "confidence": 0.843 + }, + { + "name": "right_eye", + "x": 0.4397, + "y": 0.239, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3703, + "y": 0.2581, + "confidence": 0.92 + }, + { + "name": "left_shoulder", + "x": 0.5095, + "y": 0.3053, + "confidence": 0.977 + }, + { + "name": "right_shoulder", + "x": 0.3263, + "y": 0.3153, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.5957, + "y": 0.1676, + "confidence": 0.931 + }, + { + "name": "right_elbow", + "x": 0.1895, + "y": 0.1953, + "confidence": 0.996 + }, + { + "name": "left_wrist", + "x": 0.5737, + "y": 0.0178, + "confidence": 0.86 + }, + { + "name": "right_wrist", + "x": 0.2391, + "y": 0.0626, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5014, + "y": 0.5584, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3568, + "y": 0.5651, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5833, + "y": 0.7086, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3185, + "y": 0.7104, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6681, + "y": 0.823, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.2473, + "y": 0.8245, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 427, + "timestamp": 14.233333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0384, + "acceleration": 0.4098, + "fluidity": 0.08, + "expansion": 0.581, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0007, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4734, + "y": 0.2505, + "confidence": 0.984 + }, + { + "name": "left_eye", + "x": 0.4876, + "y": 0.2355, + "confidence": 0.906 + }, + { + "name": "right_eye", + "x": 0.4341, + "y": 0.2388, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3687, + "y": 0.2577, + "confidence": 0.919 + }, + { + "name": "left_shoulder", + "x": 0.5182, + "y": 0.3078, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3236, + "y": 0.3152, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6055, + "y": 0.1684, + "confidence": 0.937 + }, + { + "name": "right_elbow", + "x": 0.179, + "y": 0.1906, + "confidence": 0.993 + }, + { + "name": "left_wrist", + "x": 0.5785, + "y": 0.0202, + "confidence": 0.861 + }, + { + "name": "right_wrist", + "x": 0.2364, + "y": 0.0601, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.503, + "y": 0.5588, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3519, + "y": 0.5646, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.59, + "y": 0.709, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3181, + "y": 0.7088, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6702, + "y": 0.8248, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.2485, + "y": 0.8253, + "confidence": 0.992 + } + ] + } + ] + }, + { + "frame_index": 428, + "timestamp": 14.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0988, + "acceleration": 1.8129, + "fluidity": 0.027, + "expansion": 0.575, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.0017, + "y": 0.0013 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.47, + "y": 0.249, + "confidence": 0.978 + }, + { + "name": "left_eye", + "x": 0.4827, + "y": 0.2321, + "confidence": 0.873 + }, + { + "name": "right_eye", + "x": 0.4304, + "y": 0.2373, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3682, + "y": 0.258, + "confidence": 0.925 + }, + { + "name": "left_shoulder", + "x": 0.5258, + "y": 0.3092, + "confidence": 0.984 + }, + { + "name": "right_shoulder", + "x": 0.3177, + "y": 0.3194, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.62, + "y": 0.1853, + "confidence": 0.936 + }, + { + "name": "right_elbow", + "x": 0.1934, + "y": 0.197, + "confidence": 0.995 + }, + { + "name": "left_wrist", + "x": 0.5861, + "y": 0.0402, + "confidence": 0.86 + }, + { + "name": "right_wrist", + "x": 0.2441, + "y": 0.064, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5097, + "y": 0.558, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3502, + "y": 0.5649, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.597, + "y": 0.6995, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.3104, + "y": 0.7045, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6605, + "y": 0.8234, + "confidence": 0.974 + }, + { + "name": "right_ankle", + "x": 0.2519, + "y": 0.8216, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 429, + "timestamp": 14.299999999999999, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1384, + "acceleration": 1.1879, + "fluidity": 0.009, + "expansion": 0.57, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0036, + "y": -0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4643, + "y": 0.2443, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4845, + "y": 0.2287, + "confidence": 0.947 + }, + { + "name": "right_eye", + "x": 0.427, + "y": 0.2318, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "right_ear", + "x": 0.3641, + "y": 0.2482, + "confidence": 0.894 + }, + { + "name": "left_shoulder", + "x": 0.5385, + "y": 0.302, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3089, + "y": 0.3132, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6481, + "y": 0.1843, + "confidence": 0.958 + }, + { + "name": "right_elbow", + "x": 0.1587, + "y": 0.2181, + "confidence": 0.985 + }, + { + "name": "left_wrist", + "x": 0.5976, + "y": 0.0584, + "confidence": 0.903 + }, + { + "name": "right_wrist", + "x": 0.2404, + "y": 0.1097, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.5219, + "y": 0.5531, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3486, + "y": 0.5618, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6187, + "y": 0.6951, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.3149, + "y": 0.7082, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6813, + "y": 0.8222, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.2429, + "y": 0.8268, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 430, + "timestamp": 14.333333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1691, + "acceleration": 0.9219, + "fluidity": 0.003, + "expansion": 0.56, + "total_displacement": 0.004, + "center_displacement": { + "x": 0.0033, + "y": -0.0023 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4615, + "y": 0.2378, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.486, + "y": 0.223, + "confidence": 0.965 + }, + { + "name": "right_eye", + "x": 0.4264, + "y": 0.2249, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5094, + "y": 0.234, + "confidence": 0.593 + }, + { + "name": "right_ear", + "x": 0.367, + "y": 0.2404, + "confidence": 0.895 + }, + { + "name": "left_shoulder", + "x": 0.5488, + "y": 0.3016, + "confidence": 0.994 + }, + { + "name": "right_shoulder", + "x": 0.3033, + "y": 0.3109, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6678, + "y": 0.1965, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.1482, + "y": 0.2268, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.617, + "y": 0.0837, + "confidence": 0.935 + }, + { + "name": "right_wrist", + "x": 0.2317, + "y": 0.1263, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.53, + "y": 0.5496, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3491, + "y": 0.5588, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6359, + "y": 0.6919, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.325, + "y": 0.7097, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6731, + "y": 0.8213, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.2468, + "y": 0.8251, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 431, + "timestamp": 14.366666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.2351, + "acceleration": 1.9786, + "fluidity": 0.001, + "expansion": 0.54, + "total_displacement": 0.0083, + "center_displacement": { + "x": 0.0083, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4581, + "y": 0.2331, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4855, + "y": 0.2187, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.4238, + "y": 0.2202, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5149, + "y": 0.2293, + "confidence": 0.745 + }, + { + "name": "right_ear", + "x": 0.3671, + "y": 0.2348, + "confidence": 0.886 + }, + { + "name": "left_shoulder", + "x": 0.5613, + "y": 0.3, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3022, + "y": 0.3127, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.6916, + "y": 0.216, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.1376, + "y": 0.254, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.6153, + "y": 0.122, + "confidence": 0.95 + }, + { + "name": "right_wrist", + "x": 0.1886, + "y": 0.1681, + "confidence": 0.956 + }, + { + "name": "left_hip", + "x": 0.5425, + "y": 0.5489, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3584, + "y": 0.5587, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6407, + "y": 0.6926, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3469, + "y": 0.7115, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6544, + "y": 0.8242, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.2602, + "y": 0.8257, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 432, + "timestamp": 14.4, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3046, + "acceleration": 2.0863, + "fluidity": 0, + "expansion": 0.514, + "total_displacement": 0.0096, + "center_displacement": { + "x": 0.0096, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4569, + "y": 0.2315, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4848, + "y": 0.2162, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.4252, + "y": 0.2192, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5196, + "y": 0.2251, + "confidence": 0.787 + }, + { + "name": "right_ear", + "x": 0.3727, + "y": 0.2329, + "confidence": 0.868 + }, + { + "name": "left_shoulder", + "x": 0.575, + "y": 0.3016, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3055, + "y": 0.3199, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7308, + "y": 0.2497, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.135, + "y": 0.2919, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6363, + "y": 0.1747, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.1947, + "y": 0.2066, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.5519, + "y": 0.5454, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3703, + "y": 0.5574, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.633, + "y": 0.688, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3695, + "y": 0.7119, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6328, + "y": 0.8213, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.2865, + "y": 0.8164, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 433, + "timestamp": 14.433333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.3793, + "acceleration": 2.2417, + "fluidity": 0, + "expansion": 0.487, + "total_displacement": 0.013, + "center_displacement": { + "x": 0.0126, + "y": 0.0032 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4602, + "y": 0.2363, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4894, + "y": 0.2227, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.4317, + "y": 0.224, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5275, + "y": 0.2338, + "confidence": 0.798 + }, + { + "name": "right_ear", + "x": 0.3845, + "y": 0.2376, + "confidence": 0.845 + }, + { + "name": "left_shoulder", + "x": 0.5891, + "y": 0.31, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3132, + "y": 0.3294, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7578, + "y": 0.2833, + "confidence": 0.994 + }, + { + "name": "right_elbow", + "x": 0.1372, + "y": 0.3418, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.6751, + "y": 0.2071, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.2044, + "y": 0.2505, + "confidence": 0.984 + }, + { + "name": "left_hip", + "x": 0.5643, + "y": 0.5432, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3864, + "y": 0.5545, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6191, + "y": 0.6949, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3975, + "y": 0.712, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6184, + "y": 0.8148, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.3231, + "y": 0.8141, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 434, + "timestamp": 14.466666666666667, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.394, + "acceleration": 0.4399, + "fluidity": 0, + "expansion": 0.461, + "total_displacement": 0.0148, + "center_displacement": { + "x": 0.0133, + "y": 0.0065 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4622, + "y": 0.2441, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4934, + "y": 0.2299, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4368, + "y": 0.2304, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5374, + "y": 0.2397, + "confidence": 0.836 + }, + { + "name": "right_ear", + "x": 0.3952, + "y": 0.2418, + "confidence": 0.788 + }, + { + "name": "left_shoulder", + "x": 0.6034, + "y": 0.3174, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3287, + "y": 0.3381, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7863, + "y": 0.3221, + "confidence": 0.995 + }, + { + "name": "right_elbow", + "x": 0.1618, + "y": 0.39, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6902, + "y": 0.2364, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2401, + "y": 0.2872, + "confidence": 0.986 + }, + { + "name": "left_hip", + "x": 0.5726, + "y": 0.5494, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4014, + "y": 0.5582, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5979, + "y": 0.7052, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4177, + "y": 0.7106, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6194, + "y": 0.8196, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.3644, + "y": 0.8075, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 435, + "timestamp": 14.5, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4181, + "acceleration": 0.722, + "fluidity": 0, + "expansion": 0.435, + "total_displacement": 0.012, + "center_displacement": { + "x": 0.0074, + "y": 0.0095 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4667, + "y": 0.2569, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4997, + "y": 0.2425, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.443, + "y": 0.2419, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5455, + "y": 0.2521, + "confidence": 0.853 + }, + { + "name": "right_ear", + "x": 0.4027, + "y": 0.252, + "confidence": 0.752 + }, + { + "name": "left_shoulder", + "x": 0.6108, + "y": 0.3275, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3336, + "y": 0.3524, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7873, + "y": 0.3542, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.1918, + "y": 0.4369, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7331, + "y": 0.2816, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.2521, + "y": 0.3349, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.5808, + "y": 0.5553, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4103, + "y": 0.5658, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5855, + "y": 0.7134, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4187, + "y": 0.7216, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6108, + "y": 0.824, + "confidence": 0.987 + }, + { + "name": "right_ankle", + "x": 0.4101, + "y": 0.8186, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 436, + "timestamp": 14.533333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.5034, + "acceleration": 2.5593, + "fluidity": 0, + "expansion": 0.409, + "total_displacement": 0.0167, + "center_displacement": { + "x": 0.0079, + "y": 0.0147 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4688, + "y": 0.2731, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5036, + "y": 0.2587, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4465, + "y": 0.2574, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5494, + "y": 0.2699, + "confidence": 0.889 + }, + { + "name": "right_ear", + "x": 0.4089, + "y": 0.2683, + "confidence": 0.716 + }, + { + "name": "left_shoulder", + "x": 0.6099, + "y": 0.3458, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3499, + "y": 0.3708, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.78, + "y": 0.4, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.2384, + "y": 0.473, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.7406, + "y": 0.3427, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2622, + "y": 0.3817, + "confidence": 0.972 + }, + { + "name": "left_hip", + "x": 0.5825, + "y": 0.5661, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4249, + "y": 0.5772, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5704, + "y": 0.721, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4382, + "y": 0.7375, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6062, + "y": 0.8314, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.4553, + "y": 0.8362, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 437, + "timestamp": 14.566666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.5315, + "acceleration": 0.8431, + "fluidity": 0, + "expansion": 0.389, + "total_displacement": 0.0197, + "center_displacement": { + "x": 0.0108, + "y": 0.0165 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4732, + "y": 0.2886, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5071, + "y": 0.2748, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4508, + "y": 0.2732, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5532, + "y": 0.289, + "confidence": 0.91 + }, + { + "name": "right_ear", + "x": 0.4169, + "y": 0.2871, + "confidence": 0.689 + }, + { + "name": "left_shoulder", + "x": 0.6157, + "y": 0.3691, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3679, + "y": 0.39, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7692, + "y": 0.4327, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2778, + "y": 0.4976, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.7472, + "y": 0.3783, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2823, + "y": 0.4184, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.5887, + "y": 0.5797, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4379, + "y": 0.5871, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5708, + "y": 0.7332, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4433, + "y": 0.7395, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6035, + "y": 0.8367, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4713, + "y": 0.8391, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 438, + "timestamp": 14.6, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4264, + "acceleration": -3.1532, + "fluidity": 0, + "expansion": 0.377, + "total_displacement": 0.0167, + "center_displacement": { + "x": 0.0097, + "y": 0.0135 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4809, + "y": 0.3006, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5133, + "y": 0.2871, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4588, + "y": 0.2861, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5579, + "y": 0.302, + "confidence": 0.894 + }, + { + "name": "right_ear", + "x": 0.4266, + "y": 0.301, + "confidence": 0.7 + }, + { + "name": "left_shoulder", + "x": 0.6178, + "y": 0.3851, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3838, + "y": 0.403, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7645, + "y": 0.4613, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.3044, + "y": 0.5142, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.7588, + "y": 0.4069, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.2933, + "y": 0.4427, + "confidence": 0.969 + }, + { + "name": "left_hip", + "x": 0.5951, + "y": 0.5928, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4523, + "y": 0.5991, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5731, + "y": 0.7404, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.453, + "y": 0.7483, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6041, + "y": 0.8367, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.4782, + "y": 0.839, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 439, + "timestamp": 14.633333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2896, + "acceleration": -4.1031, + "fluidity": 0, + "expansion": 0.374, + "total_displacement": 0.0083, + "center_displacement": { + "x": 0.0049, + "y": 0.0067 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4859, + "y": 0.3103, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5184, + "y": 0.2967, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4631, + "y": 0.2951, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5616, + "y": 0.3114, + "confidence": 0.872 + }, + { + "name": "right_ear", + "x": 0.4297, + "y": 0.3092, + "confidence": 0.726 + }, + { + "name": "left_shoulder", + "x": 0.6187, + "y": 0.394, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3893, + "y": 0.4102, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7658, + "y": 0.4708, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.3074, + "y": 0.5219, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7651, + "y": 0.4167, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.2951, + "y": 0.4517, + "confidence": 0.976 + }, + { + "name": "left_hip", + "x": 0.5995, + "y": 0.5986, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.461, + "y": 0.6038, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5704, + "y": 0.7449, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4593, + "y": 0.7489, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6047, + "y": 0.8375, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4791, + "y": 0.8398, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 440, + "timestamp": 14.666666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2064, + "acceleration": -2.4955, + "fluidity": 0, + "expansion": 0.379, + "total_displacement": 0.0065, + "center_displacement": { + "x": 0.0045, + "y": 0.0047 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4886, + "y": 0.3165, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5213, + "y": 0.3029, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4677, + "y": 0.301, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.5661, + "y": 0.3164, + "confidence": 0.877 + }, + { + "name": "right_ear", + "x": 0.4364, + "y": 0.3132, + "confidence": 0.7 + }, + { + "name": "left_shoulder", + "x": 0.624, + "y": 0.3993, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3943, + "y": 0.4131, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7765, + "y": 0.4751, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2982, + "y": 0.5203, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7679, + "y": 0.4154, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.2855, + "y": 0.4472, + "confidence": 0.977 + }, + { + "name": "left_hip", + "x": 0.6023, + "y": 0.6044, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4658, + "y": 0.6086, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5693, + "y": 0.7497, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4632, + "y": 0.7529, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6042, + "y": 0.8396, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4821, + "y": 0.8397, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 441, + "timestamp": 14.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1664, + "acceleration": -1.2004, + "fluidity": 0, + "expansion": 0.391, + "total_displacement": 0.0045, + "center_displacement": { + "x": 0.0038, + "y": 0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4919, + "y": 0.3169, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5256, + "y": 0.3037, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.4725, + "y": 0.3011, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.572, + "y": 0.3179, + "confidence": 0.887 + }, + { + "name": "right_ear", + "x": 0.4422, + "y": 0.3126, + "confidence": 0.69 + }, + { + "name": "left_shoulder", + "x": 0.6315, + "y": 0.4022, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3924, + "y": 0.4124, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7954, + "y": 0.4737, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2698, + "y": 0.5097, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.7793, + "y": 0.4081, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.2736, + "y": 0.4304, + "confidence": 0.974 + }, + { + "name": "left_hip", + "x": 0.6082, + "y": 0.6085, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4694, + "y": 0.6121, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5673, + "y": 0.7536, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4661, + "y": 0.7575, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6047, + "y": 0.8427, + "confidence": 0.977 + }, + { + "name": "right_ankle", + "x": 0.4833, + "y": 0.8401, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 442, + "timestamp": 14.733333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2088, + "acceleration": 1.2735, + "fluidity": 0, + "expansion": 0.404, + "total_displacement": 0.0053, + "center_displacement": { + "x": 0.0046, + "y": -0.0025 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4938, + "y": 0.3124, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5264, + "y": 0.2991, + "confidence": 0.989 + }, + { + "name": "right_eye", + "x": 0.4752, + "y": 0.2974, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0.5768, + "y": 0.3131, + "confidence": 0.895 + }, + { + "name": "right_ear", + "x": 0.4489, + "y": 0.3098, + "confidence": 0.658 + }, + { + "name": "left_shoulder", + "x": 0.6432, + "y": 0.3991, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3961, + "y": 0.4074, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8185, + "y": 0.4619, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.2403, + "y": 0.4896, + "confidence": 0.984 + }, + { + "name": "left_wrist", + "x": 0.7911, + "y": 0.3897, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2733, + "y": 0.4017, + "confidence": 0.978 + }, + { + "name": "left_hip", + "x": 0.6106, + "y": 0.6077, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4701, + "y": 0.611, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5609, + "y": 0.7529, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4692, + "y": 0.7577, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6062, + "y": 0.8446, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.48, + "y": 0.8397, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 443, + "timestamp": 14.766666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2709, + "acceleration": 1.8624, + "fluidity": 0.275, + "expansion": 0.419, + "total_displacement": 0.0101, + "center_displacement": { + "x": 0.0019, + "y": -0.0099 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.491, + "y": 0.3034, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5228, + "y": 0.2893, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4715, + "y": 0.288, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5737, + "y": 0.3016, + "confidence": 0.932 + }, + { + "name": "right_ear", + "x": 0.4485, + "y": 0.299, + "confidence": 0.649 + }, + { + "name": "left_shoulder", + "x": 0.656, + "y": 0.3868, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3883, + "y": 0.3945, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.8423, + "y": 0.4339, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.2236, + "y": 0.4547, + "confidence": 0.956 + }, + { + "name": "left_wrist", + "x": 0.7818, + "y": 0.3495, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.2745, + "y": 0.3582, + "confidence": 0.949 + }, + { + "name": "left_hip", + "x": 0.6161, + "y": 0.6016, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4674, + "y": 0.6027, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5555, + "y": 0.7512, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.4661, + "y": 0.7554, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.5937, + "y": 0.844, + "confidence": 0.94 + }, + { + "name": "right_ankle", + "x": 0.5052, + "y": 0.8462, + "confidence": 0.932 + } + ] + } + ] + }, + { + "frame_index": 444, + "timestamp": 14.799999999999999, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3558, + "acceleration": 2.5462, + "fluidity": 0.367, + "expansion": 0.435, + "total_displacement": 0.01, + "center_displacement": { + "x": 0.0039, + "y": -0.0093 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4877, + "y": 0.2913, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5201, + "y": 0.2754, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4689, + "y": 0.2762, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.5793, + "y": 0.2852, + "confidence": 0.938 + }, + { + "name": "right_ear", + "x": 0.4481, + "y": 0.2866, + "confidence": 0.575 + }, + { + "name": "left_shoulder", + "x": 0.6618, + "y": 0.3737, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3972, + "y": 0.3823, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8647, + "y": 0.4082, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.2051, + "y": 0.4237, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.7947, + "y": 0.3144, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.2751, + "y": 0.3241, + "confidence": 0.97 + }, + { + "name": "left_hip", + "x": 0.6139, + "y": 0.5949, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4704, + "y": 0.5977, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5453, + "y": 0.7461, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4628, + "y": 0.7522, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.598, + "y": 0.8467, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4947, + "y": 0.8356, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 445, + "timestamp": 14.833333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4636, + "acceleration": 3.2335, + "fluidity": 0.122, + "expansion": 0.452, + "total_displacement": 0.0165, + "center_displacement": { + "x": 0.0001, + "y": -0.0165 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.485, + "y": 0.2763, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5166, + "y": 0.2602, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4676, + "y": 0.2603, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.5764, + "y": 0.2694, + "confidence": 0.917 + }, + { + "name": "right_ear", + "x": 0.4514, + "y": 0.2681, + "confidence": 0.567 + }, + { + "name": "left_shoulder", + "x": 0.6583, + "y": 0.3583, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4006, + "y": 0.3651, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8682, + "y": 0.3706, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.2146, + "y": 0.3882, + "confidence": 0.968 + }, + { + "name": "left_wrist", + "x": 0.7892, + "y": 0.269, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2932, + "y": 0.2812, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.6122, + "y": 0.5775, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4726, + "y": 0.5815, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5561, + "y": 0.725, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.4687, + "y": 0.7351, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.5869, + "y": 0.8401, + "confidence": 0.937 + }, + { + "name": "right_ankle", + "x": 0.484, + "y": 0.8379, + "confidence": 0.928 + } + ] + } + ] + }, + { + "frame_index": 446, + "timestamp": 14.866666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4963, + "acceleration": 0.9816, + "fluidity": 0.041, + "expansion": 0.474, + "total_displacement": 0.018, + "center_displacement": { + "x": 0.0051, + "y": -0.0172 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4824, + "y": 0.2593, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5156, + "y": 0.244, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4662, + "y": 0.2437, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.5774, + "y": 0.2542, + "confidence": 0.94 + }, + { + "name": "right_ear", + "x": 0.4503, + "y": 0.2518, + "confidence": 0.53 + }, + { + "name": "left_shoulder", + "x": 0.6583, + "y": 0.3395, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4042, + "y": 0.3458, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8735, + "y": 0.3293, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.2181, + "y": 0.3445, + "confidence": 0.967 + }, + { + "name": "left_wrist", + "x": 0.7893, + "y": 0.2214, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.2917, + "y": 0.2327, + "confidence": 0.966 + }, + { + "name": "left_hip", + "x": 0.6212, + "y": 0.5625, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4805, + "y": 0.5657, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5609, + "y": 0.713, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4562, + "y": 0.7232, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5994, + "y": 0.835, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.4697, + "y": 0.8235, + "confidence": 0.96 + } + ] + } + ] + }, + { + "frame_index": 447, + "timestamp": 14.9, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4829, + "acceleration": -0.4021, + "fluidity": 0.014, + "expansion": 0.497, + "total_displacement": 0.0162, + "center_displacement": { + "x": 0.0033, + "y": -0.0158 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4806, + "y": 0.2455, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5133, + "y": 0.2305, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4674, + "y": 0.23, + "confidence": 0.965 + }, + { + "name": "left_ear", + "x": 0.5795, + "y": 0.2399, + "confidence": 0.95 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6637, + "y": 0.3234, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.4077, + "y": 0.3247, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8708, + "y": 0.297, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2183, + "y": 0.2998, + "confidence": 0.971 + }, + { + "name": "left_wrist", + "x": 0.794, + "y": 0.1795, + "confidence": 0.986 + }, + { + "name": "right_wrist", + "x": 0.2895, + "y": 0.1889, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.6264, + "y": 0.5506, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4795, + "y": 0.5516, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5775, + "y": 0.7032, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4353, + "y": 0.7118, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6137, + "y": 0.8389, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4556, + "y": 0.8166, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 448, + "timestamp": 14.933333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3803, + "acceleration": -3.0784, + "fluidity": 0.005, + "expansion": 0.518, + "total_displacement": 0.0156, + "center_displacement": { + "x": 0.0029, + "y": -0.0153 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4819, + "y": 0.2391, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5144, + "y": 0.2224, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4686, + "y": 0.2218, + "confidence": 0.963 + }, + { + "name": "left_ear", + "x": 0.5857, + "y": 0.2281, + "confidence": 0.95 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6725, + "y": 0.3098, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.421, + "y": 0.3107, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8643, + "y": 0.2572, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.2273, + "y": 0.2623, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.7839, + "y": 0.1328, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2792, + "y": 0.1449, + "confidence": 0.96 + }, + { + "name": "left_hip", + "x": 0.6203, + "y": 0.5348, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4752, + "y": 0.5337, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5833, + "y": 0.6887, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4149, + "y": 0.6916, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6013, + "y": 0.8253, + "confidence": 0.97 + }, + { + "name": "right_ankle", + "x": 0.435, + "y": 0.8121, + "confidence": 0.965 + } + ] + } + ] + }, + { + "frame_index": 449, + "timestamp": 14.966666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2023, + "acceleration": -5.3392, + "fluidity": 0.002, + "expansion": 0.539, + "total_displacement": 0.0064, + "center_displacement": { + "x": 0.002, + "y": -0.006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4799, + "y": 0.2341, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5148, + "y": 0.2181, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4703, + "y": 0.2156, + "confidence": 0.947 + }, + { + "name": "left_ear", + "x": 0.5916, + "y": 0.2247, + "confidence": 0.952 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6727, + "y": 0.3006, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4286, + "y": 0.2988, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.8533, + "y": 0.2248, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.2455, + "y": 0.2321, + "confidence": 0.964 + }, + { + "name": "left_wrist", + "x": 0.7828, + "y": 0.0904, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2805, + "y": 0.1184, + "confidence": 0.956 + }, + { + "name": "left_hip", + "x": 0.621, + "y": 0.5343, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4746, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.587, + "y": 0.6845, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3957, + "y": 0.6858, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6232, + "y": 0.8202, + "confidence": 0.98 + }, + { + "name": "right_ankle", + "x": 0.4264, + "y": 0.8047, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 450, + "timestamp": 15, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0895, + "acceleration": -3.385, + "fluidity": 0.077, + "expansion": 0.56, + "total_displacement": 0.0012, + "center_displacement": { + "x": 0.0006, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4824, + "y": 0.2351, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.5187, + "y": 0.2194, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4731, + "y": 0.2156, + "confidence": 0.922 + }, + { + "name": "left_ear", + "x": 0.5973, + "y": 0.2262, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6744, + "y": 0.2975, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.4346, + "y": 0.2912, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.8415, + "y": 0.2065, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.2701, + "y": 0.2069, + "confidence": 0.93 + }, + { + "name": "left_wrist", + "x": 0.7876, + "y": 0.0607, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.2925, + "y": 0.0876, + "confidence": 0.914 + }, + { + "name": "left_hip", + "x": 0.621, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4692, + "y": 0.5333, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6023, + "y": 0.6887, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3777, + "y": 0.687, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6514, + "y": 0.8271, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.4153, + "y": 0.8133, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 451, + "timestamp": 15.033333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0626, + "acceleration": -0.8052, + "fluidity": 0.103, + "expansion": 0.575, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.001, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4879, + "y": 0.2413, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5225, + "y": 0.2262, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4793, + "y": 0.2213, + "confidence": 0.928 + }, + { + "name": "left_ear", + "x": 0.5984, + "y": 0.2316, + "confidence": 0.94 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.665, + "y": 0.2961, + "confidence": 0.993 + }, + { + "name": "right_shoulder", + "x": 0.4465, + "y": 0.2903, + "confidence": 0.991 + }, + { + "name": "left_elbow", + "x": 0.7996, + "y": 0.1832, + "confidence": 0.971 + }, + { + "name": "right_elbow", + "x": 0.3005, + "y": 0.1888, + "confidence": 0.943 + }, + { + "name": "left_wrist", + "x": 0.7762, + "y": 0.0476, + "confidence": 0.957 + }, + { + "name": "right_wrist", + "x": 0.297, + "y": 0.0691, + "confidence": 0.922 + }, + { + "name": "left_hip", + "x": 0.615, + "y": 0.5408, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4689, + "y": 0.5344, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.638, + "y": 0.6956, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.3773, + "y": 0.6826, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.681, + "y": 0.8387, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4051, + "y": 0.8265, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 452, + "timestamp": 15.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.2429, + "acceleration": 5.4079, + "fluidity": 0.034, + "expansion": 0.572, + "total_displacement": 0.0023, + "center_displacement": { + "x": 0.0023, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4921, + "y": 0.2473, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.5264, + "y": 0.2345, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4827, + "y": 0.2296, + "confidence": 0.922 + }, + { + "name": "left_ear", + "x": 0.6033, + "y": 0.2439, + "confidence": 0.911 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6624, + "y": 0.3048, + "confidence": 0.984 + }, + { + "name": "right_shoulder", + "x": 0.4611, + "y": 0.294, + "confidence": 0.985 + }, + { + "name": "left_elbow", + "x": 0.7653, + "y": 0.1837, + "confidence": 0.948 + }, + { + "name": "right_elbow", + "x": 0.3386, + "y": 0.1732, + "confidence": 0.934 + }, + { + "name": "left_wrist", + "x": 0.8122, + "y": 0.0481, + "confidence": 0.939 + }, + { + "name": "right_wrist", + "x": 0.2682, + "y": 0.0475, + "confidence": 0.92 + }, + { + "name": "left_hip", + "x": 0.6071, + "y": 0.5353, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4737, + "y": 0.5272, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6325, + "y": 0.7031, + "confidence": 0.988 + }, + { + "name": "right_knee", + "x": 0.4116, + "y": 0.6875, + "confidence": 0.989 + }, + { + "name": "left_ankle", + "x": 0.6346, + "y": 0.8406, + "confidence": 0.869 + }, + { + "name": "right_ankle", + "x": 0.4614, + "y": 0.8336, + "confidence": 0.889 + } + ] + } + ] + }, + { + "frame_index": 453, + "timestamp": 15.1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3345, + "acceleration": 2.7487, + "fluidity": 0.011, + "expansion": 0.563, + "total_displacement": 0.0199, + "center_displacement": { + "x": 0.0051, + "y": 0.0193 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5088, + "y": 0.2609, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.5504, + "y": 0.2485, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4916, + "y": 0.2404, + "confidence": 0.933 + }, + { + "name": "left_ear", + "x": 0.6187, + "y": 0.2644, + "confidence": 0.925 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6445, + "y": 0.3219, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.4709, + "y": 0.3052, + "confidence": 0.975 + }, + { + "name": "left_elbow", + "x": 0.7604, + "y": 0.1956, + "confidence": 0.955 + }, + { + "name": "right_elbow", + "x": 0.3917, + "y": 0.1769, + "confidence": 0.87 + }, + { + "name": "left_wrist", + "x": 0.6993, + "y": 0.0656, + "confidence": 0.891 + }, + { + "name": "right_wrist", + "x": 0.435, + "y": 0.0589, + "confidence": 0.754 + }, + { + "name": "left_hip", + "x": 0.6238, + "y": 0.5601, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4853, + "y": 0.5512, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6596, + "y": 0.7046, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4147, + "y": 0.6903, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.7807, + "y": 0.8252, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3396, + "y": 0.8116, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 454, + "timestamp": 15.133333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2065, + "acceleration": -3.8423, + "fluidity": 0.004, + "expansion": 0.573, + "total_displacement": 0.0054, + "center_displacement": { + "x": -0.0003, + "y": 0.0054 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5088, + "y": 0.271, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.5503, + "y": 0.2574, + "confidence": 0.988 + }, + { + "name": "right_eye", + "x": 0.4909, + "y": 0.2502, + "confidence": 0.922 + }, + { + "name": "left_ear", + "x": 0.6198, + "y": 0.2704, + "confidence": 0.91 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6427, + "y": 0.326, + "confidence": 0.987 + }, + { + "name": "right_shoulder", + "x": 0.4721, + "y": 0.3103, + "confidence": 0.978 + }, + { + "name": "left_elbow", + "x": 0.7519, + "y": 0.198, + "confidence": 0.96 + }, + { + "name": "right_elbow", + "x": 0.3849, + "y": 0.1772, + "confidence": 0.899 + }, + { + "name": "left_wrist", + "x": 0.6888, + "y": 0.059, + "confidence": 0.904 + }, + { + "name": "right_wrist", + "x": 0.4314, + "y": 0.0512, + "confidence": 0.8 + }, + { + "name": "left_hip", + "x": 0.6227, + "y": 0.5658, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.486, + "y": 0.5581, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6586, + "y": 0.7094, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4173, + "y": 0.6984, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.7823, + "y": 0.8262, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3372, + "y": 0.8125, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 455, + "timestamp": 15.166666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1531, + "acceleration": -1.6009, + "fluidity": 0.001, + "expansion": 0.583, + "total_displacement": 0.0041, + "center_displacement": { + "x": -0.0003, + "y": 0.0041 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5066, + "y": 0.2703, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5401, + "y": 0.2561, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4887, + "y": 0.2514, + "confidence": 0.959 + }, + { + "name": "left_ear", + "x": 0.602, + "y": 0.2659, + "confidence": 0.952 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6428, + "y": 0.3286, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4678, + "y": 0.3102, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.7544, + "y": 0.2032, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.3488, + "y": 0.1643, + "confidence": 0.966 + }, + { + "name": "left_wrist", + "x": 0.7549, + "y": 0.0435, + "confidence": 0.982 + }, + { + "name": "right_wrist", + "x": 0.3735, + "y": 0.0215, + "confidence": 0.936 + }, + { + "name": "left_hip", + "x": 0.6238, + "y": 0.5731, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4877, + "y": 0.5645, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6691, + "y": 0.7172, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3977, + "y": 0.7011, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.7714, + "y": 0.8357, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3566, + "y": 0.8171, + "confidence": 0.99 + } + ] + } + ] + }, + { + "frame_index": 456, + "timestamp": 15.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1905, + "acceleration": 1.1217, + "fluidity": 0, + "expansion": 0.581, + "total_displacement": 0.0044, + "center_displacement": { + "x": -0.0019, + "y": -0.0039 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5087, + "y": 0.2669, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5428, + "y": 0.2513, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4905, + "y": 0.2469, + "confidence": 0.962 + }, + { + "name": "left_ear", + "x": 0.6031, + "y": 0.2584, + "confidence": 0.949 + }, + { + "name": "right_ear", + "x": 0, + "y": 0, + "confidence": 0 + }, + { + "name": "left_shoulder", + "x": 0.6515, + "y": 0.3218, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4528, + "y": 0.3101, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.7824, + "y": 0.1978, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.3139, + "y": 0.1769, + "confidence": 0.957 + }, + { + "name": "left_wrist", + "x": 0.7187, + "y": 0.0464, + "confidence": 0.962 + }, + { + "name": "right_wrist", + "x": 0.3824, + "y": 0.04, + "confidence": 0.914 + }, + { + "name": "left_hip", + "x": 0.6282, + "y": 0.5675, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.482, + "y": 0.5613, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6708, + "y": 0.713, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3993, + "y": 0.6994, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.7669, + "y": 0.8367, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3523, + "y": 0.8176, + "confidence": 0.991 + } + ] + } + ] + }, + { + "frame_index": 457, + "timestamp": 15.233333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.2351, + "acceleration": 1.3394, + "fluidity": 0, + "expansion": 0.565, + "total_displacement": 0.0096, + "center_displacement": { + "x": -0.0027, + "y": -0.0092 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5174, + "y": 0.2588, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5516, + "y": 0.2425, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4933, + "y": 0.2394, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.6089, + "y": 0.2488, + "confidence": 0.933 + }, + { + "name": "right_ear", + "x": 0.4646, + "y": 0.2444, + "confidence": 0.585 + }, + { + "name": "left_shoulder", + "x": 0.6585, + "y": 0.3113, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.4433, + "y": 0.3043, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.8091, + "y": 0.1976, + "confidence": 0.971 + }, + { + "name": "right_elbow", + "x": 0.2872, + "y": 0.1884, + "confidence": 0.955 + }, + { + "name": "left_wrist", + "x": 0.7461, + "y": 0.0711, + "confidence": 0.927 + }, + { + "name": "right_wrist", + "x": 0.3642, + "y": 0.0716, + "confidence": 0.899 + }, + { + "name": "left_hip", + "x": 0.6281, + "y": 0.556, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4736, + "y": 0.5522, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6641, + "y": 0.7023, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4092, + "y": 0.6926, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.775, + "y": 0.8273, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3374, + "y": 0.8145, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 458, + "timestamp": 15.266666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.1992, + "acceleration": -1.0782, + "fluidity": 0, + "expansion": 0.535, + "total_displacement": 0.0076, + "center_displacement": { + "x": -0.0031, + "y": -0.0069 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5209, + "y": 0.25, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5528, + "y": 0.2354, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4948, + "y": 0.2321, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.6019, + "y": 0.2441, + "confidence": 0.929 + }, + { + "name": "right_ear", + "x": 0.4623, + "y": 0.2392, + "confidence": 0.687 + }, + { + "name": "left_shoulder", + "x": 0.6649, + "y": 0.3095, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.4279, + "y": 0.3044, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.815, + "y": 0.2429, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.2615, + "y": 0.2507, + "confidence": 0.957 + }, + { + "name": "left_wrist", + "x": 0.7354, + "y": 0.1681, + "confidence": 0.963 + }, + { + "name": "right_wrist", + "x": 0.3033, + "y": 0.1915, + "confidence": 0.926 + }, + { + "name": "left_hip", + "x": 0.6322, + "y": 0.5436, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4662, + "y": 0.5387, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6541, + "y": 0.6934, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4001, + "y": 0.6798, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.7649, + "y": 0.8234, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.3454, + "y": 0.8183, + "confidence": 0.994 + } + ] + } + ] + }, + { + "frame_index": 459, + "timestamp": 15.299999999999999, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2219, + "acceleration": 0.6806, + "fluidity": 0, + "expansion": 0.496, + "total_displacement": 0.0045, + "center_displacement": { + "x": -0.0042, + "y": -0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5221, + "y": 0.2452, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5525, + "y": 0.2294, + "confidence": 0.996 + }, + { + "name": "right_eye", + "x": 0.4984, + "y": 0.227, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5978, + "y": 0.2367, + "confidence": 0.955 + }, + { + "name": "right_ear", + "x": 0.4664, + "y": 0.2329, + "confidence": 0.715 + }, + { + "name": "left_shoulder", + "x": 0.6728, + "y": 0.3102, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.4114, + "y": 0.3081, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.8504, + "y": 0.2689, + "confidence": 0.986 + }, + { + "name": "right_elbow", + "x": 0.2131, + "y": 0.2767, + "confidence": 0.915 + }, + { + "name": "left_wrist", + "x": 0.7261, + "y": 0.2053, + "confidence": 0.968 + }, + { + "name": "right_wrist", + "x": 0.2918, + "y": 0.2304, + "confidence": 0.891 + }, + { + "name": "left_hip", + "x": 0.6307, + "y": 0.5366, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4598, + "y": 0.5344, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6349, + "y": 0.687, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3849, + "y": 0.6839, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7519, + "y": 0.8163, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.3591, + "y": 0.8158, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 460, + "timestamp": 15.333333333333334, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.2963, + "acceleration": 2.2322, + "fluidity": 0.094, + "expansion": 0.45, + "total_displacement": 0.011, + "center_displacement": { + "x": -0.0078, + "y": -0.0078 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5197, + "y": 0.2469, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.5513, + "y": 0.2321, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.4924, + "y": 0.2289, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5936, + "y": 0.2367, + "confidence": 0.937 + }, + { + "name": "right_ear", + "x": 0.4508, + "y": 0.2322, + "confidence": 0.775 + }, + { + "name": "left_shoulder", + "x": 0.6747, + "y": 0.306, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3886, + "y": 0.3033, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.8513, + "y": 0.3056, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.2068, + "y": 0.3188, + "confidence": 0.927 + }, + { + "name": "left_wrist", + "x": 0.7349, + "y": 0.3015, + "confidence": 0.96 + }, + { + "name": "right_wrist", + "x": 0.2469, + "y": 0.3551, + "confidence": 0.898 + }, + { + "name": "left_hip", + "x": 0.6303, + "y": 0.526, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4497, + "y": 0.5228, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.602, + "y": 0.6821, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4026, + "y": 0.6777, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6961, + "y": 0.8071, + "confidence": 0.993 + }, + { + "name": "right_ankle", + "x": 0.3901, + "y": 0.809, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 461, + "timestamp": 15.366666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.3566, + "acceleration": 1.8111, + "fluidity": 0.126, + "expansion": 0.4, + "total_displacement": 0.0112, + "center_displacement": { + "x": 0.0002, + "y": 0.0112 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5189, + "y": 0.2585, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5492, + "y": 0.2422, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.49, + "y": 0.2424, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5935, + "y": 0.2455, + "confidence": 0.9 + }, + { + "name": "right_ear", + "x": 0.4472, + "y": 0.2485, + "confidence": 0.799 + }, + { + "name": "left_shoulder", + "x": 0.679, + "y": 0.3214, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3876, + "y": 0.3259, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8595, + "y": 0.3406, + "confidence": 0.981 + }, + { + "name": "right_elbow", + "x": 0.2037, + "y": 0.3608, + "confidence": 0.974 + }, + { + "name": "left_wrist", + "x": 0.753, + "y": 0.3555, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.2377, + "y": 0.4276, + "confidence": 0.966 + }, + { + "name": "left_hip", + "x": 0.6256, + "y": 0.528, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.452, + "y": 0.5276, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5858, + "y": 0.679, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4141, + "y": 0.683, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6547, + "y": 0.7978, + "confidence": 0.996 + }, + { + "name": "right_ankle", + "x": 0.404, + "y": 0.8058, + "confidence": 0.995 + } + ] + } + ] + }, + { + "frame_index": 462, + "timestamp": 15.4, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4759, + "acceleration": 3.5769, + "fluidity": 0.042, + "expansion": 0.346, + "total_displacement": 0.0146, + "center_displacement": { + "x": -0.0081, + "y": 0.0122 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5093, + "y": 0.2776, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.5436, + "y": 0.2625, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4809, + "y": 0.2619, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5922, + "y": 0.2686, + "confidence": 0.917 + }, + { + "name": "right_ear", + "x": 0.4353, + "y": 0.2685, + "confidence": 0.773 + }, + { + "name": "left_shoulder", + "x": 0.6693, + "y": 0.3434, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3729, + "y": 0.3473, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.8323, + "y": 0.3914, + "confidence": 0.992 + }, + { + "name": "right_elbow", + "x": 0.2128, + "y": 0.3991, + "confidence": 0.97 + }, + { + "name": "left_wrist", + "x": 0.7153, + "y": 0.4569, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.2698, + "y": 0.4849, + "confidence": 0.968 + }, + { + "name": "left_hip", + "x": 0.6226, + "y": 0.5297, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.4472, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5753, + "y": 0.6755, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4286, + "y": 0.6869, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.6184, + "y": 0.8022, + "confidence": 0.995 + }, + { + "name": "right_ankle", + "x": 0.4147, + "y": 0.8044, + "confidence": 0.993 + } + ] + } + ] + }, + { + "frame_index": 463, + "timestamp": 15.433333333333334, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.6762, + "acceleration": 6.0089, + "fluidity": 0.014, + "expansion": 0.299, + "total_displacement": 0.0211, + "center_displacement": { + "x": -0.0062, + "y": 0.0202 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5077, + "y": 0.3023, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5405, + "y": 0.2865, + "confidence": 0.986 + }, + { + "name": "right_eye", + "x": 0.4778, + "y": 0.2867, + "confidence": 0.979 + }, + { + "name": "left_ear", + "x": 0.5859, + "y": 0.2929, + "confidence": 0.858 + }, + { + "name": "right_ear", + "x": 0.4301, + "y": 0.294, + "confidence": 0.816 + }, + { + "name": "left_shoulder", + "x": 0.6605, + "y": 0.3727, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3675, + "y": 0.3769, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.8136, + "y": 0.4364, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.2149, + "y": 0.4423, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.7003, + "y": 0.5126, + "confidence": 0.99 + }, + { + "name": "right_wrist", + "x": 0.2948, + "y": 0.5281, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.614, + "y": 0.54, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.445, + "y": 0.5426, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5667, + "y": 0.6813, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4349, + "y": 0.6945, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5851, + "y": 0.8, + "confidence": 0.992 + }, + { + "name": "right_ankle", + "x": 0.4194, + "y": 0.8104, + "confidence": 0.989 + } + ] + } + ] + }, + { + "frame_index": 464, + "timestamp": 15.466666666666667, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.8397, + "acceleration": 4.9049, + "fluidity": 0.141, + "expansion": 0.263, + "total_displacement": 0.0306, + "center_displacement": { + "x": -0.0087, + "y": 0.0294 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.5048, + "y": 0.3337, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5403, + "y": 0.3177, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4764, + "y": 0.3156, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5843, + "y": 0.329, + "confidence": 0.851 + }, + { + "name": "right_ear", + "x": 0.4292, + "y": 0.324, + "confidence": 0.832 + }, + { + "name": "left_shoulder", + "x": 0.6466, + "y": 0.4175, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3677, + "y": 0.4171, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7959, + "y": 0.4847, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.2226, + "y": 0.486, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.663, + "y": 0.5598, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.325, + "y": 0.5617, + "confidence": 0.982 + }, + { + "name": "left_hip", + "x": 0.5965, + "y": 0.5574, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4413, + "y": 0.5577, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5582, + "y": 0.6957, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4386, + "y": 0.6997, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5631, + "y": 0.8125, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4272, + "y": 0.8173, + "confidence": 0.985 + } + ] + } + ] + }, + { + "frame_index": 465, + "timestamp": 15.5, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.8255, + "acceleration": -0.4256, + "fluidity": 0.183, + "expansion": 0.235, + "total_displacement": 0.0308, + "center_displacement": { + "x": -0.0065, + "y": 0.0301 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4981, + "y": 0.3679, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.5354, + "y": 0.351, + "confidence": 0.984 + }, + { + "name": "right_eye", + "x": 0.4698, + "y": 0.349, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.5826, + "y": 0.3621, + "confidence": 0.859 + }, + { + "name": "right_ear", + "x": 0.4249, + "y": 0.3569, + "confidence": 0.813 + }, + { + "name": "left_shoulder", + "x": 0.6336, + "y": 0.4518, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3721, + "y": 0.4513, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7824, + "y": 0.5195, + "confidence": 0.989 + }, + { + "name": "right_elbow", + "x": 0.2332, + "y": 0.5192, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.6576, + "y": 0.5853, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3406, + "y": 0.5873, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5811, + "y": 0.5831, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4392, + "y": 0.5838, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5451, + "y": 0.7093, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4462, + "y": 0.7152, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5555, + "y": 0.8152, + "confidence": 0.99 + }, + { + "name": "right_ankle", + "x": 0.437, + "y": 0.8171, + "confidence": 0.986 + } + ] + } + ] + }, + { + "frame_index": 466, + "timestamp": 15.533333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.6457, + "acceleration": -5.3938, + "fluidity": 0.061, + "expansion": 0.216, + "total_displacement": 0.0238, + "center_displacement": { + "x": -0.0071, + "y": 0.0227 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4952, + "y": 0.4007, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5274, + "y": 0.384, + "confidence": 0.976 + }, + { + "name": "right_eye", + "x": 0.4639, + "y": 0.3846, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5696, + "y": 0.396, + "confidence": 0.795 + }, + { + "name": "right_ear", + "x": 0.4182, + "y": 0.3968, + "confidence": 0.842 + }, + { + "name": "left_shoulder", + "x": 0.6256, + "y": 0.4829, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3695, + "y": 0.4853, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7637, + "y": 0.5456, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.2366, + "y": 0.5495, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6376, + "y": 0.6072, + "confidence": 0.988 + }, + { + "name": "right_wrist", + "x": 0.3607, + "y": 0.6113, + "confidence": 0.988 + }, + { + "name": "left_hip", + "x": 0.5709, + "y": 0.5957, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4317, + "y": 0.597, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5374, + "y": 0.7147, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4421, + "y": 0.717, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5498, + "y": 0.8135, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.4374, + "y": 0.8177, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 467, + "timestamp": 15.566666666666666, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.4555, + "acceleration": -5.7063, + "fluidity": 0.02, + "expansion": 0.207, + "total_displacement": 0.0133, + "center_displacement": { + "x": -0.0061, + "y": 0.0118 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4932, + "y": 0.4281, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5211, + "y": 0.4117, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.463, + "y": 0.4141, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.5602, + "y": 0.4184, + "confidence": 0.782 + }, + { + "name": "right_ear", + "x": 0.4197, + "y": 0.4233, + "confidence": 0.827 + }, + { + "name": "left_shoulder", + "x": 0.6155, + "y": 0.4957, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3708, + "y": 0.4999, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7449, + "y": 0.5647, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.2425, + "y": 0.5686, + "confidence": 0.986 + }, + { + "name": "left_wrist", + "x": 0.6302, + "y": 0.6225, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3576, + "y": 0.6231, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5608, + "y": 0.6057, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4262, + "y": 0.6068, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5293, + "y": 0.7248, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4403, + "y": 0.723, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.548, + "y": 0.8281, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4372, + "y": 0.8196, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 468, + "timestamp": 15.6, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2808, + "acceleration": -5.2417, + "fluidity": 0.007, + "expansion": 0.202, + "total_displacement": 0.0108, + "center_displacement": { + "x": 0.0003, + "y": 0.0107 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4902, + "y": 0.4457, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.516, + "y": 0.4309, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4624, + "y": 0.4338, + "confidence": 0.97 + }, + { + "name": "left_ear", + "x": 0.5552, + "y": 0.4378, + "confidence": 0.824 + }, + { + "name": "right_ear", + "x": 0.4245, + "y": 0.444, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6136, + "y": 0.5095, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3739, + "y": 0.5161, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7359, + "y": 0.5726, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.24, + "y": 0.581, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.626, + "y": 0.6274, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3536, + "y": 0.6325, + "confidence": 0.981 + }, + { + "name": "left_hip", + "x": 0.5594, + "y": 0.6113, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4277, + "y": 0.6142, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5282, + "y": 0.7254, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4413, + "y": 0.7289, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5444, + "y": 0.8265, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4411, + "y": 0.8239, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 469, + "timestamp": 15.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.176, + "acceleration": -3.1419, + "fluidity": 0.002, + "expansion": 0.2, + "total_displacement": 0.0021, + "center_displacement": { + "x": -0.0008, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4889, + "y": 0.4509, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5144, + "y": 0.4361, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4619, + "y": 0.439, + "confidence": 0.971 + }, + { + "name": "left_ear", + "x": 0.554, + "y": 0.4418, + "confidence": 0.83 + }, + { + "name": "right_ear", + "x": 0.4241, + "y": 0.4487, + "confidence": 0.793 + }, + { + "name": "left_shoulder", + "x": 0.616, + "y": 0.5119, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3697, + "y": 0.5197, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.737, + "y": 0.5777, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.2356, + "y": 0.5889, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.6225, + "y": 0.636, + "confidence": 0.983 + }, + { + "name": "right_wrist", + "x": 0.3467, + "y": 0.6381, + "confidence": 0.979 + }, + { + "name": "left_hip", + "x": 0.5606, + "y": 0.6128, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4251, + "y": 0.6146, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5341, + "y": 0.7273, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4444, + "y": 0.7291, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5401, + "y": 0.8301, + "confidence": 0.985 + }, + { + "name": "right_ankle", + "x": 0.4366, + "y": 0.8259, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 470, + "timestamp": 15.666666666666666, + "metrics": { + "direction": "left", + "intensity": "high", + "speed": "fast", + "velocity": 0.171, + "acceleration": -0.1516, + "fluidity": 0.001, + "expansion": 0.198, + "total_displacement": 0.0061, + "center_displacement": { + "x": -0.0061, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4861, + "y": 0.4441, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5104, + "y": 0.4288, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4609, + "y": 0.4311, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.5463, + "y": 0.4337, + "confidence": 0.8 + }, + { + "name": "right_ear", + "x": 0.4233, + "y": 0.439, + "confidence": 0.811 + }, + { + "name": "left_shoulder", + "x": 0.6052, + "y": 0.5089, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3664, + "y": 0.5172, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7345, + "y": 0.5786, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.2312, + "y": 0.5951, + "confidence": 0.983 + }, + { + "name": "left_wrist", + "x": 0.6222, + "y": 0.6388, + "confidence": 0.984 + }, + { + "name": "right_wrist", + "x": 0.3462, + "y": 0.6426, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5522, + "y": 0.6155, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4232, + "y": 0.6175, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.534, + "y": 0.7326, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4422, + "y": 0.732, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5408, + "y": 0.8321, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4382, + "y": 0.8257, + "confidence": 0.981 + } + ] + } + ] + }, + { + "frame_index": 471, + "timestamp": 15.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2222, + "acceleration": 1.5368, + "fluidity": 0, + "expansion": 0.195, + "total_displacement": 0.0051, + "center_displacement": { + "x": -0.0024, + "y": -0.0045 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4829, + "y": 0.4285, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5058, + "y": 0.4137, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4594, + "y": 0.4161, + "confidence": 0.972 + }, + { + "name": "left_ear", + "x": 0.5409, + "y": 0.418, + "confidence": 0.781 + }, + { + "name": "right_ear", + "x": 0.4236, + "y": 0.4237, + "confidence": 0.816 + }, + { + "name": "left_shoulder", + "x": 0.6016, + "y": 0.4971, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3646, + "y": 0.504, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7282, + "y": 0.5794, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.231, + "y": 0.5922, + "confidence": 0.987 + }, + { + "name": "left_wrist", + "x": 0.6153, + "y": 0.6382, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3449, + "y": 0.6461, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.55, + "y": 0.6189, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4212, + "y": 0.6209, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5358, + "y": 0.7342, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4453, + "y": 0.735, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5381, + "y": 0.8312, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.4385, + "y": 0.8243, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 472, + "timestamp": 15.733333333333333, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.3381, + "acceleration": 3.476, + "fluidity": 0, + "expansion": 0.194, + "total_displacement": 0.0114, + "center_displacement": { + "x": -0.0034, + "y": -0.0109 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4804, + "y": 0.4094, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.5018, + "y": 0.3932, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.4549, + "y": 0.396, + "confidence": 0.973 + }, + { + "name": "left_ear", + "x": 0.5352, + "y": 0.3969, + "confidence": 0.755 + }, + { + "name": "right_ear", + "x": 0.419, + "y": 0.4031, + "confidence": 0.828 + }, + { + "name": "left_shoulder", + "x": 0.5955, + "y": 0.4821, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3644, + "y": 0.4884, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7172, + "y": 0.571, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.2313, + "y": 0.5843, + "confidence": 0.989 + }, + { + "name": "left_wrist", + "x": 0.6051, + "y": 0.6326, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3464, + "y": 0.6411, + "confidence": 0.989 + }, + { + "name": "left_hip", + "x": 0.5448, + "y": 0.612, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4192, + "y": 0.6149, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5279, + "y": 0.7342, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.439, + "y": 0.7338, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5398, + "y": 0.8293, + "confidence": 0.978 + }, + { + "name": "right_ankle", + "x": 0.4411, + "y": 0.8282, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 473, + "timestamp": 15.766666666666666, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4785, + "acceleration": 4.2127, + "fluidity": 0, + "expansion": 0.198, + "total_displacement": 0.015, + "center_displacement": { + "x": -0.0051, + "y": -0.0141 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4746, + "y": 0.3831, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4965, + "y": 0.3665, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4479, + "y": 0.3699, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5293, + "y": 0.3708, + "confidence": 0.777 + }, + { + "name": "right_ear", + "x": 0.4099, + "y": 0.3791, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.5914, + "y": 0.46, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.355, + "y": 0.4694, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7149, + "y": 0.5491, + "confidence": 0.985 + }, + { + "name": "right_elbow", + "x": 0.2279, + "y": 0.5659, + "confidence": 0.988 + }, + { + "name": "left_wrist", + "x": 0.5989, + "y": 0.6234, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.3494, + "y": 0.6308, + "confidence": 0.987 + }, + { + "name": "left_hip", + "x": 0.5429, + "y": 0.6043, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.4142, + "y": 0.6072, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5328, + "y": 0.7304, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4383, + "y": 0.7296, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.5368, + "y": 0.8284, + "confidence": 0.979 + }, + { + "name": "right_ankle", + "x": 0.4374, + "y": 0.8245, + "confidence": 0.978 + } + ] + } + ] + }, + { + "frame_index": 474, + "timestamp": 15.799999999999999, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.5717, + "acceleration": 2.796, + "fluidity": 0, + "expansion": 0.215, + "total_displacement": 0.0216, + "center_displacement": { + "x": -0.0057, + "y": -0.0208 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.469, + "y": 0.3511, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4934, + "y": 0.3357, + "confidence": 0.978 + }, + { + "name": "right_eye", + "x": 0.4443, + "y": 0.3372, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5284, + "y": 0.344, + "confidence": 0.797 + }, + { + "name": "right_ear", + "x": 0.4065, + "y": 0.3483, + "confidence": 0.826 + }, + { + "name": "left_shoulder", + "x": 0.5886, + "y": 0.4331, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3435, + "y": 0.4415, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7099, + "y": 0.5224, + "confidence": 0.975 + }, + { + "name": "right_elbow", + "x": 0.2194, + "y": 0.5416, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.6003, + "y": 0.5962, + "confidence": 0.976 + }, + { + "name": "right_wrist", + "x": 0.3516, + "y": 0.604, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.5432, + "y": 0.5906, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.4054, + "y": 0.5925, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5272, + "y": 0.7207, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.4413, + "y": 0.7217, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.5347, + "y": 0.8238, + "confidence": 0.959 + }, + { + "name": "right_ankle", + "x": 0.4345, + "y": 0.8205, + "confidence": 0.958 + } + ] + } + ] + }, + { + "frame_index": 475, + "timestamp": 15.833333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.6443, + "acceleration": 2.1788, + "fluidity": 0, + "expansion": 0.245, + "total_displacement": 0.0196, + "center_displacement": { + "x": -0.0013, + "y": -0.0196 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4625, + "y": 0.3172, + "confidence": 0.994 + }, + { + "name": "left_eye", + "x": 0.4882, + "y": 0.3019, + "confidence": 0.982 + }, + { + "name": "right_eye", + "x": 0.4378, + "y": 0.3033, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.5254, + "y": 0.3122, + "confidence": 0.85 + }, + { + "name": "right_ear", + "x": 0.4018, + "y": 0.3161, + "confidence": 0.819 + }, + { + "name": "left_shoulder", + "x": 0.5966, + "y": 0.4083, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3362, + "y": 0.4156, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7386, + "y": 0.4867, + "confidence": 0.987 + }, + { + "name": "right_elbow", + "x": 0.2001, + "y": 0.5037, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.6187, + "y": 0.55, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.329, + "y": 0.5591, + "confidence": 0.983 + }, + { + "name": "left_hip", + "x": 0.5436, + "y": 0.5762, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3992, + "y": 0.5793, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5345, + "y": 0.7146, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.4264, + "y": 0.7181, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5417, + "y": 0.8224, + "confidence": 0.984 + }, + { + "name": "right_ankle", + "x": 0.4302, + "y": 0.8254, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 476, + "timestamp": 15.866666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.7423, + "acceleration": 2.9399, + "fluidity": 0, + "expansion": 0.282, + "total_displacement": 0.0257, + "center_displacement": { + "x": -0.0092, + "y": -0.024 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4552, + "y": 0.2878, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4826, + "y": 0.2734, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.43, + "y": 0.2744, + "confidence": 0.975 + }, + { + "name": "left_ear", + "x": 0.5234, + "y": 0.2839, + "confidence": 0.894 + }, + { + "name": "right_ear", + "x": 0.3927, + "y": 0.2875, + "confidence": 0.798 + }, + { + "name": "left_shoulder", + "x": 0.6033, + "y": 0.3761, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.316, + "y": 0.3826, + "confidence": 0.997 + }, + { + "name": "left_elbow", + "x": 0.7566, + "y": 0.4421, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.1783, + "y": 0.4583, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.6401, + "y": 0.4983, + "confidence": 0.987 + }, + { + "name": "right_wrist", + "x": 0.3146, + "y": 0.5131, + "confidence": 0.973 + }, + { + "name": "left_hip", + "x": 0.5419, + "y": 0.5605, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3774, + "y": 0.564, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5421, + "y": 0.7043, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.4118, + "y": 0.7097, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.5487, + "y": 0.8181, + "confidence": 0.989 + }, + { + "name": "right_ankle", + "x": 0.426, + "y": 0.8181, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 477, + "timestamp": 15.9, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.6737, + "acceleration": -2.0574, + "fluidity": 0, + "expansion": 0.327, + "total_displacement": 0.027, + "center_displacement": { + "x": -0.0045, + "y": -0.0267 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4536, + "y": 0.2582, + "confidence": 0.995 + }, + { + "name": "left_eye", + "x": 0.4802, + "y": 0.2459, + "confidence": 0.987 + }, + { + "name": "right_eye", + "x": 0.4294, + "y": 0.2462, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5175, + "y": 0.2565, + "confidence": 0.88 + }, + { + "name": "right_ear", + "x": 0.3896, + "y": 0.2588, + "confidence": 0.822 + }, + { + "name": "left_shoulder", + "x": 0.6031, + "y": 0.3396, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.3002, + "y": 0.3474, + "confidence": 0.998 + }, + { + "name": "left_elbow", + "x": 0.7685, + "y": 0.3839, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.147, + "y": 0.4046, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.657, + "y": 0.4436, + "confidence": 0.989 + }, + { + "name": "right_wrist", + "x": 0.2746, + "y": 0.4549, + "confidence": 0.98 + }, + { + "name": "left_hip", + "x": 0.548, + "y": 0.5421, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3696, + "y": 0.5475, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5496, + "y": 0.69, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3965, + "y": 0.7002, + "confidence": 0.999 + }, + { + "name": "left_ankle", + "x": 0.5664, + "y": 0.8079, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.406, + "y": 0.8128, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 478, + "timestamp": 15.933333333333334, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.5602, + "acceleration": -3.4054, + "fluidity": 0, + "expansion": 0.386, + "total_displacement": 0.0156, + "center_displacement": { + "x": -0.0041, + "y": -0.0151 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4542, + "y": 0.2411, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4813, + "y": 0.2269, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4283, + "y": 0.2267, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.5161, + "y": 0.236, + "confidence": 0.879 + }, + { + "name": "right_ear", + "x": 0.3861, + "y": 0.2357, + "confidence": 0.846 + }, + { + "name": "left_shoulder", + "x": 0.59, + "y": 0.3188, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.3016, + "y": 0.3268, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.7795, + "y": 0.3265, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.1243, + "y": 0.3486, + "confidence": 0.961 + }, + { + "name": "left_wrist", + "x": 0.68, + "y": 0.3901, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2581, + "y": 0.3941, + "confidence": 0.965 + }, + { + "name": "left_hip", + "x": 0.5425, + "y": 0.5323, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3705, + "y": 0.5385, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.5581, + "y": 0.6868, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.3718, + "y": 0.6944, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.6018, + "y": 0.8012, + "confidence": 0.951 + }, + { + "name": "right_ankle", + "x": 0.3632, + "y": 0.8031, + "confidence": 0.934 + } + ] + } + ] + }, + { + "frame_index": 479, + "timestamp": 15.966666666666667, + "metrics": { + "direction": "up", + "intensity": "high", + "speed": "fast", + "velocity": 0.4141, + "acceleration": -4.3823, + "fluidity": 0, + "expansion": 0.447, + "total_displacement": 0.018, + "center_displacement": { + "x": -0.0094, + "y": -0.0153 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4482, + "y": 0.2266, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4765, + "y": 0.2148, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4242, + "y": 0.2128, + "confidence": 0.984 + }, + { + "name": "left_ear", + "x": 0.5102, + "y": 0.2263, + "confidence": 0.924 + }, + { + "name": "right_ear", + "x": 0.3829, + "y": 0.2235, + "confidence": 0.822 + }, + { + "name": "left_shoulder", + "x": 0.587, + "y": 0.2963, + "confidence": 0.999 + }, + { + "name": "right_shoulder", + "x": 0.2953, + "y": 0.3024, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.7809, + "y": 0.2738, + "confidence": 0.991 + }, + { + "name": "right_elbow", + "x": 0.1365, + "y": 0.2941, + "confidence": 0.947 + }, + { + "name": "left_wrist", + "x": 0.7189, + "y": 0.3171, + "confidence": 0.98 + }, + { + "name": "right_wrist", + "x": 0.2078, + "y": 0.3228, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5361, + "y": 0.5254, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3484, + "y": 0.5312, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5755, + "y": 0.6834, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3418, + "y": 0.6979, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.642, + "y": 0.806, + "confidence": 0.991 + }, + { + "name": "right_ankle", + "x": 0.3413, + "y": 0.8168, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 480, + "timestamp": 16, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2171, + "acceleration": -5.9102, + "fluidity": 0, + "expansion": 0.514, + "total_displacement": 0.0048, + "center_displacement": { + "x": -0.0048, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4433, + "y": 0.2204, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.472, + "y": 0.2088, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4195, + "y": 0.2054, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.5014, + "y": 0.2242, + "confidence": 0.888 + }, + { + "name": "right_ear", + "x": 0.376, + "y": 0.2184, + "confidence": 0.842 + }, + { + "name": "left_shoulder", + "x": 0.5683, + "y": 0.2959, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.2971, + "y": 0.3008, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.7513, + "y": 0.2589, + "confidence": 0.993 + }, + { + "name": "right_elbow", + "x": 0.1395, + "y": 0.2738, + "confidence": 0.971 + }, + { + "name": "left_wrist", + "x": 0.6707, + "y": 0.2736, + "confidence": 0.985 + }, + { + "name": "right_wrist", + "x": 0.1582, + "y": 0.2605, + "confidence": 0.963 + }, + { + "name": "left_hip", + "x": 0.5328, + "y": 0.5258, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3496, + "y": 0.5307, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.5949, + "y": 0.6797, + "confidence": 0.999 + }, + { + "name": "right_knee", + "x": 0.3185, + "y": 0.6932, + "confidence": 0.998 + }, + { + "name": "left_ankle", + "x": 0.6809, + "y": 0.8028, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.2928, + "y": 0.8215, + "confidence": 0.977 + } + ] + } + ] + }, + { + "frame_index": 481, + "timestamp": 16.03333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1538, + "acceleration": -1.8993, + "fluidity": 0, + "expansion": 0.579, + "total_displacement": 0.0031, + "center_displacement": { + "x": -0.0025, + "y": 0.0019 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4439, + "y": 0.2242, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4725, + "y": 0.2107, + "confidence": 0.994 + }, + { + "name": "right_eye", + "x": 0.4164, + "y": 0.2093, + "confidence": 0.99 + }, + { + "name": "left_ear", + "x": 0.5065, + "y": 0.2251, + "confidence": 0.889 + }, + { + "name": "right_ear", + "x": 0.3756, + "y": 0.2227, + "confidence": 0.86 + }, + { + "name": "left_shoulder", + "x": 0.5622, + "y": 0.3034, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3077, + "y": 0.3037, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.7312, + "y": 0.2431, + "confidence": 0.971 + }, + { + "name": "right_elbow", + "x": 0.1382, + "y": 0.2484, + "confidence": 0.955 + }, + { + "name": "left_wrist", + "x": 0.8123, + "y": 0.1748, + "confidence": 0.942 + }, + { + "name": "right_wrist", + "x": 0.1164, + "y": 0.1842, + "confidence": 0.928 + }, + { + "name": "left_hip", + "x": 0.52, + "y": 0.5249, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3479, + "y": 0.5286, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6146, + "y": 0.6775, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.2797, + "y": 0.6882, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6537, + "y": 0.795, + "confidence": 0.975 + }, + { + "name": "right_ankle", + "x": 0.2689, + "y": 0.8134, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 482, + "timestamp": 16.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.2138, + "acceleration": 1.8002, + "fluidity": 0, + "expansion": 0.621, + "total_displacement": 0.005, + "center_displacement": { + "x": -0.0011, + "y": 0.0049 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4448, + "y": 0.2329, + "confidence": 0.998 + }, + { + "name": "left_eye", + "x": 0.4738, + "y": 0.2181, + "confidence": 0.995 + }, + { + "name": "right_eye", + "x": 0.414, + "y": 0.2168, + "confidence": 0.989 + }, + { + "name": "left_ear", + "x": 0.5076, + "y": 0.2306, + "confidence": 0.903 + }, + { + "name": "right_ear", + "x": 0.3683, + "y": 0.2272, + "confidence": 0.848 + }, + { + "name": "left_shoulder", + "x": 0.5613, + "y": 0.3068, + "confidence": 0.998 + }, + { + "name": "right_shoulder", + "x": 0.2983, + "y": 0.2993, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.7234, + "y": 0.244, + "confidence": 0.99 + }, + { + "name": "right_elbow", + "x": 0.1177, + "y": 0.2292, + "confidence": 0.938 + }, + { + "name": "left_wrist", + "x": 0.8348, + "y": 0.1426, + "confidence": 0.973 + }, + { + "name": "right_wrist", + "x": 0.1143, + "y": 0.1255, + "confidence": 0.913 + }, + { + "name": "left_hip", + "x": 0.529, + "y": 0.536, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3449, + "y": 0.5381, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6277, + "y": 0.686, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.2653, + "y": 0.6912, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.6894, + "y": 0.8048, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.27, + "y": 0.812, + "confidence": 0.935 + } + ] + } + ] + }, + { + "frame_index": 483, + "timestamp": 16.1, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2793, + "acceleration": 1.965, + "fluidity": 0, + "expansion": 0.64, + "total_displacement": 0.0112, + "center_displacement": { + "x": -0.0049, + "y": 0.0101 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4404, + "y": 0.2447, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4711, + "y": 0.2315, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4116, + "y": 0.2294, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.5044, + "y": 0.2461, + "confidence": 0.851 + }, + { + "name": "right_ear", + "x": 0.3665, + "y": 0.2415, + "confidence": 0.814 + }, + { + "name": "left_shoulder", + "x": 0.5484, + "y": 0.3171, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3055, + "y": 0.3124, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6967, + "y": 0.2437, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.149, + "y": 0.2296, + "confidence": 0.962 + }, + { + "name": "left_wrist", + "x": 0.8402, + "y": 0.1352, + "confidence": 0.964 + }, + { + "name": "right_wrist", + "x": 0.0573, + "y": 0.1104, + "confidence": 0.936 + }, + { + "name": "left_hip", + "x": 0.517, + "y": 0.5449, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.343, + "y": 0.5462, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6256, + "y": 0.6879, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.2518, + "y": 0.6898, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.675, + "y": 0.8057, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.2626, + "y": 0.8111, + "confidence": 0.953 + } + ] + } + ] + }, + { + "frame_index": 484, + "timestamp": 16.133333333333333, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.2342, + "acceleration": -1.3527, + "fluidity": 0, + "expansion": 0.637, + "total_displacement": 0.0096, + "center_displacement": { + "x": -0.0027, + "y": 0.0092 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4395, + "y": 0.2558, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4676, + "y": 0.2439, + "confidence": 0.993 + }, + { + "name": "right_eye", + "x": 0.4099, + "y": 0.2425, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.4982, + "y": 0.2595, + "confidence": 0.874 + }, + { + "name": "right_ear", + "x": 0.3681, + "y": 0.2574, + "confidence": 0.822 + }, + { + "name": "left_shoulder", + "x": 0.5436, + "y": 0.3293, + "confidence": 0.997 + }, + { + "name": "right_shoulder", + "x": 0.3152, + "y": 0.3225, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6702, + "y": 0.248, + "confidence": 0.988 + }, + { + "name": "right_elbow", + "x": 0.1674, + "y": 0.226, + "confidence": 0.962 + }, + { + "name": "left_wrist", + "x": 0.8134, + "y": 0.1378, + "confidence": 0.971 + }, + { + "name": "right_wrist", + "x": 0.0429, + "y": 0.1166, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.5054, + "y": 0.5532, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3387, + "y": 0.5524, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6174, + "y": 0.6964, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.2532, + "y": 0.6951, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.657, + "y": 0.8066, + "confidence": 0.953 + }, + { + "name": "right_ankle", + "x": 0.2695, + "y": 0.8144, + "confidence": 0.934 + } + ] + } + ] + }, + { + "frame_index": 485, + "timestamp": 16.166666666666668, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1595, + "acceleration": -2.242, + "fluidity": 0, + "expansion": 0.629, + "total_displacement": 0.0045, + "center_displacement": { + "x": -0.0021, + "y": 0.004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4393, + "y": 0.2625, + "confidence": 0.997 + }, + { + "name": "left_eye", + "x": 0.4659, + "y": 0.2525, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4112, + "y": 0.2509, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.4942, + "y": 0.2699, + "confidence": 0.859 + }, + { + "name": "right_ear", + "x": 0.3727, + "y": 0.2676, + "confidence": 0.83 + }, + { + "name": "left_shoulder", + "x": 0.5381, + "y": 0.3373, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3211, + "y": 0.329, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.6577, + "y": 0.2466, + "confidence": 0.984 + }, + { + "name": "right_elbow", + "x": 0.1778, + "y": 0.223, + "confidence": 0.965 + }, + { + "name": "left_wrist", + "x": 0.7932, + "y": 0.1419, + "confidence": 0.964 + }, + { + "name": "right_wrist", + "x": 0.0551, + "y": 0.1236, + "confidence": 0.941 + }, + { + "name": "left_hip", + "x": 0.4972, + "y": 0.5544, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3382, + "y": 0.5528, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6092, + "y": 0.7008, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.2637, + "y": 0.6979, + "confidence": 0.993 + }, + { + "name": "left_ankle", + "x": 0.6472, + "y": 0.8025, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.2805, + "y": 0.8109, + "confidence": 0.93 + } + ] + } + ] + }, + { + "frame_index": 486, + "timestamp": 16.2, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1658, + "acceleration": 0.1896, + "fluidity": 0, + "expansion": 0.624, + "total_displacement": 0.0036, + "center_displacement": { + "x": 0.0036, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.44, + "y": 0.2657, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4666, + "y": 0.2558, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4124, + "y": 0.2537, + "confidence": 0.987 + }, + { + "name": "left_ear", + "x": 0.4949, + "y": 0.2723, + "confidence": 0.872 + }, + { + "name": "right_ear", + "x": 0.3743, + "y": 0.2693, + "confidence": 0.821 + }, + { + "name": "left_shoulder", + "x": 0.5404, + "y": 0.336, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3219, + "y": 0.3306, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6586, + "y": 0.2377, + "confidence": 0.983 + }, + { + "name": "right_elbow", + "x": 0.1789, + "y": 0.2257, + "confidence": 0.961 + }, + { + "name": "left_wrist", + "x": 0.7808, + "y": 0.1354, + "confidence": 0.961 + }, + { + "name": "right_wrist", + "x": 0.0636, + "y": 0.1252, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5034, + "y": 0.5545, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3433, + "y": 0.5534, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6081, + "y": 0.7045, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.2616, + "y": 0.6997, + "confidence": 0.992 + }, + { + "name": "left_ankle", + "x": 0.6474, + "y": 0.8047, + "confidence": 0.943 + }, + { + "name": "right_ankle", + "x": 0.2787, + "y": 0.8143, + "confidence": 0.928 + } + ] + } + ] + }, + { + "frame_index": 487, + "timestamp": 16.233333333333334, + "metrics": { + "direction": "right", + "intensity": "high", + "speed": "fast", + "velocity": 0.1756, + "acceleration": 0.2934, + "fluidity": 0, + "expansion": 0.62, + "total_displacement": 0.0077, + "center_displacement": { + "x": 0.0069, + "y": -0.0034 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4415, + "y": 0.265, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4675, + "y": 0.2549, + "confidence": 0.991 + }, + { + "name": "right_eye", + "x": 0.4136, + "y": 0.2535, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.4987, + "y": 0.2705, + "confidence": 0.863 + }, + { + "name": "right_ear", + "x": 0.3773, + "y": 0.2698, + "confidence": 0.814 + }, + { + "name": "left_shoulder", + "x": 0.5503, + "y": 0.3314, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3294, + "y": 0.3308, + "confidence": 0.995 + }, + { + "name": "left_elbow", + "x": 0.662, + "y": 0.2309, + "confidence": 0.982 + }, + { + "name": "right_elbow", + "x": 0.188, + "y": 0.232, + "confidence": 0.974 + }, + { + "name": "left_wrist", + "x": 0.7649, + "y": 0.1308, + "confidence": 0.962 + }, + { + "name": "right_wrist", + "x": 0.0727, + "y": 0.1241, + "confidence": 0.954 + }, + { + "name": "left_hip", + "x": 0.51, + "y": 0.5498, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3467, + "y": 0.5487, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6139, + "y": 0.7057, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.2637, + "y": 0.6962, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.6513, + "y": 0.806, + "confidence": 0.944 + }, + { + "name": "right_ankle", + "x": 0.2713, + "y": 0.8164, + "confidence": 0.938 + } + ] + } + ] + }, + { + "frame_index": 488, + "timestamp": 16.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1853, + "acceleration": 0.2896, + "fluidity": 0, + "expansion": 0.619, + "total_displacement": 0.0044, + "center_displacement": { + "x": 0.0042, + "y": 0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4449, + "y": 0.264, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.4714, + "y": 0.2539, + "confidence": 0.99 + }, + { + "name": "right_eye", + "x": 0.4169, + "y": 0.2525, + "confidence": 0.986 + }, + { + "name": "left_ear", + "x": 0.5038, + "y": 0.2702, + "confidence": 0.845 + }, + { + "name": "right_ear", + "x": 0.3807, + "y": 0.2694, + "confidence": 0.817 + }, + { + "name": "left_shoulder", + "x": 0.5563, + "y": 0.3322, + "confidence": 0.995 + }, + { + "name": "right_shoulder", + "x": 0.3326, + "y": 0.3324, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.6646, + "y": 0.2281, + "confidence": 0.98 + }, + { + "name": "right_elbow", + "x": 0.1938, + "y": 0.2348, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.7602, + "y": 0.1175, + "confidence": 0.959 + }, + { + "name": "right_wrist", + "x": 0.0821, + "y": 0.1205, + "confidence": 0.961 + }, + { + "name": "left_hip", + "x": 0.5147, + "y": 0.5506, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3498, + "y": 0.5494, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6183, + "y": 0.7056, + "confidence": 0.995 + }, + { + "name": "right_knee", + "x": 0.2656, + "y": 0.6952, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.6473, + "y": 0.8065, + "confidence": 0.947 + }, + { + "name": "right_ankle", + "x": 0.2744, + "y": 0.8174, + "confidence": 0.946 + } + ] + } + ] + }, + { + "frame_index": 489, + "timestamp": 16.3, + "metrics": { + "direction": "down", + "intensity": "high", + "speed": "fast", + "velocity": 0.1721, + "acceleration": -0.394, + "fluidity": 0, + "expansion": 0.605, + "total_displacement": 0.0083, + "center_displacement": { + "x": 0.0043, + "y": 0.0071 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4478, + "y": 0.265, + "confidence": 0.996 + }, + { + "name": "left_eye", + "x": 0.477, + "y": 0.2553, + "confidence": 0.992 + }, + { + "name": "right_eye", + "x": 0.4212, + "y": 0.2528, + "confidence": 0.988 + }, + { + "name": "left_ear", + "x": 0.5112, + "y": 0.2723, + "confidence": 0.862 + }, + { + "name": "right_ear", + "x": 0.3826, + "y": 0.2691, + "confidence": 0.815 + }, + { + "name": "left_shoulder", + "x": 0.5509, + "y": 0.3316, + "confidence": 0.996 + }, + { + "name": "right_shoulder", + "x": 0.3367, + "y": 0.3345, + "confidence": 0.996 + }, + { + "name": "left_elbow", + "x": 0.66, + "y": 0.2246, + "confidence": 0.979 + }, + { + "name": "right_elbow", + "x": 0.2102, + "y": 0.2409, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.7486, + "y": 0.1251, + "confidence": 0.947 + }, + { + "name": "right_wrist", + "x": 0.1114, + "y": 0.1337, + "confidence": 0.951 + }, + { + "name": "left_hip", + "x": 0.525, + "y": 0.5629, + "confidence": 1 + }, + { + "name": "right_hip", + "x": 0.3579, + "y": 0.5642, + "confidence": 1 + }, + { + "name": "left_knee", + "x": 0.6363, + "y": 0.7099, + "confidence": 0.998 + }, + { + "name": "right_knee", + "x": 0.2581, + "y": 0.708, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.6905, + "y": 0.8076, + "confidence": 0.981 + }, + { + "name": "right_ankle", + "x": 0.2356, + "y": 0.8176, + "confidence": 0.98 + } + ] + } + ] + }, + { + "frame_index": 490, + "timestamp": 16.333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.1272, + "acceleration": -1.3492, + "fluidity": 0, + "expansion": 0.576, + "total_displacement": 0.0027, + "center_displacement": { + "x": 0.0018, + "y": 0.002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4512, + "y": 0.2683, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4792, + "y": 0.2561, + "confidence": 0.985 + }, + { + "name": "right_eye", + "x": 0.4207, + "y": 0.2545, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5108, + "y": 0.2735, + "confidence": 0.816 + }, + { + "name": "right_ear", + "x": 0.3764, + "y": 0.2733, + "confidence": 0.836 + }, + { + "name": "left_shoulder", + "x": 0.553, + "y": 0.335, + "confidence": 0.99 + }, + { + "name": "right_shoulder", + "x": 0.3363, + "y": 0.3347, + "confidence": 0.994 + }, + { + "name": "left_elbow", + "x": 0.6833, + "y": 0.2255, + "confidence": 0.94 + }, + { + "name": "right_elbow", + "x": 0.2357, + "y": 0.2321, + "confidence": 0.962 + }, + { + "name": "left_wrist", + "x": 0.6689, + "y": 0.107, + "confidence": 0.829 + }, + { + "name": "right_wrist", + "x": 0.2848, + "y": 0.1222, + "confidence": 0.889 + }, + { + "name": "left_hip", + "x": 0.5308, + "y": 0.5653, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3576, + "y": 0.5664, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6258, + "y": 0.6964, + "confidence": 0.997 + }, + { + "name": "right_knee", + "x": 0.2803, + "y": 0.7002, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7229, + "y": 0.8083, + "confidence": 0.986 + }, + { + "name": "right_ankle", + "x": 0.1983, + "y": 0.8127, + "confidence": 0.987 + } + ] + } + ] + }, + { + "frame_index": 491, + "timestamp": 16.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "fast", + "velocity": 0.1057, + "acceleration": -0.6435, + "fluidity": 0, + "expansion": 0.55, + "total_displacement": 0.0042, + "center_displacement": { + "x": 0.0039, + "y": 0.0018 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4514, + "y": 0.2692, + "confidence": 0.993 + }, + { + "name": "left_eye", + "x": 0.4811, + "y": 0.2583, + "confidence": 0.983 + }, + { + "name": "right_eye", + "x": 0.422, + "y": 0.2561, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5156, + "y": 0.2781, + "confidence": 0.77 + }, + { + "name": "right_ear", + "x": 0.3772, + "y": 0.2751, + "confidence": 0.819 + }, + { + "name": "left_shoulder", + "x": 0.5514, + "y": 0.3395, + "confidence": 0.989 + }, + { + "name": "right_shoulder", + "x": 0.3372, + "y": 0.3361, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6417, + "y": 0.239, + "confidence": 0.95 + }, + { + "name": "right_elbow", + "x": 0.2411, + "y": 0.2437, + "confidence": 0.963 + }, + { + "name": "left_wrist", + "x": 0.5968, + "y": 0.1207, + "confidence": 0.866 + }, + { + "name": "right_wrist", + "x": 0.3164, + "y": 0.1393, + "confidence": 0.916 + }, + { + "name": "left_hip", + "x": 0.5406, + "y": 0.5662, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.364, + "y": 0.5667, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6365, + "y": 0.6946, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.2819, + "y": 0.7003, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7195, + "y": 0.8086, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.2013, + "y": 0.8149, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 492, + "timestamp": 16.4, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0623, + "acceleration": -1.3009, + "fluidity": 0, + "expansion": 0.531, + "total_displacement": 0.0021, + "center_displacement": { + "x": 0.002, + "y": -0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4519, + "y": 0.2709, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4796, + "y": 0.2595, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.4234, + "y": 0.2583, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5149, + "y": 0.2781, + "confidence": 0.796 + }, + { + "name": "right_ear", + "x": 0.3831, + "y": 0.2781, + "confidence": 0.82 + }, + { + "name": "left_shoulder", + "x": 0.5596, + "y": 0.3384, + "confidence": 0.983 + }, + { + "name": "right_shoulder", + "x": 0.3369, + "y": 0.3394, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6591, + "y": 0.2531, + "confidence": 0.907 + }, + { + "name": "right_elbow", + "x": 0.2762, + "y": 0.2524, + "confidence": 0.973 + }, + { + "name": "left_wrist", + "x": 0.6036, + "y": 0.1643, + "confidence": 0.814 + }, + { + "name": "right_wrist", + "x": 0.3547, + "y": 0.1542, + "confidence": 0.918 + }, + { + "name": "left_hip", + "x": 0.5435, + "y": 0.5633, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3611, + "y": 0.5648, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6276, + "y": 0.6962, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2732, + "y": 0.6996, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7148, + "y": 0.8162, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1929, + "y": 0.815, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 493, + "timestamp": 16.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0326, + "acceleration": -0.8929, + "fluidity": 0.222, + "expansion": 0.521, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0006, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.454, + "y": 0.271, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4811, + "y": 0.2593, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.423, + "y": 0.2586, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.515, + "y": 0.2781, + "confidence": 0.732 + }, + { + "name": "right_ear", + "x": 0.3794, + "y": 0.2792, + "confidence": 0.838 + }, + { + "name": "left_shoulder", + "x": 0.552, + "y": 0.3396, + "confidence": 0.979 + }, + { + "name": "right_shoulder", + "x": 0.3401, + "y": 0.3372, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6256, + "y": 0.2513, + "confidence": 0.9 + }, + { + "name": "right_elbow", + "x": 0.3029, + "y": 0.2399, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5613, + "y": 0.1566, + "confidence": 0.816 + }, + { + "name": "right_wrist", + "x": 0.4002, + "y": 0.1457, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5432, + "y": 0.5645, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3633, + "y": 0.5653, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6299, + "y": 0.6963, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2748, + "y": 0.6996, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7144, + "y": 0.8168, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1916, + "y": 0.8144, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 494, + "timestamp": 16.466666666666665, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0276, + "acceleration": -0.1501, + "fluidity": 0.296, + "expansion": 0.521, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4545, + "y": 0.2711, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.4812, + "y": 0.2593, + "confidence": 0.968 + }, + { + "name": "right_eye", + "x": 0.4229, + "y": 0.2595, + "confidence": 0.977 + }, + { + "name": "left_ear", + "x": 0.5156, + "y": 0.2785, + "confidence": 0.73 + }, + { + "name": "right_ear", + "x": 0.3807, + "y": 0.2815, + "confidence": 0.826 + }, + { + "name": "left_shoulder", + "x": 0.5511, + "y": 0.3383, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3439, + "y": 0.3372, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6073, + "y": 0.2438, + "confidence": 0.908 + }, + { + "name": "right_elbow", + "x": 0.3126, + "y": 0.2331, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.5349, + "y": 0.1405, + "confidence": 0.817 + }, + { + "name": "right_wrist", + "x": 0.4068, + "y": 0.1313, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.5424, + "y": 0.5643, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3631, + "y": 0.5658, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6315, + "y": 0.6955, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2755, + "y": 0.7006, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7123, + "y": 0.8163, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.1934, + "y": 0.8143, + "confidence": 0.976 + } + ] + } + ] + }, + { + "frame_index": 495, + "timestamp": 16.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0368, + "acceleration": 0.2781, + "fluidity": 0.099, + "expansion": 0.526, + "total_displacement": 0.0011, + "center_displacement": { + "x": -0.0001, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4545, + "y": 0.2702, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4825, + "y": 0.2585, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.4241, + "y": 0.2578, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5177, + "y": 0.2783, + "confidence": 0.727 + }, + { + "name": "right_ear", + "x": 0.3815, + "y": 0.2791, + "confidence": 0.825 + }, + { + "name": "left_shoulder", + "x": 0.5556, + "y": 0.3388, + "confidence": 0.979 + }, + { + "name": "right_shoulder", + "x": 0.3394, + "y": 0.3379, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6395, + "y": 0.2431, + "confidence": 0.901 + }, + { + "name": "right_elbow", + "x": 0.3021, + "y": 0.2351, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5864, + "y": 0.1432, + "confidence": 0.81 + }, + { + "name": "right_wrist", + "x": 0.4004, + "y": 0.1321, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5437, + "y": 0.5658, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3616, + "y": 0.5676, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6311, + "y": 0.6941, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2743, + "y": 0.7007, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7138, + "y": 0.816, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1927, + "y": 0.814, + "confidence": 0.975 + } + ] + } + ] + }, + { + "frame_index": 496, + "timestamp": 16.53333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0525, + "acceleration": 0.4707, + "fluidity": 0.033, + "expansion": 0.532, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0015, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4568, + "y": 0.269, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4848, + "y": 0.2579, + "confidence": 0.97 + }, + { + "name": "right_eye", + "x": 0.4272, + "y": 0.2562, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5173, + "y": 0.2782, + "confidence": 0.722 + }, + { + "name": "right_ear", + "x": 0.3828, + "y": 0.277, + "confidence": 0.826 + }, + { + "name": "left_shoulder", + "x": 0.5544, + "y": 0.3378, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3353, + "y": 0.3375, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6402, + "y": 0.2377, + "confidence": 0.92 + }, + { + "name": "right_elbow", + "x": 0.2878, + "y": 0.2378, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5756, + "y": 0.1303, + "confidence": 0.843 + }, + { + "name": "right_wrist", + "x": 0.3821, + "y": 0.1305, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5438, + "y": 0.5652, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3608, + "y": 0.5668, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6303, + "y": 0.6948, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2745, + "y": 0.699, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7138, + "y": 0.8163, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1926, + "y": 0.8147, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 497, + "timestamp": 16.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0571, + "acceleration": 0.1355, + "fluidity": 0.011, + "expansion": 0.538, + "total_displacement": 0.0024, + "center_displacement": { + "x": 0.0023, + "y": -0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.459, + "y": 0.2697, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4912, + "y": 0.259, + "confidence": 0.979 + }, + { + "name": "right_eye", + "x": 0.4283, + "y": 0.2559, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5252, + "y": 0.2796, + "confidence": 0.722 + }, + { + "name": "right_ear", + "x": 0.3782, + "y": 0.275, + "confidence": 0.814 + }, + { + "name": "left_shoulder", + "x": 0.5534, + "y": 0.3369, + "confidence": 0.986 + }, + { + "name": "right_shoulder", + "x": 0.3387, + "y": 0.3356, + "confidence": 0.991 + }, + { + "name": "left_elbow", + "x": 0.6293, + "y": 0.2219, + "confidence": 0.95 + }, + { + "name": "right_elbow", + "x": 0.2652, + "y": 0.2337, + "confidence": 0.966 + }, + { + "name": "left_wrist", + "x": 0.5608, + "y": 0.1034, + "confidence": 0.873 + }, + { + "name": "right_wrist", + "x": 0.3569, + "y": 0.1265, + "confidence": 0.925 + }, + { + "name": "left_hip", + "x": 0.546, + "y": 0.5659, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3654, + "y": 0.5669, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6391, + "y": 0.6935, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.28, + "y": 0.6989, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.72, + "y": 0.8076, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.1982, + "y": 0.8141, + "confidence": 0.983 + } + ] + } + ] + }, + { + "frame_index": 498, + "timestamp": 16.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0402, + "acceleration": -0.5067, + "fluidity": 0.004, + "expansion": 0.543, + "total_displacement": 0.0016, + "center_displacement": { + "x": -0.0014, + "y": -0.0007 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4596, + "y": 0.2711, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4919, + "y": 0.2605, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.4301, + "y": 0.2567, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5244, + "y": 0.2804, + "confidence": 0.723 + }, + { + "name": "right_ear", + "x": 0.3798, + "y": 0.2739, + "confidence": 0.821 + }, + { + "name": "left_shoulder", + "x": 0.5494, + "y": 0.3372, + "confidence": 0.987 + }, + { + "name": "right_shoulder", + "x": 0.3383, + "y": 0.3339, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6315, + "y": 0.2225, + "confidence": 0.953 + }, + { + "name": "right_elbow", + "x": 0.2624, + "y": 0.2307, + "confidence": 0.966 + }, + { + "name": "left_wrist", + "x": 0.5734, + "y": 0.1023, + "confidence": 0.88 + }, + { + "name": "right_wrist", + "x": 0.3507, + "y": 0.1223, + "confidence": 0.926 + }, + { + "name": "left_hip", + "x": 0.5437, + "y": 0.5654, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3665, + "y": 0.5659, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6375, + "y": 0.6932, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.2802, + "y": 0.6987, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.7182, + "y": 0.8088, + "confidence": 0.982 + }, + { + "name": "right_ankle", + "x": 0.1985, + "y": 0.8137, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 499, + "timestamp": 16.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0347, + "acceleration": -0.1646, + "fluidity": 0.001, + "expansion": 0.545, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0005, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4605, + "y": 0.2708, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.4932, + "y": 0.2602, + "confidence": 0.98 + }, + { + "name": "right_eye", + "x": 0.431, + "y": 0.2562, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5255, + "y": 0.2803, + "confidence": 0.727 + }, + { + "name": "right_ear", + "x": 0.3804, + "y": 0.2733, + "confidence": 0.819 + }, + { + "name": "left_shoulder", + "x": 0.5494, + "y": 0.3367, + "confidence": 0.988 + }, + { + "name": "right_shoulder", + "x": 0.3399, + "y": 0.3335, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6338, + "y": 0.2159, + "confidence": 0.96 + }, + { + "name": "right_elbow", + "x": 0.2695, + "y": 0.2253, + "confidence": 0.968 + }, + { + "name": "left_wrist", + "x": 0.5776, + "y": 0.0905, + "confidence": 0.894 + }, + { + "name": "right_wrist", + "x": 0.3588, + "y": 0.1119, + "confidence": 0.929 + }, + { + "name": "left_hip", + "x": 0.5435, + "y": 0.5657, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3672, + "y": 0.566, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6373, + "y": 0.6933, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.2806, + "y": 0.6986, + "confidence": 0.996 + }, + { + "name": "left_ankle", + "x": 0.7173, + "y": 0.8078, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.1993, + "y": 0.8132, + "confidence": 0.982 + } + ] + } + ] + }, + { + "frame_index": 500, + "timestamp": 16.666666666666668, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0362, + "acceleration": 0.0455, + "fluidity": 0, + "expansion": 0.535, + "total_displacement": 0.0016, + "center_displacement": { + "x": 0.0002, + "y": 0.0016 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4588, + "y": 0.2714, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4878, + "y": 0.26, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.4301, + "y": 0.2577, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5215, + "y": 0.2791, + "confidence": 0.735 + }, + { + "name": "right_ear", + "x": 0.3861, + "y": 0.2763, + "confidence": 0.822 + }, + { + "name": "left_shoulder", + "x": 0.5557, + "y": 0.3382, + "confidence": 0.983 + }, + { + "name": "right_shoulder", + "x": 0.34, + "y": 0.3366, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6551, + "y": 0.2329, + "confidence": 0.928 + }, + { + "name": "right_elbow", + "x": 0.2949, + "y": 0.2302, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.6044, + "y": 0.1169, + "confidence": 0.862 + }, + { + "name": "right_wrist", + "x": 0.3829, + "y": 0.1101, + "confidence": 0.939 + }, + { + "name": "left_hip", + "x": 0.5422, + "y": 0.5661, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3628, + "y": 0.5672, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.63, + "y": 0.6945, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2746, + "y": 0.699, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7127, + "y": 0.817, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.1938, + "y": 0.8151, + "confidence": 0.969 + } + ] + } + ] + }, + { + "frame_index": 501, + "timestamp": 16.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0356, + "acceleration": -0.0174, + "fluidity": 0, + "expansion": 0.524, + "total_displacement": 0.0009, + "center_displacement": { + "x": -0.0009, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4563, + "y": 0.2725, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4851, + "y": 0.2615, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4278, + "y": 0.2594, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5193, + "y": 0.2809, + "confidence": 0.749 + }, + { + "name": "right_ear", + "x": 0.3856, + "y": 0.2781, + "confidence": 0.818 + }, + { + "name": "left_shoulder", + "x": 0.5516, + "y": 0.3405, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3424, + "y": 0.3369, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6389, + "y": 0.2582, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3121, + "y": 0.2472, + "confidence": 0.975 + }, + { + "name": "left_wrist", + "x": 0.5907, + "y": 0.1712, + "confidence": 0.84 + }, + { + "name": "right_wrist", + "x": 0.4105, + "y": 0.1555, + "confidence": 0.928 + }, + { + "name": "left_hip", + "x": 0.5402, + "y": 0.5654, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.363, + "y": 0.5661, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6263, + "y": 0.6934, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2762, + "y": 0.6983, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7135, + "y": 0.8194, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1921, + "y": 0.8154, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 502, + "timestamp": 16.733333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.033, + "acceleration": -0.0787, + "fluidity": 0, + "expansion": 0.524, + "total_displacement": 0.0015, + "center_displacement": { + "x": 0.0014, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.458, + "y": 0.2727, + "confidence": 0.988 + }, + { + "name": "left_eye", + "x": 0.4856, + "y": 0.2608, + "confidence": 0.967 + }, + { + "name": "right_eye", + "x": 0.4272, + "y": 0.2603, + "confidence": 0.974 + }, + { + "name": "left_ear", + "x": 0.5194, + "y": 0.2801, + "confidence": 0.722 + }, + { + "name": "right_ear", + "x": 0.3844, + "y": 0.2813, + "confidence": 0.813 + }, + { + "name": "left_shoulder", + "x": 0.5511, + "y": 0.3388, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3469, + "y": 0.3381, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6204, + "y": 0.239, + "confidence": 0.921 + }, + { + "name": "right_elbow", + "x": 0.3245, + "y": 0.2327, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5593, + "y": 0.1289, + "confidence": 0.842 + }, + { + "name": "right_wrist", + "x": 0.4253, + "y": 0.1228, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5409, + "y": 0.5661, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3639, + "y": 0.5678, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.6943, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2747, + "y": 0.7004, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.712, + "y": 0.8181, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.1926, + "y": 0.8149, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 503, + "timestamp": 16.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0246, + "acceleration": -0.2512, + "fluidity": 0.183, + "expansion": 0.527, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0.0005, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4571, + "y": 0.2738, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4849, + "y": 0.2621, + "confidence": 0.969 + }, + { + "name": "right_eye", + "x": 0.4267, + "y": 0.2613, + "confidence": 0.976 + }, + { + "name": "left_ear", + "x": 0.5191, + "y": 0.2808, + "confidence": 0.725 + }, + { + "name": "right_ear", + "x": 0.3842, + "y": 0.2814, + "confidence": 0.808 + }, + { + "name": "left_shoulder", + "x": 0.5508, + "y": 0.3376, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3468, + "y": 0.3375, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6252, + "y": 0.2333, + "confidence": 0.921 + }, + { + "name": "right_elbow", + "x": 0.32, + "y": 0.2302, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5697, + "y": 0.1258, + "confidence": 0.844 + }, + { + "name": "right_wrist", + "x": 0.4168, + "y": 0.122, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5416, + "y": 0.5661, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3655, + "y": 0.568, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6288, + "y": 0.6937, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2759, + "y": 0.7001, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7125, + "y": 0.817, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.1923, + "y": 0.8156, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 504, + "timestamp": 16.8, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0207, + "acceleration": -0.1162, + "fluidity": 0.266, + "expansion": 0.528, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0007, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4571, + "y": 0.2737, + "confidence": 0.989 + }, + { + "name": "left_eye", + "x": 0.4853, + "y": 0.262, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.4267, + "y": 0.2609, + "confidence": 0.978 + }, + { + "name": "left_ear", + "x": 0.5192, + "y": 0.2808, + "confidence": 0.736 + }, + { + "name": "right_ear", + "x": 0.3832, + "y": 0.281, + "confidence": 0.817 + }, + { + "name": "left_shoulder", + "x": 0.5519, + "y": 0.3373, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3436, + "y": 0.339, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.634, + "y": 0.2321, + "confidence": 0.916 + }, + { + "name": "right_elbow", + "x": 0.3146, + "y": 0.2352, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.5747, + "y": 0.1243, + "confidence": 0.836 + }, + { + "name": "right_wrist", + "x": 0.4146, + "y": 0.1262, + "confidence": 0.93 + }, + { + "name": "left_hip", + "x": 0.5422, + "y": 0.5659, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3643, + "y": 0.5683, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6287, + "y": 0.6937, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2768, + "y": 0.7004, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7127, + "y": 0.8169, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.1917, + "y": 0.8162, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 505, + "timestamp": 16.833333333333332, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0229, + "acceleration": 0.0648, + "fluidity": 0.11, + "expansion": 0.529, + "total_displacement": 0.0005, + "center_displacement": { + "x": 0.0004, + "y": -0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.459, + "y": 0.2749, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4875, + "y": 0.2631, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4282, + "y": 0.2619, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5209, + "y": 0.2814, + "confidence": 0.737 + }, + { + "name": "right_ear", + "x": 0.3835, + "y": 0.2813, + "confidence": 0.822 + }, + { + "name": "left_shoulder", + "x": 0.5519, + "y": 0.3367, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3444, + "y": 0.3389, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6327, + "y": 0.2282, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3177, + "y": 0.2338, + "confidence": 0.976 + }, + { + "name": "left_wrist", + "x": 0.5686, + "y": 0.1204, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4172, + "y": 0.1243, + "confidence": 0.93 + }, + { + "name": "left_hip", + "x": 0.5425, + "y": 0.5654, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3648, + "y": 0.5679, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6289, + "y": 0.6933, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2763, + "y": 0.6998, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7135, + "y": 0.8173, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.191, + "y": 0.8167, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 506, + "timestamp": 16.866666666666667, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0254, + "acceleration": 0.076, + "fluidity": 0.037, + "expansion": 0.529, + "total_displacement": 0.0011, + "center_displacement": { + "x": 0.0002, + "y": -0.001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4589, + "y": 0.2749, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4867, + "y": 0.2634, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4279, + "y": 0.2622, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5192, + "y": 0.2817, + "confidence": 0.73 + }, + { + "name": "right_ear", + "x": 0.383, + "y": 0.2817, + "confidence": 0.826 + }, + { + "name": "left_shoulder", + "x": 0.5502, + "y": 0.3365, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3452, + "y": 0.3372, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6289, + "y": 0.227, + "confidence": 0.924 + }, + { + "name": "right_elbow", + "x": 0.3226, + "y": 0.2275, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5683, + "y": 0.1187, + "confidence": 0.851 + }, + { + "name": "right_wrist", + "x": 0.4233, + "y": 0.1182, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.5431, + "y": 0.5645, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3661, + "y": 0.5666, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.6929, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2761, + "y": 0.6988, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7146, + "y": 0.8172, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.191, + "y": 0.8159, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 507, + "timestamp": 16.9, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0178, + "acceleration": -0.2282, + "fluidity": 0.012, + "expansion": 0.528, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0003, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4579, + "y": 0.275, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4856, + "y": 0.2634, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4271, + "y": 0.2623, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5188, + "y": 0.2816, + "confidence": 0.732 + }, + { + "name": "right_ear", + "x": 0.3829, + "y": 0.282, + "confidence": 0.824 + }, + { + "name": "left_shoulder", + "x": 0.5499, + "y": 0.3367, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3455, + "y": 0.338, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6258, + "y": 0.2269, + "confidence": 0.924 + }, + { + "name": "right_elbow", + "x": 0.3211, + "y": 0.2295, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5646, + "y": 0.118, + "confidence": 0.852 + }, + { + "name": "right_wrist", + "x": 0.4204, + "y": 0.1202, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5423, + "y": 0.5652, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3656, + "y": 0.5674, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.63, + "y": 0.6938, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2759, + "y": 0.6989, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7141, + "y": 0.8178, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1911, + "y": 0.816, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 508, + "timestamp": 16.933333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.017, + "acceleration": -0.0244, + "fluidity": 0.004, + "expansion": 0.527, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4592, + "y": 0.2759, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4867, + "y": 0.2641, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4281, + "y": 0.2632, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5194, + "y": 0.2817, + "confidence": 0.729 + }, + { + "name": "right_ear", + "x": 0.3832, + "y": 0.2825, + "confidence": 0.827 + }, + { + "name": "left_shoulder", + "x": 0.55, + "y": 0.3373, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3455, + "y": 0.3382, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6241, + "y": 0.2302, + "confidence": 0.919 + }, + { + "name": "right_elbow", + "x": 0.32, + "y": 0.2311, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5621, + "y": 0.1208, + "confidence": 0.842 + }, + { + "name": "right_wrist", + "x": 0.4197, + "y": 0.1222, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5417, + "y": 0.5649, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3652, + "y": 0.5669, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.6944, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2759, + "y": 0.699, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7115, + "y": 0.8185, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1908, + "y": 0.8152, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 509, + "timestamp": 16.966666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0208, + "acceleration": 0.1137, + "fluidity": 0.001, + "expansion": 0.526, + "total_displacement": 0.0009, + "center_displacement": { + "x": 0.0001, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4593, + "y": 0.2772, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4869, + "y": 0.2652, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4279, + "y": 0.2643, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5194, + "y": 0.2823, + "confidence": 0.737 + }, + { + "name": "right_ear", + "x": 0.3825, + "y": 0.2832, + "confidence": 0.83 + }, + { + "name": "left_shoulder", + "x": 0.5497, + "y": 0.3374, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3447, + "y": 0.339, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6237, + "y": 0.2283, + "confidence": 0.919 + }, + { + "name": "right_elbow", + "x": 0.3187, + "y": 0.231, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.5616, + "y": 0.1215, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4186, + "y": 0.1246, + "confidence": 0.931 + }, + { + "name": "left_hip", + "x": 0.5426, + "y": 0.566, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3657, + "y": 0.5684, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6299, + "y": 0.695, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.275, + "y": 0.7005, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7119, + "y": 0.8183, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1905, + "y": 0.8158, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 510, + "timestamp": 17, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.019, + "acceleration": -0.0542, + "fluidity": 0.232, + "expansion": 0.527, + "total_displacement": 0.0006, + "center_displacement": { + "x": 0, + "y": 0.0006 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4607, + "y": 0.2776, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4882, + "y": 0.2652, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4288, + "y": 0.2647, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5207, + "y": 0.282, + "confidence": 0.726 + }, + { + "name": "right_ear", + "x": 0.3826, + "y": 0.2835, + "confidence": 0.834 + }, + { + "name": "left_shoulder", + "x": 0.5501, + "y": 0.3374, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3451, + "y": 0.3401, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6216, + "y": 0.2292, + "confidence": 0.921 + }, + { + "name": "right_elbow", + "x": 0.3179, + "y": 0.2352, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.559, + "y": 0.1213, + "confidence": 0.844 + }, + { + "name": "right_wrist", + "x": 0.4162, + "y": 0.1282, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.5423, + "y": 0.5665, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3654, + "y": 0.5694, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.6949, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2747, + "y": 0.7011, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7117, + "y": 0.8185, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.1904, + "y": 0.8168, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 511, + "timestamp": 17.03333333333333, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0158, + "acceleration": -0.0964, + "fluidity": 0.352, + "expansion": 0.527, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0003, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.461, + "y": 0.2776, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4888, + "y": 0.2655, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4295, + "y": 0.2647, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5209, + "y": 0.2827, + "confidence": 0.716 + }, + { + "name": "right_ear", + "x": 0.383, + "y": 0.2836, + "confidence": 0.836 + }, + { + "name": "left_shoulder", + "x": 0.5501, + "y": 0.3376, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3439, + "y": 0.3406, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.623, + "y": 0.2261, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3147, + "y": 0.2338, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5602, + "y": 0.1166, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4127, + "y": 0.1257, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.5426, + "y": 0.5671, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3652, + "y": 0.5701, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6288, + "y": 0.6952, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2742, + "y": 0.7022, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7108, + "y": 0.8182, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1902, + "y": 0.818, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 512, + "timestamp": 17.066666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0104, + "acceleration": -0.1614, + "fluidity": 0.161, + "expansion": 0.527, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4607, + "y": 0.2777, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4885, + "y": 0.2656, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4292, + "y": 0.2647, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5203, + "y": 0.2828, + "confidence": 0.714 + }, + { + "name": "right_ear", + "x": 0.3826, + "y": 0.2835, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.5497, + "y": 0.3376, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3434, + "y": 0.3408, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6249, + "y": 0.2273, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3161, + "y": 0.2356, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5617, + "y": 0.1196, + "confidence": 0.84 + }, + { + "name": "right_wrist", + "x": 0.414, + "y": 0.129, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.543, + "y": 0.5677, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3655, + "y": 0.5708, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6289, + "y": 0.6953, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2744, + "y": 0.7028, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7114, + "y": 0.8183, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1903, + "y": 0.8182, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 513, + "timestamp": 17.1, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0087, + "acceleration": -0.0524, + "fluidity": 0.054, + "expansion": 0.526, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4595, + "y": 0.2773, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4874, + "y": 0.2654, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4281, + "y": 0.2644, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5194, + "y": 0.2829, + "confidence": 0.715 + }, + { + "name": "right_ear", + "x": 0.3817, + "y": 0.2835, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.5488, + "y": 0.338, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3429, + "y": 0.3411, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6227, + "y": 0.2289, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.3159, + "y": 0.2377, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5614, + "y": 0.1214, + "confidence": 0.842 + }, + { + "name": "right_wrist", + "x": 0.4141, + "y": 0.1321, + "confidence": 0.939 + }, + { + "name": "left_hip", + "x": 0.5433, + "y": 0.5674, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3661, + "y": 0.5704, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6287, + "y": 0.6953, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.275, + "y": 0.7019, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.711, + "y": 0.8179, + "confidence": 0.964 + }, + { + "name": "right_ankle", + "x": 0.1912, + "y": 0.8172, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 514, + "timestamp": 17.133333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0083, + "acceleration": -0.0119, + "fluidity": 0.018, + "expansion": 0.526, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0003, + "y": 0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4586, + "y": 0.2771, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4867, + "y": 0.2653, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4275, + "y": 0.2641, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5191, + "y": 0.2829, + "confidence": 0.723 + }, + { + "name": "right_ear", + "x": 0.3817, + "y": 0.2831, + "confidence": 0.832 + }, + { + "name": "left_shoulder", + "x": 0.5479, + "y": 0.3382, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3428, + "y": 0.341, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.621, + "y": 0.2289, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.3157, + "y": 0.2375, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5597, + "y": 0.1204, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4129, + "y": 0.1316, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.5428, + "y": 0.5678, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3661, + "y": 0.5708, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6288, + "y": 0.6957, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2749, + "y": 0.7025, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7107, + "y": 0.8178, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.1918, + "y": 0.8172, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 515, + "timestamp": 17.166666666666668, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0056, + "acceleration": -0.0812, + "fluidity": 0.289, + "expansion": 0.526, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0002, + "y": 0 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4584, + "y": 0.2766, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4865, + "y": 0.2648, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4271, + "y": 0.2638, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.519, + "y": 0.2827, + "confidence": 0.725 + }, + { + "name": "right_ear", + "x": 0.3814, + "y": 0.2833, + "confidence": 0.832 + }, + { + "name": "left_shoulder", + "x": 0.5485, + "y": 0.3381, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3426, + "y": 0.341, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6211, + "y": 0.2277, + "confidence": 0.915 + }, + { + "name": "right_elbow", + "x": 0.3141, + "y": 0.2354, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5591, + "y": 0.1187, + "confidence": 0.834 + }, + { + "name": "right_wrist", + "x": 0.4111, + "y": 0.1283, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5426, + "y": 0.5677, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3654, + "y": 0.5709, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.629, + "y": 0.6954, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2751, + "y": 0.7029, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7107, + "y": 0.8177, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.1916, + "y": 0.8175, + "confidence": 0.972 + } + ] + } + ] + }, + { + "frame_index": 516, + "timestamp": 17.2, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.004, + "acceleration": -0.0457, + "fluidity": 0.67, + "expansion": 0.526, + "total_displacement": 0.0001, + "center_displacement": { + "x": -0.0001, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4585, + "y": 0.2767, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4866, + "y": 0.2648, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4272, + "y": 0.2638, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5192, + "y": 0.2824, + "confidence": 0.728 + }, + { + "name": "right_ear", + "x": 0.3813, + "y": 0.2829, + "confidence": 0.833 + }, + { + "name": "left_shoulder", + "x": 0.5486, + "y": 0.3378, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3421, + "y": 0.3406, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.622, + "y": 0.228, + "confidence": 0.913 + }, + { + "name": "right_elbow", + "x": 0.314, + "y": 0.2348, + "confidence": 0.977 + }, + { + "name": "left_wrist", + "x": 0.5608, + "y": 0.1199, + "confidence": 0.83 + }, + { + "name": "right_wrist", + "x": 0.4131, + "y": 0.128, + "confidence": 0.932 + }, + { + "name": "left_hip", + "x": 0.5428, + "y": 0.5678, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3653, + "y": 0.5711, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6291, + "y": 0.6954, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2748, + "y": 0.7037, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7102, + "y": 0.8174, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.1915, + "y": 0.818, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 517, + "timestamp": 17.233333333333334, + "metrics": { + "direction": "stationary", + "intensity": "low", + "speed": "slow", + "velocity": 0.0041, + "acceleration": 0.0033, + "fluidity": 0.711, + "expansion": 0.526, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4585, + "y": 0.277, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4865, + "y": 0.2651, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4272, + "y": 0.2641, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5188, + "y": 0.2827, + "confidence": 0.721 + }, + { + "name": "right_ear", + "x": 0.381, + "y": 0.2832, + "confidence": 0.836 + }, + { + "name": "left_shoulder", + "x": 0.5482, + "y": 0.3378, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3419, + "y": 0.3409, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6216, + "y": 0.2274, + "confidence": 0.913 + }, + { + "name": "right_elbow", + "x": 0.3142, + "y": 0.2353, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5601, + "y": 0.1195, + "confidence": 0.831 + }, + { + "name": "right_wrist", + "x": 0.4133, + "y": 0.1285, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.543, + "y": 0.5678, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3655, + "y": 0.5711, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6295, + "y": 0.6954, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2752, + "y": 0.7031, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7114, + "y": 0.8179, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.1915, + "y": 0.8182, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 518, + "timestamp": 17.266666666666666, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "slow", + "velocity": 0.0068, + "acceleration": 0.0787, + "fluidity": 0.516, + "expansion": 0.526, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.459, + "y": 0.2772, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.487, + "y": 0.2653, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4275, + "y": 0.2642, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5188, + "y": 0.2828, + "confidence": 0.719 + }, + { + "name": "right_ear", + "x": 0.3808, + "y": 0.2831, + "confidence": 0.838 + }, + { + "name": "left_shoulder", + "x": 0.5477, + "y": 0.3378, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3417, + "y": 0.3407, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6205, + "y": 0.2266, + "confidence": 0.915 + }, + { + "name": "right_elbow", + "x": 0.314, + "y": 0.2347, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5581, + "y": 0.1178, + "confidence": 0.835 + }, + { + "name": "right_wrist", + "x": 0.4144, + "y": 0.1276, + "confidence": 0.935 + }, + { + "name": "left_hip", + "x": 0.5431, + "y": 0.5676, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3657, + "y": 0.5709, + "confidence": 0.998 + }, + { + "name": "left_knee", + "x": 0.6293, + "y": 0.6953, + "confidence": 0.991 + }, + { + "name": "right_knee", + "x": 0.2751, + "y": 0.703, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7115, + "y": 0.8173, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.1911, + "y": 0.8182, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 519, + "timestamp": 17.3, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0095, + "acceleration": 0.0808, + "fluidity": 0.566, + "expansion": 0.526, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0003, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4594, + "y": 0.2774, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4874, + "y": 0.2653, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4279, + "y": 0.2643, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5191, + "y": 0.2826, + "confidence": 0.713 + }, + { + "name": "right_ear", + "x": 0.3808, + "y": 0.2831, + "confidence": 0.838 + }, + { + "name": "left_shoulder", + "x": 0.5476, + "y": 0.3375, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3416, + "y": 0.3407, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.6208, + "y": 0.2271, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3144, + "y": 0.2358, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5566, + "y": 0.1177, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4129, + "y": 0.1277, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5426, + "y": 0.5673, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3654, + "y": 0.5706, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.629, + "y": 0.6953, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.275, + "y": 0.7032, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7107, + "y": 0.8173, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.1913, + "y": 0.8179, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 520, + "timestamp": 17.333333333333332, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0114, + "acceleration": 0.0587, + "fluidity": 0.697, + "expansion": 0.527, + "total_displacement": 0.0004, + "center_displacement": { + "x": -0.0001, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4588, + "y": 0.2775, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4868, + "y": 0.2653, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.4274, + "y": 0.2645, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5188, + "y": 0.2825, + "confidence": 0.717 + }, + { + "name": "right_ear", + "x": 0.3807, + "y": 0.2834, + "confidence": 0.837 + }, + { + "name": "left_shoulder", + "x": 0.5479, + "y": 0.3376, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3417, + "y": 0.3416, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6215, + "y": 0.2273, + "confidence": 0.919 + }, + { + "name": "right_elbow", + "x": 0.3132, + "y": 0.2378, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5567, + "y": 0.1172, + "confidence": 0.843 + }, + { + "name": "right_wrist", + "x": 0.4098, + "y": 0.129, + "confidence": 0.939 + }, + { + "name": "left_hip", + "x": 0.5422, + "y": 0.5674, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.365, + "y": 0.571, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6291, + "y": 0.6954, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2749, + "y": 0.7033, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7106, + "y": 0.8174, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.1914, + "y": 0.818, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 521, + "timestamp": 17.366666666666667, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0135, + "acceleration": 0.0636, + "fluidity": 0.678, + "expansion": 0.526, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0004, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4586, + "y": 0.2773, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4866, + "y": 0.2651, + "confidence": 0.974 + }, + { + "name": "right_eye", + "x": 0.427, + "y": 0.2642, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5182, + "y": 0.2822, + "confidence": 0.715 + }, + { + "name": "right_ear", + "x": 0.3797, + "y": 0.2831, + "confidence": 0.841 + }, + { + "name": "left_shoulder", + "x": 0.5469, + "y": 0.3374, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3411, + "y": 0.3417, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6218, + "y": 0.2278, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3141, + "y": 0.2392, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5578, + "y": 0.1177, + "confidence": 0.84 + }, + { + "name": "right_wrist", + "x": 0.4107, + "y": 0.1298, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5421, + "y": 0.5679, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3652, + "y": 0.5716, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6294, + "y": 0.6955, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.275, + "y": 0.7036, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7115, + "y": 0.8178, + "confidence": 0.961 + }, + { + "name": "right_ankle", + "x": 0.1913, + "y": 0.8186, + "confidence": 0.97 + } + ] + } + ] + }, + { + "frame_index": 522, + "timestamp": 17.4, + "metrics": { + "direction": "stationary", + "intensity": "medium", + "speed": "moderate", + "velocity": 0.0105, + "acceleration": -0.0898, + "fluidity": 0.477, + "expansion": 0.526, + "total_displacement": 0.0005, + "center_displacement": { + "x": -0.0004, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4582, + "y": 0.2771, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4864, + "y": 0.2649, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4266, + "y": 0.264, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.5182, + "y": 0.2821, + "confidence": 0.721 + }, + { + "name": "right_ear", + "x": 0.3793, + "y": 0.2829, + "confidence": 0.842 + }, + { + "name": "left_shoulder", + "x": 0.5466, + "y": 0.3374, + "confidence": 0.98 + }, + { + "name": "right_shoulder", + "x": 0.3404, + "y": 0.3421, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6219, + "y": 0.2283, + "confidence": 0.915 + }, + { + "name": "right_elbow", + "x": 0.315, + "y": 0.2407, + "confidence": 0.978 + }, + { + "name": "left_wrist", + "x": 0.5581, + "y": 0.1192, + "confidence": 0.836 + }, + { + "name": "right_wrist", + "x": 0.4134, + "y": 0.1318, + "confidence": 0.937 + }, + { + "name": "left_hip", + "x": 0.542, + "y": 0.5681, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3647, + "y": 0.5721, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6294, + "y": 0.6958, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2745, + "y": 0.7047, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7114, + "y": 0.8181, + "confidence": 0.962 + }, + { + "name": "right_ankle", + "x": 0.1912, + "y": 0.819, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 523, + "timestamp": 17.433333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0075, + "acceleration": -0.091, + "fluidity": 0.161, + "expansion": 0.527, + "total_displacement": 0.0001, + "center_displacement": { + "x": 0, + "y": -0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4579, + "y": 0.2772, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4861, + "y": 0.265, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4264, + "y": 0.2641, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.518, + "y": 0.2822, + "confidence": 0.723 + }, + { + "name": "right_ear", + "x": 0.3793, + "y": 0.283, + "confidence": 0.841 + }, + { + "name": "left_shoulder", + "x": 0.5468, + "y": 0.3373, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3402, + "y": 0.3422, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6234, + "y": 0.2279, + "confidence": 0.918 + }, + { + "name": "right_elbow", + "x": 0.3151, + "y": 0.2408, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5599, + "y": 0.1185, + "confidence": 0.841 + }, + { + "name": "right_wrist", + "x": 0.4138, + "y": 0.1316, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.542, + "y": 0.5679, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3645, + "y": 0.5719, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6293, + "y": 0.6961, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2743, + "y": 0.7051, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7111, + "y": 0.8184, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.191, + "y": 0.8191, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 524, + "timestamp": 17.466666666666665, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0339, + "acceleration": 0.7908, + "fluidity": 0.055, + "expansion": 0.528, + "total_displacement": 0.0003, + "center_displacement": { + "x": 0, + "y": 0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4582, + "y": 0.2773, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4864, + "y": 0.265, + "confidence": 0.975 + }, + { + "name": "right_eye", + "x": 0.4266, + "y": 0.2641, + "confidence": 0.983 + }, + { + "name": "left_ear", + "x": 0.518, + "y": 0.2821, + "confidence": 0.722 + }, + { + "name": "right_ear", + "x": 0.3791, + "y": 0.2829, + "confidence": 0.843 + }, + { + "name": "left_shoulder", + "x": 0.5468, + "y": 0.3373, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3398, + "y": 0.3423, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6242, + "y": 0.2267, + "confidence": 0.92 + }, + { + "name": "right_elbow", + "x": 0.3145, + "y": 0.24, + "confidence": 0.979 + }, + { + "name": "left_wrist", + "x": 0.5607, + "y": 0.116, + "confidence": 0.844 + }, + { + "name": "right_wrist", + "x": 0.4143, + "y": 0.1296, + "confidence": 0.938 + }, + { + "name": "left_hip", + "x": 0.5423, + "y": 0.5685, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3647, + "y": 0.5725, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6294, + "y": 0.6967, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2742, + "y": 0.7055, + "confidence": 0.994 + }, + { + "name": "left_ankle", + "x": 0.7111, + "y": 0.8191, + "confidence": 0.963 + }, + { + "name": "right_ankle", + "x": 0.1912, + "y": 0.8196, + "confidence": 0.971 + } + ] + } + ] + }, + { + "frame_index": 525, + "timestamp": 17.5, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0712, + "acceleration": 1.1208, + "fluidity": 0.018, + "expansion": 0.528, + "total_displacement": 0.0028, + "center_displacement": { + "x": 0.0005, + "y": -0.0028 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4587, + "y": 0.2774, + "confidence": 0.992 + }, + { + "name": "left_eye", + "x": 0.491, + "y": 0.2669, + "confidence": 0.977 + }, + { + "name": "right_eye", + "x": 0.4271, + "y": 0.2639, + "confidence": 0.985 + }, + { + "name": "left_ear", + "x": 0.5213, + "y": 0.2861, + "confidence": 0.683 + }, + { + "name": "right_ear", + "x": 0.3733, + "y": 0.282, + "confidence": 0.839 + }, + { + "name": "left_shoulder", + "x": 0.5408, + "y": 0.3363, + "confidence": 0.985 + }, + { + "name": "right_shoulder", + "x": 0.3422, + "y": 0.3386, + "confidence": 0.992 + }, + { + "name": "left_elbow", + "x": 0.611, + "y": 0.2192, + "confidence": 0.945 + }, + { + "name": "right_elbow", + "x": 0.3084, + "y": 0.2361, + "confidence": 0.972 + }, + { + "name": "left_wrist", + "x": 0.5565, + "y": 0.1072, + "confidence": 0.866 + }, + { + "name": "right_wrist", + "x": 0.4053, + "y": 0.132, + "confidence": 0.934 + }, + { + "name": "left_hip", + "x": 0.5439, + "y": 0.566, + "confidence": 0.999 + }, + { + "name": "right_hip", + "x": 0.3689, + "y": 0.5686, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6381, + "y": 0.6931, + "confidence": 0.996 + }, + { + "name": "right_knee", + "x": 0.2826, + "y": 0.7036, + "confidence": 0.997 + }, + { + "name": "left_ankle", + "x": 0.7192, + "y": 0.8092, + "confidence": 0.983 + }, + { + "name": "right_ankle", + "x": 0.195, + "y": 0.8186, + "confidence": 0.984 + } + ] + } + ] + }, + { + "frame_index": 526, + "timestamp": 17.53333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.065, + "acceleration": -0.1855, + "fluidity": 0.006, + "expansion": 0.527, + "total_displacement": 0.0032, + "center_displacement": { + "x": -0.001, + "y": 0.003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.458, + "y": 0.2779, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4858, + "y": 0.2657, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4263, + "y": 0.2646, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5162, + "y": 0.2826, + "confidence": 0.707 + }, + { + "name": "right_ear", + "x": 0.378, + "y": 0.2831, + "confidence": 0.847 + }, + { + "name": "left_shoulder", + "x": 0.545, + "y": 0.3376, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3391, + "y": 0.3419, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6228, + "y": 0.2278, + "confidence": 0.917 + }, + { + "name": "right_elbow", + "x": 0.3147, + "y": 0.2394, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.5586, + "y": 0.1192, + "confidence": 0.839 + }, + { + "name": "right_wrist", + "x": 0.4139, + "y": 0.1309, + "confidence": 0.94 + }, + { + "name": "left_hip", + "x": 0.5423, + "y": 0.5691, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3653, + "y": 0.5728, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6291, + "y": 0.6967, + "confidence": 0.992 + }, + { + "name": "right_knee", + "x": 0.2747, + "y": 0.7048, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.711, + "y": 0.8199, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1909, + "y": 0.8206, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 527, + "timestamp": 17.566666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0378, + "acceleration": -0.817, + "fluidity": 0.002, + "expansion": 0.527, + "total_displacement": 0.001, + "center_displacement": { + "x": -0.0004, + "y": 0.0009 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4574, + "y": 0.2781, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4853, + "y": 0.2661, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.426, + "y": 0.2649, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5154, + "y": 0.2835, + "confidence": 0.708 + }, + { + "name": "right_ear", + "x": 0.3781, + "y": 0.2835, + "confidence": 0.848 + }, + { + "name": "left_shoulder", + "x": 0.5446, + "y": 0.3387, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3386, + "y": 0.3429, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.624, + "y": 0.2282, + "confidence": 0.924 + }, + { + "name": "right_elbow", + "x": 0.3135, + "y": 0.24, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.5598, + "y": 0.1193, + "confidence": 0.851 + }, + { + "name": "right_wrist", + "x": 0.4109, + "y": 0.1312, + "confidence": 0.943 + }, + { + "name": "left_hip", + "x": 0.5418, + "y": 0.5699, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.365, + "y": 0.5736, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6289, + "y": 0.6971, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2745, + "y": 0.7051, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7108, + "y": 0.8193, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.191, + "y": 0.8206, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 528, + "timestamp": 17.6, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.027, + "acceleration": -0.3241, + "fluidity": 0.125, + "expansion": 0.526, + "total_displacement": 0.0007, + "center_displacement": { + "x": -0.0005, + "y": 0.0004 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.456, + "y": 0.2782, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4842, + "y": 0.2661, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.4244, + "y": 0.2649, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.515, + "y": 0.2836, + "confidence": 0.705 + }, + { + "name": "right_ear", + "x": 0.3766, + "y": 0.2837, + "confidence": 0.846 + }, + { + "name": "left_shoulder", + "x": 0.5438, + "y": 0.3392, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3379, + "y": 0.3433, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6215, + "y": 0.2287, + "confidence": 0.926 + }, + { + "name": "right_elbow", + "x": 0.3137, + "y": 0.2403, + "confidence": 0.982 + }, + { + "name": "left_wrist", + "x": 0.559, + "y": 0.1198, + "confidence": 0.855 + }, + { + "name": "right_wrist", + "x": 0.4141, + "y": 0.1316, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5415, + "y": 0.5702, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3647, + "y": 0.5739, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6282, + "y": 0.6977, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2741, + "y": 0.7056, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.71, + "y": 0.8192, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.1908, + "y": 0.8204, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 529, + "timestamp": 17.633333333333333, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0306, + "acceleration": 0.1075, + "fluidity": 0.166, + "expansion": 0.526, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0007, + "y": -0.0003 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4543, + "y": 0.2782, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4827, + "y": 0.2662, + "confidence": 0.972 + }, + { + "name": "right_eye", + "x": 0.4228, + "y": 0.2648, + "confidence": 0.982 + }, + { + "name": "left_ear", + "x": 0.5138, + "y": 0.2836, + "confidence": 0.702 + }, + { + "name": "right_ear", + "x": 0.3752, + "y": 0.2833, + "confidence": 0.843 + }, + { + "name": "left_shoulder", + "x": 0.5423, + "y": 0.3388, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.337, + "y": 0.343, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6201, + "y": 0.2284, + "confidence": 0.925 + }, + { + "name": "right_elbow", + "x": 0.3111, + "y": 0.2411, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.5553, + "y": 0.1204, + "confidence": 0.854 + }, + { + "name": "right_wrist", + "x": 0.4063, + "y": 0.1331, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.541, + "y": 0.5698, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3647, + "y": 0.5735, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6272, + "y": 0.6976, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.274, + "y": 0.7051, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.709, + "y": 0.8198, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.1898, + "y": 0.8208, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 530, + "timestamp": 17.666666666666668, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0295, + "acceleration": -0.0326, + "fluidity": 0.055, + "expansion": 0.525, + "total_displacement": 0.0014, + "center_displacement": { + "x": -0.0008, + "y": 0.0011 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.453, + "y": 0.2781, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4816, + "y": 0.2661, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4216, + "y": 0.2646, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5129, + "y": 0.2842, + "confidence": 0.712 + }, + { + "name": "right_ear", + "x": 0.3741, + "y": 0.2837, + "confidence": 0.841 + }, + { + "name": "left_shoulder", + "x": 0.5413, + "y": 0.3404, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3359, + "y": 0.3443, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6169, + "y": 0.229, + "confidence": 0.923 + }, + { + "name": "right_elbow", + "x": 0.3086, + "y": 0.2403, + "confidence": 0.98 + }, + { + "name": "left_wrist", + "x": 0.5491, + "y": 0.1203, + "confidence": 0.849 + }, + { + "name": "right_wrist", + "x": 0.4021, + "y": 0.1312, + "confidence": 0.942 + }, + { + "name": "left_hip", + "x": 0.5405, + "y": 0.5706, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3642, + "y": 0.5743, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6277, + "y": 0.698, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2729, + "y": 0.7062, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7084, + "y": 0.8186, + "confidence": 0.965 + }, + { + "name": "right_ankle", + "x": 0.1904, + "y": 0.8206, + "confidence": 0.973 + } + ] + } + ] + }, + { + "frame_index": 531, + "timestamp": 17.7, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0171, + "acceleration": -0.3731, + "fluidity": 0.018, + "expansion": 0.524, + "total_displacement": 0.0006, + "center_displacement": { + "x": -0.0005, + "y": -0.0002 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4521, + "y": 0.279, + "confidence": 0.991 + }, + { + "name": "left_eye", + "x": 0.4811, + "y": 0.2672, + "confidence": 0.973 + }, + { + "name": "right_eye", + "x": 0.4213, + "y": 0.2656, + "confidence": 0.981 + }, + { + "name": "left_ear", + "x": 0.5132, + "y": 0.2852, + "confidence": 0.71 + }, + { + "name": "right_ear", + "x": 0.3743, + "y": 0.2842, + "confidence": 0.836 + }, + { + "name": "left_shoulder", + "x": 0.541, + "y": 0.3409, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3355, + "y": 0.344, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6152, + "y": 0.2333, + "confidence": 0.929 + }, + { + "name": "right_elbow", + "x": 0.3072, + "y": 0.2427, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.5475, + "y": 0.1258, + "confidence": 0.862 + }, + { + "name": "right_wrist", + "x": 0.401, + "y": 0.1345, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5398, + "y": 0.5702, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3635, + "y": 0.5737, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6263, + "y": 0.6973, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2732, + "y": 0.7056, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7084, + "y": 0.8187, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.1898, + "y": 0.8208, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 532, + "timestamp": 17.733333333333334, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "slow", + "velocity": 0.0156, + "acceleration": -0.0429, + "fluidity": 0.006, + "expansion": 0.524, + "total_displacement": 0.0002, + "center_displacement": { + "x": -0.0001, + "y": 0.0001 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4508, + "y": 0.2788, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4798, + "y": 0.2671, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.4204, + "y": 0.2654, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5121, + "y": 0.2853, + "confidence": 0.705 + }, + { + "name": "right_ear", + "x": 0.3742, + "y": 0.284, + "confidence": 0.83 + }, + { + "name": "left_shoulder", + "x": 0.54, + "y": 0.3411, + "confidence": 0.981 + }, + { + "name": "right_shoulder", + "x": 0.3353, + "y": 0.3438, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6123, + "y": 0.2321, + "confidence": 0.926 + }, + { + "name": "right_elbow", + "x": 0.3058, + "y": 0.2407, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.5426, + "y": 0.1242, + "confidence": 0.858 + }, + { + "name": "right_wrist", + "x": 0.3999, + "y": 0.1329, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.54, + "y": 0.5706, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3641, + "y": 0.5739, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6267, + "y": 0.6975, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2734, + "y": 0.7052, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7089, + "y": 0.819, + "confidence": 0.966 + }, + { + "name": "right_ankle", + "x": 0.1903, + "y": 0.8204, + "confidence": 0.974 + } + ] + } + ] + }, + { + "frame_index": 533, + "timestamp": 17.766666666666666, + "metrics": { + "direction": "stationary", + "intensity": "high", + "speed": "moderate", + "velocity": 0.0203, + "acceleration": 0.2807, + "fluidity": 0.003, + "expansion": 0.524, + "total_displacement": 0.0008, + "center_displacement": { + "x": -0.0007, + "y": 0.0005 + } + }, + "keypoints": [ + { + "person_id": 0, + "points": [ + { + "name": "nose", + "x": 0.4488, + "y": 0.2788, + "confidence": 0.99 + }, + { + "name": "left_eye", + "x": 0.4775, + "y": 0.267, + "confidence": 0.971 + }, + { + "name": "right_eye", + "x": 0.4179, + "y": 0.2656, + "confidence": 0.98 + }, + { + "name": "left_ear", + "x": 0.5099, + "y": 0.2852, + "confidence": 0.71 + }, + { + "name": "right_ear", + "x": 0.3718, + "y": 0.2848, + "confidence": 0.832 + }, + { + "name": "left_shoulder", + "x": 0.5397, + "y": 0.3411, + "confidence": 0.982 + }, + { + "name": "right_shoulder", + "x": 0.3337, + "y": 0.3441, + "confidence": 0.993 + }, + { + "name": "left_elbow", + "x": 0.6103, + "y": 0.2319, + "confidence": 0.927 + }, + { + "name": "right_elbow", + "x": 0.3016, + "y": 0.24, + "confidence": 0.981 + }, + { + "name": "left_wrist", + "x": 0.5358, + "y": 0.1235, + "confidence": 0.857 + }, + { + "name": "right_wrist", + "x": 0.3943, + "y": 0.1323, + "confidence": 0.946 + }, + { + "name": "left_hip", + "x": 0.5401, + "y": 0.5713, + "confidence": 0.998 + }, + { + "name": "right_hip", + "x": 0.3631, + "y": 0.5747, + "confidence": 0.999 + }, + { + "name": "left_knee", + "x": 0.6272, + "y": 0.6977, + "confidence": 0.993 + }, + { + "name": "right_knee", + "x": 0.2737, + "y": 0.7053, + "confidence": 0.995 + }, + { + "name": "left_ankle", + "x": 0.7098, + "y": 0.8195, + "confidence": 0.967 + }, + { + "name": "right_ankle", + "x": 0.1902, + "y": 0.8212, + "confidence": 0.975 + } + ] + } + ] + } + ], + "summary": { + "direction": { + "distribution": { + "stationary": 323, + "down": 39, + "up": 42, + "left": 70, + "right": 60 + }, + "dominant": "stationary" + }, + "intensity": { + "distribution": { + "low": 3, + "high": 517, + "medium": 14 + }, + "dominant": "high" + }, + "speed": { + "distribution": { + "slow": 14, + "moderate": 201, + "fast": 319 + }, + "dominant": "fast" + }, + "velocity": { + "mean": 0.1725, + "std": 0.1339, + "min": 0.004, + "max": 0.8397 + }, + "acceleration": { + "mean": 0.002, + "std": 1.5302, + "min": -5.9102, + "max": 6.0089 + }, + "fluidity": { + "mean": 0.043, + "std": 0.105 + }, + "expansion": { + "mean": 0.374, + "std": 0.097 + }, + "movement_segments": [ + { + "start_frame": 57, + "start_time": 1.9, + "peak_velocity": 0.0803, + "dominant_direction": "stationary", + "end_frame": 57, + "end_time": 1.9, + "duration": 0 + }, + { + "start_frame": 59, + "start_time": 1.9666666666666666, + "peak_velocity": 0.0896, + "dominant_direction": "stationary", + "end_frame": 59, + "end_time": 1.9666666666666666, + "duration": 0 + }, + { + "start_frame": 105, + "start_time": 3.5, + "peak_velocity": 0.0842, + "dominant_direction": "stationary", + "end_frame": 105, + "end_time": 3.5, + "duration": 0 + }, + { + "start_frame": 110, + "start_time": 3.6666666666666665, + "peak_velocity": 0.0547, + "dominant_direction": "stationary", + "end_frame": 110, + "end_time": 3.6666666666666665, + "duration": 0 + }, + { + "start_frame": 343, + "start_time": 11.433333333333334, + "peak_velocity": 0.0791, + "dominant_direction": "stationary", + "end_frame": 343, + "end_time": 11.433333333333334, + "duration": 0 + }, + { + "start_frame": 352, + "start_time": 11.733333333333333, + "peak_velocity": 0.0797, + "dominant_direction": "stationary", + "end_frame": 352, + "end_time": 11.733333333333333, + "duration": 0 + }, + { + "start_frame": 392, + "start_time": 13.066666666666666, + "peak_velocity": 0.1872, + "dominant_direction": "stationary", + "end_frame": 392, + "end_time": 13.066666666666666, + "duration": 0 + }, + { + "start_frame": 494, + "start_time": 16.466666666666665, + "peak_velocity": 0.0276, + "dominant_direction": "stationary", + "end_frame": 494, + "end_time": 16.466666666666665, + "duration": 0 + }, + { + "start_frame": 504, + "start_time": 16.8, + "peak_velocity": 0.0207, + "dominant_direction": "stationary", + "end_frame": 504, + "end_time": 16.8, + "duration": 0 + }, + { + "start_frame": 511, + "start_time": 17.03333333333333, + "peak_velocity": 0.0158, + "dominant_direction": "stationary", + "end_frame": 511, + "end_time": 17.03333333333333, + "duration": 0 + }, + { + "start_frame": 518, + "start_time": 17.266666666666666, + "peak_velocity": 0.0068, + "dominant_direction": "stationary", + "end_frame": 518, + "end_time": 17.266666666666666, + "duration": 0 + }, + { + "start_frame": 520, + "start_time": 17.333333333333332, + "peak_velocity": 0.0135, + "dominant_direction": "stationary", + "end_frame": 522, + "end_time": 17.4, + "duration": 0.06666666666666643 + } + ] + } + } + } \ No newline at end of file diff --git a/src/frontend/Example.svelte b/src/frontend/Example.svelte new file mode 100644 index 0000000000000000000000000000000000000000..dc7513c4079a12cf8c4d08c24f063937eb93df1c --- /dev/null +++ b/src/frontend/Example.svelte @@ -0,0 +1,79 @@ +<script lang="ts"> + import Video from "./shared/Video.svelte"; + import { playable } from "./shared/utils"; + import { type FileData } from "@gradio/client"; + + export let type: "gallery" | "table"; + export let selected = false; + export let value: { video: FileData; subtitles: FileData | null } | null; + export let loop: boolean; + let video: HTMLVideoElement; + + async function init(): Promise<void> { + video.muted = true; + video.playsInline = true; + video.controls = false; + video.setAttribute("muted", ""); + + await video.play(); + video.pause(); + } +</script> + +{#if value} + {#if playable()} + <div + class="container" + class:table={type === "table"} + class:gallery={type === "gallery"} + class:selected + > + <Video + muted + playsinline + bind:node={video} + on:loadeddata={init} + on:mouseover={video.play.bind(video)} + on:mouseout={video.pause.bind(video)} + src={value?.video.url} + is_stream={false} + {loop} + /> + + </div> + {:else} + <div>{value}</div> + {/if} +{/if} + +<style> + .container { + flex: none; + max-width: none; + } + .container :global(video) { + width: var(--size-full); + height: var(--size-full); + object-fit: cover; + } + + .container:hover, + .container.selected { + border-color: var(--border-color-accent); + } + .container.table { + margin: 0 auto; + border: 2px solid var(--border-color-primary); + border-radius: var(--radius-lg); + overflow: hidden; + width: var(--size-20); + height: var(--size-20); + object-fit: cover; + } + + .container.gallery { + height: var(--size-20); + max-height: var(--size-20); + object-fit: cover; + } +</style> diff --git a/src/frontend/Index.svelte b/src/frontend/Index.svelte new file mode 100644 index 0000000000000000000000000000000000000000..1eafac52c5f0da53f131af62f1b5ac3d2989ad14 --- /dev/null +++ b/src/frontend/Index.svelte @@ -0,0 +1,41 @@ +<svelte:options accessors={true} /> + +<script lang="ts"> + import type { Gradio } from "@gradio/utils"; + import type { FileData } from "@gradio/client"; + import { Block } from "@gradio/atoms"; + import { StatusTracker } from "@gradio/statustracker"; + import type { LoadingStatus } from "@gradio/statustracker"; + import OverlayPlayer from "./shared/OverlayPlayer.svelte"; + + export let value: { video: { file: FileData } | null; json_data: string | null } | null = null; + export let gradio: Gradio; + // Unused props can be kept for Gradio compatibility, the warnings are harmless + export let elem_id = "", elem_classes = [], visible = true, loading_status: LoadingStatus, height, width, container, scale, min_width; + export let autoplay = false, loop = false; + + let video_url: string | null | undefined; + let json_content: string | null | undefined; + + $: { + if (value) { + video_url = value.video?.url; + json_content = value.json_data; + } else { + video_url = null; + json_content = null; + } + } +</script> + +<Block {visible} {elem_id} {elem_classes} {height} {width} {container} {scale} {min_width} allow_overflow={false}> + <StatusTracker {...loading_status} autoscroll={gradio.autoscroll} i18n={gradio.i18n} /> + {#if json_content} + <OverlayPlayer + video_src={video_url} + json_data_str={json_content} + {autoplay} + {loop} + /> + {/if} +</Block> \ No newline at end of file diff --git a/src/frontend/gradio.config.js b/src/frontend/gradio.config.js new file mode 100644 index 0000000000000000000000000000000000000000..19f8f32584367502b94ff73d80c472108f7a896a --- /dev/null +++ b/src/frontend/gradio.config.js @@ -0,0 +1,9 @@ +export default { + plugins: [], + svelte: { + preprocess: [], + }, + build: { + target: "modules", + }, +}; \ No newline at end of file diff --git a/src/frontend/index.ts b/src/frontend/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..83508b441174643060e320ad5d60c5f7296b18fe --- /dev/null +++ b/src/frontend/index.ts @@ -0,0 +1,3 @@ +export { default as BaseExample } from "./Example.svelte"; +import { default as Index } from "./Index.svelte"; +export default Index; \ No newline at end of file diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..26806b2b494b1fe88b3e7b1580619c5943a7ed47 --- /dev/null +++ b/src/frontend/package-lock.json @@ -0,0 +1,7454 @@ +{ + "name": "gradio_overlay_video", + "version": "0.14.16", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "gradio_overlay_video", + "version": "0.14.16", + "license": "ISC", + "dependencies": { + "@ffmpeg/ffmpeg": "^0.12.7", + "@ffmpeg/util": "^0.12.1", + "@gradio/atoms": "0.16.1", + "@gradio/client": "1.15.1", + "@gradio/icons": "0.12.0", + "@gradio/image": "0.22.8", + "@gradio/statustracker": "0.10.12", + "@gradio/upload": "0.16.6", + "@gradio/utils": "0.10.2", + "@gradio/wasm": "0.18.1", + "hls.js": "^1.5.13", + "mrmime": "^2.0.0" + }, + "devDependencies": { + "@gradio/preview": "0.13.1" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" + }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "license": "ISC", + "dependencies": { + "cookie": "^0.7.2" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "license": "ISC", + "dependencies": { + "statuses": "^2.0.1" + } + }, + "node_modules/@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "license": "ISC", + "dependencies": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, + "node_modules/@bundled-es-modules/tough-cookie/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", + "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@ffmpeg/ffmpeg": { + "version": "0.12.15", + "resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.12.15.tgz", + "integrity": "sha512-1C8Obr4GsN3xw+/1Ww6PFM84wSQAGsdoTuTWPOj2OizsRDLT4CXTaVjPhkw6ARyDus1B9X/L2LiXHqYYsGnRFw==", + "license": "MIT", + "dependencies": { + "@ffmpeg/types": "^0.12.4" + }, + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@ffmpeg/types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@ffmpeg/types/-/types-0.12.4.tgz", + "integrity": "sha512-k9vJQNBGTxE5AhYDtOYR5rO5fKsspbg51gbcwtbkw2lCdoIILzklulcjJfIDwrtn7XhDeF2M+THwJ2FGrLeV6A==", + "license": "MIT", + "engines": { + "node": ">=16.x" + } + }, + "node_modules/@ffmpeg/util": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@ffmpeg/util/-/util-0.12.2.tgz", + "integrity": "sha512-ouyoW+4JB7WxjeZ2y6KpRvB+dLp7Cp4ro8z0HIVpZVCM7AwFlHa0c4R8Y/a4M3wMqATpYKhC7lSFHQ0T11MEDw==", + "license": "MIT", + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", + "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", + "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@gradio/atoms": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@gradio/atoms/-/atoms-0.16.1.tgz", + "integrity": "sha512-3T3055D6s1c7TphXtrUBUcgD4LkEF4F7EK0Zu/wx0ChzoANGO5GT2mmrY5lRyup2c8rYtmbyVxTfLQtBSjS+Fg==", + "license": "ISC", + "dependencies": { + "@gradio/icons": "^0.12.0", + "@gradio/markdown-code": "^0.4.3", + "@gradio/utils": "^0.10.2" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/client": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@gradio/client/-/client-1.15.1.tgz", + "integrity": "sha512-9WcemR708HYsyJgeP0l07jzGw8wPLVOUofaa9/ZeHSkeVnOXAIOfURxWHlP3rgpX3/1YDVZP5hs6NxyXhkV/gQ==", + "license": "ISC", + "dependencies": { + "@types/eventsource": "^1.1.15", + "bufferutil": "^4.0.7", + "eventsource": "^2.0.2", + "fetch-event-stream": "^0.1.5", + "msw": "^2.2.1", + "semiver": "^1.1.0", + "textlinestream": "^1.1.1", + "typescript": "^5.0.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@gradio/icons": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@gradio/icons/-/icons-0.12.0.tgz", + "integrity": "sha512-QQuEcYpJwIBrwxmjjx13qL3abVR5Uma/wdbhOCUqX/eowGBCDo8TKn8mX3oRkBMoCSKAuEI4tClikPTAQg/ozg==", + "license": "ISC", + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/image": { + "version": "0.22.8", + "resolved": "https://registry.npmjs.org/@gradio/image/-/image-0.22.8.tgz", + "integrity": "sha512-pdC9U4vE2wPouPdbHqBqx+UAX04n767Rzlq1/dcVOugztz2vNiiqZ03AJs94XlWJufVSKqi5/znuwDp8C0vzKQ==", + "license": "ISC", + "dependencies": { + "@gradio/atoms": "^0.16.1", + "@gradio/client": "^1.15.1", + "@gradio/icons": "^0.12.0", + "@gradio/statustracker": "^0.10.12", + "@gradio/upload": "^0.16.6", + "@gradio/utils": "^0.10.2", + "@gradio/wasm": "^0.18.1", + "cropperjs": "^1.5.12", + "lazy-brush": "^1.0.1", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/markdown-code": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@gradio/markdown-code/-/markdown-code-0.4.3.tgz", + "integrity": "sha512-o/qDUUCWZNyl8nuMkgciCeBngyfdLXWOm2yJocpaTrMXGvJJxm80LkBfdHBDwvIcBaPc7zuPRAn7MIJXFQKbyQ==", + "license": "ISC", + "dependencies": { + "@gradio/sanitize": "^0.1.3", + "@types/dompurify": "^3.0.2", + "@types/katex": "^0.16.0", + "@types/prismjs": "1.26.4", + "github-slugger": "^2.0.0", + "isomorphic-dompurify": "^2.14.0", + "katex": "^0.16.7", + "marked": "^12.0.0", + "marked-gfm-heading-id": "^3.1.2", + "marked-highlight": "^2.0.1", + "mermaid": "^11.5.0", + "prismjs": "1.29.0" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/preview": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@gradio/preview/-/preview-0.13.1.tgz", + "integrity": "sha512-wof+rZcVHsClU08JUWpcpcnwgIK+e4Gr0r6EhumYlZthLs+F0UrzEw4SByLMnF1CJaGj+z/unVWT76E6YdhpoA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@originjs/vite-plugin-commonjs": "^1.0.3", + "@rollup/plugin-sucrase": "^5.0.1", + "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@types/which": "^3.0.0", + "coffeescript": "^2.7.0", + "lightningcss": "^1.21.7", + "pug": "^3.0.2", + "sass": "^1.66.1", + "stylus": "^0.63.0", + "sucrase": "^3.34.0", + "sugarss": "^4.0.1", + "svelte-hmr": "^0.16.0", + "svelte-preprocess": "^6.0.3", + "typescript": "^5.0.0", + "vite": "^5.2.9", + "which": "4.0.0", + "yootils": "^0.3.1" + }, + "optionalDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/sanitize": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@gradio/sanitize/-/sanitize-0.1.3.tgz", + "integrity": "sha512-IQXf1/dqOaUSrJMO9hh9jH03lK+MA2UH977guQIvSXts7rXqorD+ChCVn7WUrAQ9Mf0DYPhRH9NMIp0s1xPZmg==", + "license": "ISC", + "dependencies": { + "amuchina": "^1.0.12", + "sanitize-html": "^2.13.0" + } + }, + "node_modules/@gradio/statustracker": { + "version": "0.10.12", + "resolved": "https://registry.npmjs.org/@gradio/statustracker/-/statustracker-0.10.12.tgz", + "integrity": "sha512-sA+vWOGfB5Cy16UHJeviIHVVddwbzzTpd54VlHc/F5B+mt81GGP8F9leAz5yizQhiJQmOsvQhzbGASTyt2+G8w==", + "license": "ISC", + "dependencies": { + "@gradio/atoms": "^0.16.1", + "@gradio/icons": "^0.12.0", + "@gradio/utils": "^0.10.2", + "@types/dompurify": "^3.0.2", + "dompurify": "^3.0.3" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/theme": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@gradio/theme/-/theme-0.4.0.tgz", + "integrity": "sha512-O/zkP7D/4U9+vFQN821YJvSemjWzi8b8ezkaJ5/ikMm2XySoAXEqafUHAZ8MEnGYXR/CLeDcoyYG1OrJxS0fnw==", + "license": "ISC", + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/upload": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@gradio/upload/-/upload-0.16.6.tgz", + "integrity": "sha512-n8l9/fQEXeoRs0OK89V47Whbf+Ts/wAxe4jz0eqSkGYnJI6SSzbkYO6bmgjYf6FqDmKhOiFxiIYUWcwfSQnpdA==", + "license": "ISC", + "dependencies": { + "@gradio/atoms": "^0.16.1", + "@gradio/client": "^1.15.1", + "@gradio/icons": "^0.12.0", + "@gradio/utils": "^0.10.2", + "@gradio/wasm": "^0.18.1" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@gradio/utils": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@gradio/utils/-/utils-0.10.2.tgz", + "integrity": "sha512-ldGDEqL9kVKPrfnFzfPriCqbtTOe1/IK4FHEhXCGOeqwegqnxjmummWPk633e2Yub2lT3fjEjuyDLJ7Y7vYy3w==", + "license": "ISC", + "dependencies": { + "@gradio/theme": "^0.4.0", + "svelte-i18n": "^3.6.0" + } + }, + "node_modules/@gradio/wasm": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@gradio/wasm/-/wasm-0.18.1.tgz", + "integrity": "sha512-KbcCNxTP+PObWChO7UVASj+J61kFxaeSb9h7/LO0WsVmAWcBUKCNt2su6e0Dm2A1P/MKHTMLe2hkhJaENrtXgA==", + "license": "ISC", + "dependencies": { + "@types/path-browserify": "^1.0.0", + "path-browserify": "^1.0.1", + "pyodide": "0.27.3" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.12.tgz", + "integrity": "sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.13", + "@inquirer/type": "^3.0.7" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.13", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz", + "integrity": "sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==", + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.12", + "@inquirer/type": "^3.0.7", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", + "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.7.tgz", + "integrity": "sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz", + "integrity": "sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.39.2", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.2.tgz", + "integrity": "sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" + }, + "node_modules/@originjs/vite-plugin-commonjs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@originjs/vite-plugin-commonjs/-/vite-plugin-commonjs-1.0.3.tgz", + "integrity": "sha512-KuEXeGPptM2lyxdIEJ4R11+5ztipHoE7hy8ClZt3PYaOVQ/pyngd2alaSrPnwyFeOW1UagRBaQ752aA1dTMdOQ==", + "dev": true, + "license": "MulanPSL2", + "dependencies": { + "esbuild": "^0.14.14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/plugin-sucrase": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-sucrase/-/plugin-sucrase-5.0.2.tgz", + "integrity": "sha512-4MhIVH9Dy2Hwose1/x5QMs0XF7yn9jDd/yozHqzdIrMWIolgFpGnrnVhQkqTaK1RALY/fpyrEKmwH/04vr1THA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "sucrase": "^3.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.53.1||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz", + "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz", + "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz", + "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz", + "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz", + "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz", + "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz", + "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz", + "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz", + "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz", + "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz", + "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz", + "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz", + "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz", + "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz", + "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz", + "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz", + "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz", + "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz", + "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz", + "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/eventsource": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.15.tgz", + "integrity": "sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==", + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "license": "MIT" + }, + "node_modules/@types/path-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/path-browserify/-/path-browserify-1.0.3.tgz", + "integrity": "sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.4", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz", + "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==", + "license": "MIT" + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/which": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.4.tgz", + "integrity": "sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/amuchina": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/amuchina/-/amuchina-1.0.12.tgz", + "integrity": "sha512-Itv2NEwpiV53+bkpviJIC12+8SOlCSLR1HgQCv6wD7ldNFNesm4JSk7XjvTFkeVfLYzqKEZcEBZO1X/V2MYg4A==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert-never": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.4.0.tgz", + "integrity": "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==", + "dev": true, + "license": "MIT" + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/code-red/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/coffeescript": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.7.0.tgz", + "integrity": "sha512-hzWp6TUE2d/jCcN67LrW1eh5b/rSDKQK6oD6VMLlggYVUUFexgTH9z3dNYihzX4RMhze5FTUsUmOXViJKFQR/A==", + "dev": true, + "license": "MIT", + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/cropperjs": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz", + "integrity": "sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssstyle": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.4.0.tgz", + "integrity": "sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cytoscape": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.32.0.tgz", + "integrity": "sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", + "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/exsolve": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz", + "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==", + "license": "MIT" + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/fetch-event-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/fetch-event-stream/-/fetch-event-stream-0.1.5.tgz", + "integrity": "sha512-V1PWovkspxQfssq/NnxoEyQo1DV+MRK/laPuPblIZmSjMN8P5u46OhlFQznSr9p/t0Sp8Uc6SbM3yCMfr0KU8g==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "license": "MIT" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphql": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "license": "MIT" + }, + "node_modules/hls.js": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.5.tgz", + "integrity": "sha512-KMn5n7JBK+olC342740hDPHnGWfE8FiHtGMOdJPfUjRdARTWj9OB+8c13fnsf9sk1VtpuU2fKSgUjHvg4rNbzQ==", + "license": "Apache-2.0" + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", + "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/intl-messageformat": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", + "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "tslib": "^2.1.0" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/isomorphic-dompurify": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.25.0.tgz", + "integrity": "sha512-bcpJzu9DOjN21qaCVpcoCwUX1ytpvA6EFqCK5RNtPg5+F0Jz9PX50jl6jbEicBNeO87eDDfC7XtPs4zjDClZJg==", + "license": "MIT", + "dependencies": { + "dompurify": "^3.2.6", + "jsdom": "^26.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/lazy-brush": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazy-brush/-/lazy-brush-1.0.1.tgz", + "integrity": "sha512-xT/iSClTVi7vLoF8dCWTBhCuOWqsLXCMPa6ucVmVAk6hyNCM5JeS1NLhXqIrJktUg+caEYKlqSOUU4u3cpXzKg==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/local-pkg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-gfm-heading-id": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-3.2.0.tgz", + "integrity": "sha512-Xfxpr5lXLDLY10XqzSCA9l2dDaiabQUgtYM9hw8yunyVsB/xYBRpiic6BOiY/EAJw1ik1eWr1ET1HKOAPZBhXg==", + "license": "MIT", + "dependencies": { + "github-slugger": "^2.0.0" + }, + "peerDependencies": { + "marked": ">=4 <13" + } + }, + "node_modules/marked-highlight": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.2.1.tgz", + "integrity": "sha512-SiCIeEiQbs9TxGwle9/OwbOejHCZsohQRaNTY2u8euEXYt2rYUFoiImUirThU3Gd/o6Q1gHGtH9qloHlbJpNIA==", + "license": "MIT", + "peerDependencies": { + "marked": ">=4 <16" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/mermaid": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.6.0.tgz", + "integrity": "sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.0.4", + "@iconify/utils": "^2.1.33", + "@mermaid-js/parser": "^0.4.0", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.11", + "dayjs": "^1.11.13", + "dompurify": "^3.2.4", + "katex": "^0.16.9", + "khroma": "^2.1.0", + "lodash-es": "^4.17.21", + "marked": "^15.0.7", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msw": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.10.1.tgz", + "integrity": "sha512-V/YhZE2QPd48vKFGLo2BZanbBqncJn2k9/+vGtq9IFtv2D78+DIXlKH63emxa8reE/LIQHz9p3ZcFOThhsTSOg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.39.1", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.26.1", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "license": "MIT" + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/periscopic/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/pug": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-code-gen": "^3.0.3", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pyodide": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/pyodide/-/pyodide-0.27.3.tgz", + "integrity": "sha512-6NwKEbPk0M3Wic2T1TCZijgZH9VE4RkHp1VGljS1sou0NjGdsmY2R/fG5oLmdDkjTRMI1iW7WYaY9pofX8gg1g==", + "license": "Apache-2.0", + "dependencies": { + "ws": "^8.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/quansync": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", + "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz", + "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.42.0", + "@rollup/rollup-android-arm64": "4.42.0", + "@rollup/rollup-darwin-arm64": "4.42.0", + "@rollup/rollup-darwin-x64": "4.42.0", + "@rollup/rollup-freebsd-arm64": "4.42.0", + "@rollup/rollup-freebsd-x64": "4.42.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.42.0", + "@rollup/rollup-linux-arm-musleabihf": "4.42.0", + "@rollup/rollup-linux-arm64-gnu": "4.42.0", + "@rollup/rollup-linux-arm64-musl": "4.42.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.42.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0", + "@rollup/rollup-linux-riscv64-gnu": "4.42.0", + "@rollup/rollup-linux-riscv64-musl": "4.42.0", + "@rollup/rollup-linux-s390x-gnu": "4.42.0", + "@rollup/rollup-linux-x64-gnu": "4.42.0", + "@rollup/rollup-linux-x64-musl": "4.42.0", + "@rollup/rollup-win32-arm64-msvc": "4.42.0", + "@rollup/rollup-win32-ia32-msvc": "4.42.0", + "@rollup/rollup-win32-x64-msvc": "4.42.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize-html": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", + "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/sass": { + "version": "1.89.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.1.tgz", + "integrity": "sha512-eMLLkl+qz7tx/0cJ9wI+w09GQ2zodTkcE/aVfywwdlRcI3EO19xGnbmJwg/JMIm+5MxVJ6outddLZ4Von4E++Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, + "node_modules/stylus": { + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.63.0.tgz", + "integrity": "sha512-OMlgrTCPzE/ibtRMoeLVhOY0RcNuNWh0rhAVqeKnk/QwcuUKQbnqhZ1kg2vzD8VU/6h3FoPTq4RJPHgLBvX6Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "~4.3.3", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.3.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sugarss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", + "integrity": "sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.2.20", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.20.tgz", + "integrity": "sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-i18n": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-3.7.4.tgz", + "integrity": "sha512-yGRCNo+eBT4cPuU7IVsYTYjxB7I2V8qgUZPlHnNctJj5IgbJgV78flsRzpjZ/8iUYZrS49oCt7uxlU3AZv/N5Q==", + "license": "MIT", + "dependencies": { + "cli-color": "^2.0.3", + "deepmerge": "^4.2.2", + "esbuild": "^0.19.2", + "estree-walker": "^2", + "intl-messageformat": "^9.13.0", + "sade": "^1.8.1", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-i18n": "dist/cli.js" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "svelte": "^3 || ^4" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/svelte-preprocess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": ">=3", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": ">=0.55", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/textlinestream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/textlinestream/-/textlinestream-1.1.1.tgz", + "integrity": "sha512-iBHbi7BQxrFmwZUQJsT0SjNzlLLsXhvW/kg7EyOMVMBIrlnj/qYofwo1LVLZi+3GbUEo96Iu2eqToI2+lZoAEQ==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yootils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/yootils/-/yootils-0.3.1.tgz", + "integrity": "sha512-A7AMeJfGefk317I/3tBoUYRcDcNavKEkpiPN/nQsBz/viI2GvT7BtrqdPD6rGqBFN8Ax7v4obf+Cl32JF9DDVw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/src/frontend/package.json b/src/frontend/package.json new file mode 100644 index 0000000000000000000000000000000000000000..6cee3a7ab498f931c3086e12f8401644207ff96e --- /dev/null +++ b/src/frontend/package.json @@ -0,0 +1,59 @@ +{ + "name": "gradio_overlay_video", + "version": "0.14.16", + "description": "Gradio UI packages", + "type": "module", + "author": "", + "license": "ISC", + "private": false, + "dependencies": { + "@ffmpeg/ffmpeg": "^0.12.7", + "@ffmpeg/util": "^0.12.1", + "@gradio/atoms": "0.16.1", + "@gradio/client": "1.15.1", + "@gradio/icons": "0.12.0", + "@gradio/image": "0.22.8", + "@gradio/statustracker": "0.10.12", + "@gradio/upload": "0.16.6", + "@gradio/utils": "0.10.2", + "@gradio/wasm": "0.18.1", + "hls.js": "^1.5.13", + "mrmime": "^2.0.0" + }, + "devDependencies": { + "@gradio/preview": "0.13.1" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "gradio": "./index.ts", + "svelte": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./example": { + "gradio": "./Example.svelte", + "svelte": "./dist/Example.svelte", + "types": "./dist/Example.svelte.d.ts" + }, + "./shared": { + "gradio": "./shared/index.ts", + "svelte": "./dist/shared/index.js", + "types": "./dist/shared/index.d.ts" + }, + "./base": { + "gradio": "./shared/VideoPreview.svelte", + "svelte": "./dist/shared/VideoPreview.svelte", + "types": "./dist/shared/VideoPreview.svelte.d.ts" + } + }, + "peerDependencies": { + "svelte": "^4.0.0" + }, + "main": "index.ts", + "main_changeset": true, + "repository": { + "type": "git", + "url": "git+https://github.com/gradio-app/gradio.git", + "directory": "js/video" + } +} \ No newline at end of file diff --git a/src/frontend/shared/InteractiveOverlay.svelte b/src/frontend/shared/InteractiveOverlay.svelte new file mode 100644 index 0000000000000000000000000000000000000000..d8267dfc25190646fec2fa36db9086aff5cd8a73 --- /dev/null +++ b/src/frontend/shared/InteractiveOverlay.svelte @@ -0,0 +1,124 @@ +<script lang="ts"> + import { createEventDispatcher } from "svelte"; + import { Upload } from "@gradio/upload"; + import type { FileData, Client } from "@gradio/client"; + import { BlockLabel } from "@gradio/atoms"; + import { Video } from "@gradio/icons"; + import OverlayPlayer from "./OverlayPlayer.svelte"; + import type { I18nFormatter } from "@gradio/utils"; + + // Props for video + export let value: FileData | null = null; + // REMOVED `sources` prop as it was unused. + export let label: string | undefined = "Interactive Video with Overlay"; + export let show_label = true; + export let autoplay = false; + export let root: string; + export let i18n: I18nFormatter; + export let upload: Client["upload"]; + export let loop: boolean; + export let uploading = false; + + // Props for JSON overlay data + export let json: FileData | null = null; + + const dispatch = createEventDispatcher<{ + change: { video: FileData | null; json: FileData | null }; + clear?: never; + play?: never; + pause?: never; + end?: never; + drag: boolean; + error: string; + upload: { video?: FileData; json?: FileData }; + }>(); + + function handle_video_load({ detail }: CustomEvent<FileData | null>): void { + value = detail; + dispatch("change", { video: value, json }); + if (detail) dispatch("upload", { video: detail }); + } + + function handle_json_load({ detail }: CustomEvent<FileData | null>): void { + json = detail; + dispatch("change", { video: value, json }); + if (detail) dispatch("upload", { json: detail }); + } + + function handle_clear(): void { + value = null; + json = null; + dispatch("change", { video: null, json: null }); + dispatch("clear"); + } + + let dragging = false; + $: dispatch("drag", dragging); +</script> + +<BlockLabel {show_label} Icon={Video} {label} /> + +<div class="component-container"> + {#if value === null} + <div class="upload-container"> + <Upload + bind:dragging + bind:uploading + filetype="video/x-m4v,video/*" + on:load={handle_video_load} + on:error={({ detail }) => dispatch("error", detail)} + {root} + {upload} + aria_label={i18n("video.drop_to_upload")} + > + Drop Video Here + </Upload> + </div> + {:else if !json} + <div class="upload-container"> + <Upload + bind:dragging + filetype="application/json" + on:load={handle_json_load} + on:error={({ detail }) => dispatch("error", detail)} + {root} + {upload} + aria_label="Drop JSON here" + > + Drop JSON Overlay Data Here + </Upload> + </div> + {/if} + + {#if value && json} + <OverlayPlayer + video_src={value.url} + json_src={json.url} + {autoplay} + {loop} + on:play + on:pause + on:end + on:error + /> + {/if} +</div> + +<style> + .component-container { + display: flex; + flex-direction: column; + gap: var(--size-4); + height: 100%; + width: 100%; + } + .upload-container { + display: flex; + flex-direction: column; + min-height: var(--size-60); + align-items: center; + justify-content: center; + border: 1px dashed var(--border-color-primary); + border-radius: var(--radius-lg); + } +</style> \ No newline at end of file diff --git a/src/frontend/shared/OverlayPlayer.svelte b/src/frontend/shared/OverlayPlayer.svelte new file mode 100644 index 0000000000000000000000000000000000000000..3e8823da0ea52c211758f83b4cffe019fb5ae8d8 --- /dev/null +++ b/src/frontend/shared/OverlayPlayer.svelte @@ -0,0 +1,630 @@ +<script lang="ts"> + import { createEventDispatcher, onMount } from "svelte"; + import { Play, Pause } from "@gradio/icons"; + import Video from "./Video.svelte"; + import { format_time } from "@gradio/utils"; + + export let video_src: string | undefined | null = undefined; + export let json_data_str: string | undefined | null = undefined; + export let autoplay: boolean; + export let loop: boolean; + + let time = 0, + duration: number, + paused = true, + video: HTMLVideoElement, + canvas: HTMLCanvasElement; + let frame_data: any[] = [], + video_info: any = {}, + capabilities: any = {}; + let frame_slider_value = 0, + current_frame_index = 0, + fps = 30; + let show_video = false, + show_joints: boolean, + show_bones: boolean, + show_laban: boolean, + show_direction_arrows: boolean, + show_motion_trails: boolean; + let json_playing = false, + json_play_interval: any = null; + let player_container: HTMLDivElement; + + // Parse the streamlined visualization data from backend + $: if (json_data_str) { + try { + const data = JSON.parse(json_data_str); + video_info = data.video_info || {}; + frame_data = data.frames || []; + fps = data.fps || 30; + capabilities = data.capabilities || {}; + + + // Set defaults only once when capabilities are first loaded + if (show_joints === undefined) { + show_joints = capabilities.has_joints !== false; + show_bones = capabilities.has_bones !== false; + show_direction_arrows = + capabilities.has_direction_arrows !== false; + show_motion_trails = capabilities.has_motion_trails !== false; + // Disable Laban by default as requested + show_laban = false; + } + + if (!video_src) { + duration = video_info.duration_seconds || 0; + } + } catch (e) { + console.error("Failed to parse JSON data:", e); + } + } + + // Set aspect ratio CSS variable for proper player container sizing + $: if (player_container && video_info.width && video_info.height) { + const aspectRatio = video_info.width / video_info.height; + player_container.style.setProperty( + "--player-aspect-ratio", + `${aspectRatio}`, + ); + } + + // Update current frame index based on video time or slider + $: { + if (show_video && frame_data.length > 0 && time !== undefined) { + current_frame_index = frame_data.findIndex( + (d) => + time >= d.timestamp && + (frame_data[frame_data.indexOf(d) + 1] + ? time < frame_data[frame_data.indexOf(d) + 1].timestamp + : true), + ); + } else if (!show_video) { + current_frame_index = frame_slider_value; + } + } + + // Redraw when frame index or time changes + $: if (canvas && (current_frame_index >= 0 || time >= 0)) { + draw(); + } + + function draw() { + if (!canvas || frame_data.length === 0) return; + const ctx = canvas.getContext("2d"); + if (!ctx) return; + + // Prioritize video_info dimensions for aspect ratio to avoid skewing + let ar = + video_info.height && video_info.width + ? video_info.height / video_info.width + : video && video.videoHeight > 0 + ? video.videoHeight / video.videoWidth + : 9 / 16; + + if (canvas.parentElement) { + canvas.width = canvas.parentElement.clientWidth; + canvas.height = canvas.width * ar; + } + + ctx.clearRect(0, 0, canvas.width, canvas.height); + + const current_frame = frame_data[current_frame_index]; + if (!current_frame) return; + + const scaleX = canvas.width, + scaleY = canvas.height; + + // Draw motion trails if enabled and available + if (show_motion_trails && current_frame.motion_trail) { + current_frame.motion_trail.forEach((segment: any) => { + const alpha = segment.alpha || 0.5; + ctx.strokeStyle = `rgba(138, 43, 226, ${alpha})`; + ctx.lineWidth = Math.max(1, 3 * alpha); + + ctx.beginPath(); + ctx.moveTo(segment.start.x * scaleX, segment.start.y * scaleY); + ctx.lineTo(segment.end.x * scaleX, segment.end.y * scaleY); + ctx.stroke(); + }); + } + + // Draw bones if enabled and available + if (show_bones && current_frame.bones) { + current_frame.bones.forEach((bone: any) => { + // Viridian bones with gradient effect + const startX = bone.start.x * scaleX; + const startY = bone.start.y * scaleY; + const endX = bone.end.x * scaleX; + const endY = bone.end.y * scaleY; + + // Create gradient for bone + const gradient = ctx.createLinearGradient(startX, startY, endX, endY); + gradient.addColorStop(0, "rgba(64, 130, 109, 0.9)"); // Viridian + gradient.addColorStop(0.5, "rgba(60, 140, 100, 1.0)"); + gradient.addColorStop(1, "rgba(65, 132, 110, 0.88)"); + + // Glow effect + ctx.shadowColor = "rgba(64, 130, 109, 0.5)"; + ctx.shadowBlur = 6; + + ctx.strokeStyle = gradient; + ctx.lineWidth = 2; + ctx.lineCap = "round"; + + ctx.beginPath(); + ctx.moveTo(startX, startY); + ctx.lineTo(endX, endY); + ctx.stroke(); + + // Reset shadow + ctx.shadowBlur = 0; + }); + } + + // Draw joints if enabled and available + if (show_joints && current_frame.joints) { + current_frame.joints.forEach((joint: any) => { + // Violet joints with confidence-based alpha + const confidence = joint.confidence || 1; + const alpha = Math.max(0.4, confidence); + const radius = Math.max(1, 3 * confidence); + + // Outer glow effect + ctx.shadowColor = "rgba(64, 130, 109, 0.5)"; + ctx.shadowBlur = 8; + + ctx.fillStyle = `rgba(138, 43, 226, ${alpha})`; // Violet + ctx.beginPath(); + ctx.arc(joint.x * scaleX, joint.y * scaleY, radius, 0, 2 * Math.PI); + ctx.fill(); + + // Reset shadow + ctx.shadowBlur = 0; + + // Bright border for contrast + ctx.strokeStyle = "rgba(64, 130, 109, 0.9)"; + ctx.lineWidth = 1.5; + ctx.stroke(); + }); + } + + // Draw direction arrows if enabled and available + if (show_direction_arrows && current_frame.direction_arrow) { + const arrow = current_frame.direction_arrow; + const intensity_colors = { + low: { color: "rgba(0, 255, 127, 0.9)", glow: "rgba(0, 255, 127, 0.4)" }, // Spring green + medium: { color: "rgba(255, 140, 0, 0.9)", glow: "rgba(255, 140, 0, 0.4)" }, // Dark orange + high: { color: "rgba(255, 20, 147, 0.9)", glow: "rgba(255, 20, 147, 0.4)" } // Deep pink + }; + + const arrowStyle = intensity_colors[arrow.intensity as keyof typeof intensity_colors] || + { color: "rgba(255, 255, 255, 0.9)", glow: "rgba(255, 255, 255, 0.4)" }; + + const startX = arrow.start.x * scaleX; + const startY = arrow.start.y * scaleY; + const endX = arrow.end.x * scaleX; + const endY = arrow.end.y * scaleY; + const angle = Math.atan2(endY - startY, endX - startX); + + // arrow with glow and gradient + ctx.shadowColor = arrowStyle.glow; + ctx.shadowBlur = 12; + + // Create gradient along arrow direction + const gradient = ctx.createLinearGradient(startX, startY, endX, endY); + gradient.addColorStop(0, arrowStyle.color.replace('0.9', '0.6')); + gradient.addColorStop(0.7, arrowStyle.color); + gradient.addColorStop(1, arrowStyle.color.replace('0.9', '1.0')); + + ctx.strokeStyle = gradient; + ctx.lineWidth = 4; + ctx.lineCap = "round"; + + // Draw arrow shaft with elegant styling + ctx.beginPath(); + ctx.moveTo(startX, startY); + ctx.lineTo(endX, endY); + ctx.stroke(); + + // Draw enhanced arrow head + const headlen = 18; + const headWidth = Math.PI / 5; // Slightly wider head + + ctx.fillStyle = arrowStyle.color; + ctx.beginPath(); + ctx.moveTo(endX, endY); + ctx.lineTo( + endX - headlen * Math.cos(angle - headWidth), + endY - headlen * Math.sin(angle - headWidth) + ); + ctx.lineTo( + endX - headlen * 0.6 * Math.cos(angle), + endY - headlen * 0.6 * Math.sin(angle) + ); + ctx.lineTo( + endX - headlen * Math.cos(angle + headWidth), + endY - headlen * Math.sin(angle + headWidth) + ); + ctx.closePath(); + ctx.fill(); + + // Reset shadow + ctx.shadowBlur = 0; + } + } + + // JSON-only playback logic using FPS from data + function play_json() { + if (json_playing || frame_data.length <= 1) return; + json_playing = true; + json_play_interval = setInterval(() => { + if (frame_slider_value < frame_data.length - 1) { + frame_slider_value += 1; + } else { + frame_slider_value = 0; + } + }, 1000 / fps); // Use FPS from processed data + } + function pause_json() { + json_playing = false; + if (json_play_interval) clearInterval(json_play_interval); + } + + $: if (!show_video && json_playing) play_json(); + $: if (!json_playing) pause_json(); + + // Handle video time updates + function handleTimeUpdate() { + if (video) { + time = video.currentTime; + } + } + + onMount(() => { + return () => { + // Cleanup event listeners when component unmounts + if (video) { + video.removeEventListener("timeupdate", handleTimeUpdate); + } + }; + }); + + // Add event listener when video element is available + $: if (video) { + video.addEventListener("timeupdate", handleTimeUpdate); + } +</script> + +<div class="wrap"> + <div class="player-container" bind:this={player_container}> + {#if video_src && show_video} + <Video + src={video_src} + is_stream={false} + preload="auto" + {autoplay} + {loop} + on:click={() => (paused ? video.play() : video.pause())} + on:play + on:pause + bind:currentTime={time} + bind:duration + bind:paused + bind:node={video} + /> + {/if} + <canvas bind:this={canvas} class="overlay-canvas"></canvas> + {#if show_laban && frame_data[current_frame_index]?.laban_metrics} + <div class="laban-overlay"> + {#each Object.entries(frame_data[current_frame_index].laban_metrics) as [key, value]} + <div> + <span class="metric-label">{key.replace(/_/g, ' ')}:</span> + <span class="metric-value"> + {#if typeof value === 'object'} + {JSON.stringify(value)} + {:else if typeof value === 'number'} + {value.toFixed(2)} + {:else} + {value} + {/if} + </span> + </div> + {/each} + </div> + {/if} + </div> + <div class="controls"> + <div class="inner"> + {#if show_video} + <button + class="icon" + on:click={() => (paused ? video.play() : video.pause())} + aria-label="Play/Pause" + >{#if paused}<Play />{:else}<Pause />{/if}</button + > + <span class="time" + >{format_time(time)} / {format_time(duration || 0)}</span + > + <progress value={time / duration || 0} /> + {:else} + <button + class="icon" + on:click={() => (json_playing ? pause_json() : play_json())} + aria-label="Play/Pause" + >{#if !json_playing}<Play />{:else}<Pause />{/if}</button + > + <span class="time" + >{(frame_data[frame_slider_value]?.timestamp || 0).toFixed( + 2, + )}s</span + > + <input + type="range" + min="0" + max={frame_data.length > 1 ? frame_data.length - 1 : 1} + bind:value={frame_slider_value} + class="frame-slider" + /> + <span class="time">{(duration || 0).toFixed(2)}s</span> + {/if} + </div> + <div class="checkbox-row"> + <div class="checkbox-container"> + {#if video_src} + <input type="checkbox" id="show-video" bind:checked={show_video} /> + <label for="show-video">Video</label> + {/if} + <input type="checkbox" id="show-joints" bind:checked={show_joints} /> + <label for="show-joints">Joints</label> + <input type="checkbox" id="show-bones" bind:checked={show_bones} /> + <label for="show-bones">Bones</label> + <input type="checkbox" id="show-direction-arrows" bind:checked={show_direction_arrows} /> + <label for="show-direction-arrows">Arrows</label> + <input type="checkbox" id="show-motion-trails" bind:checked={show_motion_trails} /> + <label for="show-motion-trails">Trails</label> + <input type="checkbox" id="show-laban" bind:checked={show_laban} /> + <label for="show-laban">Laban</label> + </div> + </div> + </div> +</div> + +<style> + .wrap { + position: relative; + background: linear-gradient(135deg, var(--background-fill-secondary) 0%, var(--background-fill-primary) 100%); + height: 100%; + width: 100%; + border-radius: var(--radius-xl); + overflow: hidden; + display: flex; + flex-direction: column; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12); + border: 1px solid rgba(255, 255, 255, 0.1); + } + .player-container { + position: relative; + width: 100%; + background: linear-gradient(135deg, #000000 0%, #1a1a1a 100%); + display: flex; + align-items: center; + justify-content: center; + min-height: 420px; + max-height: 780px; + flex: 1 1 auto; + border-radius: var(--radius-lg) var(--radius-lg) 0 0; + overflow: hidden; + } + .player-container:not(:has(video)) { + aspect-ratio: var(--player-aspect-ratio, 16 / 9); + } + :global(.player-container video) { + display: block; + height: 100%; + width: 100%; + } + .overlay-canvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; + } + .controls { + width: 100%; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.02) 100%); + backdrop-filter: blur(10px); + border-top: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + flex-direction: column; + align-items: stretch; + padding-bottom: 0; + flex: 0 0 auto; + box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.15); + } + .inner { + display: flex; + justify-content: space-between; + align-items: center; + padding: 8px var(--size-4); + width: 100%; + min-height: 48px; + color: white; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + } + .icon { + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 50%; + padding: 8px; + margin: 0; + color: white; + cursor: pointer; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; + backdrop-filter: blur(5px); + } + .icon:hover { + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.4); + transform: scale(1.05); + } + .icon:active { + transform: scale(0.95); + } + .time { + margin: 0 var(--size-3); + font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace; + font-size: var(--text-sm); + font-weight: 500; + color: rgba(255, 255, 255, 0.9); + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + } + progress, + .frame-slider { + flex-grow: 1; + margin: 0 var(--size-4); + } + .checkbox-row { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0.05) 100%); + padding: 12px 0 14px 0; + border-top: 1px solid rgba(255, 255, 255, 0.05); + } + .checkbox-container { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: 24px; + background: none; + } + .checkbox-container label { + user-select: none; + font-size: var(--text-sm); + font-weight: 500; + cursor: pointer; + margin-right: 8px; + margin-left: 2px; + color: rgba(255, 255, 255, 0.85); + transition: color 0.2s ease; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + } + .checkbox-container label:hover { + color: rgba(255, 255, 255, 1); + } + .checkbox-container input[type="checkbox"] { + width: 18px; + height: 18px; + appearance: none; + background: rgba(255, 255, 255, 0.1); + border: 2px solid rgba(255, 255, 255, 0.3); + border-radius: 4px; + cursor: pointer; + position: relative; + transition: all 0.2s ease; + backdrop-filter: blur(5px); + } + .checkbox-container input[type="checkbox"]:checked { + background: linear-gradient(135deg, var(--color-accent, #8b5cf6) 0%, var(--color-accent-soft, #a78bfa) 100%); + border-color: var(--color-accent, #8b5cf6); + box-shadow: 0 2px 8px rgba(139, 92, 246, 0.3); + } + .checkbox-container input[type="checkbox"]:checked::after { + content: '✓'; + position: absolute; + top: -1px; + left: 2px; + color: white; + font-size: 12px; + font-weight: bold; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + } + .checkbox-container input[type="checkbox"]:hover { + border-color: rgba(255, 255, 255, 0.5); + transform: scale(1.05); + } + .checkbox-container input[type="checkbox"]:disabled { + opacity: 0.5; + cursor: not-allowed; + } + .laban-overlay { + position: absolute; + top: 16px; + left: 16px; + background: linear-gradient(135deg, rgba(0, 0, 0, 0.9) 0%, rgba(20, 20, 20, 0.9) 100%); + color: #fff; + padding: 14px 18px; + border-radius: 12px; + font-size: 13px; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + z-index: 10; + pointer-events: none; + min-width: 200px; + backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.15); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + } + .laban-overlay > div { + margin-bottom: 6px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 2px 0; + } + .laban-overlay > div:last-child { + margin-bottom: 0; + } + .laban-overlay > div:not(:last-child) { + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + padding-bottom: 6px; + } + .metric-label { + font-weight: 600; + text-transform: capitalize; + color: rgba(255, 255, 255, 0.7); + margin-right: 12px; + min-width: 90px; + font-size: 12px; + letter-spacing: 0.025em; + } + .metric-value { + font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace; + color: rgba(255, 255, 255, 0.95); + text-align: right; + font-weight: 500; + font-size: 12px; + background: rgba(255, 255, 255, 0.05); + padding: 2px 6px; + border-radius: 4px; + border: 1px solid rgba(255, 255, 255, 0.1); + } + /* Enhanced slider styling */ + .timeline-slider::-webkit-slider-thumb, + .frame-slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 20px; + height: 20px; + border-radius: 50%; + background: linear-gradient(135deg, var(--color-accent, #8b5cf6) 0%, var(--color-accent-soft, #a78bfa) 100%); + cursor: pointer; + border: 2px solid rgba(255, 255, 255, 0.9); + box-shadow: 0 2px 8px rgba(139, 92, 246, 0.3); + transition: all 0.2s ease; + } + + .timeline-slider::-webkit-slider-thumb:hover, + .frame-slider::-webkit-slider-thumb:hover { + transform: scale(1.1); + box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4); + } +</style> diff --git a/src/frontend/shared/Video.svelte b/src/frontend/shared/Video.svelte new file mode 100644 index 0000000000000000000000000000000000000000..5a80571b507405f4bb4318c3eb708400f63b0a7b --- /dev/null +++ b/src/frontend/shared/Video.svelte @@ -0,0 +1,202 @@ +<script lang="ts"> + import type { HTMLVideoAttributes } from "svelte/elements"; + import { createEventDispatcher } from "svelte"; + import { loaded } from "./utils"; + + import { resolve_wasm_src } from "@gradio/wasm/svelte"; + + import Hls from "hls.js"; + + export let src: HTMLVideoAttributes["src"] = undefined; + + export let muted: HTMLVideoAttributes["muted"] = undefined; + export let playsinline: HTMLVideoAttributes["playsinline"] = undefined; + export let preload: HTMLVideoAttributes["preload"] = undefined; + export let autoplay: HTMLVideoAttributes["autoplay"] = undefined; + export let controls: HTMLVideoAttributes["controls"] = undefined; + + export let currentTime: number | undefined = undefined; + export let duration: number | undefined = undefined; + export let paused: boolean | undefined = undefined; + + export let node: HTMLVideoElement | undefined = undefined; + export let loop: boolean; + export let is_stream; + + export let processingVideo = false; + + let resolved_src: typeof src; + let stream_active = false; + + // The `src` prop can be updated before the Promise from `resolve_wasm_src` is resolved. + // In such a case, the resolved value for the old `src` has to be discarded, + // This variable `latest_src` is used to pick up only the value resolved for the latest `src` prop. + let latest_src: typeof src; + $: { + // In normal (non-Wasm) Gradio, the `<img>` element should be rendered with the passed `src` props immediately + // without waiting for `resolve_wasm_src()` to resolve. + // If it waits, a blank element is displayed until the async task finishes + // and it leads to undesirable flickering. + // So set `src` to `resolved_src` here. + resolved_src = src; + + latest_src = src; + const resolving_src = src; + resolve_wasm_src(resolving_src).then((s) => { + if (latest_src === resolving_src) { + resolved_src = s; + } + }); + } + + const dispatch = createEventDispatcher(); + + function load_stream( + src: string | null | undefined, + is_stream: boolean, + node: HTMLVideoElement + ): void { + if (!src || !is_stream) return; + + if (Hls.isSupported() && !stream_active) { + const hls = new Hls({ + maxBufferLength: 1, // 0.5 seconds (500 ms) + maxMaxBufferLength: 1, // Maximum max buffer length in seconds + lowLatencyMode: true // Enable low latency mode + }); + hls.loadSource(src); + hls.attachMedia(node); + hls.on(Hls.Events.MANIFEST_PARSED, function () { + (node as HTMLVideoElement).play(); + }); + hls.on(Hls.Events.ERROR, function (event, data) { + console.error("HLS error:", event, data); + if (data.fatal) { + switch (data.type) { + case Hls.ErrorTypes.NETWORK_ERROR: + console.error( + "Fatal network error encountered, trying to recover" + ); + hls.startLoad(); + break; + case Hls.ErrorTypes.MEDIA_ERROR: + console.error("Fatal media error encountered, trying to recover"); + hls.recoverMediaError(); + break; + default: + console.error("Fatal error, cannot recover"); + hls.destroy(); + break; + } + } + }); + stream_active = true; + } + } + + $: src, (stream_active = false); + + $: if (node && src && is_stream) { + load_stream(src, is_stream, node); + } +</script> + +<!-- +The spread operator with `$$props` or `$$restProps` can't be used here +to pass props from the parent component to the <video> element +because of its unexpected behavior: https://github.com/sveltejs/svelte/issues/7404 +For example, if we add {...$$props} or {...$$restProps}, the boolean props aside it like `controls` will be compiled as string "true" or "false" on the actual DOM. +Then, even when `controls` is false, the compiled DOM would be `<video controls="false">` which is equivalent to `<video controls>` since the string "false" is even truthy. +--> +<div class:hidden={!processingVideo} class="overlay"> + <span class="load-wrap"> + <span class="loader" /> + </span> +</div> +<video + src={resolved_src} + {muted} + {playsinline} + {preload} + {autoplay} + {controls} + {loop} + on:loadeddata={dispatch.bind(null, "loadeddata")} + on:click={dispatch.bind(null, "click")} + on:play={dispatch.bind(null, "play")} + on:pause={dispatch.bind(null, "pause")} + on:ended={dispatch.bind(null, "ended")} + on:mouseover={dispatch.bind(null, "mouseover")} + on:mouseout={dispatch.bind(null, "mouseout")} + on:focus={dispatch.bind(null, "focus")} + on:blur={dispatch.bind(null, "blur")} + on:error={dispatch.bind(null, "error", "Video not playable")} + on:loadstart + on:loadeddata + on:loadedmetadata + bind:currentTime + bind:duration + bind:paused + bind:this={node} + use:loaded={{ autoplay: autoplay ?? false }} + data-testid={$$props["data-testid"]} + crossorigin="anonymous" +> + <slot /> +</video> + +<style> + .overlay { + position: absolute; + background-color: rgba(0, 0, 0, 0.4); + width: 100%; + height: 100%; + } + + .hidden { + display: none; + } + + .load-wrap { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + } + + .loader { + display: flex; + position: relative; + background-color: var(--border-color-accent-subdued); + animation: shadowPulse 2s linear infinite; + box-shadow: + -24px 0 var(--border-color-accent-subdued), + 24px 0 var(--border-color-accent-subdued); + margin: var(--spacing-md); + border-radius: 50%; + width: 10px; + height: 10px; + scale: 0.5; + } + + @keyframes shadowPulse { + 33% { + box-shadow: + -24px 0 var(--border-color-accent-subdued), + 24px 0 #fff; + background: #fff; + } + 66% { + box-shadow: + -24px 0 #fff, + 24px 0 #fff; + background: var(--border-color-accent-subdued); + } + 100% { + box-shadow: + -24px 0 #fff, + 24px 0 var(--border-color-accent-subdued); + background: #fff; + } + } +</style> diff --git a/src/frontend/shared/index.ts b/src/frontend/shared/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..979dcd6831de9101415b198eba0ad286d658211a --- /dev/null +++ b/src/frontend/shared/index.ts @@ -0,0 +1 @@ +export { default as Video } from "./Video.svelte"; diff --git a/src/frontend/shared/utils.ts b/src/frontend/shared/utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..7aea000d9f5b2bcda29d7f1a1316dfb0858df29b --- /dev/null +++ b/src/frontend/shared/utils.ts @@ -0,0 +1,151 @@ +import { toBlobURL } from "@ffmpeg/util"; +import { FFmpeg } from "@ffmpeg/ffmpeg"; +import { lookup } from "mrmime"; + +export const prettyBytes = (bytes: number): string => { + let units = ["B", "KB", "MB", "GB", "PB"]; + let i = 0; + while (bytes > 1024) { + bytes /= 1024; + i++; + } + let unit = units[i]; + return bytes.toFixed(1) + " " + unit; +}; + +export const playable = (): boolean => { + // TODO: Fix this + // let video_element = document.createElement("video"); + // let mime_type = mime.lookup(filename); + // return video_element.canPlayType(mime_type) != ""; + return true; // FIX BEFORE COMMIT - mime import causing issues +}; + +export function loaded( + node: HTMLVideoElement, + { autoplay }: { autoplay: boolean } +): any { + async function handle_playback(): Promise<void> { + if (!autoplay) return; + await node.play(); + } + + node.addEventListener("loadeddata", handle_playback); + + return { + destroy(): void { + node.removeEventListener("loadeddata", handle_playback); + } + }; +} + +export default async function loadFfmpeg(): Promise<FFmpeg> { + const ffmpeg = new FFmpeg(); + const baseURL = "https://unpkg.com/@ffmpeg/core@0.12.4/dist/esm"; + + await ffmpeg.load({ + coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, "text/javascript"), + wasmURL: await toBlobURL(`${baseURL}/ffmpeg-core.wasm`, "application/wasm") + }); + + return ffmpeg; +} + +export function blob_to_data_url(blob: Blob): Promise<string> { + return new Promise((fulfill, reject) => { + let reader = new FileReader(); + reader.onerror = reject; + reader.onload = () => fulfill(reader.result as string); + reader.readAsDataURL(blob); + }); +} + +export async function trimVideo( + ffmpeg: FFmpeg, + startTime: number, + endTime: number, + videoElement: HTMLVideoElement +): Promise<any> { + const videoUrl = videoElement.src; + const mimeType = lookup(videoElement.src) || "video/mp4"; + const blobUrl = await toBlobURL(videoUrl, mimeType); + const response = await fetch(blobUrl); + const vidBlob = await response.blob(); + const type = getVideoExtensionFromMimeType(mimeType) || "mp4"; + const inputName = `input.${type}`; + const outputName = `output.${type}`; + + try { + if (startTime === 0 && endTime === 0) { + return vidBlob; + } + + await ffmpeg.writeFile( + inputName, + new Uint8Array(await vidBlob.arrayBuffer()) + ); + + let command = [ + "-i", + inputName, + ...(startTime !== 0 ? ["-ss", startTime.toString()] : []), + ...(endTime !== 0 ? ["-to", endTime.toString()] : []), + "-c:a", + "copy", + outputName + ]; + + await ffmpeg.exec(command); + const outputData = await ffmpeg.readFile(outputName); + const outputBlob = new Blob([outputData], { + type: `video/${type}` + }); + + return outputBlob; + } catch (error) { + console.error("Error initializing FFmpeg:", error); + return vidBlob; + } +} + +const getVideoExtensionFromMimeType = (mimeType: string): string | null => { + const videoMimeToExtensionMap: { [key: string]: string } = { + "video/mp4": "mp4", + "video/webm": "webm", + "video/ogg": "ogv", + "video/quicktime": "mov", + "video/x-msvideo": "avi", + "video/x-matroska": "mkv", + "video/mpeg": "mpeg", + "video/3gpp": "3gp", + "video/3gpp2": "3g2", + "video/h261": "h261", + "video/h263": "h263", + "video/h264": "h264", + "video/jpeg": "jpgv", + "video/jpm": "jpm", + "video/mj2": "mj2", + "video/mpv": "mpv", + "video/vnd.ms-playready.media.pyv": "pyv", + "video/vnd.uvvu.mp4": "uvu", + "video/vnd.vivo": "viv", + "video/x-f4v": "f4v", + "video/x-fli": "fli", + "video/x-flv": "flv", + "video/x-m4v": "m4v", + "video/x-ms-asf": "asf", + "video/x-ms-wm": "wm", + "video/x-ms-wmv": "wmv", + "video/x-ms-wmx": "wmx", + "video/x-ms-wvx": "wvx", + "video/x-sgi-movie": "movie", + "video/x-smv": "smv" + }; + + return videoMimeToExtensionMap[mimeType] || null; +}; + +export interface WebcamOptions { + mirror: boolean; + constraints: Record<string, any>; +} diff --git a/src/frontend/tsconfig.json b/src/frontend/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..04273573e42fee3c99beacec3faf9ab94320148a --- /dev/null +++ b/src/frontend/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "verbatimModuleSyntax": true + }, + "exclude": ["node_modules", "dist", "./gradio.config.js"] +} diff --git a/src/pyproject.toml b/src/pyproject.toml new file mode 100644 index 0000000000000000000000000000000000000000..2ce8805aa6985cfd46c6fa120d6c2f52607eddfd --- /dev/null +++ b/src/pyproject.toml @@ -0,0 +1,51 @@ +[build-system] +requires = [ + "hatchling", + "hatch-requirements-txt", + "hatch-fancy-pypi-readme>=22.5.0", +] +build-backend = "hatchling.build" + +[project] +name = "gradio_overlay_video" +version = "0.0.8" +description = "overlayed video controller" +readme = "README.md" +license = "apache-2.0" +requires-python = ">=3.10" +authors = [{ name = "Csaba Bolyós", email = "bladeszasza@gmail.com" }] +keywords = ["gradio-custom-component", "gradio-5", "laban-movement-analysis", "pose visualisation", "pose-estimation", "movement-visualisation", "visualisation", "video"] +# Add dependencies here +dependencies = ["gradio>=5.0,<6.0"] +classifiers = [ + 'Development Status :: 3 - Alpha', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3 :: Only', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Topic :: Scientific/Engineering', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + 'Topic :: Scientific/Engineering :: Visualization', +] + +# The repository and space URLs are optional, but recommended. +# Adding a repository URL will create a badge in the auto-generated README that links to the repository. +# Adding a space URL will create a badge in the auto-generated README that links to the space. +# This will make it easy for people to find your deployed demo or source code when they +# encounter your project in the wild. + +# [project.urls] +# repository = "your github repository" +# space = "your space url" + +[project.optional-dependencies] +dev = ["build", "twine"] + +[tool.hatch.build] +artifacts = ["/backend/gradio_overlay_video/templates", "*.pyi"] + +[tool.hatch.build.targets.wheel] +packages = ["/backend/gradio_overlay_video"]