mutarisi commited on
Commit
7b30cad
·
1 Parent(s): 2d9ae59

all files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +10 -0
  2. README.md +13 -0
  3. ai_model/README.md +21 -0
  4. ai_model/jz_model/JZLSTM.py +85 -0
  5. ai_model/jz_model/collectLandmarks.py +64 -0
  6. ai_model/llm/__pycache__/glossToEnglish.cpython-312.pyc +0 -0
  7. ai_model/llm/converterUsage.py +6 -0
  8. ai_model/llm/glossToEnglish.py +17 -0
  9. ai_model/models/detectLettersModel.py +89 -0
  10. ai_model/models/detectNumbersModel.py +57 -0
  11. ai_model/pre_processing/extractVideoLandmarks.py +67 -0
  12. ai_model/pre_processing/processFineTune.py +60 -0
  13. ai_model/pre_processing/processTestData.py +75 -0
  14. ai_model/pre_processing/processTrainData.py +64 -0
  15. ai_model/words/README copy.md +75 -0
  16. ai_model/words/README.md +33 -0
  17. ai_model/words/WLASL_parser.py +132 -0
  18. ai_model/words/WLASL_v0.3.json +3 -0
  19. ai_model/words/analyze_durations.py +59 -0
  20. ai_model/words/combine_datasets.py +92 -0
  21. ai_model/words/create_personal_dataset_csv.py +241 -0
  22. ai_model/words/data_preprocessor.py +232 -0
  23. ai_model/words/landmark_extractor.py +183 -0
  24. ai_model/words/list_dataset_videos.py +57 -0
  25. ai_model/words/list_glosses.py +62 -0
  26. ai_model/words/missing.txt +9103 -0
  27. ai_model/words/nslt_100.json +0 -0
  28. ai_model/words/nslt_1000.json +0 -0
  29. ai_model/words/nslt_2000.json +0 -0
  30. ai_model/words/nslt_300.json +0 -0
  31. ai_model/words/realtime_translator.py +319 -0
  32. ai_model/words/record of results.xlsx +0 -0
  33. ai_model/words/record_personal_data.py +166 -0
  34. ai_model/words/saved_models/best_sign_classifier_model.keras +3 -0
  35. ai_model/words/saved_models/best_sign_classifier_model_10_words_combined_seq90.keras +3 -0
  36. ai_model/words/saved_models/best_sign_classifier_model_10_words_seq90.keras +3 -0
  37. ai_model/words/saved_models/best_sign_classifier_model_125_words_seq90.keras +3 -0
  38. ai_model/words/saved_models/best_sign_classifier_model_20_words_optimized_seq90.keras +3 -0
  39. ai_model/words/saved_models/best_sign_classifier_model_20_words_seq90.keras +3 -0
  40. ai_model/words/saved_models/best_sign_classifier_model_30_words_seq90.keras +3 -0
  41. ai_model/words/saved_models/best_sign_classifier_model_40_words_seq90.keras +3 -0
  42. ai_model/words/saved_models/best_sign_classifier_model_improved.keras +3 -0
  43. ai_model/words/saved_models/best_sign_classifier_model_nslt300.keras +3 -0
  44. ai_model/words/saved_models/normalization_params.npz +3 -0
  45. ai_model/words/saved_models/training_history_optimized.png +0 -0
  46. ai_model/words/train_classifier.py +127 -0
  47. ai_model/words/visualize_npy.py +126 -0
  48. ai_model/words/wlasl_10_words_combined_processed.csv +940 -0
  49. ai_model/words/wlasl_10_words_processed.csv +90 -0
  50. ai_model/words/wlasl_125_words_personal_final_processed_data_augmented_seq90.csv +0 -0
.gitattributes CHANGED
@@ -33,3 +33,13 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ <<<<<<< HEAD
37
+ *.keras filter=lfs diff=lfs merge=lfs -text
38
+ ai_model/models/*.keras filter=lfs diff=lfs merge=lfs -text
39
+ ai_model/models/*.pickle filter=lfs diff=lfs merge=lfs -text
40
+ ai_model/alphabet_model/*.keras filter=lfs diff=lfs merge=lfs -text
41
+ ai_model/alphabet_model/*.pickle filter=lfs diff=lfs merge=lfs -text
42
+ ai_model/llm/glosses/train.csv filter=lfs diff=lfs merge=lfs -text
43
+ ai_model/words/WLASL_v0.3.json filter=lfs diff=lfs merge=lfs -text
44
+ =======
45
+ >>>>>>> 2d9ae59c354470381bb789385838571677cfd5a3
README.md CHANGED
@@ -1,4 +1,16 @@
1
  ---
 
 
 
 
 
 
 
 
 
 
 
 
2
  title: NewHandsupModel
3
  emoji: 😻
4
  colorFrom: gray
@@ -8,6 +20,7 @@ sdk_version: 5.44.1
8
  app_file: app.py
9
  pinned: false
10
  short_description: 'new model will be here '
 
11
  ---
12
 
13
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ <<<<<<< HEAD
3
+ title: Handsup Model
4
+ emoji: 😻
5
+ colorFrom: purple
6
+ colorTo: red
7
+ sdk: gradio
8
+ sdk_version: 5.42.0
9
+ app_file: app.py
10
+ pinned: false
11
+ short_description: where ai_models will be hosted
12
+ python_version: "3.11.0"
13
+ =======
14
  title: NewHandsupModel
15
  emoji: 😻
16
  colorFrom: gray
 
20
  app_file: app.py
21
  pinned: false
22
  short_description: 'new model will be here '
23
+ >>>>>>> 2d9ae59c354470381bb789385838571677cfd5a3
24
  ---
25
 
26
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
ai_model/README.md ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Installations
2
+ Author: Karabo
3
+
4
+ ## Istallations in Windows
5
+ 1. python3 -m pip install opencv-python
6
+ 2. opencv-python-headless
7
+ 3. python3 -m pip install mediapipe
8
+ 4. python3 -m pip install tensorflow
9
+ 5. python3 -m pip install flask
10
+ 6. python3 -m pip install python-dotenv
11
+ 7. python3 -m pip install flask-cors
12
+ 8. python3 -m pip install collections
13
+ 9. python3 -m pip install datasets
14
+ 10. python3 -m pip install transformers
15
+ 11. python3 -m pip install torch torchvision torchaudio
16
+ 12. python3 -m pip install 'accelerate>=0.26.0'
17
+ 13. python3 -m pip install peft
18
+ 14. python3 -m pip install python-dotenv
19
+ 15. python3 -m pip install openai
20
+
21
+
ai_model/jz_model/JZLSTM.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pickle
3
+ import numpy as np
4
+ import tensorflow as tf
5
+ from sklearn.model_selection import train_test_split
6
+ from sklearn.preprocessing import LabelEncoder
7
+ from tensorflow.keras.models import Sequential
8
+ from tensorflow.keras.layers import LSTM, Dense
9
+ from tensorflow.keras.callbacks import TensorBoard
10
+ from tensorflow.keras.utils import to_categorical
11
+ from sklearn.metrics import accuracy_score
12
+
13
+ DATADIR = os.path.join('J_Z')
14
+ actions = ['J','Z']
15
+ sequenceLength = 20
16
+
17
+ x, y = [], []
18
+
19
+ for action in actions:
20
+ actionPath = os.path.join(DATADIR, action)
21
+
22
+ for sequence in os.listdir(actionPath):
23
+ sequencePath = os.path.join(actionPath, sequence)
24
+ frames = sorted(os.listdir(sequencePath), key=lambda x: int(os.path.splitext(x)[0]))
25
+
26
+ if len(frames) < sequenceLength:
27
+ continue
28
+
29
+ sequenceData = []
30
+ for frame in frames[:sequenceLength]:
31
+ framePath = os.path.join(sequencePath, frame)
32
+ keypoints = np.load(framePath)
33
+ keypoints = keypoints[:63]
34
+ sequenceData.append(keypoints)
35
+
36
+ x.append(sequenceData)
37
+ y.append(action)
38
+
39
+ x = np.array(x)
40
+ y = np.array(y)
41
+
42
+ featureLength = x.shape[2]
43
+
44
+ labelEncoder = LabelEncoder()
45
+ yInt = labelEncoder.fit_transform(y)
46
+ yCategorical = to_categorical(yInt)
47
+
48
+ with open("labelEncoder.pickle", "wb") as f:
49
+ pickle.dump(labelEncoder, f)
50
+
51
+ print("Label mapping:")
52
+ for i, label in enumerate(labelEncoder.classes_):
53
+ print(f"{i}: {label}")
54
+
55
+ XTrain, XTest, yTrain, yTest = train_test_split(x, yCategorical, test_size=0.2, random_state=42)
56
+
57
+ # logDir = os.path.join('Logs')
58
+ # tbCallback = TensorBoard(log_dir=logDir)
59
+
60
+ model = Sequential([
61
+ tf.keras.Input(shape=(sequenceLength, featureLength)),
62
+ LSTM(64, return_sequences=True, activation='relu'),
63
+ LSTM(128, return_sequences=True, activation='relu'),
64
+ LSTM(64, return_sequences=False, activation='relu'),
65
+ Dense(64, activation='relu'),
66
+ Dense(32, activation='relu'),
67
+ Dense(yCategorical.shape[1], activation='softmax')
68
+ ])
69
+
70
+ model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['categorical_accuracy'])
71
+
72
+ model.fit(XTrain, yTrain, epochs=30)
73
+
74
+ model.summary()
75
+
76
+ model.save('JZModel.keras')
77
+
78
+ yPred = model.predict(XTest)
79
+ predictedInts = np.argmax(yPred, axis=1)
80
+ actualInts = np.argmax(yTest, axis=1)
81
+
82
+ predictedLabels = labelEncoder.inverse_transform(predictedInts)
83
+ actualLabels = labelEncoder.inverse_transform(actualInts)
84
+
85
+ print("Test Accuracy:", accuracy_score(actualLabels, predictedLabels))
ai_model/jz_model/collectLandmarks.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import numpy as np
3
+ import cv2
4
+ import mediapipe as mp
5
+
6
+ actions = ['J']
7
+ noSequences = 30
8
+ sequenceLength = 20
9
+ startFolder = 0
10
+
11
+ DATADIR = os.path.join('J_Z')
12
+
13
+ for action in actions:
14
+ for sequence in range(startFolder, startFolder + noSequences):
15
+ os.makedirs(os.path.join(DATADIR, action, str(sequence)), exist_ok=True)
16
+
17
+ def mediapipeDetection(image, model):
18
+ image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
19
+ image.flags.writeable = False
20
+ results = model.process(image)
21
+ image.flags.writeable = True
22
+ image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
23
+ return image, results
24
+
25
+ def drawStyledLandmarks(image, results):
26
+ mpDrawing = mp.solutions.drawing_utils
27
+ mpDrawingStyles = mp.solutions.drawing_styles
28
+
29
+ if results.right_hand_landmarks:
30
+ mpDrawing.draw_landmarks(image, results.right_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
31
+
32
+ def extractKeypoints(results):
33
+ rh = np.array([[res.x, res.y, res.z] for res in results.right_hand_landmarks.landmark]).flatten() if results.right_hand_landmarks else np.zeros(21*3)
34
+ return rh
35
+
36
+
37
+ cap = cv2.VideoCapture(0)
38
+ with mp.solutions.holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.3) as holistic:
39
+
40
+ for action in actions:
41
+ for sequence in range(startFolder, startFolder + noSequences):
42
+ print(f"Collecting for {action}, sequence {sequence}")
43
+ for frameNum in range(sequenceLength):
44
+
45
+ ret, frame = cap.read()
46
+ image, results = mediapipeDetection(frame, holistic)
47
+ drawStyledLandmarks(image, results)
48
+
49
+ if frameNum == 0:
50
+ cv2.putText(image, 'STARTING COLLECTION', (120,200), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 4, cv2.LINE_AA)
51
+ cv2.imshow('OpenCV Feed', image)
52
+ cv2.waitKey(1000)
53
+ else:
54
+ cv2.putText(image, f'Collecting {action}, Video #{sequence}', (10, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0,0,255), 2, cv2.LINE_AA)
55
+ cv2.imshow('OpenCV Feed', image)
56
+
57
+ keypoints = extractKeypoints(results)
58
+ np.save(os.path.join(DATADIR, action, str(sequence), str(frameNum)), keypoints)
59
+
60
+ if cv2.waitKey(10) & 0xFF == ord('q'):
61
+ break
62
+
63
+ cap.release()
64
+ cv2.destroyAllWindows()
ai_model/llm/__pycache__/glossToEnglish.cpython-312.pyc ADDED
Binary file (1.11 kB). View file
 
ai_model/llm/converterUsage.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from glossToEnglish import translateGloss
2
+
3
+ glossInput = "APPLE TABLE ON"
4
+ translation = translateGloss(glossInput)
5
+
6
+ print("Translation:", translation)
ai_model/llm/glossToEnglish.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import dotenv
3
+ from openai import OpenAI
4
+
5
+ dotenv.load_dotenv()
6
+
7
+ client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
8
+
9
+ def translateGloss(gloss: str, model: str = "o3-mini") -> str:
10
+
11
+ response = client.chat.completions.create(
12
+ model=model,
13
+ messages=[
14
+ {"role": "user", "content": f"Translate this asl gloss to English: '{gloss}, output as 'English sentence : '"}
15
+ ]
16
+ )
17
+ return response.choices[0].message.content
ai_model/models/detectLettersModel.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ import numpy as np
3
+ import tensorflow as tf
4
+ from sklearn.preprocessing import LabelEncoder
5
+ from sklearn.metrics import accuracy_score
6
+ from tensorflow.keras.callbacks import EarlyStopping
7
+
8
+ early_stop = EarlyStopping(patience=2, restore_best_weights=True)
9
+
10
+ dataDictTrain = pickle.load(open('../processed_data/trainData.pickle', 'rb'))
11
+
12
+ cleanedData = []
13
+ cleanedLabels = []
14
+ for i, item in enumerate(dataDictTrain['data']):
15
+ if isinstance(item, (np.ndarray, list)) and len(item) == 42:
16
+ cleanedData.append(np.array(item, dtype=np.float32))
17
+ cleanedLabels.append(dataDictTrain['labels'][i])
18
+
19
+ xTrain = np.array(cleanedData)
20
+ yTrainRaw = np.array(cleanedLabels)
21
+
22
+ dataDictTest = pickle.load(open('../processed_data/testData.pickle', 'rb'))
23
+ xTestRaw = np.array(dataDictTest['data'], dtype=np.float32)
24
+ yTestRaw = np.array(dataDictTest['labels'])
25
+
26
+ xTrain = xTrain.reshape(-1, 42, 1)
27
+ xTest = xTestRaw.reshape(-1, 42, 1)
28
+
29
+ labelEncoder = LabelEncoder()
30
+ labelEncoder.fit(yTrainRaw)
31
+
32
+ yTrainEncoded = labelEncoder.transform(yTrainRaw)
33
+ yTestEncoded = labelEncoder.transform(yTestRaw)
34
+
35
+ #second data set for finetuning
36
+ dataDictTrain2 = pickle.load(open('../processed_data/fineTuneData.pickle', 'rb'))
37
+
38
+ cleanedData2 = []
39
+ cleanedLabels2 = []
40
+ for i, item in enumerate(dataDictTrain2['data']):
41
+ if isinstance(item, (np.ndarray, list)) and len(item) == 42:
42
+ cleanedData2.append(np.array(item, dtype=np.float32))
43
+ cleanedLabels2.append(dataDictTrain2['labels'][i])
44
+
45
+ xTrain2 = np.stack(cleanedData2)
46
+ yTrainRaw2= np.array(cleanedLabels2)
47
+
48
+ xTrain2 = xTrain2.reshape(-1, 42, 1)
49
+
50
+ labelEncoder2 = LabelEncoder()
51
+ labelEncoder2.fit(yTrainRaw2)
52
+
53
+ yTrainEncoded2 = labelEncoder2.transform(yTrainRaw2)
54
+
55
+ model = tf.keras.models.Sequential([
56
+ tf.keras.layers.Conv1D(32, kernel_size=3, activation='relu', input_shape=(42, 1)),
57
+ tf.keras.layers.MaxPooling1D(pool_size=2),
58
+ tf.keras.layers.Conv1D(64, kernel_size=3, activation='relu'),
59
+ tf.keras.layers.Flatten(),
60
+ tf.keras.layers.Dense(64, activation='relu'),
61
+ tf.keras.layers.Dense(len(labelEncoder.classes_), activation='softmax')
62
+ ])
63
+
64
+ model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
65
+ model.fit(xTrain, yTrainEncoded, epochs=15, batch_size=32, validation_split=0.2)
66
+
67
+ for layer in model.layers[:-2]:
68
+ layer.trainable = False
69
+
70
+ model.compile(optimizer=tf.keras.optimizers.Adam(1e-5),loss='sparse_categorical_crossentropy',metrics=['accuracy'])
71
+
72
+ yTrainEncoded2 = labelEncoder2.transform(yTrainRaw2)
73
+
74
+ model.fit(xTrain2, yTrainEncoded2, epochs=10, batch_size=32, validation_split=0.2, callbacks = [early_stop])
75
+
76
+ testLoss, testAccuracy = model.evaluate(xTest, yTestEncoded)
77
+ print(f"\nTest accuracy: {testAccuracy * 100:.2f}%")
78
+
79
+ predictions = model.predict(xTest)
80
+ predictedIndex = np.argmax(predictions, axis=1)
81
+ predictedLabels = labelEncoder.inverse_transform(predictedIndex)
82
+
83
+ print("\nPredictions:")
84
+ for i, pred in enumerate(predictedLabels):
85
+ print(f"Image {i}: Predicted = {pred}, Actual = {yTestRaw[i]}")
86
+
87
+ model.save("detectLettersModel.keras")
88
+ with open("labelEncoder.pickle", "wb") as file:
89
+ pickle.dump(labelEncoder, file)
ai_model/models/detectNumbersModel.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ import numpy as np
3
+ import tensorflow as tf
4
+ from sklearn.preprocessing import LabelEncoder
5
+ from sklearn.metrics import accuracy_score
6
+
7
+ dataDictTrain = pickle.load(open('../processed_data/numTrainData.pickle', 'rb'))
8
+
9
+ cleanedData = []
10
+ cleanedLabels = []
11
+ for i, item in enumerate(dataDictTrain['data']):
12
+ if isinstance(item, (np.ndarray, list)) and len(item) == 42:
13
+ cleanedData.append(np.array(item, dtype=np.float32))
14
+ cleanedLabels.append(dataDictTrain['labels'][i])
15
+
16
+ xTrain = np.array(cleanedData)
17
+ yTrainRaw = np.array(cleanedLabels)
18
+
19
+ dataDictTest = pickle.load(open('../processed_data/numTestData.pickle', 'rb'))
20
+ xTestRaw = np.array(dataDictTest['data'], dtype=np.float32)
21
+ yTestRaw = np.array(dataDictTest['labels'])
22
+
23
+ xTrain = xTrain.reshape(-1, 42, 1)
24
+ xTest = xTestRaw.reshape(-1, 42, 1)
25
+
26
+ labelEncoder = LabelEncoder()
27
+ labelEncoder.fit(yTrainRaw)
28
+
29
+ yTrainEncoded = labelEncoder.transform(yTrainRaw)
30
+ yTestEncoded = labelEncoder.transform(yTestRaw)
31
+
32
+ model = tf.keras.models.Sequential([
33
+ tf.keras.layers.Conv1D(32, kernel_size=3, activation='relu', input_shape=(42, 1)),
34
+ tf.keras.layers.MaxPooling1D(pool_size=2),
35
+ tf.keras.layers.Conv1D(64, kernel_size=3, activation='relu'),
36
+ tf.keras.layers.Flatten(),
37
+ tf.keras.layers.Dense(64, activation='relu'),
38
+ tf.keras.layers.Dense(len(labelEncoder.classes_), activation='softmax')
39
+ ])
40
+
41
+ model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
42
+ model.fit(xTrain, yTrainEncoded, epochs=15, batch_size=32, validation_split=0.2)
43
+
44
+ testLoss, testAccuracy = model.evaluate(xTest, yTestEncoded)
45
+ print(f"\nTest accuracy: {testAccuracy * 100:.2f}%")
46
+
47
+ predictions = model.predict(xTest)
48
+ predictedIndex = np.argmax(predictions, axis=1)
49
+ predictedLabels = labelEncoder.inverse_transform(predictedIndex)
50
+
51
+ print("\nPredictions:")
52
+ for i, pred in enumerate(predictedLabels):
53
+ print(f"Image {i}: Predicted = {pred}, Actual = {yTestRaw[i]}")
54
+
55
+ model.save("detectNumbersModel.keras")
56
+ with open("numLabelEncoder.pickle", "wb") as file:
57
+ pickle.dump(labelEncoder, file)
ai_model/pre_processing/extractVideoLandmarks.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import mediapipe as mp
3
+ import json
4
+ import os
5
+
6
+ def extractLandmarksFromVideo(videoPath, letter, outputDir='landmarks'):
7
+ mpHands = mp.solutions.hands
8
+ hands = mpHands.Hands(static_image_mode=False, max_num_hands=1, min_detection_confidence=0.5)
9
+ cap = cv2.VideoCapture(videoPath)
10
+
11
+ landmarksData = []
12
+
13
+ while cap.isOpened():
14
+ success, frame = cap.read()
15
+ if not success:
16
+ break
17
+
18
+ frame = cv2.flip(frame, 1)
19
+ imageRGB = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
20
+
21
+ results = hands.process(imageRGB)
22
+
23
+ frameLandmarks = []
24
+ if results.multi_hand_landmarks:
25
+ handLandmarks = results.multi_hand_landmarks[0]
26
+ for lm in handLandmarks.landmark:
27
+ frameLandmarks.append({
28
+ "x": lm.x,
29
+ "y": lm.y,
30
+ "z": lm.z,
31
+ })
32
+
33
+ if frameLandmarks:
34
+ landmarksData.append(frameLandmarks)
35
+
36
+ cap.release()
37
+ hands.close()
38
+
39
+ os.makedirs(outputDir, exist_ok=True)
40
+ outputFilename = f"{letter.upper()}.json"
41
+ outputPath = os.path.join(outputDir, outputFilename)
42
+ with open(outputPath, "w") as f:
43
+ json.dump({"frames": landmarksData}, f, indent=2)
44
+
45
+ print(f"Saved landmarks to {outputPath}")
46
+
47
+ def processAllVideosInDirectory(videoDirectory, outputDirectory='landmarks'):
48
+ if not os.path.isdir(videoDirectory):
49
+ print(f"Error: Video directory '{videoDirectory}' not found.")
50
+ return
51
+
52
+ os.makedirs(outputDirectory, exist_ok=True)
53
+
54
+ for filename in os.listdir(videoDirectory):
55
+ if filename.lower().endswith(('.mp4')):
56
+ videoPath = os.path.join(videoDirectory, filename)
57
+ letter = os.path.splitext(filename)[0]
58
+ print(f"Processing video: {filename} for letter: {letter}")
59
+ extractLandmarksFromVideo(videoPath, letter, outputDirectory)
60
+ else:
61
+ print(f"Skipping non-video file: {filename}")
62
+
63
+ if __name__ == "__main__":
64
+ videoInputDirectory = "../video_data"
65
+ landmarkOutputDirectory = "../processed_data/landmarks"
66
+
67
+ processAllVideosInDirectory(videoInputDirectory, landmarkOutputDirectory)
ai_model/pre_processing/processFineTune.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pickle
3
+
4
+ import mediapipe as mp
5
+ import cv2
6
+ import matplotlib.pyplot as plt
7
+
8
+ mpHands = mp.solutions.hands
9
+ mpDrawing = mp.solutions.drawing_utils
10
+ mpDrawingStyles = mp.solutions.drawing_styles
11
+
12
+ hands = mpHands.Hands(static_image_mode=True, min_detection_confidence=0.3)
13
+
14
+ DATADIR = '../letters_fine_tune'
15
+
16
+ data = []
17
+ labels = []
18
+ for dir in os.listdir(DATADIR):
19
+ for imgName in os.listdir(os.path.join(DATADIR, dir)):
20
+ dataAux = []
21
+
22
+ x_ = []
23
+ y_ = []
24
+
25
+ imgPath = os.path.join(DATADIR, dir, imgName)
26
+ print("Reading:", imgPath)
27
+
28
+ img = cv2.imread(imgPath)
29
+ if img is None:
30
+ print("Failed to load:", imgPath)
31
+ continue
32
+
33
+ imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
34
+
35
+ results = hands.process(imgRGB)
36
+ if results.multi_hand_landmarks:
37
+ for handLandmarks in results.multi_hand_landmarks:
38
+
39
+ for i in range(len(handLandmarks.landmark)):
40
+ x = handLandmarks.landmark[i].x
41
+ y = handLandmarks.landmark[i].y
42
+
43
+ x_.append(x)
44
+ y_.append(y)
45
+
46
+ for i in range(len(handLandmarks.landmark)):
47
+ x = handLandmarks.landmark[i].x
48
+ y = handLandmarks.landmark[i].y
49
+ dataAux.append(x - min(x_))
50
+ dataAux.append(y - min(y_))
51
+
52
+ data.append(dataAux)
53
+ labels.append(dir.strip().upper())
54
+
55
+ print(labels)
56
+
57
+ file = open('../processed_data/fineTuneData.pickle', 'wb')
58
+ pickle.dump({'data': data, 'labels': labels}, file)
59
+ file.close()
60
+
ai_model/pre_processing/processTestData.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ import mediapipe as mp
3
+ import cv2
4
+ import matplotlib.pyplot as plt
5
+ import os
6
+
7
+ mpHands = mp.solutions.hands
8
+ mpDrawing = mp.solutions.drawing_utils
9
+ mpDrawingStyles = mp.solutions.drawing_styles
10
+
11
+ # def brighten_image(img, factor=1.5):
12
+ # return cv2.convertScaleAbs(img, alpha=factor, beta=20)
13
+
14
+ hands = mpHands.Hands(static_image_mode=True, min_detection_confidence=0.3)
15
+
16
+ DATADIR = '../letters/asl_alphabet_test'
17
+
18
+ data = []
19
+ labels = []
20
+ for imgName in os.listdir(DATADIR):
21
+ dataAux = []
22
+
23
+ x_ = []
24
+ y_ = []
25
+
26
+ imgPath = os.path.join(DATADIR,imgName)
27
+ print("Reading:", imgPath)
28
+
29
+ img = cv2.imread(imgPath)
30
+ if img is None:
31
+ print("Failed to load:", imgPath)
32
+ continue
33
+
34
+ img = cv2.imread(imgPath)
35
+ imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
36
+
37
+ results = hands.process(imgRGB)
38
+ if results.multi_hand_landmarks:
39
+ for handLandmarks in results.multi_hand_landmarks:
40
+
41
+ mpDrawing.draw_landmarks(
42
+ img,
43
+ handLandmarks,
44
+ mpHands.HAND_CONNECTIONS,
45
+ mpDrawingStyles.get_default_hand_landmarks_style(),
46
+ mpDrawingStyles.get_default_hand_connections_style()
47
+ )
48
+
49
+ for i in range(len(handLandmarks.landmark)):
50
+ x = handLandmarks.landmark[i].x
51
+ y = handLandmarks.landmark[i].y
52
+
53
+ x_.append(x)
54
+ y_.append(y)
55
+
56
+ for i in range(len(handLandmarks.landmark)):
57
+ x = handLandmarks.landmark[i].x
58
+ y = handLandmarks.landmark[i].y
59
+ dataAux.append(x - min(x_))
60
+ dataAux.append(y - min(y_))
61
+
62
+ ind = imgName.find("test")
63
+
64
+ data.append(dataAux)
65
+ labels.append(imgName[0:ind-1].upper())
66
+
67
+ # cv2.imshow("Hand Landmarks", img)
68
+ # cv2.waitKey(0)
69
+ # cv2.destroyAllWindows()
70
+
71
+ print(labels)
72
+
73
+ file = open('../processed_data/testData.pickle', 'wb')
74
+ pickle.dump({'data': data, 'labels': labels}, file)
75
+ file.close()
ai_model/pre_processing/processTrainData.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pickle
3
+
4
+ import mediapipe as mp
5
+ import cv2
6
+ import matplotlib.pyplot as plt
7
+
8
+ mpHands = mp.solutions.hands
9
+ mpDrawing = mp.solutions.drawing_utils
10
+ mpDrawingStyles = mp.solutions.drawing_styles
11
+
12
+ hands = mpHands.Hands(static_image_mode=True, min_detection_confidence=0.3)
13
+
14
+ DATADIR = '../numbers/nums_test'
15
+
16
+ data = []
17
+ labels = []
18
+ for dir in os.listdir(DATADIR):
19
+ #if dir.strip().upper() == 'C': #Starting with C because dataset too big
20
+ for imgName in os.listdir(os.path.join(DATADIR, dir)):
21
+ dataAux = []
22
+
23
+ x_ = []
24
+ y_ = []
25
+
26
+ imgPath = os.path.join(DATADIR, dir, imgName)
27
+ print("Reading:", imgPath)
28
+
29
+ img = cv2.imread(imgPath)
30
+ if img is None:
31
+ print("Failed to load:", imgPath)
32
+ continue
33
+
34
+ img = cv2.imread(imgPath) # this iwwill read image and save to img variable
35
+ imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
36
+
37
+ results = hands.process(imgRGB)
38
+ if results.multi_hand_landmarks:
39
+ for handLandmarks in results.multi_hand_landmarks:
40
+
41
+ for i in range(len(handLandmarks.landmark)):
42
+ x = handLandmarks.landmark[i].x
43
+ y = handLandmarks.landmark[i].y
44
+
45
+ x_.append(x)
46
+ y_.append(y)
47
+
48
+ for i in range(len(handLandmarks.landmark)):
49
+ x = handLandmarks.landmark[i].x
50
+ y = handLandmarks.landmark[i].y
51
+ dataAux.append(x - min(x_))
52
+ dataAux.append(y - min(y_))
53
+
54
+ data.append(dataAux)
55
+ labels.append(dir.strip().upper())
56
+
57
+ # cv2.imshow("Hand Landmarks", img)
58
+ # cv2.waitKey(0)
59
+ print(labels)
60
+
61
+ file = open('../processed_data/numTestData.pickle', 'wb')
62
+ pickle.dump({'data': data, 'labels': labels}, file)
63
+ file.close()
64
+
ai_model/words/README copy.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MS-ASL: A Large-Scale Data Set and Benchmark for Understanding American Sign Language
2
+ ============================================================================================
3
+
4
+ This package containing the `MS-ASL dataset`, as proposed in MS-ASL: A Large-Scale Data Set and Benchmark for Understanding American Sign Language paper.
5
+ For more information visit [the website](https://www.microsoft.com/en-us/research/project/ms-asl/).
6
+
7
+ Contents
8
+ -----------------
9
+ The directory contains following files:
10
+
11
+ * `MSASL_train.json`: includes a json file of 16054 train samples.
12
+
13
+ * `MSASL_test.json`: includes a json file of 4172 test samples.
14
+
15
+ * `MSASL_val.json`: includes a json file of 5287 validation samples.
16
+
17
+ * `MSASL_classes.json`: includes a json file of 1000 glosses (words) representing classes in the classification task. The first word in the set (`hello`) is class 0 and the last world on the set (`challenge`) is class 999.
18
+
19
+ * `MSASL_synonym.json`: each row is a list of words that we considered synonym and assign a single class for all of them.
20
+
21
+ * `C-UDA-0.1_annotated_discussion.pdf`: the Computational Use of Data Agreement (C-UDA) lisense agreement.
22
+
23
+ * `README.md`: this file.
24
+
25
+
26
+ Structure
27
+ -----------------
28
+ Here is the structure of each sample clip in Train, test or validation sets.
29
+
30
+
31
+ {'url': a url link to the video
32
+ 'start_time': the starting point of the clip in the original video in seconds
33
+ 'end_time': the starting point of the clip in the original video in seconds
34
+ 'label': class (an integer between 0 to 1000)
35
+ 'signer_id': the id of the signer
36
+ 'box': the boudy bounding box of the signer such as [y0, x0, y1, x1] where (x0, y0) is up-left corner and (x1,y1) is bottom-right corner. All the values are normalized (between zero and one) according to width and height.
37
+ 'text': the gloss for this clip which match the 'label',
38
+ 'width': height for the original video
39
+ 'height': height for the original video
40
+ 'fps': frame per second for the original video
41
+ }
42
+
43
+ We are suggesting the width, height and fps because the labeling has been done based on them but since start and end are time base and box is normalize in theory this annotation works for arbitrary width, height and fps.
44
+
45
+
46
+ Subsets
47
+ ---------------
48
+ As mention in the paper this dataset includes 4 subsets: MS-ASL100, MS-ASL200, MS-ASL500 and MS-ASL1000.
49
+ To obtain each of these subsets you need to filter the train, test and validation based on the 'label'. This means that for MS-ASL100 just keep the samples with 'label' less that 100.
50
+
51
+
52
+ Credits
53
+ ---------------
54
+ Licensed under the Computational Use of Data Agreement (C-UDA). Plaese refer to C-UDA-0.1_annotated_discussion.pdf for more information.
55
+
56
+
57
+ Citation
58
+ --------------
59
+
60
+ Please cite this in your publications if it help your research:
61
+
62
+ `@InProceedings{vaezijoze2019ms-asl,
63
+ author = {Vaezi Joze, Hamid Reza and Koller, Oscar}
64
+ title = {MS-ASL: A Large-Scale Data Set and Benchmark for Understanding American Sign Language},
65
+ booktitle = {The British Machine Vision Conference (BMVC)},
66
+ year = {2019},
67
+ month = {September}
68
+ }`
69
+
70
+
71
+ Contacts
72
+ ------------------
73
+ - [Hamid Vaezi Joze](https://www.microsoft.com/en-us/research/people/hava/)
74
+ - [Oscar Koller](https://www.microsoft.com/en-us/research/people/oskoller/)
75
+
ai_model/words/README.md ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TO set up the enviroment:
2
+ python -m venv venv_signlang
3
+ your should see (venv-signlang)
4
+ run: pip install numpy opencv-python mediapipe pandas
5
+ next run: python.exe
6
+ and to check if its working :>>>
7
+ >>> import numpy
8
+ >>> import cv2
9
+ >>> import mediapipe
10
+ >>> import pandas
11
+ >>> print("All libraries imported successfully!")
12
+ you should see : All libraries imported successfully!
13
+
14
+ ENVIROMENT SETUP COMPLETE!!!
15
+
16
+
17
+ next add all files into root
18
+ -venv_signlang
19
+ -videos
20
+ -missing.txt
21
+ nslt_100.json
22
+ nslt_300.json
23
+ nslt_1000.json
24
+ nslt_2000.json
25
+ wlasl_class_list.txt
26
+ WLASL_v0.3.json
27
+ and add 2 new files:
28
+ data_explorer.py
29
+ WLASL_parser.py
30
+
31
+ THis outlines how the code works:
32
+ 1) python wlasl_parser.py is run which aims to identify the missing videos in the WLASL dataset. THese are outlined in missing.txt and will affect the accurcay of the model if not done.
33
+ 2
ai_model/words/WLASL_parser.py ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import pandas as pd
4
+ import cv2
5
+
6
+ # --- CONFIGURATION FOR TARGET WORD LIST ---
7
+ # This is your CUMULATIVE 20-word subset (lowercase recommended for WLASL compatibility)
8
+ TARGET_GLOSS_LIST = [
9
+ # Your original 10 words:
10
+ "apple", "black", "blue", "brown", "can", "cat", "chair", "child", "cold", "come",
11
+ # Your NEW 10 words:
12
+ "computer", "cow", "cry", "cup", "deaf", "dog", "drink", "drive", "eat", "egg"
13
+ ]
14
+ TARGET_GLOSS_SET = set(g.lower() for g in TARGET_GLOSS_LIST) # Convert to set of lowercase glosses
15
+
16
+ # --- GLOSSES TO EXCLUDE (ALPHABETS) ---
17
+ ALPHABET_GLOSSES = [
18
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
19
+ "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
20
+ ]
21
+ GLOSSES_TO_EXCLUDE_SET = set(g.lower() for g in ALPHABET_GLOSSES) # Convert to lowercase set for comparison
22
+ # --- END CONFIGURATION ---
23
+
24
+ def parse_wlasl_dataset(base_data_path):
25
+ videos_dir = os.path.join(base_data_path, 'videos')
26
+ wlasl_json_path = os.path.join(base_data_path, 'WLASL_v0.3.json')
27
+ missing_txt_path = os.path.join(base_data_path, 'missing.txt')
28
+ class_list_path = os.path.join(base_data_path, 'wlasl_class_list.txt') # For original class list
29
+
30
+ print(f"Parsing WLASL dataset from: {base_data_path}")
31
+
32
+ if not os.path.exists(wlasl_json_path):
33
+ print(f"Error: WLASL_v0.3.json not found at {wlasl_json_path}")
34
+ return None
35
+
36
+ with open(wlasl_json_path, 'r') as f:
37
+ wlasl_data = json.load(f)
38
+ print(f"Loaded WLASL_v0.3.json with {len(wlasl_data)} entries (glosses).")
39
+
40
+ missing_video_ids = set()
41
+ if os.path.exists(missing_txt_path):
42
+ with open(missing_txt_path, 'r') as f:
43
+ for line in f:
44
+ missing_video_ids.add(line.strip())
45
+ print(f"Loaded missing.txt with {len(missing_video_ids)} missing video IDs.")
46
+ else:
47
+ print(f"Warning: missing.txt not found at {missing_txt_path}. Proceeding without it.")
48
+
49
+ gloss_id_map_orig = {}
50
+ if os.path.exists(class_list_path):
51
+ with open(class_list_path, 'r') as f:
52
+ for line in f:
53
+ parts = line.strip().split('\t')
54
+ if len(parts) == 2:
55
+ gloss_id_map_orig[int(parts[0])] = parts[1]
56
+
57
+ data_records = []
58
+ available_videos_count = 0
59
+ total_instances = 0
60
+
61
+ for gloss_entry in wlasl_data:
62
+ gloss = gloss_entry['gloss']
63
+ for instance in gloss_entry['instances']:
64
+ total_instances += 1
65
+ video_id = instance['video_id']
66
+
67
+ if video_id in missing_video_ids:
68
+ continue
69
+
70
+ # --- FILTERING: INCLUDE IN TARGET SET AND NOT IN EXCLUDE SET ---
71
+ gloss_lower = gloss.lower()
72
+ if gloss_lower not in TARGET_GLOSS_SET:
73
+ continue # Skip if not in our desired target list
74
+ if gloss_lower in GLOSSES_TO_EXCLUDE_SET:
75
+ # print(f"Skipping excluded alphabet gloss: {gloss}") # Uncomment to see what's skipped
76
+ continue # Skip if it's an alphabet gloss
77
+
78
+ video_filename = f"{video_id}.mp4"
79
+ video_full_path = os.path.join(videos_dir, video_filename)
80
+
81
+ if os.path.exists(video_full_path):
82
+ available_videos_count += 1
83
+ data_records.append({
84
+ 'gloss': gloss,
85
+ 'gloss_id': gloss_id_map_orig.get(gloss, -1), # Use original ID for now, re-map later
86
+ 'video_id': video_id,
87
+ 'video_path': video_full_path,
88
+ 'signer_id': instance.get('signer_id'),
89
+ 'split': instance.get('split'),
90
+ 'frame_start': instance.get('frame_start'),
91
+ 'frame_end': instance.get('frame_end'),
92
+ 'fps': instance.get('fps'),
93
+ 'bbox': instance.get('bbox')
94
+ })
95
+ else:
96
+ pass
97
+
98
+ df = pd.DataFrame(data_records)
99
+ print(f"\n--- Parsing Summary ---")
100
+ print(f"Total instances in WLASL_v0.3.json: {total_instances}")
101
+ print(f"Instances skipped due to 'missing.txt' and not found on disk: {total_instances - available_videos_count}")
102
+ print(f"Total *available* and valid video instances found (before target list filter): {available_videos_count}")
103
+
104
+ return df
105
+
106
+ if __name__ == "__main__":
107
+ wlasl_dataset_path = "."
108
+ wlasl_df = parse_wlasl_dataset(wlasl_dataset_path)
109
+
110
+ if wlasl_df is not None:
111
+ df_filtered_by_glosses = wlasl_df[wlasl_df['gloss'].str.lower().isin(TARGET_GLOSS_SET)].copy()
112
+
113
+ # --- NEW EXCLUSION: Remove alphabet glosses from the final filtered DataFrame ---
114
+ df_filtered_by_glosses = df_filtered_by_glosses[~df_filtered_by_glosses['gloss'].str.lower().isin(GLOSSES_TO_EXCLUDE_SET)].copy()
115
+
116
+ # Re-map gloss_ids to be sequential (0 to N-1) for the new, smaller set of classes
117
+ unique_filtered_glosses = df_filtered_by_glosses['gloss'].unique()
118
+ new_gloss_to_id = {gloss: i for i, gloss in enumerate(unique_filtered_glosses)}
119
+ df_filtered_by_glosses['gloss_id'] = df_filtered_by_glosses['gloss'].map(new_gloss_to_id)
120
+
121
+ print(f"\n--- Fixed Word List Subset Summary ({len(TARGET_GLOSS_SET)} words requested, {df_filtered_by_glosses['gloss'].nunique()} words after filtering) ---")
122
+ print(f"Total instances in fixed list subset: {len(df_filtered_by_glosses)}")
123
+ print(f"Unique glosses in fixed list: {df_filtered_by_glosses['gloss'].nunique()} (Expected: {len(TARGET_GLOSS_SET) - len(GLOSSES_TO_EXCLUDE_SET.intersection(TARGET_GLOSS_SET))})")
124
+ print(f"Distribution of splits:\n{df_filtered_by_glosses['split'].value_counts()}")
125
+ print("First 5 entries of Fixed List DataFrame:")
126
+ print(df_filtered_by_glosses.head())
127
+
128
+ output_csv_name = 'wlasl_20_words_processed.csv' # <-- CHANGED TO 20 WORDS
129
+ df_filtered_by_glosses.to_csv(output_csv_name, index=False)
130
+ print(f"\nFixed list processed data saved to '{output_csv_name}'")
131
+ else:
132
+ print("\nError: Could not parse base WLASL dataset. Cannot filter by fixed list.")
ai_model/words/WLASL_v0.3.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f8510e2de97930e7bd46f1536aba9541fa13b60d6bdf48643413b1944b2eb80
3
+ size 12322133
ai_model/words/analyze_durations.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # analyze_durations.py
2
+ import pandas as pd
3
+ import os
4
+ import cv2
5
+
6
+ # IMPORTANT: This path must point to the CSV created in the previous step (wlasl_20_words_processed.csv)
7
+ PROCESSED_DATA_CSV = 'wlasl_20_words_processed.csv' # <-- CHANGED
8
+ # Path to your main WLASL videos directory (e.g., if videos are in ./videos/)
9
+ WLASL_VIDEOS_DIR = './videos'
10
+
11
+
12
+ if os.path.exists(PROCESSED_DATA_CSV):
13
+ df_subset = pd.read_csv(PROCESSED_DATA_CSV)
14
+
15
+ actual_durations = []
16
+
17
+ print("Calculating actual video durations (this might take a moment)...")
18
+ for index, row in df_subset.iterrows():
19
+ video_path = row['video_path']
20
+ frame_start = row['frame_start']
21
+ frame_end = row['frame_end']
22
+
23
+ duration = 0
24
+ if frame_end != -1 and frame_end >= frame_start:
25
+ duration = frame_end - frame_start + 1
26
+ else:
27
+ full_video_path_on_disk = video_path
28
+
29
+ cap = cv2.VideoCapture(full_video_path_on_disk)
30
+ if cap.isOpened():
31
+ total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
32
+ if total_frames > 0 and frame_start > 0:
33
+ duration = total_frames - frame_start + 1
34
+ if duration < 0: duration = 0
35
+ cap.release()
36
+ else:
37
+ print(f"Warning: Could not open video file {full_video_path_on_disk} to get full duration. Assigning 0.")
38
+ duration = 0
39
+
40
+ actual_durations.append(duration)
41
+
42
+ df_subset['duration_frames'] = actual_durations
43
+
44
+ df_subset = df_subset[df_subset['duration_frames'] > 0]
45
+
46
+
47
+ print(f"--- WLASL Fixed List Video Duration Analysis (20 Words - CORRECTED) ---")
48
+ print(f"Total instances analyzed: {len(df_subset)}")
49
+ print(f"Min duration (frames): {df_subset['duration_frames'].min()}")
50
+ print(f"Max duration (frames): {df_subset['duration_frames'].max()}")
51
+ print(f"Mean duration (frames): {df_subset['duration_frames'].mean():.2f}")
52
+ print(f"Median duration (frames): {df_subset['duration_frames'].median()}")
53
+ print(f"75th percentile duration (frames): {df_subset['duration_frames'].quantile(0.75)}")
54
+ print(f"90th percentile duration (frames): {df_subset['duration_frames'].quantile(0.90)}")
55
+
56
+ print(f"\nMean FPS: {df_subset['fps'].mean():.2f}")
57
+ print(f"Most common FPS: {df_subset['fps'].mode()[0] if not df_subset['fps'].mode().empty else 'N/A'}")
58
+ else:
59
+ print(f"Error: {PROCESSED_DATA_CSV} not found. Please run wlasl_parser.py for your fixed list first.")
ai_model/words/combine_datasets.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import os
4
+ import re # For regular expressions to parse filenames
5
+
6
+ # --- Configuration ---
7
+ WLASL_PROCESSED_CSV = 'wlasl_10_words_processed.csv'
8
+ MY_RECORDED_SIGNS_DIR = 'my_recorded_signs'
9
+ COMBINED_PROCESSED_CSV = 'wlasl_10_words_combined_processed.csv'
10
+
11
+ print(f"--- Combining WLASL and Personal Data ---")
12
+
13
+ # Load WLASL data
14
+ if not os.path.exists(WLASL_PROCESSED_CSV):
15
+ print(f"Error: WLASL processed CSV not found at {WLASL_PROCESSED_CSV}.")
16
+ print("Please ensure wlasl_parser.py has been run for your 10-word list.")
17
+ exit()
18
+
19
+ df_wlasl = pd.read_csv(WLASL_PROCESSED_CSV)
20
+ print(f"Loaded {len(df_wlasl)} instances from WLASL: {WLASL_PROCESSED_CSV}")
21
+
22
+ # --- Process Personal Recordings ---
23
+ personal_records = []
24
+ if os.path.exists(MY_RECORDED_SIGNS_DIR):
25
+ print(f"Scanning for personal recordings in: {MY_RECORDED_SIGNS_DIR}")
26
+ for filename in os.listdir(MY_RECORDED_SIGNS_DIR):
27
+ if filename.endswith('.npy'):
28
+ # Example filename: 'apple_1678901234.npy'
29
+ match = re.match(r'(.+?)_(\d+)\.npy', filename)
30
+ if match:
31
+ gloss = match.group(1).lower() # Extract gloss, ensure lowercase
32
+ video_id = match.group(2) # Use timestamp as a unique ID
33
+
34
+ full_npy_path = os.path.join(MY_RECORDED_SIGNS_DIR, filename)
35
+
36
+ # We need to verify if the original video_id exists for context,
37
+ # but for personal recordings, the NPY is the "video" representation.
38
+ # We'll treat the NPY path as the 'video_path' for these.
39
+
40
+ # Get original gloss_id mapping from WLASL data to ensure consistency
41
+ # This assumes all personal glosses are already in the 10-word list
42
+ original_gloss_to_id = {g:i for i, g in enumerate(df_wlasl['gloss'].unique())}
43
+
44
+ if gloss in original_gloss_to_id:
45
+ personal_records.append({
46
+ 'gloss': gloss,
47
+ 'gloss_id': original_gloss_to_id[gloss], # Use WLASL's mapping
48
+ 'video_id': f'personal_{video_id}', # Prefix to differentiate from WLASL
49
+ 'video_path': full_npy_path, # Path to the NPY file itself
50
+ 'signer_id': 'personal',
51
+ 'split': 'train', # New personal data always goes to train
52
+ 'frame_start': 1, # Dummy values as it's already extracted
53
+ 'frame_end': -1, # Dummy values
54
+ 'fps': 25, # Assume 25 FPS for consistency
55
+ 'bbox': [0,0,0,0] # Dummy bbox
56
+ })
57
+ else:
58
+ print(f"Warning: Personal recording '{filename}' has gloss '{gloss}' which is not in the 10-word WLASL list. Skipping.")
59
+ else:
60
+ print(f"Warning: Could not parse filename for '{filename}'. Skipping.")
61
+ else:
62
+ print(f"Warning: Personal recordings directory '{MY_RECORDED_SIGNS_DIR}' not found. No personal data will be added.")
63
+
64
+ df_personal = pd.DataFrame(personal_records)
65
+ print(f"Found {len(df_personal)} personal recordings.")
66
+
67
+ # Combine DataFrames
68
+ # We need to ensure columns are compatible for concatenation
69
+ # The 'video_path' for WLASL points to MP4, for personal it points to NPY.
70
+ # landmark_extractor and data_preprocessor will need to handle this.
71
+ df_combined = pd.concat([df_wlasl, df_personal], ignore_index=True)
72
+
73
+ # Re-map gloss_ids to be sequential (0 to N-1) for the entire combined set
74
+ # This is CRITICAL because the unique glosses list might change if warnings were ignored
75
+ final_unique_glosses = df_combined['gloss'].unique()
76
+ final_gloss_to_id = {g: i for i, g in enumerate(final_unique_glosses)}
77
+ df_combined['gloss_id'] = df_combined['gloss'].map(final_gloss_to_id)
78
+
79
+
80
+ print(f"\n--- Combined Dataset Summary ---")
81
+ print(f"Total instances in combined dataset: {len(df_combined)}")
82
+ print(f"Unique glosses in combined dataset: {df_combined['gloss'].nunique()} (Expected: {len(df_wlasl['gloss'].unique())})")
83
+ print(f"Distribution of splits:\n{df_combined['split'].value_counts()}")
84
+ print(f"First 5 entries of Combined DataFrame:\n{df_combined.head()}")
85
+ print(f"Last 5 entries of Combined DataFrame (should include personal data):\n{df_combined.tail()}")
86
+
87
+ df_combined.to_csv(COMBINED_PROCESSED_CSV, index=False)
88
+ print(f"\nCombined dataset metadata saved to '{COMBINED_PROCESSED_CSV}'")
89
+
90
+ # --- Special Note for landmark_extractor.py ---
91
+ print("\nIMPORTANT: Next, you MUST modify landmark_extractor.py to handle .npy video_paths for personal data.")
92
+ print(" Look for changes related to 'full_video_path_on_disk' in the extract_landmarks_from_video function.")
ai_model/words/create_personal_dataset_csv.py ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import os
4
+ import re # For regular expressions to parse filenames
5
+ from sklearn.model_selection import train_test_split # For splitting data
6
+
7
+ # --- Configuration ---
8
+ MY_RECORDED_SIGNS_DIR = 'my_recorded_signs'
9
+ PERSONAL_PROCESSED_CSV = 'wlasl_125_words_personal_processed.csv' # Changed to 125 words
10
+
11
+ # --- Define your expected 125-word list (for validation, ensure only these glosses are included) ---
12
+ # This list MUST match the glosses of the .npy files you have recorded
13
+ EXPECTED_GLOSSES = [
14
+ "again",
15
+ "ambulance",
16
+ "and",
17
+ "angry",
18
+ "animal",
19
+ "apple",
20
+ "aunt",
21
+ "autum",
22
+ "bird",
23
+ "black",
24
+ "blue",
25
+ "boy",
26
+ "brother",
27
+ "brown",
28
+ "can",
29
+ "candy",
30
+ "car",
31
+ "cat",
32
+ "cereal",
33
+ "chair",
34
+ "child",
35
+ "cold",
36
+ "come",
37
+ "computer",
38
+ "cool",
39
+ "cow",
40
+ "cry",
41
+ "cup",
42
+ "deaf",
43
+ "dog",
44
+ "drink",
45
+ "drive",
46
+ "drive-there",
47
+ "eat",
48
+ "egg",
49
+ "father",
50
+ "feel",
51
+ "fish",
52
+ "freeze",
53
+ "friday",
54
+ "full",
55
+ "future",
56
+ "girl",
57
+ "give",
58
+ "go",
59
+ "gold",
60
+ "grandma",
61
+ "grandpa",
62
+ "green",
63
+ "grey",
64
+ "happy",
65
+ "hate",
66
+ "hello",
67
+ "horse",
68
+ "hot",
69
+ "hungry",
70
+ "hurt",
71
+ "juice",
72
+ "light",
73
+ "like",
74
+ "love",
75
+ "meet",
76
+ "milk",
77
+ "monday",
78
+ "mother",
79
+ "my",
80
+ "name",
81
+ "nice",
82
+ "now",
83
+ "o'clock",
84
+ "orange",
85
+ "parents",
86
+ "pet",
87
+ "pink",
88
+ "pizza",
89
+ "popcorn",
90
+ "purple",
91
+ "rain",
92
+ "red",
93
+ "sad",
94
+ "saturday",
95
+ "shower",
96
+ "siblings",
97
+ "silver",
98
+ "sister",
99
+ "sit",
100
+ "sleep",
101
+ "snow",
102
+ "sorry",
103
+ "soup",
104
+ "spring",
105
+ "stand",
106
+ "stay",
107
+ "summer",
108
+ "sun",
109
+ "sunday",
110
+ "sunrise",
111
+ "table",
112
+ "talk",
113
+ "tell",
114
+ "this",
115
+ "thursday",
116
+ "today",
117
+ "tomorrow",
118
+ "tuesday",
119
+ "uncle",
120
+ "understand",
121
+ "walk",
122
+ "warm",
123
+ "watch",
124
+ "water",
125
+ "weather",
126
+ "wednesday",
127
+ "what",
128
+ "white",
129
+ "who",
130
+ "why",
131
+ "wind",
132
+ "window",
133
+ "winter",
134
+ "year",
135
+ "yellow",
136
+ "yesterday",
137
+ "you",
138
+ "your",
139
+ ]
140
+ EXPECTED_GLOSSES_SET = set(g.lower() for g in EXPECTED_GLOSSES)
141
+
142
+
143
+ print(f"--- Generating CSV from Personal Recordings Only ---")
144
+
145
+ personal_records = []
146
+ if os.path.exists(MY_RECORDED_SIGNS_DIR):
147
+ print(f"Scanning for personal recordings in: {MY_RECORDED_SIGNS_DIR}")
148
+ for filename in os.listdir(MY_RECORDED_SIGNS_DIR):
149
+ if filename.lower().endswith('.npy'):
150
+ # Filename format: 'gloss_timestamp.npy' or similar
151
+ match = re.match(r'(.+?)_(\d+)\.npy', filename, re.IGNORECASE)
152
+ if match:
153
+ gloss = match.group(1).lower() # Extract gloss, ensure lowercase
154
+ video_id_from_timestamp = match.group(2) # Use timestamp as a unique ID
155
+
156
+ full_npy_path = os.path.join(MY_RECORDED_SIGNS_DIR, filename)
157
+
158
+ if gloss in EXPECTED_GLOSSES_SET:
159
+ personal_records.append({
160
+ 'gloss': gloss,
161
+ 'video_id': f'personal_{video_id_from_timestamp}',
162
+ 'video_path': full_npy_path, # Path to the NPY file itself
163
+ 'signer_id': 'personal_user',
164
+ 'frame_start': 1,
165
+ 'frame_end': -1,
166
+ 'fps': 25,
167
+ 'bbox': [0,0,0,0],
168
+ 'split': 'temp' # Temporary split, will be re-assigned
169
+ })
170
+ else:
171
+ print(f"Warning: Personal recording '{filename}' has gloss '{gloss}' which is not in the EXPECTED_GLOSSES list. Skipping.")
172
+ else:
173
+ print(f"Warning: Could not parse filename for '{filename}'. Skipping.")
174
+ else:
175
+ print(f"Error: Personal recordings directory '{MY_RECORDED_SIGNS_DIR}' not found. Exiting.")
176
+ exit()
177
+
178
+ df_personal_raw = pd.DataFrame(personal_records)
179
+ print(f"Found {len(df_personal_raw)} personal recordings for the {len(EXPECTED_GLOSSES)} expected glosses.")
180
+
181
+ if df_personal_raw.empty:
182
+ print("No valid personal recordings found matching the expected glosses. Cannot create CSV.")
183
+ exit()
184
+
185
+ # --- Assign Train/Val/Test Splits to the Personal Data ---
186
+ # Group by gloss first to ensure all instances of a gloss are considered for splitting
187
+ df_personal_final = pd.DataFrame()
188
+ for gloss in EXPECTED_GLOSSES_SET:
189
+ gloss_df = df_personal_raw[df_personal_raw['gloss'] == gloss].copy()
190
+
191
+ if len(gloss_df) == 0:
192
+ print(f"Warning: No personal recordings found for expected gloss '{gloss}'. This gloss will be missing from the dataset.")
193
+ continue # Skip to next gloss
194
+
195
+ # Determine optimal split ratios based on the quantity of data you have recorded
196
+ # For a total dataset of a few hundred instances, 70/15/15 is a decent starting point.
197
+ # If you recorded many videos per word (e.g., >30 per word): train 80%, val 10%, test 10% might be better.
198
+ train_ratio = 0.70
199
+ val_ratio = 0.15
200
+ test_ratio = 0.15
201
+
202
+ # Ensure enough samples for all splits (min 3 for train_test_split stratify to work well)
203
+ if len(gloss_df) < 3:
204
+ print(f"Warning: Gloss '{gloss}' has only {len(gloss_df)} instances. Adding all to train. (Cannot split)")
205
+ gloss_df['split'] = 'train'
206
+ df_personal_final = pd.concat([df_personal_final, gloss_df])
207
+ continue
208
+
209
+ # Stratify by gloss (though not strictly necessary as we are looping by gloss)
210
+ # The 'stratify' argument in train_test_split ensures that the proportion of classes
211
+ # is roughly the same in the training, validation, and test sets.
212
+
213
+ # Split into train/test first
214
+ train_val_df, test_df = train_test_split(
215
+ gloss_df, test_size=test_ratio, random_state=42, stratify=gloss_df['gloss'] if len(gloss_df['gloss'].unique()) > 1 else None # Stratify only if multiple classes present, which is true here.
216
+ )
217
+ # Split train_val into train/val
218
+ # Adjust val_size ratio for the remaining train_val_df
219
+ remaining_val_ratio = val_ratio / (train_ratio + val_ratio)
220
+ train_df, val_df = train_test_split(
221
+ train_val_df, test_size=remaining_val_ratio, random_state=42, stratify=train_val_df['gloss'] if len(train_val_df['gloss'].unique()) > 1 else None
222
+ )
223
+
224
+ train_df['split'] = 'train'
225
+ val_df['split'] = 'val'
226
+ test_df['split'] = 'test'
227
+
228
+ df_personal_final = pd.concat([df_personal_final, train_df, val_df, test_df])
229
+
230
+ # Re-map gloss_ids to be sequential (0 to N-1) for the final set of classes
231
+ final_unique_glosses_in_dataset = df_personal_final['gloss'].unique()
232
+ final_gloss_to_id = {g: i for i, g in enumerate(final_unique_glosses_in_dataset)}
233
+ df_personal_final['gloss_id'] = df_personal_final['gloss'].map(final_gloss_to_id)
234
+
235
+ print(f"\n--- Personal Dataset Summary ---")
236
+ print(f"Total instances in final dataset: {len(df_personal_final)}")
237
+ print(f"Unique glosses: {df_personal_final['gloss'].nunique()} (Out of {len(EXPECTED_GLOSSES)} requested)")
238
+ print(f"Distribution of splits:\n{df_personal_final['split'].value_counts()}")
239
+
240
+ df_personal_final.to_csv(PERSONAL_PROCESSED_CSV, index=False)
241
+ print(f"\nPersonal dataset metadata saved to '{PERSONAL_PROCESSED_CSV}'")
ai_model/words/data_preprocessor.py ADDED
@@ -0,0 +1,232 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pandas as pd
3
+ import numpy as np
4
+ from sklearn.model_selection import train_test_split
5
+ from tensorflow.keras.utils import to_categorical
6
+ from tqdm import tqdm
7
+ import random
8
+
9
+ # --- Configuration (match with previous steps) ---
10
+ # IMPORTANT: This should now point to the CSV generated by create_personal_dataset_csv.py (your 125 words)
11
+ PROCESSED_DATA_CSV = 'wlasl_125_words_personal_processed.csv'
12
+ EXTRACTED_LANDMARKS_DIR = 'extracted_landmarks'
13
+ PROCESSED_SEQUENCES_DIR = 'processed_sequences'
14
+
15
+ SEQUENCE_LENGTH = 90 # Confirmed optimal from duration analysis
16
+ EXPECTED_COORDS_PER_FRAME = 1662
17
+
18
+ NUM_AUGMENTATIONS_PER_TRAIN_VIDEO = 5
19
+ AUG_MAX_ROTATION_DEG = 10
20
+ AUG_MAX_SCALE_FACTOR = 0.1
21
+ AUG_MAX_JITTER_AMOUNT = 0.003
22
+
23
+ MAX_VIDEOS_FOR_TEST = None
24
+
25
+
26
+ def normalize_landmarks(landmarks_sequence):
27
+ """
28
+ Normalizes a sequence of landmarks (frames, coords) to be translation and scale invariant.
29
+ """
30
+ if landmarks_sequence.size == 0:
31
+ return landmarks_sequence.astype(np.float32)
32
+ if landmarks_sequence.ndim == 1:
33
+ input_is_single_frame = True
34
+ landmarks_sequence_2d = np.expand_dims(landmarks_sequence, axis=0)
35
+ else:
36
+ input_is_single_frame = False
37
+ landmarks_sequence_2d = landmarks_sequence
38
+ NUM_POSE_COORDS_SINGLE = 33 * 4
39
+ NUM_HAND_COORDS_SINGLE = 21 * 3
40
+ NUM_FACE_COORDS_SINGLE = 468 * 3
41
+ normalized_sequences = []
42
+ for frame_landmarks in landmarks_sequence_2d:
43
+ if np.all(frame_landmarks == 0):
44
+ normalized_sequences.append(np.zeros(EXPECTED_COORDS_PER_FRAME, dtype=np.float32))
45
+ continue
46
+ pose_coords_flat = frame_landmarks[0 : NUM_POSE_COORDS_SINGLE]
47
+ left_hand_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE : NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE]
48
+ right_hand_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE : NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE]
49
+ face_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE : ]
50
+ all_parts_data = [
51
+ (pose_coords_flat, 4, [0.0] * NUM_POSE_COORDS_SINGLE),
52
+ (left_hand_coords_flat, 3, [0.0] * NUM_HAND_COORDS_SINGLE),
53
+ (right_hand_coords_flat, 3, [0.0] * NUM_HAND_COORDS_SINGLE),
54
+ (face_coords_flat, 3, [0.0] * NUM_FACE_COORDS_SINGLE)
55
+ ]
56
+ normalized_frame_parts = []
57
+ for flat_lms, coords_per_lm, original_padded_list_template in all_parts_data:
58
+ if np.all(flat_lms == 0):
59
+ normalized_frame_parts.append(np.array(original_padded_list_template, dtype=np.float32))
60
+ continue
61
+ lms_array = flat_lms.reshape(-1, coords_per_lm)
62
+ coords_for_mean = lms_array[:, :3] if coords_per_lm == 4 else lms_array
63
+ if np.all(coords_for_mean == 0):
64
+ normalized_frame_parts.append(np.array(original_padded_list_template, dtype=np.float32))
65
+ continue
66
+ mean_coords = np.mean(coords_for_mean, axis=0)
67
+ translated_lms = lms_array.copy()
68
+ translated_lms[:, :3] -= mean_coords
69
+ scale_factor = np.max(np.linalg.norm(translated_lms[:, :3], axis=1))
70
+ if scale_factor > 1e-6:
71
+ translated_lms[:, :3] /= scale_factor
72
+ normalized_frame_parts.append(translated_lms.flatten())
73
+ combined_normalized_frame = np.concatenate(normalized_frame_parts).astype(np.float32)
74
+ if len(combined_normalized_frame) < EXPECTED_COORDS_PER_FRAME:
75
+ combined_normalized_frame = np.pad(combined_normalized_frame, (0, EXPECTED_COORDS_PER_FRAME - len(combined_normalized_frame)), 'constant', constant_values=0.0)
76
+ elif len(combined_normalized_frame) > EXPECTED_COORDS_PER_FRAME:
77
+ combined_normalized_frame = combined_normalized_frame[:EXPECTED_COORDS_PER_FRAME]
78
+ normalized_sequences.append(combined_normalized_frame)
79
+ result_array = np.array(normalized_sequences, dtype=np.float32)
80
+ if input_is_single_frame:
81
+ return result_array[0]
82
+ else:
83
+ return result_array
84
+
85
+
86
+ def augment_sequence(sequence, max_rotation_deg, max_scale_factor, max_jitter_amount):
87
+ """
88
+ Applies random geometric augmentations to a landmark sequence.
89
+ """
90
+ augmented_sequence = sequence.copy()
91
+
92
+ NUM_POSE_COORDS_SINGLE = 33 * 4
93
+ NUM_HAND_COORDS_SINGLE = 21 * 3
94
+ NUM_FACE_COORDS_SINGLE = 468 * 3
95
+
96
+ angle_rad = np.deg2rad(np.random.uniform(-max_rotation_deg, max_rotation_deg))
97
+ cos_val = np.cos(angle_rad)
98
+ sin_val = np.sin(angle_rad)
99
+ scale = np.random.uniform(1.0 - max_scale_factor, 1.0 + max_scale_factor)
100
+
101
+ temp_sequence = []
102
+ for frame_lms in augmented_sequence:
103
+ processed_parts = []
104
+ current_idx = 0
105
+
106
+ pose_lms = frame_lms[current_idx : current_idx + NUM_POSE_COORDS_SINGLE].reshape(-1, 4)
107
+ current_idx += NUM_POSE_COORDS_SINGLE
108
+ if pose_lms.size > 0 and not np.all(pose_lms[:,:3] == 0):
109
+ rotated_xy_pose = pose_lms[:, :2].dot(np.array([[cos_val, -sin_val], [sin_val, cos_val]]))
110
+ pose_lms[:, :2] = rotated_xy_pose
111
+ pose_lms[:, :3] *= scale
112
+ processed_parts.append(pose_lms.flatten())
113
+
114
+ left_hand_lms = frame_lms[current_idx : current_idx + NUM_HAND_COORDS_SINGLE].reshape(-1, 3)
115
+ current_idx += NUM_HAND_COORDS_SINGLE
116
+ if left_hand_lms.size > 0 and not np.all(left_hand_lms == 0):
117
+ rotated_xy_lh = left_hand_lms[:, :2].dot(np.array([[cos_val, -sin_val], [sin_val, cos_val]]))
118
+ left_hand_lms[:, :2] = rotated_xy_lh
119
+ left_hand_lms *= scale
120
+ processed_parts.append(left_hand_lms.flatten())
121
+
122
+ right_hand_lms = frame_lms[current_idx : current_idx + NUM_HAND_COORDS_SINGLE].reshape(-1, 3)
123
+ current_idx += NUM_HAND_COORDS_SINGLE
124
+ if right_hand_lms.size > 0 and not np.all(right_hand_lms == 0):
125
+ rotated_xy_rh = right_hand_lms[:, :2].dot(np.array([[cos_val, -sin_val], [sin_val, cos_val]]))
126
+ right_hand_lms[:, :2] = rotated_xy_rh
127
+ right_hand_lms *= scale
128
+ processed_parts.append(right_hand_lms.flatten())
129
+
130
+ face_lms = frame_lms[current_idx : current_idx + NUM_FACE_COORDS_SINGLE].reshape(-1, 3)
131
+ if face_lms.size > 0 and not np.all(face_lms == 0):
132
+ rotated_xy_face = face_lms[:, :2].dot(np.array([[cos_val, -sin_val], [sin_val, cos_val]]))
133
+ face_lms[:, :2] = rotated_xy_face
134
+ face_lms *= scale
135
+ processed_parts.append(face_lms.flatten())
136
+
137
+ temp_sequence.append(np.concatenate(processed_parts))
138
+
139
+ augmented_sequence = np.array(temp_sequence, dtype=np.float32)
140
+ jitter = np.random.normal(loc=0, scale=max_jitter_amount, size=augmented_sequence.shape)
141
+ augmented_sequence += jitter
142
+
143
+ return augmented_sequence
144
+
145
+
146
+ def _process_and_pad_sequence(raw_landmarks, output_dir, video_id, gloss, split):
147
+ """Helper to normalize, pad/truncate and save a single sequence."""
148
+ normalized_landmarks = normalize_landmarks(raw_landmarks)
149
+ if normalized_landmarks is None or normalized_landmarks.size == 0:
150
+ return None
151
+ if normalized_landmarks.shape[0] < SEQUENCE_LENGTH:
152
+ padding = np.zeros((SEQUENCE_LENGTH - normalized_landmarks.shape[0], EXPECTED_COORDS_PER_FRAME), dtype=np.float32)
153
+ processed_sequence = np.vstack((normalized_landmarks, padding))
154
+ elif normalized_landmarks.shape[0] > SEQUENCE_LENGTH:
155
+ processed_sequence = normalized_landmarks[:SEQUENCE_LENGTH, :]
156
+ else:
157
+ processed_sequence = normalized_landmarks
158
+ if processed_sequence.shape != (SEQUENCE_LENGTH, EXPECTED_COORDS_PER_FRAME):
159
+ print(f"Error: Processed sequence for {video_id} has incorrect shape: {processed_sequence.shape}. Expected: ({SEQUENCE_LENGTH}, {EXPECTED_COORDS_PER_FRAME}). Skipping.")
160
+ return None
161
+ split_output_dir = os.path.join(output_dir, split if pd.notna(split) else 'unknown_split')
162
+ os.makedirs(split_output_dir, exist_ok=True)
163
+ output_filepath = os.path.join(split_output_dir, f"{video_id}.npy")
164
+ np.save(output_filepath, processed_sequence)
165
+ return {'video_id': video_id, 'gloss': gloss, 'split': split, 'processed_path': output_filepath}
166
+
167
+
168
+ if __name__ == "__main__":
169
+ os.makedirs(PROCESSED_SEQUENCES_DIR, exist_ok=True)
170
+ if not os.path.exists(PROCESSED_DATA_CSV):
171
+ print(f"Error: Processed data CSV not found at {PROCESSED_DATA_CSV}.")
172
+ exit()
173
+ df_base = pd.read_csv(PROCESSED_DATA_CSV)
174
+ print(f"Loaded {len(df_base)} video entries from {PROCESSED_DATA_CSV}")
175
+ unique_glosses = df_base['gloss'].unique()
176
+ gloss_to_id = {gloss: i for i, gloss in enumerate(unique_glosses)}
177
+ id_to_gloss = {i: gloss for i, gloss in enumerate(unique_glosses)}
178
+ print(f"Created mapping for {len(unique_glosses)} unique glosses.")
179
+ processed_data_records = []
180
+ MAX_VIDEOS_FOR_TEST = None
181
+ df_to_process = df_base.head(MAX_VIDEOS_FOR_TEST) if MAX_VIDEOS_FOR_TEST is not None else df_base
182
+ print(f"\nProcessing {len(df_to_process)} videos for feature engineering, sequence preparation, and augmentation...")
183
+ for index, row in tqdm(df_to_process.iterrows(), total=len(df_to_process), desc="Processing Sequences"):
184
+ video_id = row['video_id']
185
+ gloss = row['gloss']
186
+ split = row['split']
187
+ raw_landmarks_path = os.path.join(EXTRACTED_LANDMARKS_DIR, f"{video_id}.npy")
188
+ if not os.path.exists(raw_landmarks_path):
189
+ print(f"Warning: Raw landmark file not found for {video_id}. Skipping.")
190
+ continue
191
+ raw_landmarks = np.load(raw_landmarks_path)
192
+ original_record = _process_and_pad_sequence(raw_landmarks, PROCESSED_SEQUENCES_DIR, video_id, gloss, split)
193
+ if original_record:
194
+ original_record['gloss_id'] = gloss_to_id[original_record['gloss']]
195
+ processed_data_records.append(original_record)
196
+ if split == 'train':
197
+ for aug_idx in range(NUM_AUGMENTATIONS_PER_TRAIN_VIDEO):
198
+ augmented_raw_landmarks = augment_sequence(
199
+ raw_landmarks.copy(),
200
+ AUG_MAX_ROTATION_DEG,
201
+ AUG_MAX_SCALE_FACTOR,
202
+ AUG_MAX_JITTER_AMOUNT
203
+ )
204
+ aug_video_id = f"{video_id}_aug{aug_idx}"
205
+ aug_record = _process_and_pad_sequence(augmented_raw_landmarks, PROCESSED_SEQUENCES_DIR, aug_video_id, gloss, split)
206
+ if aug_record:
207
+ aug_record['gloss_id'] = gloss_to_id[aug_record['gloss']]
208
+ processed_data_records.append(aug_record)
209
+ final_processed_df = pd.DataFrame(processed_data_records)
210
+ print(f"\n--- Feature Engineering and Data Preparation Summary ---")
211
+ print(f"Total processed sequences saved: {len(final_processed_df)}")
212
+ print(f"Processed sequences saved to: {PROCESSED_SEQUENCES_DIR}")
213
+ print(f"Final DataFrame for training/validation/test (including augmentations):\n{final_processed_df['split'].value_counts()}")
214
+ final_processed_df.to_csv('wlasl_125_words_personal_final_processed_data_augmented_seq90.csv', index=False)
215
+ print("\nFinal processed data metadata saved to 'wlasl_125_words_personal_final_processed_data_augmented_seq90.csv'")
216
+ if not final_processed_df.empty:
217
+ original_entries = final_processed_df[~final_processed_df['video_id'].astype(str).str.contains('_aug', na=False)]
218
+ augmented_entries = final_processed_df[final_processed_df['video_id'].astype(str).str.contains('_aug', na=False)]
219
+ original_example_entry = original_entries.iloc[0] if not original_entries.empty else None
220
+ augmented_example_entry = augmented_entries.iloc[0] if not augmented_entries.empty else None
221
+ if original_example_entry is not None:
222
+ loaded_original = np.load(original_example_entry['processed_path'])
223
+ print(f"\nSuccessfully loaded example ORIGINAL sequence: {original_example_entry['processed_path']}")
224
+ print(f"Shape: {loaded_original.shape}. Expected: ({SEQUENCE_LENGTH}, {EXPECTED_COORDS_PER_FRAME})")
225
+ print(f"First few values of first frame:\n{loaded_original[0, :10]}")
226
+ if augmented_example_entry is not None:
227
+ loaded_augmented = np.load(augmented_example_entry['processed_path'])
228
+ print(f"\nSuccessfully loaded example AUGMENTED sequence: {augmented_example_entry['processed_path']}")
229
+ print(f"Shape: {loaded_augmented.shape}. Expected: ({SEQUENCE_LENGTH}, {EXPECTED_COORDS_PER_FRAME})")
230
+ print(f"First few values of first frame:\n{loaded_augmented[0, :10]}")
231
+ else:
232
+ print("\nNo processed sequences to test loading.")
ai_model/words/landmark_extractor.py ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import mediapipe as mp
3
+ import pandas as pd
4
+ import numpy as np
5
+ import os
6
+ from tqdm import tqdm # For progress bars
7
+
8
+ # --- Configuration ---
9
+ # Path to your personal 125-words CSV (Generated by create_personal_dataset_csv.py)
10
+ PROCESSED_DATA_CSV = 'wlasl_125_words_personal_processed.csv'
11
+ # Directory to save extracted landmark data
12
+ OUTPUT_LANDMARKS_DIR = 'extracted_landmarks'
13
+ # Whether to visualize the landmarks during extraction (set to False for faster processing)
14
+ VISUALIZE_LANDMARKS = False
15
+ # Max videos to process for quick test (set to None to process all from CSV)
16
+ MAX_VIDEOS_FOR_TEST = None
17
+
18
+
19
+ # --- Define the expected number of coordinates for each type of landmark ---
20
+ NUM_POSE_COORDS = 33 * 4 # 33 landmarks * (x, y, z, visibility)
21
+ NUM_HAND_COORDS = 21 * 3 # 21 landmarks * (x, y, z)
22
+ NUM_FACE_COORDS = 468 * 3 # 468 landmarks * (x, y, z)
23
+
24
+
25
+ def extract_landmarks_from_video(video_path, mp_holistic_instance):
26
+ is_npy_file = video_path.lower().endswith('.npy')
27
+
28
+ if is_npy_file:
29
+ try:
30
+ landmarks_array = np.load(video_path)
31
+ if landmarks_array.ndim == 2 and landmarks_array.shape[1] == (NUM_POSE_COORDS + 2*NUM_HAND_COORDS + NUM_FACE_COORDS):
32
+ return landmarks_array
33
+ else:
34
+ print(f"Warning: NPY file {video_path} has unexpected shape {landmarks_array.shape}. Skipping.")
35
+ return None
36
+ except Exception as e:
37
+ print(f"Error loading NPY file {video_path}: {e}. Skipping.")
38
+ return None
39
+
40
+ cap = cv2.VideoCapture(video_path)
41
+ if not cap.isOpened():
42
+ print(f"Error: Could not open video {video_path}")
43
+ return None
44
+
45
+ frame_landmarks_list = []
46
+
47
+ while cap.isOpened():
48
+ ret, frame = cap.read()
49
+ if not ret:
50
+ break
51
+
52
+ image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
53
+ image.flags.writeable = False
54
+ results = mp_holistic_instance.process(image)
55
+ if VISUALIZE_LANDMARKS:
56
+ image.flags.writeable = True
57
+ frame_copy = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
58
+ mp.solutions.drawing_utils.draw_landmarks(frame_copy, results.pose_landmarks, mp.solutions.holistic.POSE_CONNECTIONS)
59
+ mp.solutions.drawing_utils.draw_landmarks(frame_copy, results.left_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
60
+ mp.solutions.drawing_utils.draw_landmarks(frame_copy, results.right_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
61
+ mp.solutions.drawing_utils.draw_landmarks(frame_copy, results.face_landmarks, mp.solutions.holistic.FACEMESH_CONTOURS)
62
+ cv2.imshow('MediaPipe Landmarks', frame_copy)
63
+ if cv2.waitKey(1) & 0xFF == 27:
64
+ break
65
+
66
+ current_frame_raw_landmarks_flat = np.zeros(NUM_POSE_COORDS + NUM_HAND_COORDS + NUM_HAND_COORDS + NUM_FACE_COORDS, dtype=np.float32)
67
+ current_idx = 0
68
+
69
+ if results.pose_landmarks:
70
+ pose_lms_flat = []
71
+ for landmark in results.pose_landmarks.landmark:
72
+ pose_lms_flat.extend([landmark.x, landmark.y, landmark.z, landmark.visibility])
73
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(pose_lms_flat)] = pose_lms_flat
74
+ current_idx += NUM_POSE_COORDS
75
+
76
+ if results.left_hand_landmarks:
77
+ lh_lms_flat = []
78
+ for landmark in results.left_hand_landmarks.landmark:
79
+ lh_lms_flat.extend([landmark.x, landmark.y, landmark.z])
80
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(lh_lms_flat)] = lh_lms_flat
81
+ current_idx += NUM_HAND_COORDS
82
+
83
+ if results.right_hand_landmarks:
84
+ rh_lms_flat = []
85
+ for landmark in results.right_hand_landmarks.landmark:
86
+ rh_lms_flat.extend([landmark.x, landmark.y, landmark.z])
87
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(rh_lms_flat)] = rh_lms_flat
88
+ current_idx += NUM_HAND_COORDS
89
+
90
+ if results.face_landmarks:
91
+ face_lms_flat = []
92
+ for landmark in results.face_landmarks.landmark:
93
+ face_lms_flat.extend([landmark.x, landmark.y, landmark.z])
94
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(face_lms_flat)] = face_lms_flat
95
+
96
+ frame_landmarks_list.append(current_frame_raw_landmarks_flat)
97
+
98
+ cap.release()
99
+ if VISUALIZE_LANDMARKS:
100
+ cv2.destroyAllWindows()
101
+
102
+ if frame_landmarks_list:
103
+ return np.array(frame_landmarks_list, dtype=np.float32)
104
+ else:
105
+ return None
106
+
107
+
108
+ if __name__ == "__main__":
109
+ os.makedirs(OUTPUT_LANDMARKS_DIR, exist_ok=True)
110
+
111
+ if not os.path.exists(PROCESSED_DATA_CSV):
112
+ print(f"Error: Processed data CSV not found at {PROCESSED_DATA_CSV}. Please run create_personal_dataset_csv.py first.")
113
+ exit()
114
+
115
+ df_base = pd.read_csv(PROCESSED_DATA_CSV)
116
+ print(f"Loaded {len(df_base)} video entries from {PROCESSED_DATA_CSV}")
117
+
118
+ mp_holistic = mp.solutions.holistic.Holistic(
119
+ static_image_mode=False,
120
+ model_complexity=1,
121
+ min_detection_confidence=0.5,
122
+ min_tracking_confidence=0.5
123
+ )
124
+
125
+ processed_count = 0
126
+ skipped_count = 0
127
+
128
+ for index, row in tqdm(df_base.iterrows(), total=len(df_base), desc="Extracting Landmarks"):
129
+ if MAX_VIDEOS_FOR_TEST is not None and processed_count >= MAX_VIDEOS_FOR_TEST:
130
+ print(f"Stopping after {MAX_VIDEOS_FOR_TEST} videos for testing.")
131
+ break
132
+
133
+ video_path = row['video_path']
134
+ video_id = row['video_id']
135
+ gloss = row['gloss']
136
+
137
+ output_npy_filename = f"{video_id}.npy"
138
+ output_npy_path = os.path.join(OUTPUT_LANDMARKS_DIR, output_npy_filename)
139
+
140
+ if os.path.exists(output_npy_path):
141
+ processed_count += 1
142
+ continue
143
+
144
+ landmarks_data = extract_landmarks_from_video(video_path, mp_holistic)
145
+
146
+ if landmarks_data is not None and landmarks_data.shape[0] > 0:
147
+ np.save(output_npy_path, landmarks_data)
148
+ processed_count += 1
149
+ else:
150
+ print(f"Warning: No valid landmarks extracted for {video_path}. Skipping.")
151
+ skipped_count += 1
152
+
153
+ mp_holistic.close()
154
+ print(f"\n--- Landmark Extraction Summary ---")
155
+ print(f"Total videos processed: {processed_count}")
156
+ print(f"Total videos skipped (e.g., no landmarks, already processed): {skipped_count}")
157
+ print(f"Landmark data saved to: {OUTPUT_LANDMARKS_DIR}")
158
+
159
+ # --- Test a saved landmark file ---
160
+ if processed_count > 0:
161
+ example_video_id = None
162
+ for _, row in df_base.iterrows():
163
+ temp_output_npy_path = os.path.join(OUTPUT_LANDMARKS_DIR, f"{row['video_id']}.npy")
164
+ if os.path.exists(temp_output_npy_path):
165
+ example_video_id = row['video_id']
166
+ break
167
+
168
+ if example_video_id:
169
+ example_npy_path = os.path.join(OUTPUT_LANDMARKS_DIR, f"{example_video_id}.npy")
170
+ loaded_landmarks = np.load(example_npy_path)
171
+ print(f"\nSuccessfully loaded example landmark file: {example_npy_path}")
172
+ print(f"Shape of loaded landmarks (frames, total_coords): {loaded_landmarks.shape}")
173
+ print(f"First few values of the first frame's landmarks:\n{loaded_landmarks[0, :10]}")
174
+
175
+ expected_total_coords = NUM_POSE_COORDS + NUM_HAND_COORDS + NUM_HAND_COORDS + NUM_FACE_COORDS
176
+ print(f"Expected total coordinates per frame: {expected_total_coords}")
177
+ if loaded_landmarks.shape[1] != expected_total_coords:
178
+ print(f"WARNING: Loaded landmark dimension {loaded_landmarks.shape[1]} does not match expected {expected_total_coords}.")
179
+
180
+ else:
181
+ print("\nNo videos were processed to test landmark saving, or no .npy files were found in the output directory.")
182
+ else:
183
+ print("\nNo videos were processed to test landmark saving.")
ai_model/words/list_dataset_videos.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import os
3
+
4
+ # --- Configuration ---
5
+ PROCESSED_DATA_CSV = 'wlasl_20_words_processed.csv'
6
+
7
+ # Base directory where your script is running from
8
+ BASE_DIR = os.getcwd()
9
+
10
+ # --- NEW: Display Limit per Sign ---
11
+ MAX_VIDEOS_PER_SIGN_TO_DISPLAY = 5
12
+
13
+
14
+ print(f"--- Listing Video Files and Sign Names for Dataset: {PROCESSED_DATA_CSV} (20 Words) ---")
15
+
16
+ if not os.path.exists(PROCESSED_DATA_CSV):
17
+ print(f"Error: Processed data CSV not found at {PROCESSED_DATA_CSV}.")
18
+ print("Please ensure wlasl_parser.py has been run for your 20-word list.")
19
+ exit()
20
+
21
+ try:
22
+ df_videos = pd.read_csv(PROCESSED_DATA_CSV)
23
+ print(f"Loaded {len(df_videos)} video entries.")
24
+
25
+ print(f"\nExact video paths and their corresponding sign names (glosses) (showing max {MAX_VIDEOS_PER_SIGN_TO_DISPLAY} per sign):")
26
+
27
+ videos_displayed_per_sign = {} # To track how many videos we've shown for each sign
28
+ total_found_on_disk = 0
29
+
30
+ # Sort DataFrame by gloss to group signs together in output
31
+ df_videos_sorted = df_videos.sort_values(by='gloss').reset_index(drop=True)
32
+
33
+ for index, row in df_videos_sorted.iterrows(): # Iterate through the sorted DataFrame
34
+ gloss = row['gloss']
35
+ relative_video_path = row['video_path']
36
+ full_video_path = os.path.join(BASE_DIR, relative_video_path)
37
+
38
+ # Check if we've already displayed the max for this sign
39
+ if videos_displayed_per_sign.get(gloss, 0) >= MAX_VIDEOS_PER_SIGN_TO_DISPLAY:
40
+ continue # Skip to the next video if limit reached for this gloss
41
+
42
+ if os.path.exists(full_video_path):
43
+ print(f" Sign: {gloss.upper():<10} | Path: {full_video_path}")
44
+ videos_displayed_per_sign[gloss] = videos_displayed_per_sign.get(gloss, 0) + 1
45
+ total_found_on_disk += 1
46
+ else:
47
+ print(f" [NOT FOUND ON DISK] Sign: {gloss.upper():<10} | Path: {full_video_path}")
48
+ # We still count this towards the limit for the gloss, even if not found
49
+ videos_displayed_per_sign[gloss] = videos_displayed_per_sign.get(gloss, 0) + 1
50
+
51
+ print(f"\nTotal video files found on disk and displayed: {total_found_on_disk}")
52
+ # Note: The total_found_on_disk here reflects only those *displayed*, not all available if limits applied.
53
+ print(f"Total available instances in CSV: {len(df_videos)}")
54
+
55
+
56
+ except Exception as e:
57
+ print(f"An error occurred: {e}")
ai_model/words/list_glosses.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import re
3
+ from collections import defaultdict
4
+
5
+ # --- Configuration ---
6
+ # The directory where your .npy recordings are stored.
7
+ RECORDINGS_DIR = 'my_recorded_signs'
8
+
9
+ def get_unique_glosses_from_recordings(directory):
10
+ """
11
+ Scans a directory for .npy files and extracts the unique glosses
12
+ (words) from their filenames.
13
+
14
+ Args:
15
+ directory (str): The path to the directory containing recordings.
16
+
17
+ Returns:
18
+ A defaultdict with glosses as keys and a count of recordings as values.
19
+ """
20
+ gloss_counts = defaultdict(int)
21
+
22
+ if not os.path.isdir(directory):
23
+ print(f"Error: Directory not found at {directory}. Please check the path.")
24
+ return gloss_counts
25
+
26
+ for filename in os.listdir(directory):
27
+ # We need a regex pattern to handle different timestamps and file extensions
28
+ # Pattern: (word)_(timestamp).npy
29
+ match = re.match(r'(.+?)_\d+\.npy', filename, re.IGNORECASE)
30
+
31
+ if match:
32
+ # Extract the gloss (the first group in the regex) and convert to lowercase
33
+ gloss = match.group(1).lower()
34
+ gloss_counts[gloss] += 1
35
+
36
+ return gloss_counts
37
+
38
+ if __name__ == "__main__":
39
+ print(f"--- Scanning for Unique Signs in '{RECORDINGS_DIR}' ---")
40
+
41
+ unique_glosses_with_counts = get_unique_glosses_from_recordings(RECORDINGS_DIR)
42
+
43
+ if not unique_glosses_with_counts:
44
+ print("No valid recordings found. Make sure your .npy files are in the correct directory.")
45
+ else:
46
+ # Sort the glosses alphabetically for a clean, repeatable output
47
+ sorted_glosses = sorted(unique_glosses_with_counts.keys())
48
+
49
+ print(f"\nFound {len(sorted_glosses)} unique glosses:")
50
+ print("---------------------------------")
51
+ for gloss in sorted_glosses:
52
+ count = unique_glosses_with_counts[gloss]
53
+ print(f"- {gloss:<15}: {count} recordings")
54
+ print("---------------------------------")
55
+
56
+ # You can now easily copy this list into your create_personal_dataset_csv.py script.
57
+ # Here is the list format for easy copying:
58
+ print("\nReady to copy to your EXPECTED_GLOSSES list:")
59
+ print("EXPECTED_GLOSSES = [")
60
+ for i, gloss in enumerate(sorted_glosses):
61
+ print(f" \"{gloss}\",")
62
+ print("]")
ai_model/words/missing.txt ADDED
@@ -0,0 +1,9103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 65225
2
+ 68011
3
+ 68208
4
+ 68012
5
+ 70212
6
+ 70266
7
+ 07085
8
+ 07086
9
+ 07087
10
+ 07088
11
+ 07089
12
+ 07090
13
+ 07091
14
+ 07092
15
+ 07093
16
+ 07094
17
+ 07095
18
+ 07096
19
+ 07097
20
+ 07098
21
+ 07071
22
+ 07072
23
+ 07073
24
+ 67424
25
+ 07075
26
+ 07076
27
+ 07077
28
+ 07078
29
+ 07079
30
+ 07080
31
+ 07081
32
+ 07082
33
+ 07083
34
+ 07084
35
+ 70173
36
+ 68538
37
+ 68042
38
+ 68660
39
+ 68041
40
+ 17725
41
+ 17726
42
+ 17727
43
+ 17728
44
+ 17729
45
+ 17730
46
+ 17731
47
+ 17732
48
+ 17714
49
+ 17715
50
+ 17716
51
+ 17717
52
+ 17718
53
+ 67594
54
+ 17719
55
+ 12306
56
+ 68028
57
+ 69054
58
+ 12329
59
+ 12330
60
+ 12331
61
+ 12332
62
+ 12333
63
+ 12335
64
+ 12336
65
+ 12337
66
+ 67519
67
+ 12321
68
+ 12322
69
+ 12323
70
+ 12324
71
+ 05724
72
+ 70348
73
+ 68007
74
+ 05744
75
+ 05746
76
+ 05747
77
+ 05748
78
+ 05735
79
+ 05736
80
+ 05737
81
+ 09847
82
+ 70230
83
+ 68580
84
+ 70263
85
+ 68019
86
+ 09865
87
+ 09866
88
+ 09867
89
+ 09853
90
+ 09855
91
+ 09856
92
+ 67483
93
+ 09857
94
+ 09858
95
+ 09859
96
+ 09860
97
+ 09861
98
+ 09862
99
+ 09863
100
+ 24857
101
+ 68292
102
+ 24965
103
+ 24969
104
+ 24970
105
+ 24971
106
+ 24972
107
+ 24948
108
+ 67715
109
+ 24950
110
+ 24951
111
+ 11305
112
+ 68870
113
+ 68024
114
+ 11327
115
+ 11328
116
+ 11329
117
+ 11312
118
+ 11314
119
+ 11315
120
+ 11316
121
+ 11317
122
+ 11318
123
+ 11319
124
+ 11320
125
+ 11321
126
+ 11322
127
+ 11323
128
+ 11324
129
+ 11325
130
+ 11326
131
+ 63219
132
+ 68890
133
+ 68183
134
+ 63239
135
+ 63240
136
+ 63241
137
+ 63233
138
+ 63234
139
+ 66780
140
+ 67066
141
+ 63238
142
+ 08909
143
+ 68018
144
+ 70326
145
+ 68790
146
+ 08928
147
+ 08922
148
+ 08923
149
+ 67468
150
+ 67470
151
+ 08926
152
+ 08927
153
+ 70332
154
+ 68592
155
+ 13637
156
+ 13638
157
+ 13639
158
+ 67535
159
+ 13643
160
+ 13644
161
+ 13645
162
+ 14855
163
+ 70015
164
+ 68586
165
+ 68033
166
+ 14899
167
+ 14900
168
+ 14901
169
+ 14889
170
+ 14891
171
+ 14895
172
+ 14896
173
+ 14898
174
+ 65717
175
+ 70234
176
+ 68048
177
+ 21885
178
+ 21886
179
+ 21887
180
+ 21888
181
+ 21889
182
+ 21875
183
+ 21876
184
+ 67660
185
+ 67659
186
+ 21884
187
+ 27194
188
+ 27219
189
+ 27220
190
+ 27210
191
+ 27211
192
+ 27212
193
+ 67757
194
+ 27218
195
+ 38482
196
+ 68110
197
+ 68406
198
+ 38539
199
+ 38540
200
+ 38541
201
+ 38542
202
+ 38531
203
+ 67934
204
+ 38536
205
+ 38538
206
+ 57919
207
+ 57950
208
+ 57952
209
+ 67299
210
+ 57944
211
+ 57945
212
+ 62152
213
+ 68852
214
+ 68918
215
+ 68177
216
+ 62173
217
+ 62174
218
+ 62165
219
+ 62166
220
+ 67036
221
+ 62171
222
+ 62172
223
+ 64201
224
+ 68416
225
+ 68190
226
+ 70306
227
+ 68992
228
+ 64223
229
+ 64215
230
+ 64216
231
+ 67012
232
+ 64217
233
+ 64221
234
+ 64222
235
+ 64275
236
+ 68192
237
+ 64290
238
+ 64294
239
+ 64295
240
+ 64296
241
+ 64297
242
+ 64298
243
+ 64299
244
+ 64289
245
+ 01912
246
+ 68001
247
+ 68720
248
+ 02002
249
+ 01989
250
+ 01990
251
+ 01995
252
+ 67356
253
+ 01996
254
+ 01997
255
+ 01998
256
+ 01999
257
+ 02000
258
+ 06455
259
+ 68230
260
+ 70244
261
+ 06475
262
+ 06480
263
+ 67414
264
+ 06481
265
+ 06482
266
+ 06483
267
+ 06484
268
+ 06485
269
+ 70271
270
+ 13214
271
+ 13205
272
+ 13206
273
+ 13207
274
+ 21933
275
+ 70361
276
+ 68050
277
+ 68674
278
+ 68688
279
+ 21946
280
+ 67663
281
+ 21952
282
+ 21953
283
+ 21954
284
+ 21955
285
+ 21956
286
+ 28074
287
+ 70270
288
+ 28113
289
+ 28114
290
+ 28118
291
+ 28119
292
+ 28120
293
+ 28121
294
+ 28122
295
+ 28123
296
+ 28124
297
+ 68093
298
+ 70299
299
+ 33271
300
+ 33277
301
+ 33278
302
+ 33279
303
+ 33280
304
+ 33281
305
+ 33282
306
+ 33283
307
+ 33284
308
+ 34822
309
+ 70308
310
+ 34828
311
+ 34829
312
+ 67873
313
+ 34833
314
+ 34834
315
+ 34835
316
+ 34836
317
+ 34837
318
+ 34838
319
+ 36927
320
+ 36945
321
+ 36934
322
+ 36938
323
+ 67908
324
+ 36939
325
+ 36940
326
+ 36941
327
+ 36942
328
+ 36944
329
+ 38982
330
+ 70345
331
+ 68694
332
+ 68770
333
+ 68114
334
+ 39001
335
+ 39002
336
+ 39003
337
+ 67937
338
+ 39004
339
+ 39005
340
+ 38996
341
+ 40114
342
+ 70310
343
+ 70249
344
+ 68122
345
+ 40120
346
+ 40122
347
+ 40123
348
+ 67949
349
+ 40124
350
+ 40126
351
+ 40128
352
+ 56552
353
+ 70323
354
+ 68972
355
+ 56573
356
+ 56574
357
+ 56576
358
+ 56577
359
+ 56578
360
+ 56560
361
+ 56564
362
+ 67275
363
+ 56566
364
+ 56567
365
+ 56568
366
+ 56569
367
+ 56571
368
+ 69092
369
+ 57645
370
+ 57646
371
+ 67292
372
+ 57636
373
+ 57637
374
+ 57642
375
+ 57643
376
+ 62944
377
+ 68330
378
+ 62982
379
+ 62984
380
+ 62971
381
+ 67057
382
+ 62986
383
+ 62973
384
+ 67058
385
+ 63662
386
+ 68187
387
+ 68764
388
+ 63670
389
+ 63671
390
+ 67078
391
+ 63675
392
+ 63676
393
+ 63677
394
+ 63678
395
+ 05628
396
+ 05643
397
+ 05635
398
+ 67400
399
+ 05639
400
+ 05641
401
+ 05642
402
+ 06822
403
+ 68274
404
+ 68010
405
+ 06836
406
+ 06837
407
+ 06838
408
+ 06840
409
+ 06841
410
+ 67420
411
+ 06842
412
+ 06843
413
+ 06844
414
+ 07383
415
+ 07403
416
+ 07395
417
+ 07396
418
+ 67431
419
+ 07401
420
+ 07402
421
+ 08950
422
+ 08951
423
+ 08952
424
+ 08953
425
+ 08939
426
+ 67465
427
+ 08945
428
+ 08946
429
+ 08947
430
+ 08948
431
+ 08949
432
+ 17076
433
+ 68632
434
+ 68035
435
+ 17088
436
+ 17092
437
+ 67578
438
+ 17093
439
+ 17095
440
+ 17096
441
+ 20976
442
+ 69016
443
+ 20984
444
+ 20985
445
+ 67642
446
+ 20988
447
+ 20989
448
+ 20990
449
+ 20991
450
+ 22109
451
+ 22129
452
+ 22118
453
+ 22119
454
+ 67667
455
+ 22124
456
+ 22125
457
+ 22126
458
+ 22127
459
+ 22128
460
+ 25318
461
+ 70176
462
+ 68528
463
+ 25337
464
+ 25338
465
+ 25327
466
+ 25328
467
+ 67722
468
+ 25332
469
+ 25333
470
+ 26688
471
+ 68396
472
+ 68068
473
+ 26736
474
+ 26716
475
+ 67745
476
+ 26721
477
+ 26722
478
+ 26723
479
+ 26724
480
+ 26726
481
+ 70016
482
+ 68350
483
+ 68070
484
+ 26977
485
+ 26978
486
+ 67750
487
+ 26981
488
+ 26982
489
+ 26983
490
+ 26984
491
+ 26985
492
+ 26986
493
+ 31746
494
+ 31765
495
+ 31766
496
+ 31754
497
+ 31757
498
+ 31758
499
+ 67817
500
+ 31759
501
+ 31762
502
+ 31763
503
+ 31764
504
+ 32146
505
+ 68084
506
+ 68085
507
+ 68904
508
+ 32161
509
+ 32162
510
+ 67827
511
+ 32164
512
+ 32165
513
+ 32166
514
+ 32319
515
+ 32335
516
+ 32336
517
+ 32327
518
+ 32328
519
+ 67829
520
+ 32329
521
+ 32334
522
+ 34685
523
+ 68794
524
+ 34739
525
+ 34741
526
+ 67872
527
+ 34743
528
+ 34744
529
+ 34745
530
+ 51054
531
+ 68928
532
+ 51077
533
+ 67188
534
+ 51069
535
+ 51070
536
+ 51071
537
+ 51072
538
+ 55356
539
+ 68428
540
+ 68162
541
+ 68624
542
+ 55367
543
+ 55370
544
+ 55371
545
+ 55372
546
+ 55373
547
+ 55374
548
+ 56835
549
+ 56851
550
+ 56845
551
+ 67278
552
+ 67279
553
+ 56849
554
+ 56850
555
+ 63191
556
+ 68622
557
+ 68182
558
+ 70245
559
+ 63206
560
+ 63209
561
+ 63210
562
+ 63211
563
+ 63212
564
+ 63213
565
+ 64082
566
+ 68189
567
+ 70296
568
+ 70132
569
+ 64089
570
+ 64092
571
+ 64093
572
+ 67009
573
+ 67010
574
+ 64094
575
+ 64095
576
+ 64096
577
+ 00618
578
+ 00630
579
+ 67342
580
+ 00635
581
+ 00636
582
+ 00638
583
+ 02997
584
+ 68003
585
+ 68576
586
+ 70309
587
+ 03004
588
+ 03006
589
+ 03007
590
+ 67367
591
+ 06326
592
+ 70107
593
+ 06336
594
+ 06338
595
+ 06339
596
+ 67411
597
+ 06340
598
+ 06341
599
+ 06342
600
+ 09945
601
+ 70379
602
+ 09968
603
+ 09969
604
+ 65332
605
+ 09961
606
+ 09962
607
+ 11752
608
+ 68202
609
+ 68027
610
+ 11771
611
+ 11774
612
+ 11775
613
+ 11776
614
+ 67514
615
+ 11777
616
+ 11778
617
+ 11779
618
+ 13309
619
+ 13330
620
+ 13331
621
+ 67531
622
+ 67530
623
+ 13335
624
+ 13336
625
+ 13681
626
+ 13700
627
+ 13701
628
+ 13704
629
+ 67536
630
+ 13705
631
+ 13706
632
+ 13707
633
+ 13708
634
+ 13709
635
+ 14621
636
+ 68032
637
+ 70152
638
+ 68988
639
+ 69048
640
+ 14626
641
+ 14628
642
+ 14629
643
+ 14630
644
+ 67550
645
+ 14631
646
+ 14632
647
+ 14669
648
+ 14677
649
+ 14678
650
+ 14679
651
+ 14682
652
+ 14683
653
+ 14684
654
+ 17007
655
+ 68842
656
+ 70049
657
+ 17018
658
+ 17022
659
+ 67579
660
+ 17023
661
+ 17024
662
+ 17025
663
+ 18316
664
+ 68520
665
+ 68044
666
+ 69086
667
+ 18326
668
+ 18328
669
+ 18331
670
+ 18332
671
+ 67610
672
+ 67611
673
+ 18333
674
+ 18334
675
+ 19255
676
+ 68344
677
+ 68046
678
+ 70051
679
+ 19262
680
+ 19263
681
+ 19265
682
+ 19266
683
+ 67624
684
+ 19267
685
+ 19268
686
+ 68053
687
+ 68692
688
+ 68054
689
+ 70376
690
+ 22956
691
+ 22959
692
+ 22961
693
+ 22962
694
+ 22963
695
+ 22964
696
+ 22965
697
+ 22966
698
+ 24655
699
+ 24656
700
+ 24657
701
+ 24658
702
+ 24659
703
+ 24642
704
+ 24643
705
+ 24645
706
+ 24652
707
+ 68086
708
+ 69068
709
+ 32251
710
+ 32252
711
+ 67826
712
+ 32258
713
+ 32259
714
+ 35506
715
+ 68099
716
+ 68974
717
+ 35514
718
+ 35515
719
+ 67886
720
+ 35519
721
+ 35520
722
+ 35521
723
+ 35522
724
+ 42827
725
+ 68132
726
+ 68398
727
+ 70246
728
+ 42835
729
+ 42838
730
+ 67990
731
+ 42840
732
+ 42841
733
+ 42842
734
+ 42953
735
+ 42974
736
+ 42976
737
+ 42963
738
+ 42964
739
+ 42971
740
+ 42972
741
+ 68288
742
+ 68133
743
+ 43172
744
+ 43175
745
+ 67081
746
+ 43176
747
+ 43177
748
+ 43178
749
+ 49577
750
+ 68218
751
+ 68510
752
+ 70207
753
+ 68145
754
+ 49601
755
+ 49603
756
+ 49604
757
+ 67170
758
+ 49605
759
+ 50036
760
+ 50042
761
+ 50043
762
+ 67177
763
+ 50047
764
+ 50048
765
+ 50049
766
+ 50050
767
+ 50051
768
+ 51206
769
+ 70355
770
+ 51228
771
+ 51229
772
+ 51230
773
+ 51234
774
+ 58488
775
+ 68294
776
+ 70356
777
+ 68171
778
+ 58504
779
+ 58505
780
+ 58506
781
+ 67309
782
+ 58507
783
+ 58500
784
+ 58501
785
+ 62241
786
+ 68178
787
+ 68540
788
+ 62249
789
+ 62253
790
+ 67038
791
+ 62254
792
+ 62256
793
+ 62257
794
+ 62258
795
+ 63769
796
+ 68924
797
+ 63804
798
+ 63805
799
+ 63794
800
+ 67003
801
+ 63801
802
+ 63802
803
+ 63803
804
+ 01382
805
+ 01390
806
+ 67350
807
+ 01392
808
+ 01393
809
+ 01394
810
+ 01395
811
+ 01396
812
+ 01397
813
+ 05227
814
+ 68612
815
+ 05236
816
+ 05237
817
+ 67392
818
+ 05241
819
+ 06355
820
+ 68338
821
+ 70357
822
+ 70359
823
+ 06366
824
+ 06367
825
+ 06368
826
+ 67413
827
+ 06369
828
+ 06370
829
+ 06361
830
+ 06362
831
+ 07957
832
+ 70242
833
+ 69028
834
+ 07964
835
+ 07967
836
+ 07968
837
+ 07969
838
+ 67446
839
+ 07971
840
+ 07972
841
+ 08421
842
+ 68368
843
+ 68016
844
+ 08427
845
+ 08428
846
+ 08432
847
+ 08433
848
+ 67451
849
+ 08434
850
+ 08435
851
+ 08436
852
+ 10146
853
+ 10161
854
+ 10162
855
+ 10164
856
+ 67489
857
+ 67490
858
+ 10156
859
+ 10160
860
+ 10888
861
+ 68374
862
+ 10896
863
+ 10899
864
+ 10900
865
+ 10901
866
+ 67501
867
+ 10902
868
+ 10903
869
+ 13154
870
+ 70030
871
+ 68029
872
+ 69004
873
+ 13159
874
+ 13162
875
+ 67527
876
+ 13164
877
+ 13165
878
+ 13166
879
+ 15031
880
+ 70119
881
+ 15036
882
+ 15039
883
+ 15040
884
+ 67555
885
+ 67556
886
+ 15041
887
+ 15042
888
+ 70029
889
+ 23772
890
+ 23773
891
+ 23777
892
+ 67697
893
+ 23778
894
+ 23779
895
+ 23780
896
+ 28187
897
+ 70295
898
+ 68954
899
+ 28206
900
+ 28207
901
+ 28208
902
+ 67776
903
+ 28212
904
+ 28213
905
+ 30830
906
+ 68320
907
+ 68079
908
+ 30847
909
+ 30848
910
+ 30837
911
+ 30838
912
+ 67802
913
+ 30841
914
+ 30842
915
+ 30843
916
+ 68636
917
+ 70325
918
+ 68089
919
+ 32951
920
+ 67840
921
+ 32956
922
+ 32957
923
+ 68810
924
+ 35457
925
+ 35460
926
+ 35461
927
+ 67890
928
+ 35462
929
+ 35463
930
+ 35464
931
+ 35465
932
+ 35466
933
+ 37879
934
+ 70237
935
+ 68544
936
+ 37885
937
+ 37887
938
+ 37888
939
+ 37889
940
+ 37890
941
+ 67925
942
+ 37891
943
+ 37892
944
+ 37893
945
+ 40816
946
+ 68364
947
+ 68125
948
+ 40838
949
+ 40839
950
+ 40842
951
+ 40843
952
+ 67958
953
+ 40844
954
+ 40845
955
+ 40846
956
+ 41008
957
+ 68446
958
+ 70211
959
+ 68127
960
+ 41031
961
+ 41033
962
+ 41034
963
+ 67961
964
+ 41035
965
+ 41036
966
+ 45252
967
+ 70378
968
+ 45266
969
+ 45268
970
+ 45269
971
+ 45270
972
+ 67111
973
+ 45271
974
+ 45272
975
+ 45432
976
+ 68137
977
+ 68726
978
+ 70247
979
+ 45439
980
+ 45440
981
+ 45441
982
+ 67114
983
+ 45442
984
+ 45437
985
+ 68142
986
+ 48122
987
+ 48123
988
+ 67143
989
+ 48111
990
+ 48112
991
+ 67142
992
+ 48117
993
+ 48120
994
+ 68856
995
+ 49179
996
+ 49180
997
+ 67159
998
+ 67161
999
+ 49184
1000
+ 49185
1001
+ 49186
1002
+ 49187
1003
+ 53258
1004
+ 68336
1005
+ 70335
1006
+ 53272
1007
+ 53276
1008
+ 53277
1009
+ 67227
1010
+ 53278
1011
+ 57273
1012
+ 57279
1013
+ 57280
1014
+ 57281
1015
+ 67287
1016
+ 57288
1017
+ 57289
1018
+ 57290
1019
+ 58359
1020
+ 70026
1021
+ 58364
1022
+ 58367
1023
+ 58368
1024
+ 67306
1025
+ 58369
1026
+ 61804
1027
+ 68248
1028
+ 61811
1029
+ 61813
1030
+ 61814
1031
+ 61815
1032
+ 61816
1033
+ 61817
1034
+ 61818
1035
+ 62077
1036
+ 62104
1037
+ 62105
1038
+ 67034
1039
+ 62109
1040
+ 62110
1041
+ 62111
1042
+ 62112
1043
+ 62479
1044
+ 68179
1045
+ 70069
1046
+ 68722
1047
+ 62504
1048
+ 62507
1049
+ 62508
1050
+ 67044
1051
+ 62509
1052
+ 63325
1053
+ 70333
1054
+ 68766
1055
+ 63330
1056
+ 63331
1057
+ 63333
1058
+ 63334
1059
+ 67068
1060
+ 63335
1061
+ 63336
1062
+ 64260
1063
+ 68191
1064
+ 68964
1065
+ 70240
1066
+ 64267
1067
+ 64268
1068
+ 64269
1069
+ 67013
1070
+ 64270
1071
+ 64265
1072
+ 04614
1073
+ 68956
1074
+ 04621
1075
+ 04622
1076
+ 04626
1077
+ 04627
1078
+ 04628
1079
+ 04629
1080
+ 04630
1081
+ 68626
1082
+ 05092
1083
+ 05093
1084
+ 67389
1085
+ 05099
1086
+ 05101
1087
+ 07929
1088
+ 68594
1089
+ 07939
1090
+ 07941
1091
+ 67445
1092
+ 07942
1093
+ 09431
1094
+ 09530
1095
+ 09531
1096
+ 09534
1097
+ 67477
1098
+ 09535
1099
+ 09536
1100
+ 09537
1101
+ 10189
1102
+ 67491
1103
+ 10193
1104
+ 10194
1105
+ 10195
1106
+ 10196
1107
+ 10965
1108
+ 68376
1109
+ 68021
1110
+ 68900
1111
+ 10974
1112
+ 10975
1113
+ 67502
1114
+ 10971
1115
+ 14172
1116
+ 14178
1117
+ 14179
1118
+ 67545
1119
+ 14185
1120
+ 14186
1121
+ 14187
1122
+ 16190
1123
+ 68034
1124
+ 68666
1125
+ 16196
1126
+ 16197
1127
+ 16199
1128
+ 16200
1129
+ 16201
1130
+ 16202
1131
+ 17317
1132
+ 70264
1133
+ 68038
1134
+ 17329
1135
+ 17331
1136
+ 17332
1137
+ 17333
1138
+ 67583
1139
+ 17334
1140
+ 17335
1141
+ 25674
1142
+ 70241
1143
+ 69066
1144
+ 25691
1145
+ 25692
1146
+ 25693
1147
+ 25694
1148
+ 67729
1149
+ 25688
1150
+ 25690
1151
+ 26122
1152
+ 68424
1153
+ 68064
1154
+ 67737
1155
+ 26167
1156
+ 26169
1157
+ 26170
1158
+ 26172
1159
+ 26757
1160
+ 68069
1161
+ 70221
1162
+ 68984
1163
+ 69088
1164
+ 26775
1165
+ 67746
1166
+ 26776
1167
+ 26777
1168
+ 26778
1169
+ 26770
1170
+ 26832
1171
+ 26838
1172
+ 26841
1173
+ 67747
1174
+ 26842
1175
+ 26843
1176
+ 26844
1177
+ 26845
1178
+ 29628
1179
+ 29650
1180
+ 29651
1181
+ 29652
1182
+ 29653
1183
+ 29654
1184
+ 29659
1185
+ 29660
1186
+ 31841
1187
+ 70320
1188
+ 31846
1189
+ 31849
1190
+ 31850
1191
+ 67821
1192
+ 31851
1193
+ 31852
1194
+ 31853
1195
+ 31854
1196
+ 31855
1197
+ 32373
1198
+ 32393
1199
+ 32395
1200
+ 32397
1201
+ 67831
1202
+ 32392
1203
+ 32598
1204
+ 68088
1205
+ 70205
1206
+ 32609
1207
+ 32610
1208
+ 32613
1209
+ 67835
1210
+ 32614
1211
+ 32615
1212
+ 37120
1213
+ 68104
1214
+ 68832
1215
+ 37147
1216
+ 37149
1217
+ 37150
1218
+ 37151
1219
+ 37128
1220
+ 37130
1221
+ 37134
1222
+ 67914
1223
+ 37135
1224
+ 45835
1225
+ 45841
1226
+ 67119
1227
+ 45845
1228
+ 45846
1229
+ 45847
1230
+ 45848
1231
+ 45849
1232
+ 45850
1233
+ 46260
1234
+ 68400
1235
+ 68138
1236
+ 70274
1237
+ 69034
1238
+ 68139
1239
+ 46273
1240
+ 46275
1241
+ 67125
1242
+ 46270
1243
+ 46271
1244
+ 46712
1245
+ 68664
1246
+ 70239
1247
+ 46738
1248
+ 46739
1249
+ 46740
1250
+ 67129
1251
+ 46741
1252
+ 46735
1253
+ 46736
1254
+ 48507
1255
+ 48515
1256
+ 67149
1257
+ 48518
1258
+ 48519
1259
+ 48520
1260
+ 68762
1261
+ 48816
1262
+ 48817
1263
+ 48818
1264
+ 48819
1265
+ 67153
1266
+ 48824
1267
+ 48804
1268
+ 48805
1269
+ 48814
1270
+ 70231
1271
+ 51349
1272
+ 51350
1273
+ 51351
1274
+ 51352
1275
+ 67195
1276
+ 51357
1277
+ 51358
1278
+ 51494
1279
+ 68152
1280
+ 68776
1281
+ 51516
1282
+ 51505
1283
+ 51506
1284
+ 67201
1285
+ 51514
1286
+ 51515
1287
+ 52834
1288
+ 70122
1289
+ 52864
1290
+ 52865
1291
+ 52866
1292
+ 67221
1293
+ 52861
1294
+ 56652
1295
+ 68228
1296
+ 56697
1297
+ 56703
1298
+ 56695
1299
+ 56696
1300
+ 57034
1301
+ 68412
1302
+ 68168
1303
+ 70034
1304
+ 57083
1305
+ 57084
1306
+ 57085
1307
+ 67280
1308
+ 57086
1309
+ 57081
1310
+ 57037
1311
+ 68166
1312
+ 57043
1313
+ 57046
1314
+ 57047
1315
+ 57048
1316
+ 67282
1317
+ 57049
1318
+ 57050
1319
+ 62728
1320
+ 68740
1321
+ 70304
1322
+ 62744
1323
+ 62749
1324
+ 67052
1325
+ 62750
1326
+ 62751
1327
+ 63279
1328
+ 70213
1329
+ 63286
1330
+ 67067
1331
+ 63290
1332
+ 63291
1333
+ 63574
1334
+ 68572
1335
+ 68714
1336
+ 68186
1337
+ 63594
1338
+ 63595
1339
+ 67076
1340
+ 63591
1341
+ 63593
1342
+ 64049
1343
+ 70261
1344
+ 64062
1345
+ 64064
1346
+ 67008
1347
+ 64066
1348
+ 64067
1349
+ 64303
1350
+ 70347
1351
+ 64310
1352
+ 64312
1353
+ 67014
1354
+ 64313
1355
+ 64314
1356
+ 01457
1357
+ 68276
1358
+ 70219
1359
+ 01467
1360
+ 01468
1361
+ 01469
1362
+ 01470
1363
+ 01465
1364
+ 04694
1365
+ 04716
1366
+ 67381
1367
+ 04720
1368
+ 04721
1369
+ 04722
1370
+ 04833
1371
+ 04853
1372
+ 67385
1373
+ 04859
1374
+ 04860
1375
+ 04861
1376
+ 04862
1377
+ 05296
1378
+ 05301
1379
+ 05302
1380
+ 05304
1381
+ 05305
1382
+ 67394
1383
+ 05307
1384
+ 05308
1385
+ 05309
1386
+ 06550
1387
+ 06557
1388
+ 67415
1389
+ 06560
1390
+ 06561
1391
+ 06562
1392
+ 08478
1393
+ 68566
1394
+ 08489
1395
+ 08490
1396
+ 08491
1397
+ 67453
1398
+ 08487
1399
+ 08695
1400
+ 67460
1401
+ 08697
1402
+ 08698
1403
+ 11552
1404
+ 70298
1405
+ 70033
1406
+ 68025
1407
+ 69024
1408
+ 11565
1409
+ 67510
1410
+ 11562
1411
+ 11564
1412
+ 11630
1413
+ 67513
1414
+ 11636
1415
+ 11637
1416
+ 11704
1417
+ 68026
1418
+ 70206
1419
+ 11714
1420
+ 11715
1421
+ 11716
1422
+ 11717
1423
+ 67512
1424
+ 11712
1425
+ 13258
1426
+ 68756
1427
+ 13270
1428
+ 13271
1429
+ 13272
1430
+ 67528
1431
+ 13276
1432
+ 13277
1433
+ 14450
1434
+ 68652
1435
+ 14455
1436
+ 14456
1437
+ 14459
1438
+ 65432
1439
+ 67549
1440
+ 67548
1441
+ 14460
1442
+ 14748
1443
+ 70334
1444
+ 68858
1445
+ 14754
1446
+ 14758
1447
+ 14759
1448
+ 20064
1449
+ 20073
1450
+ 20075
1451
+ 20076
1452
+ 21052
1453
+ 21076
1454
+ 67643
1455
+ 21079
1456
+ 21080
1457
+ 22071
1458
+ 70083
1459
+ 22088
1460
+ 22089
1461
+ 67666
1462
+ 22096
1463
+ 22097
1464
+ 23567
1465
+ 68214
1466
+ 70342
1467
+ 68952
1468
+ 23575
1469
+ 23576
1470
+ 67691
1471
+ 23577
1472
+ 23573
1473
+ 25037
1474
+ 70259
1475
+ 25074
1476
+ 25075
1477
+ 67723
1478
+ 25071
1479
+ 26506
1480
+ 70284
1481
+ 26528
1482
+ 26533
1483
+ 67743
1484
+ 26534
1485
+ 26535
1486
+ 26536
1487
+ 27762
1488
+ 68514
1489
+ 70085
1490
+ 27772
1491
+ 27773
1492
+ 27774
1493
+ 67765
1494
+ 27769
1495
+ 27771
1496
+ 31896
1497
+ 31902
1498
+ 31904
1499
+ 31905
1500
+ 67823
1501
+ 31906
1502
+ 31907
1503
+ 31908
1504
+ 32298
1505
+ 70297
1506
+ 32305
1507
+ 32307
1508
+ 32308
1509
+ 32309
1510
+ 67828
1511
+ 32310
1512
+ 32673
1513
+ 32675
1514
+ 32663
1515
+ 67836
1516
+ 32664
1517
+ 33450
1518
+ 33478
1519
+ 33481
1520
+ 67852
1521
+ 33482
1522
+ 33484
1523
+ 33485
1524
+ 34009
1525
+ 34010
1526
+ 67861
1527
+ 34013
1528
+ 34014
1529
+ 34015
1530
+ 34016
1531
+ 37575
1532
+ 68480
1533
+ 68106
1534
+ 37587
1535
+ 37588
1536
+ 37589
1537
+ 67922
1538
+ 37583
1539
+ 37584
1540
+ 37586
1541
+ 39604
1542
+ 39629
1543
+ 39633
1544
+ 69040
1545
+ 39630
1546
+ 39631
1547
+ 67944
1548
+ 39634
1549
+ 39628
1550
+ 42196
1551
+ 68646
1552
+ 68129
1553
+ 42228
1554
+ 42234
1555
+ 67981
1556
+ 42236
1557
+ 42237
1558
+ 42238
1559
+ 43519
1560
+ 70198
1561
+ 43526
1562
+ 43527
1563
+ 43531
1564
+ 43532
1565
+ 43533
1566
+ 43534
1567
+ 44677
1568
+ 44685
1569
+ 44688
1570
+ 44689
1571
+ 67107
1572
+ 67105
1573
+ 44690
1574
+ 47174
1575
+ 68141
1576
+ 68864
1577
+ 70375
1578
+ 47180
1579
+ 67134
1580
+ 47184
1581
+ 47185
1582
+ 47186
1583
+ 50846
1584
+ 50853
1585
+ 50854
1586
+ 50857
1587
+ 50858
1588
+ 50859
1589
+ 50860
1590
+ 50861
1591
+ 50852
1592
+ 53290
1593
+ 53297
1594
+ 53298
1595
+ 53302
1596
+ 53303
1597
+ 54548
1598
+ 68914
1599
+ 54559
1600
+ 54560
1601
+ 54564
1602
+ 54565
1603
+ 54566
1604
+ 55768
1605
+ 70022
1606
+ 55774
1607
+ 55775
1608
+ 55778
1609
+ 55779
1610
+ 55780
1611
+ 55781
1612
+ 57519
1613
+ 57532
1614
+ 57533
1615
+ 57536
1616
+ 67290
1617
+ 57537
1618
+ 57539
1619
+ 57540
1620
+ 58588
1621
+ 68488
1622
+ 68172
1623
+ 58595
1624
+ 58596
1625
+ 58597
1626
+ 67310
1627
+ 58598
1628
+ 58599
1629
+ 59203
1630
+ 59213
1631
+ 59218
1632
+ 59479
1633
+ 68478
1634
+ 68173
1635
+ 59501
1636
+ 59504
1637
+ 67323
1638
+ 59505
1639
+ 63415
1640
+ 68184
1641
+ 70265
1642
+ 63423
1643
+ 63424
1644
+ 63425
1645
+ 63426
1646
+ 67069
1647
+ 63420
1648
+ 63421
1649
+ 64351
1650
+ 64384
1651
+ 64386
1652
+ 64387
1653
+ 64388
1654
+ 67015
1655
+ 64389
1656
+ 64390
1657
+ 00412
1658
+ 00419
1659
+ 00422
1660
+ 00423
1661
+ 67339
1662
+ 67341
1663
+ 00424
1664
+ 00425
1665
+ 03117
1666
+ 03123
1667
+ 03126
1668
+ 03127
1669
+ 03128
1670
+ 03129
1671
+ 03130
1672
+ 03434
1673
+ 70124
1674
+ 03440
1675
+ 03442
1676
+ 03443
1677
+ 67371
1678
+ 03444
1679
+ 04790
1680
+ 04800
1681
+ 04804
1682
+ 67384
1683
+ 04805
1684
+ 04895
1685
+ 04901
1686
+ 04902
1687
+ 04904
1688
+ 67387
1689
+ 04905
1690
+ 68990
1691
+ 70254
1692
+ 05474
1693
+ 05475
1694
+ 67397
1695
+ 05477
1696
+ 05595
1697
+ 05603
1698
+ 67399
1699
+ 05607
1700
+ 05608
1701
+ 07436
1702
+ 69002
1703
+ 07459
1704
+ 07460
1705
+ 07461
1706
+ 67433
1707
+ 07457
1708
+ 08363
1709
+ 08371
1710
+ 08374
1711
+ 08375
1712
+ 08376
1713
+ 67450
1714
+ 08377
1715
+ 08378
1716
+ 09178
1717
+ 70200
1718
+ 09184
1719
+ 09187
1720
+ 67475
1721
+ 09183
1722
+ 09719
1723
+ 09724
1724
+ 09727
1725
+ 09728
1726
+ 67481
1727
+ 09729
1728
+ 09730
1729
+ 09731
1730
+ 10099
1731
+ 68020
1732
+ 69056
1733
+ 10108
1734
+ 67487
1735
+ 10114
1736
+ 68800
1737
+ 10465
1738
+ 10469
1739
+ 10470
1740
+ 67495
1741
+ 10471
1742
+ 10472
1743
+ 10473
1744
+ 10696
1745
+ 68554
1746
+ 10712
1747
+ 10713
1748
+ 10714
1749
+ 10706
1750
+ 10707
1751
+ 11197
1752
+ 11201
1753
+ 11202
1754
+ 11204
1755
+ 11205
1756
+ 11206
1757
+ 67504
1758
+ 11209
1759
+ 11210
1760
+ 11212
1761
+ 68654
1762
+ 11255
1763
+ 11256
1764
+ 11257
1765
+ 11259
1766
+ 11264
1767
+ 11265
1768
+ 13133
1769
+ 13139
1770
+ 13141
1771
+ 13146
1772
+ 13147
1773
+ 13542
1774
+ 13547
1775
+ 13548
1776
+ 67534
1777
+ 13552
1778
+ 13553
1779
+ 70149
1780
+ 13809
1781
+ 13810
1782
+ 13811
1783
+ 13801
1784
+ 13802
1785
+ 14780
1786
+ 14797
1787
+ 14800
1788
+ 14801
1789
+ 67553
1790
+ 14802
1791
+ 16581
1792
+ 16588
1793
+ 16590
1794
+ 16594
1795
+ 16595
1796
+ 16596
1797
+ 16597
1798
+ 68746
1799
+ 68040
1800
+ 70250
1801
+ 17661
1802
+ 67593
1803
+ 17664
1804
+ 17658
1805
+ 17751
1806
+ 68476
1807
+ 70262
1808
+ 17763
1809
+ 17764
1810
+ 17765
1811
+ 17770
1812
+ 17771
1813
+ 17825
1814
+ 17826
1815
+ 17829
1816
+ 67595
1817
+ 17830
1818
+ 17831
1819
+ 21248
1820
+ 21250
1821
+ 21239
1822
+ 67646
1823
+ 21246
1824
+ 21425
1825
+ 21438
1826
+ 21439
1827
+ 21440
1828
+ 21441
1829
+ 67653
1830
+ 21435
1831
+ 21437
1832
+ 22798
1833
+ 70129
1834
+ 22809
1835
+ 67673
1836
+ 22814
1837
+ 22815
1838
+ 23945
1839
+ 69060
1840
+ 23954
1841
+ 67700
1842
+ 23955
1843
+ 23949
1844
+ 24023
1845
+ 68242
1846
+ 68798
1847
+ 68056
1848
+ 24032
1849
+ 67702
1850
+ 24028
1851
+ 24030
1852
+ 24031
1853
+ 24590
1854
+ 68840
1855
+ 24612
1856
+ 24613
1857
+ 67709
1858
+ 24610
1859
+ 25240
1860
+ 25249
1861
+ 67721
1862
+ 25251
1863
+ 25252
1864
+ 26938
1865
+ 26947
1866
+ 26948
1867
+ 26953
1868
+ 26954
1869
+ 26955
1870
+ 27254
1871
+ 68072
1872
+ 68610
1873
+ 27269
1874
+ 27271
1875
+ 27272
1876
+ 67758
1877
+ 27267
1878
+ 27917
1879
+ 27927
1880
+ 67769
1881
+ 27931
1882
+ 27932
1883
+ 27933
1884
+ 28157
1885
+ 70373
1886
+ 28166
1887
+ 28167
1888
+ 28168
1889
+ 67777
1890
+ 28163
1891
+ 28165
1892
+ 28461
1893
+ 68772
1894
+ 28470
1895
+ 28471
1896
+ 28472
1897
+ 67781
1898
+ 28467
1899
+ 28468
1900
+ 30158
1901
+ 67794
1902
+ 30163
1903
+ 30164
1904
+ 30165
1905
+ 31147
1906
+ 69006
1907
+ 31153
1908
+ 31154
1909
+ 31159
1910
+ 31161
1911
+ 31163
1912
+ 68090
1913
+ 33224
1914
+ 33210
1915
+ 33211
1916
+ 33212
1917
+ 33220
1918
+ 33221
1919
+ 33537
1920
+ 70019
1921
+ 68574
1922
+ 33543
1923
+ 33544
1924
+ 67853
1925
+ 67851
1926
+ 33540
1927
+ 33541
1928
+ 34558
1929
+ 68226
1930
+ 70082
1931
+ 34582
1932
+ 67871
1933
+ 34585
1934
+ 70217
1935
+ 35296
1936
+ 35297
1937
+ 67880
1938
+ 67881
1939
+ 35301
1940
+ 35302
1941
+ 36826
1942
+ 70222
1943
+ 36832
1944
+ 67906
1945
+ 36837
1946
+ 36838
1947
+ 36839
1948
+ 36912
1949
+ 68268
1950
+ 68102
1951
+ 70052
1952
+ 36920
1953
+ 36921
1954
+ 36917
1955
+ 36919
1956
+ 37356
1957
+ 68105
1958
+ 69044
1959
+ 37371
1960
+ 37372
1961
+ 67917
1962
+ 37368
1963
+ 38103
1964
+ 38128
1965
+ 38129
1966
+ 38131
1967
+ 67929
1968
+ 38132
1969
+ 38585
1970
+ 68452
1971
+ 68920
1972
+ 68111
1973
+ 38593
1974
+ 38589
1975
+ 38591
1976
+ 38592
1977
+ 39454
1978
+ 68826
1979
+ 39461
1980
+ 39465
1981
+ 67943
1982
+ 39467
1983
+ 70172
1984
+ 40174
1985
+ 40175
1986
+ 67950
1987
+ 67951
1988
+ 68126
1989
+ 40993
1990
+ 40994
1991
+ 67959
1992
+ 40995
1993
+ 40989
1994
+ 40990
1995
+ 41306
1996
+ 41318
1997
+ 41320
1998
+ 66266
1999
+ 41323
2000
+ 41324
2001
+ 68380
2002
+ 70151
2003
+ 41455
2004
+ 67965
2005
+ 41456
2006
+ 41451
2007
+ 41819
2008
+ 70210
2009
+ 70267
2010
+ 41828
2011
+ 41829
2012
+ 41830
2013
+ 41831
2014
+ 67971
2015
+ 41832
2016
+ 41825
2017
+ 43037
2018
+ 70177
2019
+ 43063
2020
+ 43064
2021
+ 43065
2022
+ 43066
2023
+ 43059
2024
+ 43060
2025
+ 43213
2026
+ 70220
2027
+ 68670
2028
+ 43225
2029
+ 67083
2030
+ 43221
2031
+ 43223
2032
+ 43224
2033
+ 44080
2034
+ 68706
2035
+ 68738
2036
+ 44089
2037
+ 44090
2038
+ 44084
2039
+ 44364
2040
+ 44372
2041
+ 44375
2042
+ 44376
2043
+ 67097
2044
+ 44377
2045
+ 47655
2046
+ 70170
2047
+ 68996
2048
+ 47663
2049
+ 47664
2050
+ 67139
2051
+ 47665
2052
+ 47660
2053
+ 48038
2054
+ 68898
2055
+ 48047
2056
+ 48049
2057
+ 48052
2058
+ 48053
2059
+ 48045
2060
+ 48898
2061
+ 48905
2062
+ 67154
2063
+ 48909
2064
+ 48910
2065
+ 48911
2066
+ 48912
2067
+ 49127
2068
+ 49136
2069
+ 49137
2070
+ 49138
2071
+ 67157
2072
+ 49139
2073
+ 49133
2074
+ 49244
2075
+ 49249
2076
+ 49253
2077
+ 67162
2078
+ 49254
2079
+ 68284
2080
+ 68466
2081
+ 70209
2082
+ 68154
2083
+ 51630
2084
+ 51633
2085
+ 51772
2086
+ 70351
2087
+ 68548
2088
+ 51779
2089
+ 51780
2090
+ 67204
2091
+ 51776
2092
+ 52550
2093
+ 52558
2094
+ 52559
2095
+ 67214
2096
+ 52562
2097
+ 52564
2098
+ 52565
2099
+ 53190
2100
+ 68159
2101
+ 68978
2102
+ 53215
2103
+ 67226
2104
+ 53211
2105
+ 53213
2106
+ 53214
2107
+ 53453
2108
+ 70188
2109
+ 53489
2110
+ 53490
2111
+ 53491
2112
+ 67230
2113
+ 53492
2114
+ 53487
2115
+ 55332
2116
+ 55344
2117
+ 55345
2118
+ 55346
2119
+ 67256
2120
+ 55347
2121
+ 55342
2122
+ 57035
2123
+ 70204
2124
+ 68167
2125
+ 57065
2126
+ 57066
2127
+ 57067
2128
+ 67281
2129
+ 57062
2130
+ 57781
2131
+ 57786
2132
+ 57787
2133
+ 57792
2134
+ 57793
2135
+ 58782
2136
+ 58789
2137
+ 58790
2138
+ 58792
2139
+ 58793
2140
+ 67314
2141
+ 58794
2142
+ 59298
2143
+ 68496
2144
+ 59311
2145
+ 67319
2146
+ 59317
2147
+ 59318
2148
+ 60345
2149
+ 70256
2150
+ 60351
2151
+ 67334
2152
+ 60355
2153
+ 60356
2154
+ 62267
2155
+ 62278
2156
+ 62280
2157
+ 62281
2158
+ 62282
2159
+ 67039
2160
+ 62283
2161
+ 62277
2162
+ 63079
2163
+ 68181
2164
+ 68998
2165
+ 63088
2166
+ 63089
2167
+ 63090
2168
+ 67061
2169
+ 63085
2170
+ 64423
2171
+ 64432
2172
+ 64435
2173
+ 64436
2174
+ 64437
2175
+ 64438
2176
+ 64439
2177
+ 64440
2178
+ 64431
2179
+ 02227
2180
+ 70037
2181
+ 02234
2182
+ 02235
2183
+ 02236
2184
+ 02237
2185
+ 02232
2186
+ 02581
2187
+ 02590
2188
+ 02591
2189
+ 67363
2190
+ 02588
2191
+ 03266
2192
+ 03276
2193
+ 03280
2194
+ 03281
2195
+ 04484
2196
+ 04512
2197
+ 04513
2198
+ 67377
2199
+ 04510
2200
+ 70164
2201
+ 04596
2202
+ 04597
2203
+ 67379
2204
+ 04602
2205
+ 04603
2206
+ 04595
2207
+ 04764
2208
+ 70031
2209
+ 04773
2210
+ 04774
2211
+ 67383
2212
+ 67382
2213
+ 04771
2214
+ 05270
2215
+ 05281
2216
+ 05282
2217
+ 05283
2218
+ 05284
2219
+ 67393
2220
+ 05279
2221
+ 05800
2222
+ 05805
2223
+ 05806
2224
+ 05809
2225
+ 05810
2226
+ 67404
2227
+ 05813
2228
+ 05814
2229
+ 05815
2230
+ 07803
2231
+ 68828
2232
+ 07814
2233
+ 07809
2234
+ 07812
2235
+ 07813
2236
+ 09462
2237
+ 09463
2238
+ 09464
2239
+ 09470
2240
+ 09472
2241
+ 09773
2242
+ 09782
2243
+ 67480
2244
+ 09783
2245
+ 09784
2246
+ 09785
2247
+ 09914
2248
+ 09923
2249
+ 09925
2250
+ 10260
2251
+ 70064
2252
+ 10273
2253
+ 10274
2254
+ 67492
2255
+ 10270
2256
+ 10272
2257
+ 13467
2258
+ 13474
2259
+ 13475
2260
+ 13476
2261
+ 67532
2262
+ 13477
2263
+ 13471
2264
+ 13472
2265
+ 13850
2266
+ 70363
2267
+ 13861
2268
+ 13862
2269
+ 67539
2270
+ 13856
2271
+ 13857
2272
+ 15317
2273
+ 15324
2274
+ 15331
2275
+ 15368
2276
+ 67559
2277
+ 15372
2278
+ 15373
2279
+ 16437
2280
+ 70153
2281
+ 16442
2282
+ 67574
2283
+ 16447
2284
+ 16448
2285
+ 16449
2286
+ 16961
2287
+ 70341
2288
+ 68426
2289
+ 16971
2290
+ 65500
2291
+ 67577
2292
+ 16973
2293
+ 16975
2294
+ 68039
2295
+ 68782
2296
+ 17601
2297
+ 17602
2298
+ 67588
2299
+ 17604
2300
+ 17605
2301
+ 17597
2302
+ 18270
2303
+ 18295
2304
+ 18296
2305
+ 18297
2306
+ 67607
2307
+ 18293
2308
+ 18301
2309
+ 70079
2310
+ 68043
2311
+ 68966
2312
+ 18313
2313
+ 67609
2314
+ 18309
2315
+ 18312
2316
+ 18485
2317
+ 70065
2318
+ 18489
2319
+ 18491
2320
+ 67612
2321
+ 18496
2322
+ 18497
2323
+ 19402
2324
+ 19413
2325
+ 19417
2326
+ 21202
2327
+ 21220
2328
+ 21210
2329
+ 67647
2330
+ 21217
2331
+ 21218
2332
+ 21219
2333
+ 21272
2334
+ 21277
2335
+ 67649
2336
+ 21284
2337
+ 21285
2338
+ 22537
2339
+ 22554
2340
+ 22555
2341
+ 22556
2342
+ 22557
2343
+ 67672
2344
+ 22552
2345
+ 23579
2346
+ 70257
2347
+ 23586
2348
+ 23587
2349
+ 23588
2350
+ 67692
2351
+ 23584
2352
+ 24718
2353
+ 68334
2354
+ 24729
2355
+ 67710
2356
+ 24731
2357
+ 26250
2358
+ 26256
2359
+ 26258
2360
+ 26260
2361
+ 26261
2362
+ 26559
2363
+ 68065
2364
+ 68352
2365
+ 26576
2366
+ 67744
2367
+ 26577
2368
+ 26571
2369
+ 26572
2370
+ 27013
2371
+ 27047
2372
+ 27048
2373
+ 67752
2374
+ 27053
2375
+ 27055
2376
+ 28134
2377
+ 70303
2378
+ 28141
2379
+ 28142
2380
+ 28146
2381
+ 28148
2382
+ 28149
2383
+ 28306
2384
+ 28313
2385
+ 67778
2386
+ 28316
2387
+ 28317
2388
+ 28318
2389
+ 70236
2390
+ 68616
2391
+ 28433
2392
+ 28427
2393
+ 28435
2394
+ 28428
2395
+ 28432
2396
+ 29134
2397
+ 29142
2398
+ 29146
2399
+ 29140
2400
+ 29141
2401
+ 30227
2402
+ 30237
2403
+ 30238
2404
+ 67793
2405
+ 30240
2406
+ 30241
2407
+ 68080
2408
+ 69000
2409
+ 31323
2410
+ 67810
2411
+ 31317
2412
+ 31318
2413
+ 31321
2414
+ 31322
2415
+ 31641
2416
+ 31654
2417
+ 31656
2418
+ 31657
2419
+ 31658
2420
+ 67815
2421
+ 31659
2422
+ 70158
2423
+ 32454
2424
+ 32455
2425
+ 32456
2426
+ 32457
2427
+ 32451
2428
+ 32453
2429
+ 35117
2430
+ 35118
2431
+ 35122
2432
+ 67875
2433
+ 35123
2434
+ 35125
2435
+ 35353
2436
+ 70066
2437
+ 35367
2438
+ 35368
2439
+ 67882
2440
+ 35365
2441
+ 36044
2442
+ 68562
2443
+ 68100
2444
+ 36052
2445
+ 36053
2446
+ 67893
2447
+ 36054
2448
+ 36055
2449
+ 36049
2450
+ 36645
2451
+ 70075
2452
+ 68628
2453
+ 36653
2454
+ 36657
2455
+ 67901
2456
+ 36658
2457
+ 36659
2458
+ 36732
2459
+ 68608
2460
+ 70305
2461
+ 36740
2462
+ 67904
2463
+ 36737
2464
+ 36739
2465
+ 36774
2466
+ 36785
2467
+ 36787
2468
+ 36788
2469
+ 67903
2470
+ 36789
2471
+ 36790
2472
+ 68328
2473
+ 37091
2474
+ 67913
2475
+ 37100
2476
+ 37773
2477
+ 70180
2478
+ 37791
2479
+ 37792
2480
+ 37795
2481
+ 37983
2482
+ 70337
2483
+ 69008
2484
+ 37991
2485
+ 37992
2486
+ 67926
2487
+ 37988
2488
+ 37990
2489
+ 38281
2490
+ 70021
2491
+ 70050
2492
+ 69036
2493
+ 38288
2494
+ 38289
2495
+ 38292
2496
+ 38286
2497
+ 38314
2498
+ 70338
2499
+ 68584
2500
+ 38322
2501
+ 38323
2502
+ 38319
2503
+ 38321
2504
+ 38614
2505
+ 70280
2506
+ 68934
2507
+ 38628
2508
+ 38629
2509
+ 38630
2510
+ 38631
2511
+ 38625
2512
+ 38654
2513
+ 70187
2514
+ 38688
2515
+ 38689
2516
+ 38690
2517
+ 67933
2518
+ 38686
2519
+ 38765
2520
+ 68774
2521
+ 38864
2522
+ 38865
2523
+ 38866
2524
+ 38867
2525
+ 38862
2526
+ 39087
2527
+ 39094
2528
+ 39095
2529
+ 39096
2530
+ 67940
2531
+ 39097
2532
+ 39098
2533
+ 39092
2534
+ 39402
2535
+ 39449
2536
+ 39450
2537
+ 39451
2538
+ 39445
2539
+ 39446
2540
+ 39448
2541
+ 39582
2542
+ 68342
2543
+ 68118
2544
+ 39594
2545
+ 39595
2546
+ 39590
2547
+ 39593
2548
+ 41510
2549
+ 67968
2550
+ 41512
2551
+ 67966
2552
+ 41513
2553
+ 41514
2554
+ 41515
2555
+ 41578
2556
+ 68736
2557
+ 41597
2558
+ 41602
2559
+ 41604
2560
+ 41606
2561
+ 41607
2562
+ 42242
2563
+ 42250
2564
+ 42254
2565
+ 42255
2566
+ 43922
2567
+ 70061
2568
+ 43936
2569
+ 43937
2570
+ 67093
2571
+ 43934
2572
+ 48965
2573
+ 48977
2574
+ 48980
2575
+ 67155
2576
+ 48981
2577
+ 48982
2578
+ 49327
2579
+ 49333
2580
+ 49336
2581
+ 67164
2582
+ 49337
2583
+ 49331
2584
+ 49332
2585
+ 49367
2586
+ 49376
2587
+ 49377
2588
+ 49381
2589
+ 49382
2590
+ 49375
2591
+ 49652
2592
+ 49660
2593
+ 49661
2594
+ 67173
2595
+ 49662
2596
+ 49657
2597
+ 50035
2598
+ 50057
2599
+ 50062
2600
+ 67176
2601
+ 50064
2602
+ 50065
2603
+ 68150
2604
+ 70315
2605
+ 51134
2606
+ 51137
2607
+ 67191
2608
+ 51138
2609
+ 51139
2610
+ 51132
2611
+ 68508
2612
+ 68600
2613
+ 68151
2614
+ 67190
2615
+ 67192
2616
+ 51179
2617
+ 51182
2618
+ 51183
2619
+ 51702
2620
+ 51711
2621
+ 67202
2622
+ 51707
2623
+ 51882
2624
+ 68680
2625
+ 51888
2626
+ 67206
2627
+ 51892
2628
+ 51893
2629
+ 51894
2630
+ 52314
2631
+ 68157
2632
+ 68912
2633
+ 67212
2634
+ 52319
2635
+ 52321
2636
+ 52322
2637
+ 52323
2638
+ 53363
2639
+ 70225
2640
+ 53372
2641
+ 53373
2642
+ 53374
2643
+ 67228
2644
+ 53368
2645
+ 55035
2646
+ 68564
2647
+ 55047
2648
+ 55051
2649
+ 55052
2650
+ 55046
2651
+ 56315
2652
+ 56316
2653
+ 56310
2654
+ 56311
2655
+ 56800
2656
+ 68165
2657
+ 68868
2658
+ 56828
2659
+ 56829
2660
+ 67277
2661
+ 56827
2662
+ 57298
2663
+ 57305
2664
+ 57308
2665
+ 57309
2666
+ 57310
2667
+ 57312
2668
+ 57430
2669
+ 57443
2670
+ 57444
2671
+ 57445
2672
+ 57446
2673
+ 57440
2674
+ 57653
2675
+ 68796
2676
+ 57663
2677
+ 57664
2678
+ 57665
2679
+ 57666
2680
+ 57658
2681
+ 57954
2682
+ 57980
2683
+ 57981
2684
+ 67300
2685
+ 57976
2686
+ 57978
2687
+ 57979
2688
+ 58286
2689
+ 68560
2690
+ 58299
2691
+ 58301
2692
+ 58302
2693
+ 67305
2694
+ 58297
2695
+ 58676
2696
+ 70346
2697
+ 58685
2698
+ 58686
2699
+ 58680
2700
+ 59238
2701
+ 70179
2702
+ 59250
2703
+ 59254
2704
+ 67317
2705
+ 59256
2706
+ 59258
2707
+ 59259
2708
+ 60543
2709
+ 60553
2710
+ 70215
2711
+ 67018
2712
+ 60554
2713
+ 60555
2714
+ 60550
2715
+ 61031
2716
+ 61060
2717
+ 61061
2718
+ 61063
2719
+ 61065
2720
+ 67022
2721
+ 61066
2722
+ 61067
2723
+ 61068
2724
+ 61913
2725
+ 61919
2726
+ 61922
2727
+ 67031
2728
+ 61923
2729
+ 61977
2730
+ 61985
2731
+ 67033
2732
+ 61988
2733
+ 61989
2734
+ 61991
2735
+ 61998
2736
+ 61999
2737
+ 67032
2738
+ 62001
2739
+ 62002
2740
+ 62706
2741
+ 62714
2742
+ 62715
2743
+ 67051
2744
+ 62716
2745
+ 62711
2746
+ 62901
2747
+ 70186
2748
+ 62913
2749
+ 62914
2750
+ 67055
2751
+ 62911
2752
+ 62921
2753
+ 62928
2754
+ 62929
2755
+ 67056
2756
+ 62926
2757
+ 63062
2758
+ 68372
2759
+ 63071
2760
+ 63075
2761
+ 67064
2762
+ 63076
2763
+ 63102
2764
+ 68382
2765
+ 63111
2766
+ 63112
2767
+ 67062
2768
+ 63107
2769
+ 63109
2770
+ 63110
2771
+ 68185
2772
+ 63475
2773
+ 63476
2774
+ 63477
2775
+ 67072
2776
+ 63472
2777
+ 63474
2778
+ 63750
2779
+ 63758
2780
+ 63759
2781
+ 63761
2782
+ 63762
2783
+ 63757
2784
+ 01429
2785
+ 70279
2786
+ 68422
2787
+ 01441
2788
+ 01437
2789
+ 01440
2790
+ 01482
2791
+ 01491
2792
+ 01493
2793
+ 01494
2794
+ 67352
2795
+ 01488
2796
+ 02102
2797
+ 02111
2798
+ 67357
2799
+ 02107
2800
+ 03053
2801
+ 70155
2802
+ 67368
2803
+ 04183
2804
+ 04191
2805
+ 04195
2806
+ 04196
2807
+ 04341
2808
+ 04350
2809
+ 04351
2810
+ 65115
2811
+ 04346
2812
+ 04349
2813
+ 04866
2814
+ 04874
2815
+ 67386
2816
+ 04871
2817
+ 05193
2818
+ 70041
2819
+ 05200
2820
+ 05201
2821
+ 05202
2822
+ 67391
2823
+ 05197
2824
+ 05488
2825
+ 67396
2826
+ 05494
2827
+ 05495
2828
+ 05496
2829
+ 05497
2830
+ 05852
2831
+ 05859
2832
+ 05860
2833
+ 05861
2834
+ 67405
2835
+ 05857
2836
+ 06062
2837
+ 70328
2838
+ 06074
2839
+ 06068
2840
+ 06070
2841
+ 06071
2842
+ 06072
2843
+ 06073
2844
+ 06643
2845
+ 06656
2846
+ 06657
2847
+ 67416
2848
+ 06653
2849
+ 07199
2850
+ 07200
2851
+ 67427
2852
+ 07201
2853
+ 07202
2854
+ 07194
2855
+ 07369
2856
+ 70318
2857
+ 07379
2858
+ 07380
2859
+ 67430
2860
+ 07381
2861
+ 07374
2862
+ 07413
2863
+ 70238
2864
+ 67434
2865
+ 07419
2866
+ 07422
2867
+ 07423
2868
+ 07469
2869
+ 07476
2870
+ 07477
2871
+ 07478
2872
+ 67436
2873
+ 07474
2874
+ 07593
2875
+ 70063
2876
+ 07603
2877
+ 67439
2878
+ 07599
2879
+ 07602
2880
+ 08586
2881
+ 70228
2882
+ 69064
2883
+ 67458
2884
+ 08591
2885
+ 70268
2886
+ 69078
2887
+ 09240
2888
+ 67473
2889
+ 09245
2890
+ 09246
2891
+ 10395
2892
+ 70060
2893
+ 10399
2894
+ 10406
2895
+ 10407
2896
+ 10408
2897
+ 10410
2898
+ 10411
2899
+ 10435
2900
+ 10451
2901
+ 10452
2902
+ 10448
2903
+ 10624
2904
+ 10628
2905
+ 10630
2906
+ 10639
2907
+ 10640
2908
+ 10768
2909
+ 68658
2910
+ 10776
2911
+ 65358
2912
+ 67499
2913
+ 10773
2914
+ 10775
2915
+ 13169
2916
+ 13180
2917
+ 13181
2918
+ 67526
2919
+ 13178
2920
+ 14276
2921
+ 14294
2922
+ 14295
2923
+ 14296
2924
+ 67546
2925
+ 14297
2926
+ 14290
2927
+ 14471
2928
+ 14472
2929
+ 14473
2930
+ 14474
2931
+ 14484
2932
+ 15092
2933
+ 15102
2934
+ 15097
2935
+ 15098
2936
+ 15153
2937
+ 15164
2938
+ 15165
2939
+ 67557
2940
+ 15161
2941
+ 15169
2942
+ 15179
2943
+ 67558
2944
+ 15174
2945
+ 15175
2946
+ 15178
2947
+ 15527
2948
+ 15535
2949
+ 15536
2950
+ 67561
2951
+ 15532
2952
+ 16402
2953
+ 67572
2954
+ 16408
2955
+ 16410
2956
+ 16889
2957
+ 16896
2958
+ 16898
2959
+ 67576
2960
+ 17422
2961
+ 70045
2962
+ 17432
2963
+ 17434
2964
+ 17435
2965
+ 17919
2966
+ 17938
2967
+ 17934
2968
+ 17937
2969
+ 18145
2970
+ 18160
2971
+ 67603
2972
+ 18157
2973
+ 18159
2974
+ 18190
2975
+ 18202
2976
+ 18203
2977
+ 67604
2978
+ 18198
2979
+ 18200
2980
+ 18201
2981
+ 18218
2982
+ 18226
2983
+ 18227
2984
+ 67605
2985
+ 18222
2986
+ 18223
2987
+ 18224
2988
+ 18769
2989
+ 18776
2990
+ 18777
2991
+ 18778
2992
+ 67617
2993
+ 18774
2994
+ 19230
2995
+ 68512
2996
+ 68045
2997
+ 67625
2998
+ 19234
2999
+ 19235
3000
+ 19237
3001
+ 19238
3002
+ 19556
3003
+ 19564
3004
+ 19565
3005
+ 19566
3006
+ 19562
3007
+ 20362
3008
+ 20371
3009
+ 67634
3010
+ 20372
3011
+ 20368
3012
+ 20434
3013
+ 70218
3014
+ 20442
3015
+ 20443
3016
+ 20444
3017
+ 20439
3018
+ 21184
3019
+ 21186
3020
+ 67645
3021
+ 21177
3022
+ 21689
3023
+ 21709
3024
+ 21699
3025
+ 67655
3026
+ 21707
3027
+ 21708
3028
+ 68896
3029
+ 70134
3030
+ 21860
3031
+ 67658
3032
+ 21856
3033
+ 22131
3034
+ 22138
3035
+ 22139
3036
+ 22140
3037
+ 67668
3038
+ 22136
3039
+ 22137
3040
+ 22491
3041
+ 68792
3042
+ 70043
3043
+ 22498
3044
+ 22500
3045
+ 67671
3046
+ 22501
3047
+ 22642
3048
+ 22629
3049
+ 22633
3050
+ 22634
3051
+ 67674
3052
+ 22712
3053
+ 70203
3054
+ 22722
3055
+ 22719
3056
+ 23637
3057
+ 70020
3058
+ 67694
3059
+ 23641
3060
+ 23643
3061
+ 23644
3062
+ 24405
3063
+ 70055
3064
+ 24445
3065
+ 67707
3066
+ 24441
3067
+ 24444
3068
+ 26491
3069
+ 70133
3070
+ 26502
3071
+ 67742
3072
+ 26498
3073
+ 26500
3074
+ 26501
3075
+ 27171
3076
+ 70017
3077
+ 68236
3078
+ 27180
3079
+ 67755
3080
+ 27181
3081
+ 27182
3082
+ 27183
3083
+ 27175
3084
+ 27580
3085
+ 27597
3086
+ 27598
3087
+ 27599
3088
+ 27600
3089
+ 27601
3090
+ 27594
3091
+ 68404
3092
+ 70150
3093
+ 28040
3094
+ 28042
3095
+ 67773
3096
+ 28043
3097
+ 28647
3098
+ 28653
3099
+ 28656
3100
+ 67783
3101
+ 28657
3102
+ 29064
3103
+ 67786
3104
+ 29070
3105
+ 29072
3106
+ 29073
3107
+ 30467
3108
+ 30473
3109
+ 30475
3110
+ 30476
3111
+ 65960
3112
+ 30477
3113
+ 30478
3114
+ 30927
3115
+ 30938
3116
+ 30942
3117
+ 67803
3118
+ 30944
3119
+ 30945
3120
+ 30973
3121
+ 30982
3122
+ 67804
3123
+ 30986
3124
+ 30987
3125
+ 31723
3126
+ 31736
3127
+ 31738
3128
+ 31739
3129
+ 67816
3130
+ 31734
3131
+ 31777
3132
+ 31779
3133
+ 31780
3134
+ 67818
3135
+ 31782
3136
+ 31783
3137
+ 32200
3138
+ 32210
3139
+ 32211
3140
+ 32212
3141
+ 32213
3142
+ 32208
3143
+ 32281
3144
+ 32287
3145
+ 32288
3146
+ 32289
3147
+ 32290
3148
+ 32291
3149
+ 32286
3150
+ 32806
3151
+ 32816
3152
+ 32818
3153
+ 32819
3154
+ 67838
3155
+ 32962
3156
+ 32969
3157
+ 32970
3158
+ 32971
3159
+ 67842
3160
+ 32967
3161
+ 34955
3162
+ 68326
3163
+ 34963
3164
+ 34964
3165
+ 34960
3166
+ 34962
3167
+ 35524
3168
+ 68696
3169
+ 35532
3170
+ 35533
3171
+ 67887
3172
+ 35529
3173
+ 35531
3174
+ 70302
3175
+ 36250
3176
+ 67896
3177
+ 36246
3178
+ 36259
3179
+ 36267
3180
+ 36268
3181
+ 67897
3182
+ 36265
3183
+ 70113
3184
+ 36339
3185
+ 36340
3186
+ 36344
3187
+ 36348
3188
+ 36677
3189
+ 36684
3190
+ 36685
3191
+ 36686
3192
+ 67902
3193
+ 36682
3194
+ 36856
3195
+ 70278
3196
+ 69022
3197
+ 36864
3198
+ 36865
3199
+ 67907
3200
+ 36861
3201
+ 36991
3202
+ 69096
3203
+ 36999
3204
+ 37000
3205
+ 67909
3206
+ 36997
3207
+ 37849
3208
+ 37857
3209
+ 67924
3210
+ 37863
3211
+ 38081
3212
+ 70038
3213
+ 38091
3214
+ 67927
3215
+ 38088
3216
+ 38090
3217
+ 38176
3218
+ 68532
3219
+ 70324
3220
+ 67931
3221
+ 38180
3222
+ 38182
3223
+ 38183
3224
+ 38184
3225
+ 38185
3226
+ 38329
3227
+ 70277
3228
+ 68716
3229
+ 38343
3230
+ 38344
3231
+ 67932
3232
+ 38339
3233
+ 38342
3234
+ 39846
3235
+ 39855
3236
+ 67946
3237
+ 39856
3238
+ 39852
3239
+ 41920
3240
+ 68346
3241
+ 70144
3242
+ 41930
3243
+ 67974
3244
+ 41926
3245
+ 41929
3246
+ 41937
3247
+ 70068
3248
+ 41944
3249
+ 67975
3250
+ 41947
3251
+ 41948
3252
+ 42419
3253
+ 68704
3254
+ 68130
3255
+ 42431
3256
+ 42433
3257
+ 42426
3258
+ 42427
3259
+ 42429
3260
+ 42649
3261
+ 68131
3262
+ 42659
3263
+ 67982
3264
+ 42655
3265
+ 42657
3266
+ 42658
3267
+ 43335
3268
+ 68134
3269
+ 43346
3270
+ 43347
3271
+ 43348
3272
+ 43343
3273
+ 43460
3274
+ 43448
3275
+ 43449
3276
+ 67086
3277
+ 43678
3278
+ 43685
3279
+ 43686
3280
+ 43687
3281
+ 67089
3282
+ 43688
3283
+ 43683
3284
+ 43828
3285
+ 43837
3286
+ 67092
3287
+ 43838
3288
+ 43831
3289
+ 45754
3290
+ 45764
3291
+ 45765
3292
+ 45766
3293
+ 67118
3294
+ 45761
3295
+ 45965
3296
+ 70121
3297
+ 46000
3298
+ 67121
3299
+ 45997
3300
+ 45999
3301
+ 46287
3302
+ 46294
3303
+ 46302
3304
+ 47485
3305
+ 47495
3306
+ 47497
3307
+ 47498
3308
+ 47499
3309
+ 67136
3310
+ 49475
3311
+ 49485
3312
+ 49486
3313
+ 67167
3314
+ 49481
3315
+ 49627
3316
+ 70143
3317
+ 49639
3318
+ 67171
3319
+ 49636
3320
+ 49638
3321
+ 49689
3322
+ 49696
3323
+ 50407
3324
+ 50413
3325
+ 50416
3326
+ 50418
3327
+ 50419
3328
+ 50412
3329
+ 50834
3330
+ 69058
3331
+ 50842
3332
+ 50843
3333
+ 50844
3334
+ 50840
3335
+ 51901
3336
+ 68570
3337
+ 51924
3338
+ 51925
3339
+ 67207
3340
+ 51926
3341
+ 51920
3342
+ 52502
3343
+ 52513
3344
+ 52514
3345
+ 67213
3346
+ 52511
3347
+ 52707
3348
+ 52718
3349
+ 52719
3350
+ 67217
3351
+ 52715
3352
+ 52717
3353
+ 52913
3354
+ 52924
3355
+ 52925
3356
+ 67223
3357
+ 52922
3358
+ 52923
3359
+ 53023
3360
+ 68432
3361
+ 70071
3362
+ 68158
3363
+ 67224
3364
+ 53027
3365
+ 53029
3366
+ 53693
3367
+ 53705
3368
+ 53708
3369
+ 54413
3370
+ 54445
3371
+ 54446
3372
+ 67241
3373
+ 54441
3374
+ 54442
3375
+ 54819
3376
+ 70300
3377
+ 54827
3378
+ 54824
3379
+ 54826
3380
+ 55298
3381
+ 70096
3382
+ 55306
3383
+ 55307
3384
+ 55303
3385
+ 55305
3386
+ 55312
3387
+ 70362
3388
+ 55320
3389
+ 67255
3390
+ 55317
3391
+ 55319
3392
+ 55861
3393
+ 55862
3394
+ 55863
3395
+ 67262
3396
+ 55858
3397
+ 56080
3398
+ 56087
3399
+ 56088
3400
+ 56090
3401
+ 56091
3402
+ 56092
3403
+ 57815
3404
+ 70223
3405
+ 57831
3406
+ 57833
3407
+ 57834
3408
+ 67293
3409
+ 57830
3410
+ 58443
3411
+ 70108
3412
+ 67308
3413
+ 58449
3414
+ 67311
3415
+ 58659
3416
+ 58660
3417
+ 58731
3418
+ 58738
3419
+ 58739
3420
+ 58740
3421
+ 67313
3422
+ 58741
3423
+ 58735
3424
+ 58737
3425
+ 58804
3426
+ 70349
3427
+ 58812
3428
+ 58813
3429
+ 58809
3430
+ 58811
3431
+ 59143
3432
+ 70191
3433
+ 59154
3434
+ 59152
3435
+ 59366
3436
+ 59372
3437
+ 59374
3438
+ 59375
3439
+ 59376
3440
+ 59540
3441
+ 59553
3442
+ 59554
3443
+ 67322
3444
+ 59549
3445
+ 59550
3446
+ 59552
3447
+ 59760
3448
+ 59770
3449
+ 59771
3450
+ 59772
3451
+ 59773
3452
+ 59766
3453
+ 59767
3454
+ 60450
3455
+ 70331
3456
+ 68498
3457
+ 67335
3458
+ 60461
3459
+ 60463
3460
+ 60464
3461
+ 61141
3462
+ 68640
3463
+ 61149
3464
+ 67023
3465
+ 61145
3466
+ 61147
3467
+ 61148
3468
+ 62637
3469
+ 67049
3470
+ 62647
3471
+ 62648
3472
+ 62649
3473
+ 62729
3474
+ 70377
3475
+ 62737
3476
+ 62735
3477
+ 00588
3478
+ 00598
3479
+ 00601
3480
+ 00602
3481
+ 01194
3482
+ 01211
3483
+ 01212
3484
+ 01215
3485
+ 01216
3486
+ 01411
3487
+ 01426
3488
+ 01427
3489
+ 67351
3490
+ 01423
3491
+ 01551
3492
+ 01562
3493
+ 01555
3494
+ 02041
3495
+ 02051
3496
+ 02047
3497
+ 02050
3498
+ 02348
3499
+ 68002
3500
+ 67360
3501
+ 02352
3502
+ 02354
3503
+ 02355
3504
+ 02539
3505
+ 02547
3506
+ 67362
3507
+ 02543
3508
+ 02546
3509
+ 02707
3510
+ 70275
3511
+ 02714
3512
+ 02716
3513
+ 02717
3514
+ 02818
3515
+ 70095
3516
+ 02827
3517
+ 02829
3518
+ 02830
3519
+ 02831
3520
+ 02832
3521
+ 68812
3522
+ 03243
3523
+ 03244
3524
+ 03245
3525
+ 03239
3526
+ 03469
3527
+ 70142
3528
+ 03485
3529
+ 67372
3530
+ 03483
3531
+ 03625
3532
+ 68266
3533
+ 68004
3534
+ 68408
3535
+ 68005
3536
+ 03637
3537
+ 03640
3538
+ 03641
3539
+ 04165
3540
+ 68250
3541
+ 04172
3542
+ 04174
3543
+ 04175
3544
+ 04422
3545
+ 04432
3546
+ 04433
3547
+ 04428
3548
+ 04436
3549
+ 04444
3550
+ 04445
3551
+ 67376
3552
+ 04442
3553
+ 04678
3554
+ 04686
3555
+ 67378
3556
+ 04683
3557
+ 04685
3558
+ 05111
3559
+ 05115
3560
+ 05116
3561
+ 05117
3562
+ 05651
3563
+ 05658
3564
+ 05659
3565
+ 05660
3566
+ 67401
3567
+ 05655
3568
+ 05699
3569
+ 05713
3570
+ 67402
3571
+ 05711
3572
+ 05921
3573
+ 05930
3574
+ 67407
3575
+ 05927
3576
+ 05929
3577
+ 06176
3578
+ 06195
3579
+ 06196
3580
+ 06425
3581
+ 06437
3582
+ 06438
3583
+ 06433
3584
+ 07258
3585
+ 68013
3586
+ 68494
3587
+ 07273
3588
+ 07275
3589
+ 07276
3590
+ 08608
3591
+ 08620
3592
+ 67457
3593
+ 08615
3594
+ 08669
3595
+ 08679
3596
+ 08675
3597
+ 08840
3598
+ 08848
3599
+ 67466
3600
+ 08845
3601
+ 08847
3602
+ 09312
3603
+ 09314
3604
+ 67474
3605
+ 09570
3606
+ 09579
3607
+ 67479
3608
+ 09575
3609
+ 09577
3610
+ 09578
3611
+ 09891
3612
+ 09899
3613
+ 67485
3614
+ 09895
3615
+ 09897
3616
+ 09898
3617
+ 10134
3618
+ 10142
3619
+ 10143
3620
+ 10139
3621
+ 10140
3622
+ 10577
3623
+ 10586
3624
+ 67497
3625
+ 10582
3626
+ 10584
3627
+ 10585
3628
+ 11030
3629
+ 68410
3630
+ 11038
3631
+ 11039
3632
+ 11041
3633
+ 11356
3634
+ 67506
3635
+ 67505
3636
+ 11363
3637
+ 12111
3638
+ 12121
3639
+ 12117
3640
+ 12119
3641
+ 12120
3642
+ 12222
3643
+ 12229
3644
+ 12230
3645
+ 67518
3646
+ 12227
3647
+ 12870
3648
+ 12878
3649
+ 65399
3650
+ 67524
3651
+ 12875
3652
+ 12967
3653
+ 12975
3654
+ 12976
3655
+ 67525
3656
+ 12972
3657
+ 12974
3658
+ 13311
3659
+ 70181
3660
+ 13314
3661
+ 13315
3662
+ 13317
3663
+ 13318
3664
+ 13319
3665
+ 13349
3666
+ 13357
3667
+ 13353
3668
+ 14374
3669
+ 14382
3670
+ 14383
3671
+ 14384
3672
+ 14377
3673
+ 14381
3674
+ 14829
3675
+ 68614
3676
+ 14843
3677
+ 14844
3678
+ 14838
3679
+ 14840
3680
+ 14841
3681
+ 15421
3682
+ 15429
3683
+ 67560
3684
+ 15427
3685
+ 15594
3686
+ 15609
3687
+ 15604
3688
+ 15605
3689
+ 15608
3690
+ 15729
3691
+ 15730
3692
+ 67565
3693
+ 15731
3694
+ 15726
3695
+ 15769
3696
+ 70229
3697
+ 15777
3698
+ 15778
3699
+ 15779
3700
+ 15780
3701
+ 15932
3702
+ 15940
3703
+ 15937
3704
+ 15939
3705
+ 16123
3706
+ 16132
3707
+ 16133
3708
+ 16128
3709
+ 16129
3710
+ 16130
3711
+ 17122
3712
+ 17151
3713
+ 17152
3714
+ 67580
3715
+ 17150
3716
+ 18066
3717
+ 18067
3718
+ 18060
3719
+ 18062
3720
+ 18063
3721
+ 18064
3722
+ 18065
3723
+ 18271
3724
+ 18277
3725
+ 18278
3726
+ 18282
3727
+ 18283
3728
+ 18521
3729
+ 18529
3730
+ 18530
3731
+ 67614
3732
+ 18531
3733
+ 18785
3734
+ 70195
3735
+ 68910
3736
+ 18792
3737
+ 18793
3738
+ 18799
3739
+ 18876
3740
+ 18877
3741
+ 67618
3742
+ 18878
3743
+ 18882
3744
+ 18883
3745
+ 19103
3746
+ 19117
3747
+ 19118
3748
+ 19112
3749
+ 19113
3750
+ 19116
3751
+ 19325
3752
+ 70146
3753
+ 19334
3754
+ 19329
3755
+ 19331
3756
+ 19332
3757
+ 19333
3758
+ 19679
3759
+ 19693
3760
+ 19694
3761
+ 67631
3762
+ 19690
3763
+ 19752
3764
+ 19767
3765
+ 19768
3766
+ 19769
3767
+ 19763
3768
+ 20137
3769
+ 20144
3770
+ 20148
3771
+ 20374
3772
+ 20385
3773
+ 67635
3774
+ 20382
3775
+ 20384
3776
+ 20693
3777
+ 20703
3778
+ 20708
3779
+ 20709
3780
+ 20792
3781
+ 70100
3782
+ 20796
3783
+ 20798
3784
+ 20799
3785
+ 20800
3786
+ 21393
3787
+ 68582
3788
+ 21410
3789
+ 21414
3790
+ 21415
3791
+ 21416
3792
+ 21548
3793
+ 21558
3794
+ 21559
3795
+ 67652
3796
+ 21561
3797
+ 21562
3798
+ 21555
3799
+ 22269
3800
+ 22279
3801
+ 67669
3802
+ 22275
3803
+ 22277
3804
+ 22278
3805
+ 22739
3806
+ 68052
3807
+ 70058
3808
+ 22747
3809
+ 22749
3810
+ 22836
3811
+ 70273
3812
+ 67675
3813
+ 22995
3814
+ 22997
3815
+ 22998
3816
+ 22999
3817
+ 23047
3818
+ 23053
3819
+ 23054
3820
+ 23439
3821
+ 23450
3822
+ 23446
3823
+ 23447
3824
+ 23449
3825
+ 23541
3826
+ 70027
3827
+ 23546
3828
+ 23550
3829
+ 67690
3830
+ 23551
3831
+ 70163
3832
+ 23672
3833
+ 67695
3834
+ 23669
3835
+ 24580
3836
+ 24588
3837
+ 67708
3838
+ 24585
3839
+ 24587
3840
+ 24909
3841
+ 24921
3842
+ 67716
3843
+ 24918
3844
+ 24920
3845
+ 25370
3846
+ 25379
3847
+ 25376
3848
+ 25404
3849
+ 70330
3850
+ 67724
3851
+ 25410
3852
+ 25412
3853
+ 25628
3854
+ 25634
3855
+ 25635
3856
+ 25640
3857
+ 25649
3858
+ 25650
3859
+ 67728
3860
+ 25646
3861
+ 67731
3862
+ 67732
3863
+ 25921
3864
+ 25923
3865
+ 25924
3866
+ 25925
3867
+ 25975
3868
+ 25983
3869
+ 67734
3870
+ 25980
3871
+ 25981
3872
+ 26312
3873
+ 26316
3874
+ 26318
3875
+ 26321
3876
+ 67741
3877
+ 26323
3878
+ 27150
3879
+ 27158
3880
+ 67754
3881
+ 27156
3882
+ 27387
3883
+ 27409
3884
+ 67759
3885
+ 27410
3886
+ 27414
3887
+ 27415
3888
+ 27568
3889
+ 27574
3890
+ 27576
3891
+ 67761
3892
+ 28375
3893
+ 28383
3894
+ 28384
3895
+ 67779
3896
+ 28380
3897
+ 28382
3898
+ 28438
3899
+ 70147
3900
+ 28443
3901
+ 28444
3902
+ 28450
3903
+ 28452
3904
+ 28453
3905
+ 30383
3906
+ 30391
3907
+ 67796
3908
+ 30387
3909
+ 30389
3910
+ 30390
3911
+ 30457
3912
+ 30458
3913
+ 30461
3914
+ 30463
3915
+ 30464
3916
+ 32509
3917
+ 32517
3918
+ 67833
3919
+ 32513
3920
+ 32515
3921
+ 32516
3922
+ 33048
3923
+ 68206
3924
+ 70226
3925
+ 67843
3926
+ 33054
3927
+ 33056
3928
+ 33057
3929
+ 33122
3930
+ 67844
3931
+ 33124
3932
+ 33125
3933
+ 33126
3934
+ 33638
3935
+ 33647
3936
+ 67855
3937
+ 33644
3938
+ 33645
3939
+ 34118
3940
+ 34125
3941
+ 34133
3942
+ 34134
3943
+ 34136
3944
+ 34210
3945
+ 34212
3946
+ 34213
3947
+ 67866
3948
+ 34215
3949
+ 34385
3950
+ 34393
3951
+ 34394
3952
+ 67867
3953
+ 34389
3954
+ 34391
3955
+ 34392
3956
+ 70103
3957
+ 67883
3958
+ 35342
3959
+ 35343
3960
+ 35345
3961
+ 35944
3962
+ 35949
3963
+ 35951
3964
+ 35953
3965
+ 67892
3966
+ 37464
3967
+ 67920
3968
+ 37472
3969
+ 37474
3970
+ 37475
3971
+ 37476
3972
+ 37945
3973
+ 37963
3974
+ 37964
3975
+ 37965
3976
+ 37960
3977
+ 39031
3978
+ 68117
3979
+ 68824
3980
+ 39035
3981
+ 39037
3982
+ 39038
3983
+ 39039
3984
+ 70214
3985
+ 39745
3986
+ 39746
3987
+ 39749
3988
+ 40463
3989
+ 68362
3990
+ 40471
3991
+ 41661
3992
+ 70311
3993
+ 67970
3994
+ 41665
3995
+ 41667
3996
+ 41668
3997
+ 42695
3998
+ 67984
3999
+ 42705
4000
+ 42707
4001
+ 42708
4002
+ 43570
4003
+ 43578
4004
+ 43579
4005
+ 43574
4006
+ 43576
4007
+ 43577
4008
+ 43900
4009
+ 70125
4010
+ 43911
4011
+ 43905
4012
+ 44034
4013
+ 44048
4014
+ 44049
4015
+ 67094
4016
+ 44056
4017
+ 66325
4018
+ 44339
4019
+ 44340
4020
+ 44348
4021
+ 44469
4022
+ 44477
4023
+ 67102
4024
+ 44472
4025
+ 44475
4026
+ 44476
4027
+ 44598
4028
+ 44609
4029
+ 44610
4030
+ 67106
4031
+ 44605
4032
+ 44608
4033
+ 45474
4034
+ 45486
4035
+ 67115
4036
+ 45482
4037
+ 45484
4038
+ 45485
4039
+ 45852
4040
+ 45860
4041
+ 45856
4042
+ 45858
4043
+ 45859
4044
+ 46339
4045
+ 70353
4046
+ 67126
4047
+ 46370
4048
+ 46371
4049
+ 46425
4050
+ 46435
4051
+ 67127
4052
+ 46432
4053
+ 46434
4054
+ 47103
4055
+ 47111
4056
+ 67132
4057
+ 47108
4058
+ 47110
4059
+ 47602
4060
+ 47613
4061
+ 47614
4062
+ 47609
4063
+ 47610
4064
+ 48738
4065
+ 70159
4066
+ 48744
4067
+ 48748
4068
+ 48749
4069
+ 48750
4070
+ 49073
4071
+ 70062
4072
+ 67158
4073
+ 49080
4074
+ 49082
4075
+ 49083
4076
+ 49537
4077
+ 49545
4078
+ 49546
4079
+ 67169
4080
+ 49541
4081
+ 49543
4082
+ 49544
4083
+ 50263
4084
+ 68830
4085
+ 50270
4086
+ 50272
4087
+ 50273
4088
+ 50502
4089
+ 50509
4090
+ 50510
4091
+ 50511
4092
+ 67180
4093
+ 50507
4094
+ 51325
4095
+ 51336
4096
+ 51337
4097
+ 51338
4098
+ 67197
4099
+ 51339
4100
+ 51332
4101
+ 51813
4102
+ 51820
4103
+ 51821
4104
+ 51822
4105
+ 51823
4106
+ 51816
4107
+ 52570
4108
+ 52583
4109
+ 67215
4110
+ 52588
4111
+ 52613
4112
+ 52622
4113
+ 67216
4114
+ 52618
4115
+ 52619
4116
+ 53046
4117
+ 53069
4118
+ 53071
4119
+ 53072
4120
+ 53413
4121
+ 53421
4122
+ 53422
4123
+ 53418
4124
+ 53419
4125
+ 53427
4126
+ 70059
4127
+ 67229
4128
+ 53430
4129
+ 53432
4130
+ 53433
4131
+ 53543
4132
+ 53551
4133
+ 53553
4134
+ 53554
4135
+ 53555
4136
+ 53549
4137
+ 54069
4138
+ 54079
4139
+ 54086
4140
+ 54078
4141
+ 54204
4142
+ 54212
4143
+ 67236
4144
+ 54208
4145
+ 54210
4146
+ 54211
4147
+ 54870
4148
+ 54885
4149
+ 67248
4150
+ 54881
4151
+ 54884
4152
+ 54991
4153
+ 55002
4154
+ 54996
4155
+ 54997
4156
+ 55001
4157
+ 55069
4158
+ 67250
4159
+ 55073
4160
+ 55075
4161
+ 55076
4162
+ 55145
4163
+ 70192
4164
+ 67253
4165
+ 55153
4166
+ 55155
4167
+ 55156
4168
+ 55169
4169
+ 55183
4170
+ 67252
4171
+ 55180
4172
+ 55197
4173
+ 55205
4174
+ 67254
4175
+ 55201
4176
+ 55203
4177
+ 55204
4178
+ 55274
4179
+ 55284
4180
+ 55285
4181
+ 55280
4182
+ 55656
4183
+ 55666
4184
+ 55667
4185
+ 55662
4186
+ 55665
4187
+ 55730
4188
+ 67263
4189
+ 55734
4190
+ 55736
4191
+ 55737
4192
+ 56157
4193
+ 56165
4194
+ 56166
4195
+ 67269
4196
+ 56162
4197
+ 56164
4198
+ 56294
4199
+ 56302
4200
+ 56303
4201
+ 56304
4202
+ 56299
4203
+ 56301
4204
+ 57131
4205
+ 57140
4206
+ 67284
4207
+ 57135
4208
+ 57669
4209
+ 57674
4210
+ 57675
4211
+ 67294
4212
+ 57678
4213
+ 57679
4214
+ 57680
4215
+ 57673
4216
+ 57757
4217
+ 57766
4218
+ 57767
4219
+ 57760
4220
+ 57761
4221
+ 57801
4222
+ 57808
4223
+ 57809
4224
+ 57811
4225
+ 57812
4226
+ 57805
4227
+ 58023
4228
+ 67303
4229
+ 58028
4230
+ 58030
4231
+ 58384
4232
+ 58395
4233
+ 58396
4234
+ 58390
4235
+ 58391
4236
+ 58394
4237
+ 58933
4238
+ 70165
4239
+ 58943
4240
+ 58938
4241
+ 58939
4242
+ 58942
4243
+ 59902
4244
+ 70024
4245
+ 59911
4246
+ 59912
4247
+ 59907
4248
+ 59958
4249
+ 67328
4250
+ 59961
4251
+ 59963
4252
+ 59965
4253
+ 60759
4254
+ 60767
4255
+ 67021
4256
+ 60764
4257
+ 60766
4258
+ 60850
4259
+ 60858
4260
+ 60859
4261
+ 60855
4262
+ 60857
4263
+ 62447
4264
+ 62448
4265
+ 62454
4266
+ 62455
4267
+ 62584
4268
+ 70123
4269
+ 67047
4270
+ 62589
4271
+ 62592
4272
+ 62684
4273
+ 68468
4274
+ 67050
4275
+ 62693
4276
+ 62695
4277
+ 63358
4278
+ 70350
4279
+ 70292
4280
+ 63363
4281
+ 63369
4282
+ 63370
4283
+ 63371
4284
+ 63372
4285
+ 63399
4286
+ 70086
4287
+ 63406
4288
+ 63409
4289
+ 63830
4290
+ 63838
4291
+ 63839
4292
+ 67004
4293
+ 63840
4294
+ 63834
4295
+ 63872
4296
+ 70301
4297
+ 63878
4298
+ 63881
4299
+ 67006
4300
+ 63882
4301
+ 63877
4302
+ 63947
4303
+ 68876
4304
+ 63961
4305
+ 64401
4306
+ 68606
4307
+ 70366
4308
+ 67016
4309
+ 64415
4310
+ 64417
4311
+ 64418
4312
+ 00972
4313
+ 00966
4314
+ 01721
4315
+ 01733
4316
+ 67354
4317
+ 01728
4318
+ 02158
4319
+ 02167
4320
+ 02164
4321
+ 02173
4322
+ 02176
4323
+ 02179
4324
+ 02180
4325
+ 02473
4326
+ 02482
4327
+ 02479
4328
+ 02517
4329
+ 02524
4330
+ 67361
4331
+ 02520
4332
+ 02522
4333
+ 02523
4334
+ 02564
4335
+ 02570
4336
+ 67364
4337
+ 02575
4338
+ 02941
4339
+ 02959
4340
+ 67366
4341
+ 02955
4342
+ 03328
4343
+ 67369
4344
+ 03340
4345
+ 03343
4346
+ 03360
4347
+ 67370
4348
+ 03363
4349
+ 03365
4350
+ 03366
4351
+ 03367
4352
+ 03422
4353
+ 03423
4354
+ 03426
4355
+ 03427
4356
+ 03429
4357
+ 03570
4358
+ 67373
4359
+ 03566
4360
+ 03569
4361
+ 03587
4362
+ 03599
4363
+ 03602
4364
+ 67374
4365
+ 04039
4366
+ 04043
4367
+ 04046
4368
+ 04047
4369
+ 04056
4370
+ 04066
4371
+ 04067
4372
+ 04075
4373
+ 04065
4374
+ 04814
4375
+ 04825
4376
+ 04829
4377
+ 04830
4378
+ 05068
4379
+ 05071
4380
+ 05165
4381
+ 70128
4382
+ 67390
4383
+ 05174
4384
+ 05176
4385
+ 05756
4386
+ 05760
4387
+ 05761
4388
+ 05764
4389
+ 05765
4390
+ 05766
4391
+ 05959
4392
+ 67406
4393
+ 05963
4394
+ 05966
4395
+ 06407
4396
+ 06417
4397
+ 06418
4398
+ 06412
4399
+ 06413
4400
+ 06526
4401
+ 06530
4402
+ 06531
4403
+ 06534
4404
+ 06535
4405
+ 06929
4406
+ 67421
4407
+ 06934
4408
+ 06941
4409
+ 67423
4410
+ 06950
4411
+ 06952
4412
+ 06953
4413
+ 07226
4414
+ 67426
4415
+ 07229
4416
+ 07232
4417
+ 07233
4418
+ 07236
4419
+ 67428
4420
+ 07246
4421
+ 07241
4422
+ 07259
4423
+ 07268
4424
+ 07263
4425
+ 07284
4426
+ 67429
4427
+ 07289
4428
+ 07291
4429
+ 70166
4430
+ 07302
4431
+ 07306
4432
+ 07490
4433
+ 67437
4434
+ 07494
4435
+ 07496
4436
+ 07497
4437
+ 08118
4438
+ 08122
4439
+ 08124
4440
+ 08125
4441
+ 08126
4442
+ 08330
4443
+ 68960
4444
+ 08353
4445
+ 08359
4446
+ 08360
4447
+ 08361
4448
+ 08439
4449
+ 67452
4450
+ 08451
4451
+ 08453
4452
+ 08454
4453
+ 08739
4454
+ 08754
4455
+ 08750
4456
+ 08751
4457
+ 08858
4458
+ 08867
4459
+ 08864
4460
+ 08897
4461
+ 67469
4462
+ 08901
4463
+ 08903
4464
+ 08904
4465
+ 09149
4466
+ 09154
4467
+ 09156
4468
+ 09160
4469
+ 09161
4470
+ 09162
4471
+ 09164
4472
+ 10588
4473
+ 10597
4474
+ 10593
4475
+ 11812
4476
+ 11827
4477
+ 67515
4478
+ 11822
4479
+ 11826
4480
+ 11900
4481
+ 11907
4482
+ 11909
4483
+ 11910
4484
+ 70102
4485
+ 12589
4486
+ 12591
4487
+ 12592
4488
+ 13654
4489
+ 13658
4490
+ 13660
4491
+ 13661
4492
+ 13662
4493
+ 13663
4494
+ 15556
4495
+ 67563
4496
+ 15560
4497
+ 15562
4498
+ 15563
4499
+ 15807
4500
+ 15816
4501
+ 15812
4502
+ 15825
4503
+ 15833
4504
+ 15830
4505
+ 15832
4506
+ 16066
4507
+ 67567
4508
+ 16070
4509
+ 16071
4510
+ 16072
4511
+ 17123
4512
+ 17130
4513
+ 17134
4514
+ 17588
4515
+ 67590
4516
+ 17584
4517
+ 17587
4518
+ 17624
4519
+ 17634
4520
+ 17635
4521
+ 67591
4522
+ 17629
4523
+ 17907
4524
+ 67598
4525
+ 17913
4526
+ 17916
4527
+ 17945
4528
+ 67600
4529
+ 17950
4530
+ 17952
4531
+ 17953
4532
+ 18027
4533
+ 70039
4534
+ 18031
4535
+ 18033
4536
+ 18034
4537
+ 18035
4538
+ 18137
4539
+ 67601
4540
+ 18141
4541
+ 18143
4542
+ 18164
4543
+ 18183
4544
+ 18177
4545
+ 18181
4546
+ 18182
4547
+ 19456
4548
+ 67628
4549
+ 19460
4550
+ 19461
4551
+ 19463
4552
+ 19798
4553
+ 65648
4554
+ 19844
4555
+ 19846
4556
+ 19847
4557
+ 19848
4558
+ 20152
4559
+ 70286
4560
+ 20160
4561
+ 20161
4562
+ 20159
4563
+ 68212
4564
+ 68047
4565
+ 67636
4566
+ 20228
4567
+ 20231
4568
+ 20232
4569
+ 20387
4570
+ 20397
4571
+ 20398
4572
+ 20400
4573
+ 20394
4574
+ 20402
4575
+ 20409
4576
+ 20412
4577
+ 20413
4578
+ 20736
4579
+ 20743
4580
+ 20744
4581
+ 20747
4582
+ 20748
4583
+ 21319
4584
+ 21332
4585
+ 21333
4586
+ 21326
4587
+ 21330
4588
+ 21331
4589
+ 21394
4590
+ 21401
4591
+ 21403
4592
+ 21404
4593
+ 21400
4594
+ 22683
4595
+ 22697
4596
+ 22698
4597
+ 22699
4598
+ 22701
4599
+ 22907
4600
+ 22919
4601
+ 22916
4602
+ 22918
4603
+ 23326
4604
+ 23336
4605
+ 23337
4606
+ 67684
4607
+ 23333
4608
+ 23626
4609
+ 67693
4610
+ 23631
4611
+ 23633
4612
+ 23865
4613
+ 23876
4614
+ 23877
4615
+ 23871
4616
+ 23872
4617
+ 23875
4618
+ 24056
4619
+ 70042
4620
+ 65801
4621
+ 67703
4622
+ 24058
4623
+ 24060
4624
+ 24061
4625
+ 24062
4626
+ 24867
4627
+ 24873
4628
+ 24878
4629
+ 24879
4630
+ 25003
4631
+ 25018
4632
+ 67718
4633
+ 25016
4634
+ 25024
4635
+ 68662
4636
+ 70114
4637
+ 70321
4638
+ 25030
4639
+ 25034
4640
+ 25182
4641
+ 67719
4642
+ 25187
4643
+ 25189
4644
+ 25190
4645
+ 25428
4646
+ 70329
4647
+ 67725
4648
+ 25433
4649
+ 25481
4650
+ 70312
4651
+ 67726
4652
+ 25487
4653
+ 25820
4654
+ 25830
4655
+ 25827
4656
+ 25968
4657
+ 67733
4658
+ 25963
4659
+ 25964
4660
+ 26294
4661
+ 67740
4662
+ 26299
4663
+ 26301
4664
+ 26302
4665
+ 26697
4666
+ 68392
4667
+ 68067
4668
+ 26704
4669
+ 26708
4670
+ 26709
4671
+ 26702
4672
+ 26831
4673
+ 26855
4674
+ 26857
4675
+ 26858
4676
+ 26859
4677
+ 27249
4678
+ 27277
4679
+ 27278
4680
+ 27983
4681
+ 70106
4682
+ 28002
4683
+ 67772
4684
+ 27998
4685
+ 28000
4686
+ 28001
4687
+ 28772
4688
+ 28782
4689
+ 67784
4690
+ 28777
4691
+ 28778
4692
+ 28779
4693
+ 29087
4694
+ 29095
4695
+ 67788
4696
+ 29091
4697
+ 29094
4698
+ 29171
4699
+ 29722
4700
+ 29724
4701
+ 29725
4702
+ 29380
4703
+ 29387
4704
+ 29389
4705
+ 29390
4706
+ 29865
4707
+ 70162
4708
+ 29869
4709
+ 29871
4710
+ 29872
4711
+ 30051
4712
+ 67792
4713
+ 30056
4714
+ 30058
4715
+ 30059
4716
+ 30674
4717
+ 67799
4718
+ 30678
4719
+ 30680
4720
+ 30681
4721
+ 32692
4722
+ 67837
4723
+ 32698
4724
+ 32700
4725
+ 32885
4726
+ 32893
4727
+ 67839
4728
+ 32890
4729
+ 32892
4730
+ 33303
4731
+ 33315
4732
+ 33317
4733
+ 33318
4734
+ 33390
4735
+ 70109
4736
+ 67849
4737
+ 33394
4738
+ 33396
4739
+ 33397
4740
+ 33451
4741
+ 33462
4742
+ 33463
4743
+ 33459
4744
+ 34869
4745
+ 34871
4746
+ 34865
4747
+ 34866
4748
+ 35147
4749
+ 35161
4750
+ 35162
4751
+ 67876
4752
+ 68524
4753
+ 70099
4754
+ 67877
4755
+ 35221
4756
+ 35225
4757
+ 35371
4758
+ 35384
4759
+ 67885
4760
+ 67884
4761
+ 35382
4762
+ 68672
4763
+ 36608
4764
+ 36609
4765
+ 36610
4766
+ 37045
4767
+ 37048
4768
+ 37049
4769
+ 67911
4770
+ 37051
4771
+ 37044
4772
+ 37201
4773
+ 67916
4774
+ 37197
4775
+ 37199
4776
+ 37200
4777
+ 37313
4778
+ 37321
4779
+ 37322
4780
+ 37317
4781
+ 37319
4782
+ 37320
4783
+ 37332
4784
+ 68286
4785
+ 67918
4786
+ 37336
4787
+ 37338
4788
+ 37339
4789
+ 37395
4790
+ 70291
4791
+ 37429
4792
+ 37431
4793
+ 37396
4794
+ 68778
4795
+ 70368
4796
+ 37404
4797
+ 37405
4798
+ 67919
4799
+ 37909
4800
+ 37912
4801
+ 37913
4802
+ 37916
4803
+ 38008
4804
+ 38020
4805
+ 38016
4806
+ 38017
4807
+ 38061
4808
+ 38070
4809
+ 67928
4810
+ 38066
4811
+ 38068
4812
+ 38721
4813
+ 70253
4814
+ 38732
4815
+ 38734
4816
+ 38736
4817
+ 39503
4818
+ 70036
4819
+ 39512
4820
+ 39513
4821
+ 39508
4822
+ 39992
4823
+ 39993
4824
+ 39994
4825
+ 39988
4826
+ 39989
4827
+ 40010
4828
+ 40018
4829
+ 40019
4830
+ 40015
4831
+ 40308
4832
+ 67952
4833
+ 40316
4834
+ 40318
4835
+ 40319
4836
+ 40320
4837
+ 41354
4838
+ 41360
4839
+ 41361
4840
+ 41363
4841
+ 42752
4842
+ 67987
4843
+ 42756
4844
+ 42757
4845
+ 44267
4846
+ 44277
4847
+ 44279
4848
+ 44280
4849
+ 44422
4850
+ 70255
4851
+ 67100
4852
+ 44425
4853
+ 44427
4854
+ 44428
4855
+ 44491
4856
+ 67104
4857
+ 44494
4858
+ 44497
4859
+ 44498
4860
+ 44499
4861
+ 44828
4862
+ 44832
4863
+ 44834
4864
+ 44835
4865
+ 44836
4866
+ 44896
4867
+ 70154
4868
+ 67108
4869
+ 44899
4870
+ 44901
4871
+ 44902
4872
+ 45494
4873
+ 45514
4874
+ 45516
4875
+ 45517
4876
+ 45518
4877
+ 45684
4878
+ 67117
4879
+ 45688
4880
+ 45690
4881
+ 45691
4882
+ 45777
4883
+ 45784
4884
+ 45787
4885
+ 45788
4886
+ 45905
4887
+ 67120
4888
+ 45911
4889
+ 45913
4890
+ 45914
4891
+ 46155
4892
+ 67123
4893
+ 46177
4894
+ 46180
4895
+ 46181
4896
+ 46997
4897
+ 47008
4898
+ 47009
4899
+ 47004
4900
+ 47006
4901
+ 47007
4902
+ 47458
4903
+ 47464
4904
+ 47465
4905
+ 47467
4906
+ 47468
4907
+ 70057
4908
+ 67138
4909
+ 47670
4910
+ 47673
4911
+ 47674
4912
+ 47782
4913
+ 47791
4914
+ 47792
4915
+ 47793
4916
+ 48207
4917
+ 48214
4918
+ 48215
4919
+ 48222
4920
+ 48249
4921
+ 67145
4922
+ 48254
4923
+ 48256
4924
+ 48257
4925
+ 48603
4926
+ 48609
4927
+ 48612
4928
+ 48613
4929
+ 50107
4930
+ 68444
4931
+ 67178
4932
+ 50123
4933
+ 50126
4934
+ 50127
4935
+ 50138
4936
+ 70360
4937
+ 50141
4938
+ 50142
4939
+ 50145
4940
+ 50328
4941
+ 50338
4942
+ 50339
4943
+ 50340
4944
+ 50333
4945
+ 50334
4946
+ 50719
4947
+ 68420
4948
+ 68146
4949
+ 67182
4950
+ 50722
4951
+ 50725
4952
+ 50726
4953
+ 50932
4954
+ 67185
4955
+ 50937
4956
+ 50939
4957
+ 50940
4958
+ 50941
4959
+ 51019
4960
+ 51028
4961
+ 51026
4962
+ 51094
4963
+ 51112
4964
+ 51272
4965
+ 70294
4966
+ 51291
4967
+ 51293
4968
+ 51294
4969
+ 51695
4970
+ 51689
4971
+ 51691
4972
+ 51692
4973
+ 51693
4974
+ 51694
4975
+ 52168
4976
+ 52176
4977
+ 52177
4978
+ 52178
4979
+ 52172
4980
+ 52197
4981
+ 68482
4982
+ 52204
4983
+ 67211
4984
+ 52202
4985
+ 52236
4986
+ 52237
4987
+ 52233
4988
+ 53435
4989
+ 53446
4990
+ 53450
4991
+ 53451
4992
+ 53640
4993
+ 53645
4994
+ 53647
4995
+ 53899
4996
+ 53904
4997
+ 53905
4998
+ 53909
4999
+ 54255
5000
+ 67237
5001
+ 54259
5002
+ 54261
5003
+ 54262
5004
+ 54263
5005
+ 54360
5006
+ 68734
5007
+ 68160
5008
+ 54380
5009
+ 54383
5010
+ 54384
5011
+ 54586
5012
+ 67245
5013
+ 54598
5014
+ 54599
5015
+ 54915
5016
+ 67249
5017
+ 54926
5018
+ 54929
5019
+ 54930
5020
+ 54931
5021
+ 70371
5022
+ 55424
5023
+ 67258
5024
+ 67257
5025
+ 55429
5026
+ 55430
5027
+ 55745
5028
+ 55754
5029
+ 55748
5030
+ 55749
5031
+ 55752
5032
+ 55753
5033
+ 55837
5034
+ 55843
5035
+ 55844
5036
+ 55845
5037
+ 55847
5038
+ 55848
5039
+ 55840
5040
+ 56191
5041
+ 56201
5042
+ 67270
5043
+ 56197
5044
+ 57260
5045
+ 57268
5046
+ 57269
5047
+ 57264
5048
+ 57267
5049
+ 58629
5050
+ 58726
5051
+ 58728
5052
+ 58729
5053
+ 58705
5054
+ 58708
5055
+ 58711
5056
+ 58712
5057
+ 58713
5058
+ 59404
5059
+ 67320
5060
+ 59408
5061
+ 59410
5062
+ 59604
5063
+ 59605
5064
+ 59607
5065
+ 59608
5066
+ 59599
5067
+ 60043
5068
+ 67330
5069
+ 60047
5070
+ 60049
5071
+ 60050
5072
+ 60051
5073
+ 67019
5074
+ 60578
5075
+ 60580
5076
+ 60887
5077
+ 60911
5078
+ 60913
5079
+ 60914
5080
+ 60947
5081
+ 60953
5082
+ 61737
5083
+ 67029
5084
+ 61741
5085
+ 61744
5086
+ 61965
5087
+ 68378
5088
+ 61970
5089
+ 61972
5090
+ 62285
5091
+ 67041
5092
+ 62292
5093
+ 62293
5094
+ 62295
5095
+ 62296
5096
+ 62301
5097
+ 67040
5098
+ 62304
5099
+ 62306
5100
+ 62307
5101
+ 62308
5102
+ 62329
5103
+ 62360
5104
+ 62363
5105
+ 62370
5106
+ 62371
5107
+ 63447
5108
+ 70070
5109
+ 67071
5110
+ 63451
5111
+ 63453
5112
+ 63454
5113
+ 63621
5114
+ 63626
5115
+ 63637
5116
+ 63638
5117
+ 63639
5118
+ 63720
5119
+ 67080
5120
+ 63725
5121
+ 63727
5122
+ 63728
5123
+ 64543
5124
+ 68193
5125
+ 68862
5126
+ 67017
5127
+ 64546
5128
+ 64548
5129
+ 64550
5130
+ 00829
5131
+ 00840
5132
+ 00841
5133
+ 00838
5134
+ 00897
5135
+ 67347
5136
+ 00902
5137
+ 00903
5138
+ 01572
5139
+ 70117
5140
+ 01578
5141
+ 01580
5142
+ 01581
5143
+ 01796
5144
+ 67355
5145
+ 01803
5146
+ 01805
5147
+ 01806
5148
+ 01964
5149
+ 01959
5150
+ 02089
5151
+ 02094
5152
+ 02096
5153
+ 02097
5154
+ 02098
5155
+ 02618
5156
+ 67365
5157
+ 02621
5158
+ 02623
5159
+ 02624
5160
+ 02871
5161
+ 02876
5162
+ 02878
5163
+ 02879
5164
+ 04008
5165
+ 67375
5166
+ 04014
5167
+ 04016
5168
+ 04110
5169
+ 04121
5170
+ 04122
5171
+ 04117
5172
+ 04154
5173
+ 04158
5174
+ 04160
5175
+ 04161
5176
+ 04288
5177
+ 04293
5178
+ 04295
5179
+ 04386
5180
+ 04396
5181
+ 04391
5182
+ 04395
5183
+ 05554
5184
+ 05561
5185
+ 05564
5186
+ 05614
5187
+ 70148
5188
+ 05618
5189
+ 05620
5190
+ 05621
5191
+ 05910
5192
+ 05919
5193
+ 05914
5194
+ 05918
5195
+ 06014
5196
+ 06024
5197
+ 06026
5198
+ 06027
5199
+ 06028
5200
+ 06039
5201
+ 06048
5202
+ 06050
5203
+ 06051
5204
+ 06157
5205
+ 67408
5206
+ 06162
5207
+ 06164
5208
+ 06312
5209
+ 67410
5210
+ 06316
5211
+ 06318
5212
+ 70343
5213
+ 07444
5214
+ 07446
5215
+ 07447
5216
+ 07450
5217
+ 07608
5218
+ 70098
5219
+ 07639
5220
+ 67440
5221
+ 07635
5222
+ 07747
5223
+ 67444
5224
+ 07752
5225
+ 07754
5226
+ 07755
5227
+ 07756
5228
+ 08002
5229
+ 08007
5230
+ 67447
5231
+ 70196
5232
+ 68590
5233
+ 67449
5234
+ 08133
5235
+ 08410
5236
+ 70105
5237
+ 08418
5238
+ 08419
5239
+ 08415
5240
+ 08782
5241
+ 08790
5242
+ 67463
5243
+ 08785
5244
+ 08789
5245
+ 08799
5246
+ 68017
5247
+ 68884
5248
+ 08821
5249
+ 08822
5250
+ 67471
5251
+ 09089
5252
+ 09094
5253
+ 09202
5254
+ 09211
5255
+ 09212
5256
+ 09317
5257
+ 09327
5258
+ 09322
5259
+ 09632
5260
+ 09635
5261
+ 09638
5262
+ 09639
5263
+ 09805
5264
+ 67482
5265
+ 09809
5266
+ 09811
5267
+ 09834
5268
+ 09839
5269
+ 09841
5270
+ 09933
5271
+ 09940
5272
+ 09941
5273
+ 67484
5274
+ 09938
5275
+ 10014
5276
+ 10022
5277
+ 67488
5278
+ 10088
5279
+ 10092
5280
+ 10094
5281
+ 10095
5282
+ 11006
5283
+ 11010
5284
+ 11012
5285
+ 11013
5286
+ 11014
5287
+ 11059
5288
+ 67503
5289
+ 11063
5290
+ 11065
5291
+ 11066
5292
+ 11142
5293
+ 11150
5294
+ 11151
5295
+ 11153
5296
+ 11146
5297
+ 11936
5298
+ 11950
5299
+ 11951
5300
+ 11946
5301
+ 11947
5302
+ 12058
5303
+ 12065
5304
+ 12067
5305
+ 12068
5306
+ 12188
5307
+ 12194
5308
+ 12196
5309
+ 12197
5310
+ 12290
5311
+ 12299
5312
+ 12295
5313
+ 12297
5314
+ 13015
5315
+ 13021
5316
+ 13027
5317
+ 13248
5318
+ 13252
5319
+ 13407
5320
+ 13423
5321
+ 13418
5322
+ 13455
5323
+ 13459
5324
+ 13461
5325
+ 13462
5326
+ 13463
5327
+ 13743
5328
+ 67537
5329
+ 13747
5330
+ 13750
5331
+ 14311
5332
+ 14315
5333
+ 14317
5334
+ 14318
5335
+ 14365
5336
+ 14369
5337
+ 14371
5338
+ 14372
5339
+ 68204
5340
+ 14570
5341
+ 14571
5342
+ 15546
5343
+ 15554
5344
+ 15555
5345
+ 67562
5346
+ 15550
5347
+ 15705
5348
+ 15710
5349
+ 15712
5350
+ 16076
5351
+ 67568
5352
+ 16084
5353
+ 16086
5354
+ 16095
5355
+ 16101
5356
+ 16103
5357
+ 16427
5358
+ 70118
5359
+ 16432
5360
+ 16434
5361
+ 16435
5362
+ 16803
5363
+ 16807
5364
+ 16810
5365
+ 16922
5366
+ 16934
5367
+ 16935
5368
+ 16928
5369
+ 17161
5370
+ 17163
5371
+ 67581
5372
+ 17164
5373
+ 17165
5374
+ 17374
5375
+ 17380
5376
+ 17382
5377
+ 17383
5378
+ 17388
5379
+ 17399
5380
+ 67586
5381
+ 17393
5382
+ 17981
5383
+ 70370
5384
+ 67602
5385
+ 17989
5386
+ 17993
5387
+ 17994
5388
+ 18239
5389
+ 67606
5390
+ 18244
5391
+ 18247
5392
+ 18253
5393
+ 67608
5394
+ 18261
5395
+ 18257
5396
+ 18259
5397
+ 18572
5398
+ 18574
5399
+ 18576
5400
+ 18577
5401
+ 18887
5402
+ 67619
5403
+ 18901
5404
+ 18902
5405
+ 18970
5406
+ 67621
5407
+ 18982
5408
+ 18984
5409
+ 19086
5410
+ 19091
5411
+ 19093
5412
+ 19164
5413
+ 19168
5414
+ 19170
5415
+ 19171
5416
+ 19304
5417
+ 67626
5418
+ 19308
5419
+ 19310
5420
+ 19311
5421
+ 19703
5422
+ 19712
5423
+ 67630
5424
+ 19708
5425
+ 19710
5426
+ 19966
5427
+ 19972
5428
+ 19973
5429
+ 20007
5430
+ 70115
5431
+ 20011
5432
+ 20013
5433
+ 20020
5434
+ 20025
5435
+ 20026
5436
+ 20028
5437
+ 20029
5438
+ 20327
5439
+ 20338
5440
+ 20340
5441
+ 20341
5442
+ 21022
5443
+ 21031
5444
+ 21028
5445
+ 21302
5446
+ 68536
5447
+ 21310
5448
+ 67650
5449
+ 21306
5450
+ 21828
5451
+ 67657
5452
+ 21834
5453
+ 23273
5454
+ 67682
5455
+ 23278
5456
+ 68055
5457
+ 68822
5458
+ 67688
5459
+ 23483
5460
+ 23486
5461
+ 23708
5462
+ 67696
5463
+ 23706
5464
+ 23807
5465
+ 23809
5466
+ 23810
5467
+ 24165
5468
+ 24175
5469
+ 24169
5470
+ 24170
5471
+ 24376
5472
+ 24386
5473
+ 67706
5474
+ 24383
5475
+ 24829
5476
+ 24830
5477
+ 24831
5478
+ 67711
5479
+ 24832
5480
+ 24826
5481
+ 24827
5482
+ 24828
5483
+ 24883
5484
+ 67714
5485
+ 24891
5486
+ 24894
5487
+ 25041
5488
+ 25053
5489
+ 25054
5490
+ 25047
5491
+ 25048
5492
+ 65862
5493
+ 67730
5494
+ 25849
5495
+ 25851
5496
+ 26001
5497
+ 26005
5498
+ 26007
5499
+ 26008
5500
+ 26203
5501
+ 26222
5502
+ 26223
5503
+ 26217
5504
+ 26221
5505
+ 26797
5506
+ 26804
5507
+ 26805
5508
+ 27312
5509
+ 27317
5510
+ 27318
5511
+ 27444
5512
+ 27455
5513
+ 27447
5514
+ 27788
5515
+ 68073
5516
+ 67766
5517
+ 27800
5518
+ 27795
5519
+ 27881
5520
+ 27882
5521
+ 67768
5522
+ 27877
5523
+ 28581
5524
+ 28587
5525
+ 28589
5526
+ 28734
5527
+ 28742
5528
+ 28747
5529
+ 28748
5530
+ 29324
5531
+ 70077
5532
+ 29331
5533
+ 29332
5534
+ 29334
5535
+ 29399
5536
+ 29408
5537
+ 29409
5538
+ 29410
5539
+ 29405
5540
+ 29406
5541
+ 29631
5542
+ 29635
5543
+ 29639
5544
+ 30252
5545
+ 68077
5546
+ 68962
5547
+ 30267
5548
+ 30269
5549
+ 30270
5550
+ 30311
5551
+ 30321
5552
+ 30323
5553
+ 30325
5554
+ 30326
5555
+ 30509
5556
+ 67797
5557
+ 30512
5558
+ 30513
5559
+ 30515
5560
+ 30706
5561
+ 30715
5562
+ 67800
5563
+ 30717
5564
+ 30718
5565
+ 31047
5566
+ 31053
5567
+ 31055
5568
+ 31056
5569
+ 31481
5570
+ 31494
5571
+ 31495
5572
+ 31488
5573
+ 31553
5574
+ 67812
5575
+ 31558
5576
+ 31560
5577
+ 32121
5578
+ 32122
5579
+ 32123
5580
+ 32119
5581
+ 32473
5582
+ 67832
5583
+ 32477
5584
+ 32479
5585
+ 32480
5586
+ 32540
5587
+ 32543
5588
+ 32545
5589
+ 32858
5590
+ 68556
5591
+ 32865
5592
+ 32866
5593
+ 33343
5594
+ 33344
5595
+ 67848
5596
+ 33340
5597
+ 33677
5598
+ 33703
5599
+ 67854
5600
+ 33699
5601
+ 34086
5602
+ 34094
5603
+ 67863
5604
+ 34093
5605
+ 34109
5606
+ 34113
5607
+ 34115
5608
+ 34116
5609
+ 70028
5610
+ 34272
5611
+ 34275
5612
+ 34270
5613
+ 34352
5614
+ 67865
5615
+ 34356
5616
+ 34358
5617
+ 34365
5618
+ 34379
5619
+ 34380
5620
+ 34381
5621
+ 34372
5622
+ 35603
5623
+ 35608
5624
+ 35610
5625
+ 36228
5626
+ 68101
5627
+ 36239
5628
+ 36233
5629
+ 36236
5630
+ 36238
5631
+ 70023
5632
+ 36637
5633
+ 67900
5634
+ 36634
5635
+ 37013
5636
+ 37025
5637
+ 67910
5638
+ 37023
5639
+ 37024
5640
+ 37061
5641
+ 67912
5642
+ 37064
5643
+ 37066
5644
+ 37067
5645
+ 37343
5646
+ 37351
5647
+ 37352
5648
+ 37353
5649
+ 37348
5650
+ 37610
5651
+ 67923
5652
+ 37615
5653
+ 37836
5654
+ 37840
5655
+ 37843
5656
+ 37844
5657
+ 38222
5658
+ 38239
5659
+ 38240
5660
+ 38241
5661
+ 38235
5662
+ 39343
5663
+ 39351
5664
+ 39353
5665
+ 39354
5666
+ 39959
5667
+ 39961
5668
+ 39954
5669
+ 40629
5670
+ 40641
5671
+ 40649
5672
+ 67953
5673
+ 40653
5674
+ 40655
5675
+ 40656
5676
+ 40767
5677
+ 40768
5678
+ 40762
5679
+ 40763
5680
+ 40766
5681
+ 40797
5682
+ 67956
5683
+ 40804
5684
+ 40808
5685
+ 40809
5686
+ 41062
5687
+ 67963
5688
+ 41067
5689
+ 41069
5690
+ 41163
5691
+ 67964
5692
+ 41167
5693
+ 41168
5694
+ 41169
5695
+ 41170
5696
+ 41171
5697
+ 42003
5698
+ 42006
5699
+ 67979
5700
+ 42081
5701
+ 42082
5702
+ 42089
5703
+ 42090
5704
+ 42091
5705
+ 42398
5706
+ 42404
5707
+ 42405
5708
+ 42409
5709
+ 42469
5710
+ 42473
5711
+ 42474
5712
+ 42476
5713
+ 42477
5714
+ 42983
5715
+ 70190
5716
+ 42990
5717
+ 42992
5718
+ 42993
5719
+ 43552
5720
+ 43556
5721
+ 43558
5722
+ 43559
5723
+ 43725
5724
+ 43728
5725
+ 43731
5726
+ 43732
5727
+ 44119
5728
+ 44134
5729
+ 44135
5730
+ 44129
5731
+ 44199
5732
+ 44204
5733
+ 44205
5734
+ 44207
5735
+ 44319
5736
+ 44328
5737
+ 44556
5738
+ 67103
5739
+ 44569
5740
+ 44571
5741
+ 44557
5742
+ 44562
5743
+ 44564
5744
+ 44565
5745
+ 44618
5746
+ 44627
5747
+ 44632
5748
+ 44732
5749
+ 44736
5750
+ 44740
5751
+ 44859
5752
+ 44864
5753
+ 44866
5754
+ 45059
5755
+ 45063
5756
+ 45065
5757
+ 45066
5758
+ 45097
5759
+ 45102
5760
+ 45103
5761
+ 45105
5762
+ 45106
5763
+ 45108
5764
+ 45112
5765
+ 45115
5766
+ 45116
5767
+ 45169
5768
+ 45176
5769
+ 45178
5770
+ 45179
5771
+ 45362
5772
+ 67113
5773
+ 45366
5774
+ 45368
5775
+ 45570
5776
+ 67116
5777
+ 45573
5778
+ 45576
5779
+ 45711
5780
+ 45717
5781
+ 45720
5782
+ 45721
5783
+ 45722
5784
+ 45739
5785
+ 45744
5786
+ 45748
5787
+ 45966
5788
+ 45970
5789
+ 45972
5790
+ 45973
5791
+ 45974
5792
+ 46053
5793
+ 67122
5794
+ 46056
5795
+ 46057
5796
+ 46059
5797
+ 46956
5798
+ 46959
5799
+ 46964
5800
+ 47236
5801
+ 47241
5802
+ 47243
5803
+ 47857
5804
+ 67140
5805
+ 47860
5806
+ 47863
5807
+ 47898
5808
+ 47907
5809
+ 47911
5810
+ 48019
5811
+ 48027
5812
+ 48030
5813
+ 48031
5814
+ 48487
5815
+ 70197
5816
+ 48497
5817
+ 48498
5818
+ 48492
5819
+ 48495
5820
+ 48537
5821
+ 67150
5822
+ 48541
5823
+ 48543
5824
+ 48544
5825
+ 67152
5826
+ 48713
5827
+ 48717
5828
+ 48718
5829
+ 49427
5830
+ 49431
5831
+ 49434
5832
+ 49435
5833
+ 49643
5834
+ 67172
5835
+ 49647
5836
+ 49649
5837
+ 49650
5838
+ 49726
5839
+ 49735
5840
+ 49731
5841
+ 49733
5842
+ 49803
5843
+ 49810
5844
+ 67174
5845
+ 49808
5846
+ 50010
5847
+ 50011
5848
+ 50012
5849
+ 50021
5850
+ 50316
5851
+ 50320
5852
+ 50322
5853
+ 50323
5854
+ 50427
5855
+ 50441
5856
+ 50442
5857
+ 50438
5858
+ 50546
5859
+ 50552
5860
+ 50554
5861
+ 51400
5862
+ 67199
5863
+ 51406
5864
+ 51407
5865
+ 51474
5866
+ 67198
5867
+ 51479
5868
+ 51481
5869
+ 51530
5870
+ 51547
5871
+ 51549
5872
+ 51550
5873
+ 51551
5874
+ 51932
5875
+ 51936
5876
+ 51938
5877
+ 51939
5878
+ 52287
5879
+ 52292
5880
+ 52294
5881
+ 52295
5882
+ 52937
5883
+ 67222
5884
+ 52942
5885
+ 52944
5886
+ 52945
5887
+ 53021
5888
+ 67225
5889
+ 53017
5890
+ 53018
5891
+ 53152
5892
+ 53156
5893
+ 53158
5894
+ 53159
5895
+ 53239
5896
+ 70035
5897
+ 53244
5898
+ 53245
5899
+ 53246
5900
+ 53824
5901
+ 67233
5902
+ 53828
5903
+ 53830
5904
+ 53880
5905
+ 53882
5906
+ 54168
5907
+ 54178
5908
+ 54179
5909
+ 54174
5910
+ 54177
5911
+ 54304
5912
+ 54305
5913
+ 67238
5914
+ 54299
5915
+ 54419
5916
+ 54430
5917
+ 54432
5918
+ 54454
5919
+ 68161
5920
+ 69042
5921
+ 67242
5922
+ 54460
5923
+ 54462
5924
+ 54963
5925
+ 54964
5926
+ 54958
5927
+ 55101
5928
+ 55121
5929
+ 55124
5930
+ 55287
5931
+ 55296
5932
+ 55293
5933
+ 55669
5934
+ 55674
5935
+ 55676
5936
+ 55677
5937
+ 55810
5938
+ 67261
5939
+ 55813
5940
+ 55807
5941
+ 55970
5942
+ 55980
5943
+ 55982
5944
+ 55983
5945
+ 55993
5946
+ 70120
5947
+ 55998
5948
+ 56000
5949
+ 56001
5950
+ 56002
5951
+ 56025
5952
+ 56037
5953
+ 67265
5954
+ 56033
5955
+ 56036
5956
+ 56099
5957
+ 67267
5958
+ 56109
5959
+ 56110
5960
+ 67271
5961
+ 56250
5962
+ 56252
5963
+ 56253
5964
+ 56340
5965
+ 70178
5966
+ 69010
5967
+ 56345
5968
+ 56346
5969
+ 56347
5970
+ 56460
5971
+ 56468
5972
+ 56469
5973
+ 56466
5974
+ 56969
5975
+ 56974
5976
+ 56976
5977
+ 56977
5978
+ 57089
5979
+ 57098
5980
+ 57094
5981
+ 57097
5982
+ 57235
5983
+ 67286
5984
+ 57240
5985
+ 57242
5986
+ 57408
5987
+ 67289
5988
+ 57414
5989
+ 57416
5990
+ 57724
5991
+ 57733
5992
+ 57727
5993
+ 57731
5994
+ 57732
5995
+ 57769
5996
+ 68550
5997
+ 57773
5998
+ 57775
5999
+ 57776
6000
+ 57837
6001
+ 57846
6002
+ 67295
6003
+ 57841
6004
+ 57921
6005
+ 57924
6006
+ 57926
6007
+ 57927
6008
+ 58000
6009
+ 58015
6010
+ 58007
6011
+ 58131
6012
+ 58134
6013
+ 58135
6014
+ 58138
6015
+ 67304
6016
+ 58184
6017
+ 58187
6018
+ 68169
6019
+ 58432
6020
+ 58437
6021
+ 58945
6022
+ 58950
6023
+ 58952
6024
+ 59044
6025
+ 70327
6026
+ 59054
6027
+ 59056
6028
+ 59057
6029
+ 59102
6030
+ 67318
6031
+ 59109
6032
+ 59847
6033
+ 67327
6034
+ 59850
6035
+ 59853
6036
+ 67331
6037
+ 60222
6038
+ 60223
6039
+ 60226
6040
+ 67332
6041
+ 60306
6042
+ 60307
6043
+ 60310
6044
+ 60311
6045
+ 60378
6046
+ 67333
6047
+ 60382
6048
+ 60384
6049
+ 61364
6050
+ 67025
6051
+ 61366
6052
+ 61367
6053
+ 61369
6054
+ 61878
6055
+ 61885
6056
+ 61887
6057
+ 61888
6058
+ 62422
6059
+ 67043
6060
+ 62425
6061
+ 62426
6062
+ 62428
6063
+ 62583
6064
+ 62777
6065
+ 62779
6066
+ 62607
6067
+ 67048
6068
+ 62616
6069
+ 62617
6070
+ 62753
6071
+ 68604
6072
+ 62755
6073
+ 62758
6074
+ 62759
6075
+ 62760
6076
+ 62826
6077
+ 62836
6078
+ 62832
6079
+ 62834
6080
+ 62835
6081
+ 63494
6082
+ 63503
6083
+ 63500
6084
+ 63501
6085
+ 63605
6086
+ 63611
6087
+ 63613
6088
+ 63650
6089
+ 67077
6090
+ 63655
6091
+ 63658
6092
+ 67005
6093
+ 63852
6094
+ 63854
6095
+ 63855
6096
+ 64041
6097
+ 67007
6098
+ 64045
6099
+ 64047
6100
+ 64444
6101
+ 64450
6102
+ 64455
6103
+ 64456
6104
+ 64449
6105
+ 00429
6106
+ 70167
6107
+ 00432
6108
+ 00434
6109
+ 00662
6110
+ 67343
6111
+ 00665
6112
+ 00667
6113
+ 01149
6114
+ 68958
6115
+ 01161
6116
+ 01242
6117
+ 01251
6118
+ 01247
6119
+ 01248
6120
+ 01249
6121
+ 02143
6122
+ 67359
6123
+ 02146
6124
+ 02147
6125
+ 02150
6126
+ 02607
6127
+ 02612
6128
+ 02613
6129
+ 02615
6130
+ 02696
6131
+ 02705
6132
+ 02700
6133
+ 02702
6134
+ 03100
6135
+ 03104
6136
+ 03106
6137
+ 03107
6138
+ 70258
6139
+ 03452
6140
+ 03455
6141
+ 03514
6142
+ 03518
6143
+ 03520
6144
+ 03521
6145
+ 04579
6146
+ 04587
6147
+ 04589
6148
+ 04583
6149
+ 05667
6150
+ 05686
6151
+ 05687
6152
+ 70116
6153
+ 67403
6154
+ 05795
6155
+ 05797
6156
+ 05869
6157
+ 05876
6158
+ 05880
6159
+ 06346
6160
+ 06378
6161
+ 67412
6162
+ 06622
6163
+ 06627
6164
+ 06630
6165
+ 06723
6166
+ 67418
6167
+ 06735
6168
+ 06737
6169
+ 07169
6170
+ 07170
6171
+ 07171
6172
+ 07172
6173
+ 67425
6174
+ 07164
6175
+ 07574
6176
+ 67438
6177
+ 07577
6178
+ 07579
6179
+ 67442
6180
+ 07679
6181
+ 07681
6182
+ 07788
6183
+ 07789
6184
+ 07783
6185
+ 08169
6186
+ 08171
6187
+ 08172
6188
+ 08173
6189
+ 08441
6190
+ 67454
6191
+ 08444
6192
+ 08446
6193
+ 09129
6194
+ 09487
6195
+ 09491
6196
+ 09492
6197
+ 09494
6198
+ 09517
6199
+ 67478
6200
+ 09520
6201
+ 09522
6202
+ 09738
6203
+ 09739
6204
+ 09741
6205
+ 10305
6206
+ 10312
6207
+ 10314
6208
+ 10335
6209
+ 10345
6210
+ 67493
6211
+ 10344
6212
+ 10514
6213
+ 10524
6214
+ 10525
6215
+ 67496
6216
+ 10519
6217
+ 10655
6218
+ 10650
6219
+ 10685
6220
+ 10690
6221
+ 67500
6222
+ 10788
6223
+ 10790
6224
+ 10791
6225
+ 11087
6226
+ 11090
6227
+ 11095
6228
+ 11376
6229
+ 67507
6230
+ 11381
6231
+ 11383
6232
+ 11440
6233
+ 11442
6234
+ 11443
6235
+ 70251
6236
+ 11472
6237
+ 11474
6238
+ 11475
6239
+ 11497
6240
+ 11502
6241
+ 67509
6242
+ 11530
6243
+ 11532
6244
+ 11533
6245
+ 12011
6246
+ 12015
6247
+ 12017
6248
+ 12019
6249
+ 12071
6250
+ 12075
6251
+ 12077
6252
+ 12078
6253
+ 13040
6254
+ 13045
6255
+ 13047
6256
+ 13048
6257
+ 13513
6258
+ 13533
6259
+ 13535
6260
+ 14253
6261
+ 14257
6262
+ 14263
6263
+ 14265
6264
+ 14266
6265
+ 14579
6266
+ 14581
6267
+ 14582
6268
+ 14583
6269
+ 15209
6270
+ 70161
6271
+ 15216
6272
+ 15218
6273
+ 15292
6274
+ 15300
6275
+ 15295
6276
+ 15473
6277
+ 15478
6278
+ 15480
6279
+ 15576
6280
+ 15585
6281
+ 67564
6282
+ 15586
6283
+ 15581
6284
+ 16155
6285
+ 16167
6286
+ 67571
6287
+ 16162
6288
+ 16165
6289
+ 16225
6290
+ 16239
6291
+ 16236
6292
+ 16237
6293
+ 16326
6294
+ 16329
6295
+ 16332
6296
+ 67570
6297
+ 16350
6298
+ 16353
6299
+ 16356
6300
+ 16357
6301
+ 16382
6302
+ 16385
6303
+ 16387
6304
+ 16388
6305
+ 16389
6306
+ 16529
6307
+ 16565
6308
+ 16568
6309
+ 68356
6310
+ 68037
6311
+ 17303
6312
+ 17895
6313
+ 67597
6314
+ 17898
6315
+ 17899
6316
+ 18108
6317
+ 18117
6318
+ 18111
6319
+ 18115
6320
+ 18116
6321
+ 18418
6322
+ 18421
6323
+ 18719
6324
+ 67615
6325
+ 18722
6326
+ 18725
6327
+ 19044
6328
+ 19056
6329
+ 19053
6330
+ 19055
6331
+ 19218
6332
+ 19227
6333
+ 19228
6334
+ 19225
6335
+ 19611
6336
+ 19618
6337
+ 19620
6338
+ 19621
6339
+ 20197
6340
+ 67633
6341
+ 20199
6342
+ 20200
6343
+ 20202
6344
+ 20203
6345
+ 20621
6346
+ 20630
6347
+ 67638
6348
+ 20624
6349
+ 20626
6350
+ 20765
6351
+ 20769
6352
+ 20771
6353
+ 20772
6354
+ 68234
6355
+ 20927
6356
+ 20930
6357
+ 20931
6358
+ 21008
6359
+ 21012
6360
+ 21014
6361
+ 21104
6362
+ 21486
6363
+ 21490
6364
+ 21492
6365
+ 68946
6366
+ 22249
6367
+ 22242
6368
+ 22408
6369
+ 22414
6370
+ 22453
6371
+ 22458
6372
+ 22460
6373
+ 22479
6374
+ 22488
6375
+ 22484
6376
+ 22486
6377
+ 22487
6378
+ 23002
6379
+ 70319
6380
+ 23011
6381
+ 23012
6382
+ 23008
6383
+ 67683
6384
+ 23201
6385
+ 23204
6386
+ 23205
6387
+ 23799
6388
+ 23855
6389
+ 23838
6390
+ 23843
6391
+ 23845
6392
+ 23846
6393
+ 23900
6394
+ 70044
6395
+ 23906
6396
+ 23909
6397
+ 67699
6398
+ 23910
6399
+ 23986
6400
+ 67701
6401
+ 23989
6402
+ 23991
6403
+ 23992
6404
+ 24252
6405
+ 24256
6406
+ 24257
6407
+ 24514
6408
+ 24517
6409
+ 24520
6410
+ 24679
6411
+ 24684
6412
+ 24686
6413
+ 24744
6414
+ 24745
6415
+ 25166
6416
+ 67720
6417
+ 25170
6418
+ 25172
6419
+ 25568
6420
+ 70248
6421
+ 25575
6422
+ 25939
6423
+ 25943
6424
+ 25944
6425
+ 25947
6426
+ 26079
6427
+ 26084
6428
+ 26085
6429
+ 26087
6430
+ 26088
6431
+ 26906
6432
+ 67749
6433
+ 26918
6434
+ 26958
6435
+ 67751
6436
+ 26961
6437
+ 26964
6438
+ 27085
6439
+ 27086
6440
+ 67753
6441
+ 27081
6442
+ 27093
6443
+ 27098
6444
+ 27100
6445
+ 27101
6446
+ 27185
6447
+ 67756
6448
+ 27189
6449
+ 27191
6450
+ 68860
6451
+ 27378
6452
+ 27380
6453
+ 27381
6454
+ 27432
6455
+ 67763
6456
+ 27437
6457
+ 27438
6458
+ 27440
6459
+ 67762
6460
+ 27636
6461
+ 27638
6462
+ 27639
6463
+ 27664
6464
+ 27670
6465
+ 27672
6466
+ 27673
6467
+ 27821
6468
+ 67767
6469
+ 27825
6470
+ 27828
6471
+ 28248
6472
+ 28262
6473
+ 28265
6474
+ 28266
6475
+ 28386
6476
+ 28396
6477
+ 67780
6478
+ 28391
6479
+ 28875
6480
+ 28885
6481
+ 28879
6482
+ 28880
6483
+ 29617
6484
+ 29618
6485
+ 29620
6486
+ 68308
6487
+ 30177
6488
+ 30180
6489
+ 30256
6490
+ 67795
6491
+ 30259
6492
+ 30261
6493
+ 30564
6494
+ 30567
6495
+ 30749
6496
+ 30752
6497
+ 67801
6498
+ 30754
6499
+ 31092
6500
+ 67806
6501
+ 31097
6502
+ 31098
6503
+ 31251
6504
+ 31259
6505
+ 67808
6506
+ 31262
6507
+ 31571
6508
+ 67813
6509
+ 31567
6510
+ 31975
6511
+ 31980
6512
+ 31983
6513
+ 32552
6514
+ 32556
6515
+ 32558
6516
+ 66028
6517
+ 32726
6518
+ 32730
6519
+ 32732
6520
+ 32822
6521
+ 32826
6522
+ 32829
6523
+ 32869
6524
+ 32879
6525
+ 32882
6526
+ 32883
6527
+ 33373
6528
+ 33378
6529
+ 33765
6530
+ 67856
6531
+ 33769
6532
+ 33807
6533
+ 33809
6534
+ 33810
6535
+ 33811
6536
+ 34396
6537
+ 67868
6538
+ 34399
6539
+ 34401
6540
+ 34508
6541
+ 70208
6542
+ 34513
6543
+ 34515
6544
+ 68097
6545
+ 34546
6546
+ 34548
6547
+ 34549
6548
+ 34698
6549
+ 34708
6550
+ 34709
6551
+ 34704
6552
+ 35207
6553
+ 35213
6554
+ 35215
6555
+ 35267
6556
+ 67879
6557
+ 35547
6558
+ 35549
6559
+ 35550
6560
+ 35886
6561
+ 35891
6562
+ 35892
6563
+ 35962
6564
+ 35970
6565
+ 67895
6566
+ 36120
6567
+ 36122
6568
+ 36123
6569
+ 36413
6570
+ 67898
6571
+ 36418
6572
+ 36420
6573
+ 36421
6574
+ 36712
6575
+ 36716
6576
+ 36718
6577
+ 36719
6578
+ 37266
6579
+ 37276
6580
+ 37277
6581
+ 67921
6582
+ 37486
6583
+ 37487
6584
+ 38828
6585
+ 67938
6586
+ 38843
6587
+ 39359
6588
+ 39363
6589
+ 39365
6590
+ 39366
6591
+ 39377
6592
+ 39380
6593
+ 39381
6594
+ 39383
6595
+ 39384
6596
+ 39424
6597
+ 39429
6598
+ 39431
6599
+ 39672
6600
+ 70169
6601
+ 39842
6602
+ 39844
6603
+ 39873
6604
+ 39876
6605
+ 39880
6606
+ 40049
6607
+ 70183
6608
+ 40053
6609
+ 40055
6610
+ 70053
6611
+ 40401
6612
+ 40406
6613
+ 40407
6614
+ 40576
6615
+ 40580
6616
+ 40582
6617
+ 40583
6618
+ 41477
6619
+ 41484
6620
+ 41486
6621
+ 41970
6622
+ 67977
6623
+ 41978
6624
+ 41980
6625
+ 41981
6626
+ 42551
6627
+ 42556
6628
+ 42558
6629
+ 42564
6630
+ 67980
6631
+ 42568
6632
+ 42570
6633
+ 42577
6634
+ 42591
6635
+ 42596
6636
+ 42587
6637
+ 42662
6638
+ 67983
6639
+ 42674
6640
+ 42676
6641
+ 43110
6642
+ 43119
6643
+ 43120
6644
+ 43118
6645
+ 43375
6646
+ 43383
6647
+ 43386
6648
+ 43695
6649
+ 67091
6650
+ 43699
6651
+ 43701
6652
+ 43702
6653
+ 43808
6654
+ 70365
6655
+ 43811
6656
+ 43813
6657
+ 44232
6658
+ 68388
6659
+ 44236
6660
+ 44239
6661
+ 44440
6662
+ 44444
6663
+ 44446
6664
+ 44447
6665
+ 44952
6666
+ 44954
6667
+ 44955
6668
+ 45323
6669
+ 45326
6670
+ 45328
6671
+ 45329
6672
+ 45447
6673
+ 45452
6674
+ 45454
6675
+ 45869
6676
+ 45871
6677
+ 45872
6678
+ 46326
6679
+ 70354
6680
+ 46335
6681
+ 46332
6682
+ 46334
6683
+ 46587
6684
+ 46591
6685
+ 46594
6686
+ 46595
6687
+ 46862
6688
+ 46866
6689
+ 46869
6690
+ 47037
6691
+ 67130
6692
+ 47041
6693
+ 47043
6694
+ 47295
6695
+ 47303
6696
+ 47304
6697
+ 47306
6698
+ 47329
6699
+ 70126
6700
+ 47334
6701
+ 47336
6702
+ 47348
6703
+ 47366
6704
+ 47360
6705
+ 47361
6706
+ 47363
6707
+ 47364
6708
+ 47371
6709
+ 47386
6710
+ 47449
6711
+ 47452
6712
+ 47454
6713
+ 47455
6714
+ 47456
6715
+ 47638
6716
+ 67137
6717
+ 47729
6718
+ 47735
6719
+ 47837
6720
+ 47845
6721
+ 47849
6722
+ 47842
6723
+ 48164
6724
+ 67144
6725
+ 48170
6726
+ 48172
6727
+ 48304
6728
+ 67146
6729
+ 48375
6730
+ 48377
6731
+ 48403
6732
+ 66412
6733
+ 48407
6734
+ 48409
6735
+ 48556
6736
+ 67151
6737
+ 48559
6738
+ 48561
6739
+ 48562
6740
+ 48885
6741
+ 48892
6742
+ 48895
6743
+ 48896
6744
+ 49148
6745
+ 49151
6746
+ 49153
6747
+ 49154
6748
+ 49155
6749
+ 49317
6750
+ 49321
6751
+ 49322
6752
+ 49323
6753
+ 49935
6754
+ 49937
6755
+ 49938
6756
+ 49939
6757
+ 50243
6758
+ 50247
6759
+ 50248
6760
+ 50250
6761
+ 50397
6762
+ 50400
6763
+ 50401
6764
+ 50403
6765
+ 50528
6766
+ 50533
6767
+ 50535
6768
+ 50536
6769
+ 50619
6770
+ 50621
6771
+ 50622
6772
+ 50825
6773
+ 67184
6774
+ 50829
6775
+ 50831
6776
+ 50918
6777
+ 50950
6778
+ 50953
6779
+ 50956
6780
+ 50959
6781
+ 50961
6782
+ 50962
6783
+ 70072
6784
+ 51200
6785
+ 51201
6786
+ 51202
6787
+ 51203
6788
+ 51204
6789
+ 51657
6790
+ 51665
6791
+ 67200
6792
+ 51661
6793
+ 51737
6794
+ 51732
6795
+ 51733
6796
+ 51787
6797
+ 67205
6798
+ 51805
6799
+ 51808
6800
+ 51956
6801
+ 51958
6802
+ 51959
6803
+ 52081
6804
+ 52084
6805
+ 52085
6806
+ 52088
6807
+ 52102
6808
+ 52106
6809
+ 52109
6810
+ 52137
6811
+ 52145
6812
+ 52146
6813
+ 52149
6814
+ 52150
6815
+ 70289
6816
+ 52347
6817
+ 52350
6818
+ 52351
6819
+ 52440
6820
+ 52431
6821
+ 52432
6822
+ 52602
6823
+ 52605
6824
+ 52607
6825
+ 52608
6826
+ 52763
6827
+ 67219
6828
+ 52766
6829
+ 52768
6830
+ 52769
6831
+ 52792
6832
+ 67220
6833
+ 52801
6834
+ 53664
6835
+ 53669
6836
+ 53673
6837
+ 54350
6838
+ 67239
6839
+ 54351
6840
+ 54352
6841
+ 54607
6842
+ 54611
6843
+ 54615
6844
+ 67251
6845
+ 55542
6846
+ 67259
6847
+ 55538
6848
+ 55552
6849
+ 55556
6850
+ 55558
6851
+ 55559
6852
+ 55633
6853
+ 55639
6854
+ 55642
6855
+ 55643
6856
+ 56046
6857
+ 56050
6858
+ 56053
6859
+ 56288
6860
+ 67272
6861
+ 56283
6862
+ 56285
6863
+ 56286
6864
+ 67273
6865
+ 56389
6866
+ 56391
6867
+ 56392
6868
+ 56393
6869
+ 56422
6870
+ 56428
6871
+ 56430
6872
+ 56781
6873
+ 56785
6874
+ 56786
6875
+ 56870
6876
+ 56877
6877
+ 56879
6878
+ 56880
6879
+ 57203
6880
+ 67285
6881
+ 57207
6882
+ 57209
6883
+ 57210
6884
+ 57482
6885
+ 57491
6886
+ 57488
6887
+ 57611
6888
+ 57614
6889
+ 57615
6890
+ 57616
6891
+ 57873
6892
+ 57882
6893
+ 57877
6894
+ 57881
6895
+ 58273
6896
+ 58277
6897
+ 58279
6898
+ 58280
6899
+ 58574
6900
+ 58576
6901
+ 58577
6902
+ 58578
6903
+ 58581
6904
+ 58619
6905
+ 58622
6906
+ 58624
6907
+ 58625
6908
+ 58886
6909
+ 58912
6910
+ 58914
6911
+ 58893
6912
+ 67315
6913
+ 58898
6914
+ 58900
6915
+ 59028
6916
+ 59035
6917
+ 59036
6918
+ 59038
6919
+ 59070
6920
+ 59081
6921
+ 59075
6922
+ 59225
6923
+ 59234
6924
+ 59236
6925
+ 59230
6926
+ 59722
6927
+ 67325
6928
+ 59726
6929
+ 59728
6930
+ 59734
6931
+ 59742
6932
+ 59743
6933
+ 59740
6934
+ 59783
6935
+ 67326
6936
+ 59794
6937
+ 59796
6938
+ 59827
6939
+ 59832
6940
+ 59835
6941
+ 60500
6942
+ 70168
6943
+ 60530
6944
+ 60525
6945
+ 61439
6946
+ 67026
6947
+ 61445
6948
+ 61447
6949
+ 61448
6950
+ 62187
6951
+ 62198
6952
+ 62200
6953
+ 62202
6954
+ 62515
6955
+ 62520
6956
+ 62522
6957
+ 62523
6958
+ 62569
6959
+ 67046
6960
+ 62573
6961
+ 62576
6962
+ 62817
6963
+ 62820
6964
+ 62822
6965
+ 62823
6966
+ 63116
6967
+ 63123
6968
+ 63125
6969
+ 63308
6970
+ 63313
6971
+ 63315
6972
+ 63376
6973
+ 63379
6974
+ 63382
6975
+ 63555
6976
+ 67074
6977
+ 63557
6978
+ 63561
6979
+ 63562
6980
+ 63688
6981
+ 70112
6982
+ 63692
6983
+ 63820
6984
+ 63823
6985
+ 63825
6986
+ 63826
6987
+ 63884
6988
+ 63888
6989
+ 63890
6990
+ 64000
6991
+ 64006
6992
+ 64010
6993
+ 64011
6994
+ 64012
6995
+ 64002
6996
+ 00295
6997
+ 01611
6998
+ 01613
6999
+ 01614
7000
+ 02123
7001
+ 00333
7002
+ 00337
7003
+ 00340
7004
+ 00374
7005
+ 00378
7006
+ 00383
7007
+ 67344
7008
+ 00691
7009
+ 00693
7010
+ 67345
7011
+ 00857
7012
+ 00867
7013
+ 00870
7014
+ 00873
7015
+ 00886
7016
+ 68450
7017
+ 00893
7018
+ 01016
7019
+ 01020
7020
+ 67348
7021
+ 01021
7022
+ 01322
7023
+ 01325
7024
+ 01372
7025
+ 01375
7026
+ 01379
7027
+ 01472
7028
+ 01475
7029
+ 01478
7030
+ 01504
7031
+ 01513
7032
+ 01514
7033
+ 01509
7034
+ 01596
7035
+ 01601
7036
+ 01603
7037
+ 01604
7038
+ 01651
7039
+ 01644
7040
+ 01645
7041
+ 01828
7042
+ 01833
7043
+ 01837
7044
+ 01838
7045
+ 01873
7046
+ 01877
7047
+ 01879
7048
+ 01921
7049
+ 69090
7050
+ 01925
7051
+ 02275
7052
+ 67358
7053
+ 02284
7054
+ 02556
7055
+ 02562
7056
+ 02863
7057
+ 02866
7058
+ 02869
7059
+ 02914
7060
+ 02916
7061
+ 02968
7062
+ 02972
7063
+ 02974
7064
+ 03067
7065
+ 03071
7066
+ 03072
7067
+ 03150
7068
+ 03157
7069
+ 03159
7070
+ 03199
7071
+ 03203
7072
+ 03206
7073
+ 03380
7074
+ 03385
7075
+ 03387
7076
+ 03489
7077
+ 03492
7078
+ 03494
7079
+ 03495
7080
+ 03752
7081
+ 03760
7082
+ 03762
7083
+ 03992
7084
+ 04001
7085
+ 04005
7086
+ 04097
7087
+ 04103
7088
+ 04105
7089
+ 04225
7090
+ 04229
7091
+ 04231
7092
+ 04323
7093
+ 04328
7094
+ 04329
7095
+ 04354
7096
+ 04357
7097
+ 04360
7098
+ 04466
7099
+ 06121
7100
+ 04467
7101
+ 06123
7102
+ 04530
7103
+ 04534
7104
+ 04535
7105
+ 04536
7106
+ 05366
7107
+ 05370
7108
+ 05371
7109
+ 05373
7110
+ 05776
7111
+ 05850
7112
+ 06139
7113
+ 06143
7114
+ 06144
7115
+ 06145
7116
+ 68008
7117
+ 68752
7118
+ 69076
7119
+ 06217
7120
+ 06602
7121
+ 06616
7122
+ 06619
7123
+ 07032
7124
+ 67422
7125
+ 07035
7126
+ 07037
7127
+ 07467
7128
+ 67435
7129
+ 07501
7130
+ 07503
7131
+ 07768
7132
+ 07770
7133
+ 07771
7134
+ 07883
7135
+ 07884
7136
+ 07876
7137
+ 67448
7138
+ 08109
7139
+ 08112
7140
+ 08113
7141
+ 08181
7142
+ 08186
7143
+ 08467
7144
+ 08471
7145
+ 08473
7146
+ 08532
7147
+ 67455
7148
+ 08534
7149
+ 08537
7150
+ 70081
7151
+ 67456
7152
+ 08548
7153
+ 08630
7154
+ 08634
7155
+ 08638
7156
+ 08640
7157
+ 08642
7158
+ 08646
7159
+ 08648
7160
+ 67464
7161
+ 08828
7162
+ 08829
7163
+ 08978
7164
+ 65302
7165
+ 67472
7166
+ 08984
7167
+ 09215
7168
+ 70201
7169
+ 09224
7170
+ 09217
7171
+ 09219
7172
+ 09222
7173
+ 09620
7174
+ 09630
7175
+ 09710
7176
+ 09714
7177
+ 10004
7178
+ 10009
7179
+ 10012
7180
+ 10603
7181
+ 10606
7182
+ 10810
7183
+ 10815
7184
+ 10816
7185
+ 11839
7186
+ 11879
7187
+ 12099
7188
+ 12107
7189
+ 12108
7190
+ 12102
7191
+ 12219
7192
+ 12213
7193
+ 12400
7194
+ 67521
7195
+ 12405
7196
+ 12407
7197
+ 12411
7198
+ 12419
7199
+ 12420
7200
+ 12607
7201
+ 12610
7202
+ 12615
7203
+ 12618
7204
+ 12648
7205
+ 12655
7206
+ 12674
7207
+ 12677
7208
+ 12679
7209
+ 12694
7210
+ 12703
7211
+ 12697
7212
+ 12699
7213
+ 12806
7214
+ 12813
7215
+ 12986
7216
+ 12988
7217
+ 12991
7218
+ 12992
7219
+ 12993
7220
+ 13604
7221
+ 70157
7222
+ 13622
7223
+ 13624
7224
+ 13725
7225
+ 13736
7226
+ 14055
7227
+ 67544
7228
+ 14050
7229
+ 14125
7230
+ 14130
7231
+ 14132
7232
+ 14133
7233
+ 14156
7234
+ 14160
7235
+ 14161
7236
+ 14164
7237
+ 14738
7238
+ 14740
7239
+ 14732
7240
+ 15017
7241
+ 15021
7242
+ 15023
7243
+ 15118
7244
+ 15114
7245
+ 15115
7246
+ 15143
7247
+ 15144
7248
+ 15182
7249
+ 15190
7250
+ 15192
7251
+ 15197
7252
+ 15634
7253
+ 15636
7254
+ 15637
7255
+ 15647
7256
+ 70111
7257
+ 15651
7258
+ 15840
7259
+ 15846
7260
+ 15847
7261
+ 15848
7262
+ 15901
7263
+ 15902
7264
+ 15905
7265
+ 15906
7266
+ 16001
7267
+ 16006
7268
+ 16008
7269
+ 16267
7270
+ 16271
7271
+ 16273
7272
+ 16392
7273
+ 70374
7274
+ 16399
7275
+ 16634
7276
+ 16645
7277
+ 16699
7278
+ 16705
7279
+ 16706
7280
+ 16708
7281
+ 16980
7282
+ 16985
7283
+ 16987
7284
+ 16988
7285
+ 17031
7286
+ 17357
7287
+ 17358
7288
+ 17360
7289
+ 67584
7290
+ 17363
7291
+ 17455
7292
+ 17459
7293
+ 17461
7294
+ 17462
7295
+ 18373
7296
+ 18375
7297
+ 18376
7298
+ 18424
7299
+ 18430
7300
+ 18431
7301
+ 18477
7302
+ 18478
7303
+ 18480
7304
+ 18481
7305
+ 18551
7306
+ 18556
7307
+ 19187
7308
+ 19188
7309
+ 19189
7310
+ 19190
7311
+ 67622
7312
+ 19195
7313
+ 19196
7314
+ 19199
7315
+ 67623
7316
+ 19206
7317
+ 19392
7318
+ 67627
7319
+ 19396
7320
+ 19398
7321
+ 19502
7322
+ 19508
7323
+ 19510
7324
+ 19653
7325
+ 19658
7326
+ 19659
7327
+ 19739
7328
+ 67632
7329
+ 19744
7330
+ 19747
7331
+ 19812
7332
+ 19817
7333
+ 70040
7334
+ 69070
7335
+ 20310
7336
+ 20321
7337
+ 20317
7338
+ 20320
7339
+ 20601
7340
+ 20635
7341
+ 67639
7342
+ 20664
7343
+ 20666
7344
+ 20860
7345
+ 20871
7346
+ 21085
7347
+ 21088
7348
+ 21090
7349
+ 21091
7350
+ 21355
7351
+ 67651
7352
+ 21359
7353
+ 21361
7354
+ 21368
7355
+ 21372
7356
+ 21374
7357
+ 21375
7358
+ 21816
7359
+ 21823
7360
+ 21825
7361
+ 22509
7362
+ 22513
7363
+ 22515
7364
+ 22516
7365
+ 22609
7366
+ 22613
7367
+ 22840
7368
+ 67676
7369
+ 22845
7370
+ 22847
7371
+ 67679
7372
+ 22931
7373
+ 23237
7374
+ 23241
7375
+ 23245
7376
+ 23395
7377
+ 23414
7378
+ 23415
7379
+ 23411
7380
+ 23469
7381
+ 23472
7382
+ 24013
7383
+ 24018
7384
+ 24021
7385
+ 67705
7386
+ 24133
7387
+ 24134
7388
+ 24137
7389
+ 24138
7390
+ 24267
7391
+ 65805
7392
+ 24270
7393
+ 24273
7394
+ 24328
7395
+ 24371
7396
+ 24373
7397
+ 24374
7398
+ 24597
7399
+ 24599
7400
+ 24601
7401
+ 24978
7402
+ 24995
7403
+ 24997
7404
+ 67717
7405
+ 68668
7406
+ 25424
7407
+ 25425
7408
+ 25426
7409
+ 25503
7410
+ 67727
7411
+ 25513
7412
+ 25869
7413
+ 68063
7414
+ 25873
7415
+ 25875
7416
+ 26010
7417
+ 67736
7418
+ 26014
7419
+ 26017
7420
+ 26135
7421
+ 69062
7422
+ 67738
7423
+ 26140
7424
+ 26141
7425
+ 26584
7426
+ 68066
7427
+ 26592
7428
+ 27536
7429
+ 27537
7430
+ 27539
7431
+ 27540
7432
+ 27541
7433
+ 27552
7434
+ 27554
7435
+ 27555
7436
+ 27558
7437
+ 27835
7438
+ 27848
7439
+ 27849
7440
+ 28412
7441
+ 28418
7442
+ 28419
7443
+ 28673
7444
+ 28678
7445
+ 28682
7446
+ 29275
7447
+ 29280
7448
+ 29282
7449
+ 29283
7450
+ 29561
7451
+ 29567
7452
+ 29789
7453
+ 29795
7454
+ 29796
7455
+ 29797
7456
+ 29841
7457
+ 29845
7458
+ 29848
7459
+ 29961
7460
+ 29964
7461
+ 29966
7462
+ 29976
7463
+ 29981
7464
+ 29984
7465
+ 30215
7466
+ 30218
7467
+ 30220
7468
+ 30221
7469
+ 30222
7470
+ 30277
7471
+ 30287
7472
+ 30288
7473
+ 30524
7474
+ 30525
7475
+ 30527
7476
+ 30870
7477
+ 30881
7478
+ 30877
7479
+ 30917
7480
+ 30922
7481
+ 30924
7482
+ 31179
7483
+ 31184
7484
+ 31185
7485
+ 31345
7486
+ 31349
7487
+ 31351
7488
+ 31441
7489
+ 67811
7490
+ 31444
7491
+ 31446
7492
+ 31447
7493
+ 31456
7494
+ 31459
7495
+ 31461
7496
+ 31462
7497
+ 31588
7498
+ 31595
7499
+ 31599
7500
+ 31832
7501
+ 67819
7502
+ 31835
7503
+ 31837
7504
+ 31874
7505
+ 31880
7506
+ 31883
7507
+ 31884
7508
+ 31885
7509
+ 32189
7510
+ 67825
7511
+ 33169
7512
+ 33171
7513
+ 33235
7514
+ 33244
7515
+ 33402
7516
+ 33405
7517
+ 33406
7518
+ 33409
7519
+ 33422
7520
+ 67850
7521
+ 33425
7522
+ 33427
7523
+ 33650
7524
+ 33654
7525
+ 33656
7526
+ 33657
7527
+ 34686
7528
+ 34689
7529
+ 34691
7530
+ 35188
7531
+ 35197
7532
+ 35192
7533
+ 35196
7534
+ 35573
7535
+ 35577
7536
+ 35579
7537
+ 35769
7538
+ 35764
7539
+ 35768
7540
+ 35796
7541
+ 35806
7542
+ 67888
7543
+ 35805
7544
+ 35922
7545
+ 35929
7546
+ 35930
7547
+ 36461
7548
+ 36455
7549
+ 36743
7550
+ 36746
7551
+ 36748
7552
+ 36749
7553
+ 70092
7554
+ 37005
7555
+ 37007
7556
+ 37669
7557
+ 37688
7558
+ 37689
7559
+ 38042
7560
+ 38046
7561
+ 38298
7562
+ 38302
7563
+ 38303
7564
+ 38304
7565
+ 38397
7566
+ 38402
7567
+ 38642
7568
+ 38645
7569
+ 38647
7570
+ 38972
7571
+ 38976
7572
+ 38978
7573
+ 39114
7574
+ 67941
7575
+ 39119
7576
+ 39371
7577
+ 39373
7578
+ 39374
7579
+ 39674
7580
+ 39681
7581
+ 39685
7582
+ 40226
7583
+ 40233
7584
+ 40236
7585
+ 40568
7586
+ 40562
7587
+ 40658
7588
+ 67955
7589
+ 40662
7590
+ 40701
7591
+ 42512
7592
+ 42514
7593
+ 42515
7594
+ 41054
7595
+ 67962
7596
+ 41057
7597
+ 41059
7598
+ 41077
7599
+ 41081
7600
+ 41083
7601
+ 41093
7602
+ 41096
7603
+ 41098
7604
+ 41579
7605
+ 68128
7606
+ 68872
7607
+ 41583
7608
+ 41643
7609
+ 67969
7610
+ 41655
7611
+ 41658
7612
+ 41692
7613
+ 41695
7614
+ 41697
7615
+ 42036
7616
+ 42043
7617
+ 67978
7618
+ 42213
7619
+ 42216
7620
+ 42218
7621
+ 42219
7622
+ 42316
7623
+ 42317
7624
+ 42311
7625
+ 42378
7626
+ 70138
7627
+ 42380
7628
+ 42382
7629
+ 42543
7630
+ 42546
7631
+ 42663
7632
+ 42666
7633
+ 42668
7634
+ 42669
7635
+ 42938
7636
+ 67992
7637
+ 42946
7638
+ 43087
7639
+ 43089
7640
+ 43082
7641
+ 43253
7642
+ 43259
7643
+ 43260
7644
+ 43364
7645
+ 43370
7646
+ 43372
7647
+ 43593
7648
+ 43597
7649
+ 43799
7650
+ 43803
7651
+ 43805
7652
+ 43806
7653
+ 43995
7654
+ 43992
7655
+ 44010
7656
+ 44003
7657
+ 44004
7658
+ 44096
7659
+ 44099
7660
+ 44102
7661
+ 44137
7662
+ 44150
7663
+ 44152
7664
+ 44140
7665
+ 67096
7666
+ 44142
7667
+ 44144
7668
+ 44145
7669
+ 44213
7670
+ 68490
7671
+ 44222
7672
+ 44225
7673
+ 44226
7674
+ 44394
7675
+ 44399
7676
+ 44401
7677
+ 44540
7678
+ 44542
7679
+ 44543
7680
+ 44582
7681
+ 44589
7682
+ 44592
7683
+ 44593
7684
+ 44781
7685
+ 44789
7686
+ 44792
7687
+ 44795
7688
+ 67109
7689
+ 44908
7690
+ 44911
7691
+ 44912
7692
+ 45050
7693
+ 45053
7694
+ 45055
7695
+ 45056
7696
+ 45089
7697
+ 45093
7698
+ 45095
7699
+ 45823
7700
+ 45825
7701
+ 46489
7702
+ 46494
7703
+ 46496
7704
+ 46505
7705
+ 46750
7706
+ 46761
7707
+ 46757
7708
+ 46773
7709
+ 46794
7710
+ 46796
7711
+ 46774
7712
+ 46778
7713
+ 46781
7714
+ 47025
7715
+ 47031
7716
+ 47033
7717
+ 47058
7718
+ 67131
7719
+ 47061
7720
+ 47064
7721
+ 47220
7722
+ 67133
7723
+ 47223
7724
+ 47269
7725
+ 47275
7726
+ 47278
7727
+ 47439
7728
+ 47443
7729
+ 47445
7730
+ 47552
7731
+ 47556
7732
+ 47559
7733
+ 47647
7734
+ 47649
7735
+ 47650
7736
+ 47651
7737
+ 48072
7738
+ 48075
7739
+ 48076
7740
+ 48078
7741
+ 48264
7742
+ 48275
7743
+ 48276
7744
+ 48278
7745
+ 48339
7746
+ 48342
7747
+ 48343
7748
+ 48345
7749
+ 48687
7750
+ 48689
7751
+ 48690
7752
+ 49005
7753
+ 49003
7754
+ 48998
7755
+ 49341
7756
+ 49344
7757
+ 49346
7758
+ 49348
7759
+ 49357
7760
+ 49361
7761
+ 49363
7762
+ 49364
7763
+ 49666
7764
+ 49670
7765
+ 49671
7766
+ 49674
7767
+ 50356
7768
+ 50371
7769
+ 50449
7770
+ 50455
7771
+ 50457
7772
+ 50703
7773
+ 70307
7774
+ 50706
7775
+ 50708
7776
+ 50809
7777
+ 50816
7778
+ 50818
7779
+ 50890
7780
+ 50903
7781
+ 67186
7782
+ 50898
7783
+ 51163
7784
+ 51157
7785
+ 51273
7786
+ 67194
7787
+ 51277
7788
+ 51280
7789
+ 51725
7790
+ 67203
7791
+ 51747
7792
+ 51753
7793
+ 51756
7794
+ 51873
7795
+ 51875
7796
+ 52045
7797
+ 52048
7798
+ 52050
7799
+ 52053
7800
+ 67208
7801
+ 52074
7802
+ 52075
7803
+ 52156
7804
+ 52165
7805
+ 52213
7806
+ 52219
7807
+ 52220
7808
+ 52372
7809
+ 52380
7810
+ 52376
7811
+ 52379
7812
+ 52659
7813
+ 52664
7814
+ 52666
7815
+ 52683
7816
+ 52690
7817
+ 52693
7818
+ 52873
7819
+ 52875
7820
+ 52876
7821
+ 52990
7822
+ 52998
7823
+ 52995
7824
+ 53217
7825
+ 70127
7826
+ 53219
7827
+ 53221
7828
+ 53222
7829
+ 53260
7830
+ 53263
7831
+ 53266
7832
+ 53346
7833
+ 53348
7834
+ 53461
7835
+ 53462
7836
+ 68750
7837
+ 53567
7838
+ 53569
7839
+ 53611
7840
+ 53624
7841
+ 53625
7842
+ 53733
7843
+ 53739
7844
+ 53743
7845
+ 53774
7846
+ 53777
7847
+ 54001
7848
+ 54011
7849
+ 67234
7850
+ 54006
7851
+ 54120
7852
+ 54123
7853
+ 54362
7854
+ 54367
7855
+ 54369
7856
+ 54529
7857
+ 54532
7858
+ 54534
7859
+ 54535
7860
+ 54761
7861
+ 54765
7862
+ 54767
7863
+ 54788
7864
+ 54789
7865
+ 54782
7866
+ 55190
7867
+ 55192
7868
+ 55193
7869
+ 55194
7870
+ 56072
7871
+ 67266
7872
+ 56074
7873
+ 56075
7874
+ 56077
7875
+ 56270
7876
+ 56275
7877
+ 56277
7878
+ 56279
7879
+ 56368
7880
+ 56369
7881
+ 56374
7882
+ 56480
7883
+ 67274
7884
+ 56483
7885
+ 56487
7886
+ 56765
7887
+ 56770
7888
+ 68816
7889
+ 68164
7890
+ 56774
7891
+ 57171
7892
+ 57173
7893
+ 57174
7894
+ 70056
7895
+ 57328
7896
+ 57367
7897
+ 57370
7898
+ 57599
7899
+ 57602
7900
+ 57705
7901
+ 69026
7902
+ 67298
7903
+ 57711
7904
+ 57742
7905
+ 57753
7906
+ 57755
7907
+ 57743
7908
+ 57747
7909
+ 57749
7910
+ 57899
7911
+ 57900
7912
+ 57894
7913
+ 58070
7914
+ 58079
7915
+ 58080
7916
+ 58074
7917
+ 58251
7918
+ 58255
7919
+ 58257
7920
+ 58610
7921
+ 58615
7922
+ 58819
7923
+ 58825
7924
+ 58828
7925
+ 58833
7926
+ 58837
7927
+ 58839
7928
+ 58968
7929
+ 67316
7930
+ 58978
7931
+ 59131
7932
+ 59134
7933
+ 59136
7934
+ 59137
7935
+ 59138
7936
+ 59348
7937
+ 59351
7938
+ 59355
7939
+ 59379
7940
+ 59385
7941
+ 59387
7942
+ 59388
7943
+ 60056
7944
+ 60060
7945
+ 60061
7946
+ 68438
7947
+ 60157
7948
+ 60162
7949
+ 60720
7950
+ 60729
7951
+ 61232
7952
+ 61240
7953
+ 61241
7954
+ 61238
7955
+ 61239
7956
+ 61825
7957
+ 61828
7958
+ 61830
7959
+ 62086
7960
+ 70171
7961
+ 67035
7962
+ 62091
7963
+ 62093
7964
+ 62142
7965
+ 62147
7966
+ 62149
7967
+ 62193
7968
+ 62194
7969
+ 67037
7970
+ 62232
7971
+ 62235
7972
+ 62343
7973
+ 62344
7974
+ 62345
7975
+ 62346
7976
+ 62347
7977
+ 62348
7978
+ 62794
7979
+ 62795
7980
+ 62938
7981
+ 62941
7982
+ 62951
7983
+ 67060
7984
+ 62954
7985
+ 62956
7986
+ 63597
7987
+ 63601
7988
+ 63602
7989
+ 63687
7990
+ 67079
7991
+ 63698
7992
+ 63779
7993
+ 63782
7994
+ 63784
7995
+ 63916
7996
+ 63919
7997
+ 63921
7998
+ 63972
7999
+ 63976
8000
+ 00581
8001
+ 00587
8002
+ 67346
8003
+ 00850
8004
+ 00950
8005
+ 01062
8006
+ 01067
8007
+ 01069
8008
+ 01075
8009
+ 01077
8010
+ 01078
8011
+ 01102
8012
+ 01106
8013
+ 01124
8014
+ 01121
8015
+ 01224
8016
+ 01228
8017
+ 01230
8018
+ 01263
8019
+ 01267
8020
+ 01269
8021
+ 67353
8022
+ 01625
8023
+ 01628
8024
+ 02011
8025
+ 02013
8026
+ 02432
8027
+ 02433
8028
+ 02484
8029
+ 02488
8030
+ 02491
8031
+ 02634
8032
+ 02652
8033
+ 02646
8034
+ 02850
8035
+ 02853
8036
+ 02855
8037
+ 03089
8038
+ 03094
8039
+ 03311
8040
+ 03317
8041
+ 03320
8042
+ 03750
8043
+ 03767
8044
+ 03797
8045
+ 03801
8046
+ 03804
8047
+ 04049
8048
+ 04052
8049
+ 04054
8050
+ 04128
8051
+ 04131
8052
+ 04133
8053
+ 04135
8054
+ 04138
8055
+ 04140
8056
+ 04204
8057
+ 04205
8058
+ 04207
8059
+ 04216
8060
+ 04220
8061
+ 04222
8062
+ 04300
8063
+ 04303
8064
+ 04305
8065
+ 04363
8066
+ 04367
8067
+ 04370
8068
+ 04371
8069
+ 04374
8070
+ 04377
8071
+ 04379
8072
+ 68886
8073
+ 67388
8074
+ 04973
8075
+ 04975
8076
+ 05016
8077
+ 05024
8078
+ 05215
8079
+ 05218
8080
+ 05220
8081
+ 70094
8082
+ 67395
8083
+ 05363
8084
+ 05364
8085
+ 05986
8086
+ 05991
8087
+ 05997
8088
+ 06000
8089
+ 06077
8090
+ 06298
8091
+ 67409
8092
+ 06301
8093
+ 06790
8094
+ 06793
8095
+ 06924
8096
+ 06926
8097
+ 06927
8098
+ 06967
8099
+ 06971
8100
+ 06974
8101
+ 07115
8102
+ 07120
8103
+ 07116
8104
+ 07117
8105
+ 07126
8106
+ 70227
8107
+ 07129
8108
+ 07425
8109
+ 07432
8110
+ 07434
8111
+ 07516
8112
+ 07511
8113
+ 07513
8114
+ 07523
8115
+ 07529
8116
+ 07531
8117
+ 07611
8118
+ 70093
8119
+ 67441
8120
+ 07627
8121
+ 07629
8122
+ 07701
8123
+ 07704
8124
+ 07705
8125
+ 07715
8126
+ 07717
8127
+ 07719
8128
+ 07720
8129
+ 07860
8130
+ 07863
8131
+ 07865
8132
+ 08091
8133
+ 08094
8134
+ 08300
8135
+ 08304
8136
+ 08306
8137
+ 08342
8138
+ 08511
8139
+ 08516
8140
+ 08776
8141
+ 08778
8142
+ 08779
8143
+ 08888
8144
+ 08892
8145
+ 08971
8146
+ 09079
8147
+ 09082
8148
+ 09083
8149
+ 09084
8150
+ 09256
8151
+ 09263
8152
+ 09504
8153
+ 09506
8154
+ 10249
8155
+ 10253
8156
+ 10254
8157
+ 10295
8158
+ 10299
8159
+ 10388
8160
+ 67494
8161
+ 10390
8162
+ 10392
8163
+ 10608
8164
+ 10610
8165
+ 10613
8166
+ 10673
8167
+ 10681
8168
+ 10683
8169
+ 11106
8170
+ 11107
8171
+ 11112
8172
+ 11292
8173
+ 11288
8174
+ 11412
8175
+ 11415
8176
+ 11421
8177
+ 11423
8178
+ 11688
8179
+ 11691
8180
+ 11692
8181
+ 11929
8182
+ 11932
8183
+ 11934
8184
+ 11974
8185
+ 11977
8186
+ 11996
8187
+ 11998
8188
+ 11999
8189
+ 12004
8190
+ 12007
8191
+ 12022
8192
+ 12026
8193
+ 12160
8194
+ 12162
8195
+ 12163
8196
+ 12387
8197
+ 12393
8198
+ 12395
8199
+ 12396
8200
+ 67523
8201
+ 12639
8202
+ 12640
8203
+ 12749
8204
+ 12757
8205
+ 12760
8206
+ 12822
8207
+ 12825
8208
+ 12857
8209
+ 12858
8210
+ 12861
8211
+ 12941
8212
+ 12944
8213
+ 12946
8214
+ 13089
8215
+ 13090
8216
+ 13110
8217
+ 13112
8218
+ 13113
8219
+ 13222
8220
+ 13225
8221
+ 13226
8222
+ 13227
8223
+ 13498
8224
+ 13502
8225
+ 13507
8226
+ 67533
8227
+ 13511
8228
+ 13821
8229
+ 13823
8230
+ 67541
8231
+ 13879
8232
+ 13883
8233
+ 67543
8234
+ 14012
8235
+ 14014
8236
+ 14101
8237
+ 14104
8238
+ 14106
8239
+ 14205
8240
+ 14207
8241
+ 14209
8242
+ 14211
8243
+ 14390
8244
+ 67547
8245
+ 14392
8246
+ 14394
8247
+ 14395
8248
+ 14431
8249
+ 14435
8250
+ 14436
8251
+ 15997
8252
+ 14553
8253
+ 15999
8254
+ 14601
8255
+ 14605
8256
+ 14607
8257
+ 14634
8258
+ 67551
8259
+ 14637
8260
+ 14644
8261
+ 14649
8262
+ 14655
8263
+ 14772
8264
+ 14775
8265
+ 14776
8266
+ 67554
8267
+ 14956
8268
+ 14960
8269
+ 14965
8270
+ 14967
8271
+ 14980
8272
+ 14982
8273
+ 14983
8274
+ 15397
8275
+ 15404
8276
+ 15407
8277
+ 15447
8278
+ 15451
8279
+ 15452
8280
+ 15691
8281
+ 15696
8282
+ 15698
8283
+ 15741
8284
+ 15752
8285
+ 15874
8286
+ 70199
8287
+ 15877
8288
+ 15879
8289
+ 15956
8290
+ 67566
8291
+ 15961
8292
+ 15962
8293
+ 67569
8294
+ 16112
8295
+ 16116
8296
+ 16211
8297
+ 16214
8298
+ 16219
8299
+ 16313
8300
+ 16318
8301
+ 16505
8302
+ 16510
8303
+ 16540
8304
+ 16543
8305
+ 16545
8306
+ 70110
8307
+ 16637
8308
+ 16638
8309
+ 16874
8310
+ 16879
8311
+ 16949
8312
+ 16956
8313
+ 16957
8314
+ 17208
8315
+ 17213
8316
+ 17511
8317
+ 17520
8318
+ 17513
8319
+ 17518
8320
+ 17531
8321
+ 17533
8322
+ 17534
8323
+ 17535
8324
+ 17561
8325
+ 17563
8326
+ 17885
8327
+ 17888
8328
+ 17879
8329
+ 17958
8330
+ 17978
8331
+ 18039
8332
+ 18041
8333
+ 18072
8334
+ 18074
8335
+ 18075
8336
+ 18090
8337
+ 18093
8338
+ 18094
8339
+ 18107
8340
+ 18534
8341
+ 18536
8342
+ 18640
8343
+ 18643
8344
+ 18646
8345
+ 18647
8346
+ 18731
8347
+ 18733
8348
+ 18755
8349
+ 18758
8350
+ 18760
8351
+ 18854
8352
+ 18857
8353
+ 18859
8354
+ 18860
8355
+ 18939
8356
+ 18948
8357
+ 18950
8358
+ 19198
8359
+ 19216
8360
+ 19301
8361
+ 19302
8362
+ 67629
8363
+ 19516
8364
+ 19851
8365
+ 19854
8366
+ 19929
8367
+ 19932
8368
+ 19909
8369
+ 19913
8370
+ 19916
8371
+ 20108
8372
+ 20114
8373
+ 20258
8374
+ 20259
8375
+ 20261
8376
+ 20455
8377
+ 20458
8378
+ 20460
8379
+ 20508
8380
+ 20514
8381
+ 20515
8382
+ 20670
8383
+ 21569
8384
+ 21571
8385
+ 20840
8386
+ 20841
8387
+ 20842
8388
+ 20965
8389
+ 20970
8390
+ 20971
8391
+ 20972
8392
+ 68588
8393
+ 21526
8394
+ 21528
8395
+ 21837
8396
+ 21840
8397
+ 21842
8398
+ 68049
8399
+ 68648
8400
+ 21926
8401
+ 21929
8402
+ 22017
8403
+ 22018
8404
+ 67664
8405
+ 22012
8406
+ 21998
8407
+ 22000
8408
+ 22193
8409
+ 22196
8410
+ 22356
8411
+ 22361
8412
+ 22363
8413
+ 22775
8414
+ 22776
8415
+ 22973
8416
+ 22977
8417
+ 23029
8418
+ 23034
8419
+ 23432
8420
+ 23426
8421
+ 23431
8422
+ 23649
8423
+ 23651
8424
+ 23959
8425
+ 24524
8426
+ 24526
8427
+ 24042
8428
+ 24045
8429
+ 24047
8430
+ 24199
8431
+ 67704
8432
+ 24201
8433
+ 24346
8434
+ 24348
8435
+ 24501
8436
+ 24539
8437
+ 24551
8438
+ 24554
8439
+ 25270
8440
+ 25278
8441
+ 25281
8442
+ 25352
8443
+ 25355
8444
+ 25521
8445
+ 25529
8446
+ 68502
8447
+ 68062
8448
+ 25715
8449
+ 25717
8450
+ 25719
8451
+ 26065
8452
+ 26066
8453
+ 26068
8454
+ 26074
8455
+ 27358
8456
+ 27356
8457
+ 65877
8458
+ 26466
8459
+ 26467
8460
+ 26468
8461
+ 68948
8462
+ 26486
8463
+ 26488
8464
+ 26934
8465
+ 26936
8466
+ 27017
8467
+ 27021
8468
+ 27485
8469
+ 27489
8470
+ 27490
8471
+ 27491
8472
+ 27752
8473
+ 27747
8474
+ 27915
8475
+ 27941
8476
+ 27944
8477
+ 28050
8478
+ 28059
8479
+ 28088
8480
+ 28089
8481
+ 28285
8482
+ 28290
8483
+ 28295
8484
+ 28557
8485
+ 28790
8486
+ 28793
8487
+ 28823
8488
+ 28810
8489
+ 28826
8490
+ 28811
8491
+ 28816
8492
+ 67787
8493
+ 29009
8494
+ 29461
8495
+ 29464
8496
+ 29467
8497
+ 29899
8498
+ 29902
8499
+ 29922
8500
+ 29925
8501
+ 70182
8502
+ 30300
8503
+ 30302
8504
+ 30582
8505
+ 30588
8506
+ 30589
8507
+ 67798
8508
+ 30600
8509
+ 30601
8510
+ 30820
8511
+ 31101
8512
+ 31103
8513
+ 31072
8514
+ 31216
8515
+ 31219
8516
+ 31222
8517
+ 31234
8518
+ 31238
8519
+ 31297
8520
+ 31302
8521
+ 31304
8522
+ 31436
8523
+ 31584
8524
+ 31586
8525
+ 67814
8526
+ 31620
8527
+ 31690
8528
+ 31692
8529
+ 32048
8530
+ 32051
8531
+ 32092
8532
+ 32096
8533
+ 32100
8534
+ 67824
8535
+ 32104
8536
+ 32275
8537
+ 32279
8538
+ 32419
8539
+ 32423
8540
+ 32426
8541
+ 32519
8542
+ 32524
8543
+ 32561
8544
+ 32565
8545
+ 32566
8546
+ 32567
8547
+ 32576
8548
+ 32573
8549
+ 32752
8550
+ 32756
8551
+ 32758
8552
+ 32902
8553
+ 32914
8554
+ 32917
8555
+ 32999
8556
+ 33004
8557
+ 33041
8558
+ 33045
8559
+ 33046
8560
+ 33061
8561
+ 33065
8562
+ 33067
8563
+ 33068
8564
+ 33517
8565
+ 68094
8566
+ 68596
8567
+ 33520
8568
+ 33607
8569
+ 33610
8570
+ 33613
8571
+ 33615
8572
+ 33848
8573
+ 67859
8574
+ 33855
8575
+ 33856
8576
+ 33858
8577
+ 33880
8578
+ 68976
8579
+ 67860
8580
+ 33883
8581
+ 33979
8582
+ 33982
8583
+ 33985
8584
+ 34336
8585
+ 35898
8586
+ 35900
8587
+ 35309
8588
+ 35310
8589
+ 35311
8590
+ 35312
8591
+ 35313
8592
+ 35554
8593
+ 35559
8594
+ 35566
8595
+ 35569
8596
+ 35571
8597
+ 35673
8598
+ 35681
8599
+ 35678
8600
+ 35680
8601
+ 67891
8602
+ 35934
8603
+ 35936
8604
+ 35994
8605
+ 35991
8606
+ 35993
8607
+ 36036
8608
+ 36039
8609
+ 36041
8610
+ 36042
8611
+ 36141
8612
+ 36144
8613
+ 36145
8614
+ 36398
8615
+ 36401
8616
+ 36403
8617
+ 36487
8618
+ 70202
8619
+ 67899
8620
+ 36491
8621
+ 36803
8622
+ 36806
8623
+ 36807
8624
+ 36907
8625
+ 36908
8626
+ 36904
8627
+ 36974
8628
+ 37302
8629
+ 37307
8630
+ 37309
8631
+ 37512
8632
+ 38266
8633
+ 38268
8634
+ 37644
8635
+ 37649
8636
+ 37651
8637
+ 37827
8638
+ 37830
8639
+ 37832
8640
+ 37930
8641
+ 37935
8642
+ 37937
8643
+ 37938
8644
+ 38206
8645
+ 38213
8646
+ 67930
8647
+ 38375
8648
+ 38377
8649
+ 38700
8650
+ 38703
8651
+ 38705
8652
+ 38948
8653
+ 68530
8654
+ 67936
8655
+ 38874
8656
+ 39068
8657
+ 39069
8658
+ 39074
8659
+ 39078
8660
+ 39081
8661
+ 39147
8662
+ 39554
8663
+ 39556
8664
+ 39197
8665
+ 39200
8666
+ 39202
8667
+ 39288
8668
+ 39290
8669
+ 39333
8670
+ 39336
8671
+ 39338
8672
+ 39339
8673
+ 39386
8674
+ 39391
8675
+ 39646
8676
+ 39648
8677
+ 39650
8678
+ 39651
8679
+ 40093
8680
+ 40246
8681
+ 40241
8682
+ 40243
8683
+ 40094
8684
+ 67948
8685
+ 40100
8686
+ 40340
8687
+ 40344
8688
+ 40346
8689
+ 40527
8690
+ 40530
8691
+ 40725
8692
+ 40727
8693
+ 40827
8694
+ 40832
8695
+ 41256
8696
+ 41264
8697
+ 41266
8698
+ 41560
8699
+ 41561
8700
+ 41704
8701
+ 41707
8702
+ 41709
8703
+ 41710
8704
+ 41771
8705
+ 41776
8706
+ 41779
8707
+ 41810
8708
+ 41813
8709
+ 41815
8710
+ 41895
8711
+ 41901
8712
+ 67973
8713
+ 41903
8714
+ 41904
8715
+ 41906
8716
+ 42136
8717
+ 42144
8718
+ 42145
8719
+ 42508
8720
+ 42601
8721
+ 42610
8722
+ 42611
8723
+ 42760
8724
+ 42763
8725
+ 42766
8726
+ 43146
8727
+ 43148
8728
+ 43150
8729
+ 43509
8730
+ 43512
8731
+ 67087
8732
+ 43542
8733
+ 43673
8734
+ 43676
8735
+ 43882
8736
+ 43883
8737
+ 43876
8738
+ 43880
8739
+ 43881
8740
+ 43944
8741
+ 43947
8742
+ 44018
8743
+ 44021
8744
+ 44022
8745
+ 44166
8746
+ 44171
8747
+ 44181
8748
+ 44183
8749
+ 44187
8750
+ 44189
8751
+ 44296
8752
+ 44297
8753
+ 44300
8754
+ 44302
8755
+ 67101
8756
+ 44489
8757
+ 44522
8758
+ 44525
8759
+ 44527
8760
+ 44528
8761
+ 44530
8762
+ 44533
8763
+ 44535
8764
+ 44536
8765
+ 44548
8766
+ 44553
8767
+ 44714
8768
+ 44718
8769
+ 44720
8770
+ 44810
8771
+ 44813
8772
+ 44816
8773
+ 44842
8774
+ 44846
8775
+ 44848
8776
+ 44957
8777
+ 44959
8778
+ 44960
8779
+ 44961
8780
+ 44963
8781
+ 44969
8782
+ 44972
8783
+ 44974
8784
+ 45163
8785
+ 67112
8786
+ 45165
8787
+ 45167
8788
+ 45186
8789
+ 45197
8790
+ 45222
8791
+ 45412
8792
+ 45414
8793
+ 45415
8794
+ 45421
8795
+ 45422
8796
+ 45424
8797
+ 45467
8798
+ 45470
8799
+ 45472
8800
+ 45524
8801
+ 45527
8802
+ 45595
8803
+ 45598
8804
+ 45600
8805
+ 45636
8806
+ 45641
8807
+ 45651
8808
+ 45654
8809
+ 45657
8810
+ 45672
8811
+ 45666
8812
+ 45829
8813
+ 47984
8814
+ 47986
8815
+ 45927
8816
+ 45930
8817
+ 45935
8818
+ 46164
8819
+ 46167
8820
+ 46172
8821
+ 46310
8822
+ 46316
8823
+ 46318
8824
+ 46576
8825
+ 46577
8826
+ 46579
8827
+ 46605
8828
+ 46608
8829
+ 46610
8830
+ 46656
8831
+ 46929
8832
+ 46931
8833
+ 46932
8834
+ 47079
8835
+ 47082
8836
+ 47092
8837
+ 47135
8838
+ 47141
8839
+ 47341
8840
+ 47344
8841
+ 47346
8842
+ 47478
8843
+ 47481
8844
+ 47483
8845
+ 47565
8846
+ 47571
8847
+ 47573
8848
+ 47574
8849
+ 47721
8850
+ 47723
8851
+ 47725
8852
+ 47726
8853
+ 47802
8854
+ 47808
8855
+ 47810
8856
+ 48297
8857
+ 48300
8858
+ 48302
8859
+ 48305
8860
+ 48312
8861
+ 70344
8862
+ 48524
8863
+ 48568
8864
+ 48571
8865
+ 48729
8866
+ 48733
8867
+ 48735
8868
+ 48933
8869
+ 51427
8870
+ 51429
8871
+ 49088
8872
+ 49091
8873
+ 49412
8874
+ 67163
8875
+ 49418
8876
+ 49408
8877
+ 67166
8878
+ 49461
8879
+ 49462
8880
+ 49464
8881
+ 49776
8882
+ 49782
8883
+ 49784
8884
+ 49785
8885
+ 49884
8886
+ 49901
8887
+ 49904
8888
+ 50192
8889
+ 50193
8890
+ 50194
8891
+ 50200
8892
+ 50465
8893
+ 50474
8894
+ 50578
8895
+ 50583
8896
+ 50586
8897
+ 51299
8898
+ 51302
8899
+ 51304
8900
+ 51305
8901
+ 51312
8902
+ 67196
8903
+ 51314
8904
+ 51316
8905
+ 51771
8906
+ 51828
8907
+ 51830
8908
+ 51795
8909
+ 51797
8910
+ 51799
8911
+ 51985
8912
+ 52114
8913
+ 68470
8914
+ 67209
8915
+ 52125
8916
+ 52127
8917
+ 52180
8918
+ 52182
8919
+ 52183
8920
+ 67218
8921
+ 52652
8922
+ 52653
8923
+ 52654
8924
+ 52655
8925
+ 53035
8926
+ 53040
8927
+ 53042
8928
+ 53122
8929
+ 53124
8930
+ 53125
8931
+ 53177
8932
+ 53181
8933
+ 53183
8934
+ 53201
8935
+ 53202
8936
+ 53228
8937
+ 53232
8938
+ 53234
8939
+ 53251
8940
+ 53254
8941
+ 53256
8942
+ 53402
8943
+ 53407
8944
+ 53848
8945
+ 53853
8946
+ 53856
8947
+ 53917
8948
+ 53923
8949
+ 53925
8950
+ 66549
8951
+ 54091
8952
+ 54094
8953
+ 54141
8954
+ 54188
8955
+ 54192
8956
+ 54194
8957
+ 54253
8958
+ 54661
8959
+ 54665
8960
+ 54666
8961
+ 54668
8962
+ 54670
8963
+ 54804
8964
+ 54806
8965
+ 54808
8966
+ 54809
8967
+ 54829
8968
+ 67247
8969
+ 54831
8970
+ 54838
8971
+ 54842
8972
+ 54844
8973
+ 55322
8974
+ 55325
8975
+ 55327
8976
+ 55626
8977
+ 70160
8978
+ 55630
8979
+ 55865
8980
+ 55870
8981
+ 55914
8982
+ 55915
8983
+ 55916
8984
+ 56113
8985
+ 56116
8986
+ 56118
8987
+ 56168
8988
+ 56177
8989
+ 56179
8990
+ 56358
8991
+ 56546
8992
+ 58324
8993
+ 58326
8994
+ 56788
8995
+ 56794
8996
+ 56797
8997
+ 57254
8998
+ 57256
8999
+ 57344
9000
+ 57350
9001
+ 57352
9002
+ 57353
9003
+ 57394
9004
+ 57396
9005
+ 57361
9006
+ 57379
9007
+ 57381
9008
+ 57382
9009
+ 57542
9010
+ 57551
9011
+ 57566
9012
+ 57569
9013
+ 57571
9014
+ 57572
9015
+ 67291
9016
+ 57604
9017
+ 57607
9018
+ 57609
9019
+ 57818
9020
+ 57821
9021
+ 57823
9022
+ 57824
9023
+ 58236
9024
+ 58246
9025
+ 58663
9026
+ 67312
9027
+ 58666
9028
+ 58743
9029
+ 58747
9030
+ 58749
9031
+ 58768
9032
+ 58771
9033
+ 58773
9034
+ 59000
9035
+ 59004
9036
+ 59006
9037
+ 59120
9038
+ 59125
9039
+ 59668
9040
+ 59671
9041
+ 59841
9042
+ 59845
9043
+ 59969
9044
+ 59989
9045
+ 59993
9046
+ 68518
9047
+ 60072
9048
+ 67329
9049
+ 60073
9050
+ 60074
9051
+ 60338
9052
+ 60359
9053
+ 60361
9054
+ 60701
9055
+ 60966
9056
+ 60969
9057
+ 60972
9058
+ 60973
9059
+ 61130
9060
+ 61562
9061
+ 61564
9062
+ 61134
9063
+ 61137
9064
+ 61139
9065
+ 61187
9066
+ 61190
9067
+ 61192
9068
+ 61219
9069
+ 61223
9070
+ 61225
9071
+ 61248
9072
+ 61250
9073
+ 61511
9074
+ 61587
9075
+ 61591
9076
+ 61594
9077
+ 61696
9078
+ 61698
9079
+ 61845
9080
+ 61849
9081
+ 61871
9082
+ 61872
9083
+ 61875
9084
+ 61946
9085
+ 67030
9086
+ 62032
9087
+ 63275
9088
+ 63277
9089
+ 62384
9090
+ 70137
9091
+ 62487
9092
+ 62491
9093
+ 62781
9094
+ 70104
9095
+ 67053
9096
+ 62784
9097
+ 63045
9098
+ 63048
9099
+ 63049
9100
+ 63185
9101
+ 67065
9102
+ 63187
9103
+ 63189
ai_model/words/nslt_100.json ADDED
The diff for this file is too large to render. See raw diff
 
ai_model/words/nslt_1000.json ADDED
The diff for this file is too large to render. See raw diff
 
ai_model/words/nslt_2000.json ADDED
The diff for this file is too large to render. See raw diff
 
ai_model/words/nslt_300.json ADDED
The diff for this file is too large to render. See raw diff
 
ai_model/words/realtime_translator.py ADDED
@@ -0,0 +1,319 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import mediapipe as mp
3
+ import numpy as np
4
+ import pandas as pd
5
+ import os
6
+ from tensorflow.keras.models import load_model
7
+ import time
8
+
9
+ # --- Configuration (must match training parameters) ---
10
+ MODEL_PATH = 'saved_models/best_sign_classifier_model_125_words_seq90.keras'
11
+ PROCESSED_DATA_CSV = 'wlasl_125_words_personal_final_processed_data_augmented_seq90.csv'
12
+
13
+ SEQUENCE_LENGTH = 90
14
+ EXPECTED_COORDS_PER_FRAME = 1662
15
+
16
+ # Define the expected number of coordinates for each type of landmark
17
+ NUM_POSE_COORDS_SINGLE = 33 * 4
18
+ NUM_HAND_COORDS_SINGLE = 21 * 3
19
+ NUM_FACE_COORDS_SINGLE = 468 * 3
20
+
21
+ # --- Real-time Translation Specific Parameters ---
22
+ RECORDING_DURATION_SECONDS = 3.6
23
+ CONFIDENCE_THRESHOLD = 0.50 # Minimum confidence for a prediction to be displayed
24
+
25
+ # --- Automatic Detection & String Building Parameters ---
26
+ MOTION_THRESHOLD = 0.05 # How much landmark movement is needed to trigger a recording
27
+ COOLDOWN_DURATION = 2.0 # Seconds to wait after a prediction before looking for a new sign
28
+ TIME_BETWEEN_WORDS = 1.0 # Minimum time between adding new, distinct words to the sentence
29
+ SENTENCE_CLEAR_DURATION = 8.0 # Time of inactivity before the sentence is cleared
30
+
31
+ # States for the application
32
+ STATE_IDLE = "IDLE (Signing will auto-record)"
33
+ STATE_RECORDING = "RECORDING..."
34
+ STATE_PREDICTING = "PREDICTING..."
35
+ STATE_RESULT = "" # No longer needed as a state string
36
+ STATE_COOLDOWN = "COOLDOWN..."
37
+
38
+ # --- Utility Functions (Copied/Adapted from data_preprocessor.py) ---
39
+ def normalize_landmarks(landmarks_sequence):
40
+ """
41
+ Normalizes a sequence of landmarks (frames, coords) to be translation and scale invariant.
42
+ Handles single frames (ndim=1) or multiple frames (ndim=2).
43
+ """
44
+ if landmarks_sequence.size == 0:
45
+ return landmarks_sequence.astype(np.float32)
46
+
47
+ if landmarks_sequence.ndim == 1:
48
+ input_is_single_frame = True
49
+ landmarks_sequence_2d = np.expand_dims(landmarks_sequence, axis=0)
50
+ else:
51
+ input_is_single_frame = False
52
+ landmarks_sequence_2d = landmarks_sequence
53
+
54
+ normalized_sequences = []
55
+ for frame_landmarks in landmarks_sequence_2d:
56
+ if np.all(frame_landmarks == 0):
57
+ normalized_sequences.append(np.zeros(EXPECTED_COORDS_PER_FRAME, dtype=np.float32))
58
+ continue
59
+
60
+ pose_coords_flat = frame_landmarks[0 : NUM_POSE_COORDS_SINGLE]
61
+ left_hand_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE : NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE]
62
+ right_hand_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE : NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE]
63
+ face_coords_flat = frame_landmarks[NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE : ]
64
+
65
+ all_parts_data = [
66
+ (pose_coords_flat, 4, [0.0] * NUM_POSE_COORDS_SINGLE),
67
+ (left_hand_coords_flat, 3, [0.0] * NUM_HAND_COORDS_SINGLE),
68
+ (right_hand_coords_flat, 3, [0.0] * NUM_HAND_COORDS_SINGLE),
69
+ (face_coords_flat, 3, [0.0] * NUM_FACE_COORDS_SINGLE)
70
+ ]
71
+
72
+ normalized_frame_parts = []
73
+ for flat_lms, coords_per_lm, original_padded_list_template in all_parts_data:
74
+ if np.all(flat_lms == 0):
75
+ normalized_frame_parts.append(np.array(original_padded_list_template, dtype=np.float32))
76
+ continue
77
+
78
+ lms_array = flat_lms.reshape(-1, coords_per_lm)
79
+ coords_for_mean = lms_array[:, :3] if coords_per_lm == 4 else lms_array
80
+
81
+ if np.all(coords_for_mean == 0):
82
+ normalized_frame_parts.append(np.array(original_padded_list_template, dtype=np.float32))
83
+ continue
84
+
85
+ mean_coords = np.mean(coords_for_mean, axis=0)
86
+ translated_lms = lms_array.copy()
87
+ translated_lms[:, :3] -= mean_coords
88
+
89
+ scale_factor = np.max(np.linalg.norm(translated_lms[:, :3], axis=1))
90
+ if scale_factor > 1e-6:
91
+ translated_lms[:, :3] /= scale_factor
92
+
93
+ normalized_frame_parts.append(translated_lms.flatten())
94
+
95
+ combined_normalized_frame = np.concatenate(normalized_frame_parts).astype(np.float32)
96
+
97
+ if len(combined_normalized_frame) < EXPECTED_COORDS_PER_FRAME:
98
+ combined_normalized_frame = np.pad(combined_normalized_frame, (0, EXPECTED_COORDS_PER_FRAME - len(combined_normalized_frame)), 'constant', constant_values=0.0)
99
+ elif len(combined_normalized_frame) > EXPECTED_COORDS_PER_FRAME:
100
+ combined_normalized_frame = combined_normalized_frame[:EXPECTED_COORDS_PER_FRAME]
101
+
102
+ normalized_sequences.append(combined_normalized_frame)
103
+
104
+ result_array = np.array(normalized_sequences, dtype=np.float32)
105
+
106
+ if input_is_single_frame:
107
+ return result_array[0]
108
+ else:
109
+ return result_array
110
+
111
+ def pad_or_truncate_sequence(sequence, target_length, feature_dimension):
112
+ """Pads or truncates a sequence to a target_length."""
113
+ if sequence.shape[0] < target_length:
114
+ padding = np.zeros((target_length - sequence.shape[0], feature_dimension), dtype=np.float32)
115
+ padded_sequence = np.vstack((sequence, padding))
116
+ elif sequence.shape[0] > target_length:
117
+ padded_sequence = sequence[:target_length, :]
118
+ else:
119
+ padded_sequence = sequence
120
+ return padded_sequence
121
+
122
+ def calculate_motion(current_lms, previous_lms):
123
+ """Calculates the total change in landmark positions to detect motion."""
124
+ if previous_lms is None or np.all(previous_lms == 0):
125
+ return 0.0
126
+
127
+ pose_lms_change = np.linalg.norm(current_lms[0:33*4:4] - previous_lms[0:33*4:4])
128
+ hands_lms_change = np.linalg.norm(current_lms[33*4:] - previous_lms[33*4:])
129
+
130
+ return pose_lms_change + hands_lms_change
131
+
132
+ # --- Main Real-time Translator Logic ---
133
+ if __name__ == "__main__":
134
+ if not os.path.exists(MODEL_PATH):
135
+ print(f"Error: Model not found at {MODEL_PATH}. Please ensure your training completed and saved the model.")
136
+ exit()
137
+
138
+ print(f"Loading model from: {MODEL_PATH}")
139
+ model = load_model(MODEL_PATH)
140
+ model.summary()
141
+
142
+ if not os.path.exists(PROCESSED_DATA_CSV):
143
+ print(f"Error: Processed data CSV not found at {PROCESSED_DATA_CSV}. Cannot map gloss IDs to names.")
144
+ exit()
145
+
146
+ df_final = pd.read_csv(PROCESSED_DATA_CSV)
147
+ unique_glosses = df_final['gloss'].unique()
148
+ id_to_gloss = {i: gloss for i, gloss in enumerate(unique_glosses)}
149
+ ordered_gloss_names = [id_to_gloss[i] for i in range(len(id_to_gloss))]
150
+ print(f"Loaded {len(ordered_gloss_names)} gloss mappings.")
151
+
152
+ mp_holistic = mp.solutions.holistic.Holistic(
153
+ static_image_mode=False,
154
+ model_complexity=1,
155
+ min_detection_confidence=0.5,
156
+ min_tracking_confidence=0.5
157
+ )
158
+
159
+ cap = cv2.VideoCapture(0)
160
+ if not cap.isOpened():
161
+ print("Error: Could not open webcam. Make sure no other apps are using it.")
162
+ exit()
163
+
164
+ print(f"\nReal-time translation started.")
165
+ print(f"Signing motion will automatically trigger a {RECORDING_DURATION_SECONDS}-second recording.")
166
+ print("Press 'Q' to quit.")
167
+ print("--------------------------------------------------")
168
+ print(f"Console will show predictions for all {len(ordered_gloss_names)} words.")
169
+ print("--------------------------------------------------")
170
+
171
+ current_state = STATE_IDLE
172
+ recording_start_time = 0
173
+ cooldown_start_time = 0
174
+ recorded_raw_landmarks_buffer = []
175
+ previous_frame_raw_landmarks = None
176
+
177
+ display_status_text = STATE_IDLE
178
+ display_confidence_text = ""
179
+ current_sentence = []
180
+ last_word_added = ""
181
+ last_activity_time = time.time()
182
+
183
+ fps_start_time = time.time()
184
+ fps_frame_count = 0
185
+
186
+ while cap.isOpened():
187
+ ret, frame = cap.read()
188
+ if not ret:
189
+ print("Failed to grab frame.")
190
+ break
191
+
192
+ # --- CAMERA FLIP ADJUSTMENT ---
193
+ # This line will flip the image horizontally.
194
+ # This creates an un-mirrored view, as if someone is facing you.
195
+ # frame = cv2.flip(frame, 1)
196
+ # --- END CAMERA FLIP ADJUSTMENT ---
197
+
198
+ image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
199
+ image.flags.writeable = False
200
+ results = mp_holistic.process(image)
201
+ image.flags.writeable = True
202
+ frame = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
203
+
204
+ # Draw landmarks (unchanged)
205
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.pose_landmarks, mp.solutions.holistic.POSE_CONNECTIONS)
206
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.left_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
207
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.right_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
208
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.face_landmarks, mp.solutions.holistic.FACEMESH_CONTOURS)
209
+
210
+ current_frame_raw_landmarks_flat = np.zeros(EXPECTED_COORDS_PER_FRAME, dtype=np.float32)
211
+ current_idx = 0
212
+ if results.pose_landmarks:
213
+ pose_lms_flat = [coord for landmark in results.pose_landmarks.landmark for coord in [landmark.x, landmark.y, landmark.z, landmark.visibility]]
214
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(pose_lms_flat)] = pose_lms_flat
215
+ current_idx += NUM_POSE_COORDS_SINGLE
216
+
217
+ if results.left_hand_landmarks:
218
+ lh_lms_flat = [coord for landmark in results.left_hand_landmarks.landmark for coord in [landmark.x, landmark.y, landmark.z]]
219
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(lh_lms_flat)] = lh_lms_flat
220
+ current_idx += NUM_HAND_COORDS_SINGLE
221
+
222
+ if results.right_hand_landmarks:
223
+ rh_lms_flat = [coord for landmark in results.right_hand_landmarks.landmark for coord in [landmark.x, landmark.y, landmark.z]]
224
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(rh_lms_flat)] = rh_lms_flat
225
+ current_idx += NUM_HAND_COORDS_SINGLE
226
+
227
+ if results.face_landmarks:
228
+ face_lms_flat = [coord for landmark in results.face_landmarks.landmark for coord in [landmark.x, landmark.y, landmark.z]]
229
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(face_lms_flat)] = face_lms_flat
230
+
231
+ # --- NEW LOGIC FOR AUTOMATIC RECORDING & SENTENCE BUILDING ---
232
+ if current_state == STATE_IDLE or current_state == STATE_COOLDOWN:
233
+ motion = calculate_motion(current_frame_raw_landmarks_flat, previous_frame_raw_landmarks)
234
+ previous_frame_raw_landmarks = current_frame_raw_landmarks_flat
235
+
236
+ if current_state == STATE_IDLE and motion > MOTION_THRESHOLD:
237
+ current_state = STATE_RECORDING
238
+ recording_start_time = time.time()
239
+ recorded_raw_landmarks_buffer = [] # Reset buffer at start of new sign
240
+ print("Recording started automatically...")
241
+
242
+ if current_state == STATE_RECORDING:
243
+ recorded_raw_landmarks_buffer.append(current_frame_raw_landmarks_flat)
244
+ elapsed_time = time.time() - recording_start_time
245
+ display_status_text = f"{STATE_RECORDING} ({int(elapsed_time)}/{RECORDING_DURATION_SECONDS}s)"
246
+ if elapsed_time >= RECORDING_DURATION_SECONDS:
247
+ current_state = STATE_PREDICTING
248
+
249
+ if current_state == STATE_PREDICTING:
250
+ print("\n--- NEW PREDICTION ---")
251
+ if not recorded_raw_landmarks_buffer:
252
+ print("Warning: No frames recorded for prediction.")
253
+ else:
254
+ processed_sequence = normalize_landmarks(np.array(recorded_raw_landmarks_buffer))
255
+ final_input_sequence = pad_or_truncate_sequence(processed_sequence, SEQUENCE_LENGTH, EXPECTED_COORDS_PER_FRAME)
256
+ final_input_sequence = np.expand_dims(final_input_sequence, axis=0)
257
+ predictions = model.predict(final_input_sequence, verbose=0)
258
+ all_scores = predictions[0]
259
+
260
+ print("Confidence scores for all classes:")
261
+ for i in np.argsort(all_scores)[::-1]:
262
+ gloss_name = ordered_gloss_names[i]
263
+ score = all_scores[i]
264
+ print(f" {gloss_name.upper():<10}: {score:.4f}")
265
+
266
+ predicted_class_id = np.argmax(predictions)
267
+ prediction_confidence = predictions[0, predicted_class_id]
268
+ predicted_gloss = id_to_gloss.get(predicted_class_id, "Unknown")
269
+
270
+ # Logic to add a word to the sentence
271
+ if prediction_confidence >= CONFIDENCE_THRESHOLD and predicted_gloss != last_word_added and (time.time() - last_activity_time) > TIME_BETWEEN_WORDS:
272
+ current_sentence.append(predicted_gloss)
273
+ last_word_added = predicted_gloss
274
+ last_activity_time = time.time() # This timer now tracks the last activity, not just prediction
275
+
276
+ display_confidence_text = f"Confidence: {prediction_confidence:.2f}"
277
+
278
+ recorded_raw_landmarks_buffer = []
279
+ cooldown_start_time = time.time()
280
+ current_state = STATE_COOLDOWN
281
+
282
+ if current_state == STATE_COOLDOWN:
283
+ elapsed_cooldown = time.time() - cooldown_start_time
284
+ display_status_text = f"Resuming in {COOLDOWN_DURATION - elapsed_cooldown:.1f}s"
285
+ if elapsed_cooldown > COOLDOWN_DURATION:
286
+ current_state = STATE_IDLE
287
+ display_status_text = STATE_IDLE
288
+
289
+ # Clear the sentence if there's been no activity for a while
290
+ if current_sentence and (time.time() - last_activity_time) > SENTENCE_CLEAR_DURATION:
291
+ current_sentence = []
292
+ last_word_added = ""
293
+ display_status_text = "Sentence cleared."
294
+
295
+ # --- END NEW LOGIC ---
296
+
297
+ # Text on screen (UPDATED to show sentence and status)
298
+ sentence_text = " ".join(current_sentence).upper()
299
+ cv2.putText(frame, display_status_text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2, cv2.LINE_AA)
300
+ cv2.putText(frame, sentence_text, (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)
301
+ cv2.putText(frame, display_confidence_text, (10, 110), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 165, 255), 2, cv2.LINE_AA)
302
+
303
+ fps_frame_count += 1
304
+ if time.time() - fps_start_time >= 1:
305
+ fps = fps_frame_count / (time.time() - fps_start_time)
306
+ cv2.putText(frame, f"FPS: {fps:.1f}", (frame.shape[1] - 150, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 2, cv2.LINE_AA)
307
+ fps_frame_count = 0
308
+ fps_start_time = time.time()
309
+
310
+ cv2.imshow('Sign Language Translator', frame)
311
+
312
+ key = cv2.waitKey(1) & 0xFF
313
+ if key == ord('q'):
314
+ break
315
+
316
+ cap.release()
317
+ cv2.destroyAllWindows()
318
+ mp_holistic.close()
319
+ print("\nReal-time translation stopped.")
ai_model/words/record of results.xlsx ADDED
Binary file (19.7 kB). View file
 
ai_model/words/record_personal_data.py ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import mediapipe as mp
3
+ import numpy as np
4
+ import os
5
+ import time
6
+
7
+ # --- Configuration ---
8
+ # Directory to save recorded raw landmark data
9
+ OUTPUT_RECORDINGS_DIR = 'my_recorded_signs'
10
+
11
+ # MediaPipe parameters (should match what you used for data extraction)
12
+ MP_MODEL_COMPLEXITY = 1
13
+ MP_DETECTION_CONFIDENCE = 0.5
14
+ MP_TRACKING_CONFIDENCE = 0.5
15
+
16
+ # Recording parameters
17
+ DEFAULT_RECORDING_DURATION_SECONDS = 3.6 # Match SEQUENCE_LENGTH / FPS (90 frames / 25 FPS)
18
+
19
+ # Expected number of coordinates per frame (from previous steps)
20
+ EXPECTED_COORDS_PER_FRAME = 1662
21
+
22
+ # Define the expected number of coordinates for each type of landmark
23
+ NUM_POSE_COORDS_SINGLE = 33 * 4
24
+ NUM_HAND_COORDS_SINGLE = 21 * 3
25
+ NUM_FACE_COORDS_SINGLE = 468 * 3
26
+
27
+
28
+ def extract_raw_landmarks(results):
29
+ """
30
+ Extracts raw landmark data from MediaPipe results into a flat numpy array.
31
+ This logic should match how you populate current_frame_raw_landmarks_flat in realtime_translator.py
32
+ """
33
+ current_frame_raw_landmarks_flat = np.zeros(EXPECTED_COORDS_PER_FRAME, dtype=np.float32)
34
+ current_idx = 0
35
+
36
+ if results.pose_landmarks:
37
+ pose_lms_flat = []
38
+ for landmark in results.pose_landmarks.landmark:
39
+ pose_lms_flat.extend([landmark.x, landmark.y, landmark.z, landmark.visibility])
40
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(pose_lms_flat)] = pose_lms_flat
41
+ current_idx += NUM_POSE_COORDS_SINGLE
42
+
43
+ if results.left_hand_landmarks:
44
+ lh_lms_flat = []
45
+ for landmark in results.left_hand_landmarks.landmark:
46
+ lh_lms_flat.extend([landmark.x, landmark.y, landmark.z])
47
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(lh_lms_flat)] = lh_lms_flat
48
+ current_idx += NUM_HAND_COORDS_SINGLE
49
+
50
+ if results.right_hand_landmarks:
51
+ rh_lms_flat = []
52
+ for landmark in results.right_hand_landmarks.landmark:
53
+ rh_lms_flat.extend([landmark.x, landmark.y, landmark.z])
54
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(rh_lms_flat)] = rh_lms_flat
55
+ current_idx += NUM_HAND_COORDS_SINGLE
56
+
57
+ if results.face_landmarks:
58
+ face_lms_flat = []
59
+ for landmark in results.face_landmarks.landmark:
60
+ face_lms_flat.extend([landmark.x, landmark.y, landmark.z])
61
+ current_frame_raw_landmarks_flat[current_idx : current_idx + len(face_lms_flat)] = face_lms_flat
62
+
63
+ return current_frame_raw_landmarks_flat
64
+
65
+
66
+ if __name__ == "__main__":
67
+ os.makedirs(OUTPUT_RECORDINGS_DIR, exist_ok=True)
68
+
69
+ mp_holistic = mp.solutions.holistic.Holistic(
70
+ static_image_mode=False,
71
+ model_complexity=MP_MODEL_COMPLEXITY,
72
+ min_detection_confidence=MP_DETECTION_CONFIDENCE,
73
+ min_tracking_confidence=MP_TRACKING_CONFIDENCE
74
+ )
75
+
76
+ cap = cv2.VideoCapture(0)
77
+ if not cap.isOpened():
78
+ print("Error: Could not open webcam.")
79
+ exit()
80
+
81
+ print(f"\n--- Personal Sign Recording Tool ---")
82
+ print(f"Record duration: {DEFAULT_RECORDING_DURATION_SECONDS} seconds per sign.")
83
+ print(f"Recorded landmark sequences will be saved to: {OUTPUT_RECORDINGS_DIR}")
84
+ print("\nInstructions:")
85
+ print("1. Enter the ASL gloss (word) for the sign you will perform.")
86
+ print("2. Press ENTER.")
87
+ print("3. You will see a 3-second countdown.")
88
+ print("4. Perform the sign clearly during the recording (green background recommended).")
89
+ print("5. The recording will stop automatically. The raw landmarks will be saved.")
90
+ print(" If you see 'No motion detected', try again with more prominent movement.")
91
+ print("6. Repeat or type 'q' and press ENTER to quit.")
92
+
93
+ while True:
94
+ gloss_input = input("\nEnter ASL gloss for sign (e.g., BLACK, APPLE), or 'q' to quit: ").strip().lower()
95
+ if gloss_input == 'q':
96
+ break
97
+ if not gloss_input:
98
+ print("Gloss cannot be empty. Please enter a valid gloss.")
99
+ continue
100
+
101
+ print(f"\n--- Preparing to record '{gloss_input.upper()}' ---")
102
+ print("Starting countdown...")
103
+ countdown_start = time.time()
104
+
105
+ while time.time() - countdown_start < 3:
106
+ ret, frame = cap.read()
107
+ if not ret: break
108
+ frame = cv2.flip(frame, 1)
109
+ display_countdown = 3 - int(time.time() - countdown_start)
110
+ cv2.putText(frame, f"Recording in {display_countdown}...", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 2, cv2.LINE_AA)
111
+ cv2.imshow('Recording Tool', frame)
112
+ cv2.waitKey(1)
113
+
114
+ print(f"Recording '{gloss_input.upper()}' NOW!")
115
+ recorded_landmarks = []
116
+ record_start_time = time.time()
117
+ motion_detected = False
118
+
119
+ while time.time() - record_start_time < DEFAULT_RECORDING_DURATION_SECONDS:
120
+ ret, frame = cap.read()
121
+ if not ret: break
122
+ # frame = cv2.flip(frame, 1)
123
+
124
+ image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
125
+ image.flags.writeable = False
126
+ results = mp_holistic.process(image)
127
+ image.flags.writeable = True
128
+ frame = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
129
+
130
+ # Draw landmarks for visualization
131
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.pose_landmarks, mp.solutions.holistic.POSE_CONNECTIONS)
132
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.left_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
133
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.right_hand_landmarks, mp.solutions.holistic.HAND_CONNECTIONS)
134
+ mp.solutions.drawing_utils.draw_landmarks(frame, results.face_landmarks, mp.solutions.holistic.FACEMESH_CONTOURS)
135
+
136
+ # Extract raw landmarks for saving
137
+ current_frame_lms = extract_raw_landmarks(results)
138
+ recorded_landmarks.append(current_frame_lms)
139
+
140
+ # Basic motion detection (if not all zeros)
141
+ if np.any(current_frame_lms != 0):
142
+ motion_detected = True
143
+
144
+ cv2.putText(frame, f"Recording {gloss_input.upper()} ({int(time.time() - record_start_time)}s)", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
145
+ cv2.imshow('Recording Tool', frame)
146
+ cv2.waitKey(1)
147
+
148
+ print(f"Recording of '{gloss_input.upper()}' finished.")
149
+
150
+ if not motion_detected:
151
+ print("Warning: No significant motion (landmarks != 0) detected during recording. Consider trying again.")
152
+
153
+ if recorded_landmarks:
154
+ recorded_landmarks_array = np.array(recorded_landmarks, dtype=np.float32)
155
+ timestamp = int(time.time())
156
+ filename = f"{gloss_input}_{timestamp}.npy"
157
+ filepath = os.path.join(OUTPUT_RECORDINGS_DIR, filename)
158
+ np.save(filepath, recorded_landmarks_array)
159
+ print(f"Saved {recorded_landmarks_array.shape[0]} frames to {filepath}")
160
+ else:
161
+ print("No frames were recorded.")
162
+
163
+ cap.release()
164
+ cv2.destroyAllWindows()
165
+ mp_holistic.close()
166
+ print("\nRecording tool stopped.")
ai_model/words/saved_models/best_sign_classifier_model.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52de70ef35cccb8f991643336ff99cd3438552fa9250d60e983cc8578ed9a185
3
+ size 13009869
ai_model/words/saved_models/best_sign_classifier_model_10_words_combined_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d13f78523998a1419136db97ae7698fa325ebccc7ace714fd7ac2ed4a4a8a1e
3
+ size 12105586
ai_model/words/saved_models/best_sign_classifier_model_10_words_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4b7e04e04caf184c67b97cf385274db5daa9954237deaad010a0bbf8ad34404e
3
+ size 12105586
ai_model/words/saved_models/best_sign_classifier_model_125_words_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:754fc46f776cb54f5c38b829c743ecdaea52548f16b2af975e1e58cdecb97807
3
+ size 70114011
ai_model/words/saved_models/best_sign_classifier_model_20_words_optimized_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2ca916295d4efaca4758cf19d464a32db26dbc687096a87ecd9f7b49748b4a96
3
+ size 25240130
ai_model/words/saved_models/best_sign_classifier_model_20_words_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52d794ce11e75337d368917db588c5a7c5982779aeddaa03e182bdd4e7a1640a
3
+ size 19301354
ai_model/words/saved_models/best_sign_classifier_model_30_words_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eec69ef523d2b8a3a8798d0153db728a067b85f1b77ff9130b83f6edeaf66eff
3
+ size 27506025
ai_model/words/saved_models/best_sign_classifier_model_40_words_seq90.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3ba02a78a445689a18b06a613f011357a2dcc248fa579441de8bc26ef7b4fc01
3
+ size 27529185
ai_model/words/saved_models/best_sign_classifier_model_improved.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:096f35162a09f28f99e298956519d4854fd6f43e5766f681bbe77d3915f4fa26
3
+ size 5618837
ai_model/words/saved_models/best_sign_classifier_model_nslt300.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f655d7b2faf2c72ad2c8fa9f8c7b8d82996a08ac4cc07678a71abe1312cff8eb
3
+ size 13009869
ai_model/words/saved_models/normalization_params.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:50224cbc68fa85e27ac5d27f5d28f17cfc868587e576777ece244d849751e76e
3
+ size 13796
ai_model/words/saved_models/training_history_optimized.png ADDED
ai_model/words/train_classifier.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pandas as pd
3
+ import numpy as np
4
+ from sklearn.model_selection import train_test_split
5
+ from tensorflow.keras.models import Sequential
6
+ from tensorflow.keras.layers import Bidirectional, LSTM, Dense, Dropout, BatchNormalization
7
+ from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
8
+ from tensorflow.keras.optimizers import Adam
9
+ from tensorflow.keras.utils import to_categorical
10
+ from tensorflow.keras.regularizers import l2
11
+ from tqdm import tqdm
12
+
13
+ # --- Configuration (match with previous steps and new model params) ---
14
+ # IMPORTANT: This now points to the CSV generated by data_preprocessor.py for your 125 words
15
+ PROCESSED_DATA_CSV = 'wlasl_125_words_personal_final_processed_data_augmented_seq90.csv'
16
+ PROCESSED_SEQUENCES_DIR = 'processed_sequences'
17
+ MODEL_SAVE_DIR = 'saved_models'
18
+
19
+ SEQUENCE_LENGTH = 90
20
+ EXPECTED_COORDS_PER_FRAME = 1662
21
+
22
+ # --- Model Hyperparameters (ADJUSTED FOR 125 WORDS) ---
23
+ # These parameters are increased significantly to handle the larger vocabulary
24
+ LSTM_UNITS = 256 # Increased capacity from 128
25
+ DENSE_UNITS = 512 # Increased capacity from 192
26
+ DROPOUT_RATE = 0.6 # Increased for more aggressive regularization
27
+ LEARNING_RATE = 0.0005
28
+ BATCH_SIZE = 32
29
+ EPOCHS = 150 # Increased max epochs to give the model more time to learn
30
+
31
+ def load_data(df):
32
+ """Loads processed landmark sequences and their corresponding labels."""
33
+ X = []
34
+ y = []
35
+ for index, row in tqdm(df.iterrows(), total=len(df), desc="Loading processed data"):
36
+ seq_path = row['processed_path']
37
+ gloss_id = row['gloss_id']
38
+ try:
39
+ sequence = np.load(seq_path)
40
+ if sequence.shape == (SEQUENCE_LENGTH, EXPECTED_COORDS_PER_FRAME):
41
+ X.append(sequence)
42
+ y.append(gloss_id)
43
+ else:
44
+ print(f"Warning: Skipping {seq_path} due to incorrect shape: {sequence.shape}. Expected ({SEQUENCE_LENGTH}, {EXPECTED_COORDS_PER_FRAME})")
45
+ except Exception as e:
46
+ print(f"Error loading {seq_path}: {e}. Skipping.")
47
+ return np.array(X), np.array(y)
48
+
49
+ def build_lstm_model(input_shape, num_classes, lstm_units, dense_units, dropout_rate, learning_rate):
50
+ model = Sequential([
51
+ Bidirectional(LSTM(lstm_units, return_sequences=True, activation='tanh'), input_shape=input_shape),
52
+ BatchNormalization(),
53
+ Dropout(dropout_rate),
54
+ Bidirectional(LSTM(lstm_units, return_sequences=False, activation='tanh')),
55
+ BatchNormalization(),
56
+ Dropout(dropout_rate),
57
+ Dense(dense_units, activation='relu', kernel_regularizer=l2(0.001)),
58
+ BatchNormalization(),
59
+ Dropout(dropout_rate),
60
+ Dense(num_classes, activation='softmax', kernel_regularizer=l2(0.001))
61
+ ])
62
+ optimizer = Adam(learning_rate=learning_rate)
63
+ model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
64
+ return model
65
+
66
+ if __name__ == "__main__":
67
+ os.makedirs(MODEL_SAVE_DIR, exist_ok=True)
68
+ if not os.path.exists(PROCESSED_DATA_CSV):
69
+ print(f"Error: Processed data metadata CSV not found at {PROCESSED_DATA_CSV}.")
70
+ print("Please ensure data_preprocessor.py has been run to create this file.")
71
+ exit()
72
+ df_final = pd.read_csv(PROCESSED_DATA_CSV)
73
+ print(f"Loaded {len(df_final)} entries from {PROCESSED_DATA_CSV}")
74
+ train_df = df_final[df_final['split'] == 'train']
75
+ val_df = df_final[df_final['split'] == 'val']
76
+ test_df = df_final[df_final['split'] == 'test']
77
+ print(f"Train samples (including augmented): {len(train_df)}")
78
+ print(f"Validation samples: {len(val_df)}")
79
+ print(f"Test samples: {len(test_df)}")
80
+ X_train, y_train_ids = load_data(train_df)
81
+ X_val, y_val_ids = load_data(val_df)
82
+ X_test, y_test_ids = load_data(test_df)
83
+ print(f"\nLoaded data shapes:")
84
+ print(f"X_train: {X_train.shape}, y_train: {y_train_ids.shape}")
85
+ print(f"X_val: {X_val.shape}, y_val: {y_val_ids.shape}")
86
+ print(f"X_test: {X_test.shape}, y_test: {y_test_ids.shape}")
87
+ num_classes = df_final['gloss_id'].nunique()
88
+ print(f"Number of unique classes: {num_classes}") # Should be 125
89
+ y_train = to_categorical(y_train_ids, num_classes=num_classes)
90
+ y_val = to_categorical(y_val_ids, num_classes=num_classes)
91
+ y_test = to_categorical(y_test_ids, num_classes=num_classes)
92
+ print(f"y_train (one-hot) shape: {y_train.shape}")
93
+ print(f"y_val (one-hot) shape: {y_val.shape}")
94
+ model = build_lstm_model(
95
+ input_shape=(SEQUENCE_LENGTH, EXPECTED_COORDS_PER_FRAME),
96
+ num_classes=num_classes,
97
+ lstm_units=LSTM_UNITS,
98
+ dense_units=DENSE_UNITS,
99
+ dropout_rate=DROPOUT_RATE,
100
+ learning_rate=LEARNING_RATE
101
+ )
102
+ model.summary()
103
+ early_stopping = EarlyStopping(monitor='val_accuracy', patience=40, restore_best_weights=True)
104
+ checkpoint_filepath = os.path.join(MODEL_SAVE_DIR, 'best_sign_classifier_model_125_words_seq90.keras')
105
+ model_checkpoint = ModelCheckpoint(checkpoint_filepath, monitor='val_accuracy', save_best_only=True, verbose=1)
106
+ reduce_lr = ReduceLROnPlateau(monitor='val_accuracy', factor=0.5, patience=20, min_lr=0.00001, verbose=1)
107
+ print(f"\nStarting model training with BATCH_SIZE={BATCH_SIZE} and EPOCHS={EPOCHS}...")
108
+ history = model.fit(
109
+ X_train, y_train,
110
+ epochs=EPOCHS,
111
+ batch_size=BATCH_SIZE,
112
+ validation_data=(X_val, y_val),
113
+ callbacks=[early_stopping, model_checkpoint, reduce_lr],
114
+ verbose=1
115
+ )
116
+ print("\n--- Training Finished ---")
117
+ if os.path.exists(checkpoint_filepath):
118
+ print(f"Loading best model from: {checkpoint_filepath}")
119
+ model.load_weights(checkpoint_filepath)
120
+ else:
121
+ print(f"Warning: Best model checkpoint not found at {checkpoint_filepath}. Using final trained weights (may not be the best).")
122
+ print("\nEvaluating model on the test set...")
123
+ loss, accuracy = model.evaluate(X_test, y_test, batch_size=BATCH_SIZE, verbose=1)
124
+ print(f"Test Loss: {loss:.4f}")
125
+ print(f"Test Accuracy: {accuracy:.4f}")
126
+ print("\nModel training and evaluation complete.")
127
+ print(f"Best model weights saved to: {checkpoint_filepath}")
ai_model/words/visualize_npy.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import numpy as np
3
+ import mediapipe as mp
4
+ import os
5
+ import time
6
+
7
+ # --- Configuration (should match your recording script) ---
8
+ OUTPUT_RECORDINGS_DIR = 'my_recorded_signs'
9
+ EXPECTED_COORDS_PER_FRAME = 1662
10
+ NUM_POSE_COORDS_SINGLE = 33 * 4
11
+ NUM_HAND_COORDS_SINGLE = 21 * 3
12
+ NUM_FACE_COORDS_SINGLE = 468 * 3
13
+ FRAME_DELAY_MS = 40 # Approximately 25 FPS (1000ms / 25)
14
+
15
+ # --- Helper function to reconstruct landmarks ---
16
+ def reconstruct_landmarks(flat_landmarks):
17
+ """
18
+ Reconstructs MediaPipe landmarks from a flat numpy array.
19
+ """
20
+ if np.all(flat_landmarks == 0):
21
+ return None, None, None, None
22
+
23
+ # Pose landmarks
24
+ pose_lms = mp.solutions.pose.PoseLandmark.list()
25
+ pose_lms_flat = flat_landmarks[0:NUM_POSE_COORDS_SINGLE]
26
+ if np.any(pose_lms_flat != 0):
27
+ pose_landmarks = mp.solutions.holistic.PoseLandmarks()
28
+ for i, lm in enumerate(pose_lms):
29
+ pose_landmarks.landmark[i].x = pose_lms_flat[i*4]
30
+ pose_landmarks.landmark[i].y = pose_lms_flat[i*4+1]
31
+ pose_landmarks.landmark[i].z = pose_lms_flat[i*4+2]
32
+ pose_landmarks.landmark[i].visibility = pose_lms_flat[i*4+3]
33
+ else:
34
+ pose_landmarks = None
35
+
36
+ # Left hand landmarks
37
+ lh_lms_flat = flat_landmarks[NUM_POSE_COORDS_SINGLE:NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE]
38
+ if np.any(lh_lms_flat != 0):
39
+ left_hand_landmarks = mp.solutions.holistic.HandLandmarks()
40
+ for i in range(21):
41
+ left_hand_landmarks.landmark[i].x = lh_lms_flat[i*3]
42
+ left_hand_landmarks.landmark[i].y = lh_lms_flat[i*3+1]
43
+ left_hand_landmarks.landmark[i].z = lh_lms_flat[i*3+2]
44
+ else:
45
+ left_hand_landmarks = None
46
+
47
+ # Right hand landmarks
48
+ rh_lms_flat = flat_landmarks[NUM_POSE_COORDS_SINGLE + NUM_HAND_COORDS_SINGLE:NUM_POSE_COORDS_SINGLE + 2*NUM_HAND_COORDS_SINGLE]
49
+ if np.any(rh_lms_flat != 0):
50
+ right_hand_landmarks = mp.solutions.holistic.HandLandmarks()
51
+ for i in range(21):
52
+ right_hand_landmarks.landmark[i].x = rh_lms_flat[i*3]
53
+ right_hand_landmarks.landmark[i].y = rh_lms_flat[i*3+1]
54
+ right_hand_landmarks.landmark[i].z = rh_lms_flat[i*3+2]
55
+ else:
56
+ right_hand_landmarks = None
57
+
58
+ # Face landmarks
59
+ face_lms_flat = flat_landmarks[NUM_POSE_COORDS_SINGLE + 2*NUM_HAND_COORDS_SINGLE:]
60
+ if np.any(face_lms_flat != 0):
61
+ face_landmarks = mp.solutions.holistic.FaceLandmarks()
62
+ for i in range(468):
63
+ face_landmarks.landmark[i].x = face_lms_flat[i*3]
64
+ face_landmarks.landmark[i].y = face_lms_flat[i*3+1]
65
+ face_landmarks.landmark[i].z = face_lms_flat[i*3+2]
66
+ else:
67
+ face_landmarks = None
68
+
69
+ return pose_landmarks, left_hand_landmarks, right_hand_landmarks, face_landmarks
70
+
71
+ # --- Main Visualization Logic ---
72
+ if __name__ == "__main__":
73
+ if not os.path.exists(OUTPUT_RECORDINGS_DIR):
74
+ print(f"Error: Directory '{OUTPUT_RECORDINGS_DIR}' not found.")
75
+ exit()
76
+
77
+ mp_drawing = mp.solutions.drawing_utils
78
+ files = [f for f in os.listdir(OUTPUT_RECORDINGS_DIR) if f.endswith('.npy')]
79
+
80
+ if not files:
81
+ print("No .npy files found in the directory.")
82
+ exit()
83
+
84
+ for file_name in files:
85
+ file_path = os.path.join(OUTPUT_RECORDINGS_DIR, file_name)
86
+ gloss = file_name.split('_')[0].upper()
87
+
88
+ try:
89
+ landmarks_sequence = np.load(file_path)
90
+ print(f"\n--- Loading and visualizing: {file_name} (Gloss: {gloss}) ---")
91
+ print(f"Shape: {landmarks_sequence.shape}")
92
+
93
+ for i, frame_landmarks in enumerate(landmarks_sequence):
94
+ blank_frame = np.zeros((720, 1280, 3), dtype=np.uint8)
95
+ pose_lms, lh_lms, rh_lms, face_lms = reconstruct_landmarks(frame_landmarks)
96
+
97
+ if pose_lms:
98
+ mp_drawing.draw_landmarks(blank_frame, pose_lms, mp.solutions.holistic.POSE_CONNECTIONS)
99
+ if lh_lms:
100
+ mp_drawing.draw_landmarks(blank_frame, lh_lms, mp.solutions.holistic.HAND_CONNECTIONS)
101
+ if rh_lms:
102
+ mp_drawing.draw_landmarks(blank_frame, rh_lms, mp.solutions.holistic.HAND_CONNECTIONS)
103
+ if face_lms:
104
+ mp_drawing.draw_landmarks(blank_frame, face_lms, mp.solutions.holistic.FACEMESH_CONTOURS)
105
+
106
+ cv2.putText(blank_frame, f"File: {file_name}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2, cv2.LINE_AA)
107
+ cv2.putText(blank_frame, f"Gloss: {gloss}", (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
108
+ cv2.putText(blank_frame, f"Frame: {i+1}/{len(landmarks_sequence)}", (10, 110), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 1, cv2.LINE_AA)
109
+
110
+ cv2.imshow('NPY File Visualizer', blank_frame)
111
+
112
+ # Wait for a brief period to simulate playback speed
113
+ key = cv2.waitKey(FRAME_DELAY_MS)
114
+ if key == ord('q'):
115
+ break
116
+
117
+ # Wait for user input before moving to the next file
118
+ print("Press any key to continue to the next file...")
119
+ cv2.waitKey(0)
120
+
121
+ except Exception as e:
122
+ print(f"Error loading or visualizing {file_name}: {e}")
123
+ continue
124
+
125
+ cv2.destroyAllWindows()
126
+ print("\nVisualization complete.")
ai_model/words/wlasl_10_words_combined_processed.csv ADDED
@@ -0,0 +1,940 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ gloss,gloss_id,video_id,video_path,signer_id,split,frame_start,frame_end,fps,bbox
2
+ chair,0,9848,.\videos\09848.mp4,0,train,1,-1,25,"[40, 6, 266, 240]"
3
+ chair,0,9869,.\videos\09869.mp4,12,train,1,-1,25,"[183, 55, 560, 400]"
4
+ chair,0,9849,.\videos\09849.mp4,38,train,1,-1,25,"[388, 56, 806, 720]"
5
+ chair,0,9850,.\videos\09850.mp4,31,train,1,-1,25,"[667, 144, 1472, 1061]"
6
+ chair,0,9851,.\videos\09851.mp4,59,val,1,-1,25,"[102, 22, 563, 480]"
7
+ chair,0,65328,.\videos\65328.mp4,90,train,1,-1,25,"[169, 15, 476, 370]"
8
+ chair,0,9854,.\videos\09854.mp4,11,val,1,-1,25,"[81, 15, 233, 192]"
9
+ black,1,69236,.\videos\69236.mp4,118,val,1,-1,25,"[295, 38, 885, 720]"
10
+ black,1,6472,.\videos\06472.mp4,36,train,1,-1,25,"[205, 17, 524, 414]"
11
+ black,1,6473,.\videos\06473.mp4,4,train,1,-1,25,"[544, 60, 1618, 1080]"
12
+ black,1,6474,.\videos\06474.mp4,59,train,1,-1,25,"[77, 18, 515, 480]"
13
+ black,1,6476,.\videos\06476.mp4,11,val,1,-1,25,"[58, 15, 216, 192]"
14
+ black,1,6477,.\videos\06477.mp4,11,train,1,-1,25,"[48, 11, 226, 192]"
15
+ black,1,6478,.\videos\06478.mp4,11,train,1,-1,25,"[63, 8, 245, 192]"
16
+ black,1,65200,.\videos\65200.mp4,90,train,1,-1,25,"[149, 24, 479, 370]"
17
+ black,1,6471,.\videos\06471.mp4,56,train,1,-1,25,"[66, 13, 258, 240]"
18
+ black,1,6486,.\videos\06486.mp4,12,train,1,-1,25,"[131, 52, 555, 400]"
19
+ blue,2,69238,.\videos\69238.mp4,118,val,1,-1,25,"[257, 39, 881, 720]"
20
+ blue,2,6835,.\videos\06835.mp4,59,train,1,-1,25,"[125, 26, 528, 480]"
21
+ blue,2,6839,.\videos\06839.mp4,10,train,1,-1,25,"[90, 21, 213, 192]"
22
+ blue,2,65216,.\videos\65216.mp4,90,train,1,-1,25,"[158, 24, 482, 370]"
23
+ blue,2,6832,.\videos\06832.mp4,8,train,1,-1,25,"[41, 0, 232, 240]"
24
+ blue,2,6845,.\videos\06845.mp4,41,test,1,-1,25,"[232, 39, 483, 400]"
25
+ blue,2,6833,.\videos\06833.mp4,36,train,1,-1,25,"[225, 18, 519, 414]"
26
+ blue,2,6834,.\videos\06834.mp4,46,train,1,-1,25,"[188, 0, 794, 720]"
27
+ can,3,69257,.\videos\69257.mp4,118,test,1,-1,25,"[285, 31, 964, 720]"
28
+ can,3,65294,.\videos\65294.mp4,90,val,1,-1,25,"[137, 15, 500, 370]"
29
+ can,3,8955,.\videos\08955.mp4,12,train,1,-1,25,"[163, 54, 555, 400]"
30
+ can,3,8935,.\videos\08935.mp4,38,train,1,-1,25,"[434, 54, 814, 720]"
31
+ can,3,8936,.\videos\08936.mp4,70,train,1,-1,25,"[201, 5, 823, 480]"
32
+ can,3,8937,.\videos\08937.mp4,59,train,1,-1,25,"[69, 17, 552, 480]"
33
+ can,3,8938,.\videos\08938.mp4,59,train,1,-1,25,"[110, 29, 555, 480]"
34
+ can,3,8942,.\videos\08942.mp4,11,train,1,-1,25,"[76, 18, 237, 192]"
35
+ can,3,8944,.\videos\08944.mp4,11,train,1,-1,25,"[70, 18, 217, 192]"
36
+ apple,4,69213,.\videos\69213.mp4,117,val,1,-1,25,"[304, 41, 916, 720]"
37
+ apple,4,3005,.\videos\03005.mp4,11,train,1,-1,25,"[64, 15, 229, 192]"
38
+ apple,4,3008,.\videos\03008.mp4,12,train,1,-1,25,"[158, 50, 541, 399]"
39
+ apple,4,65085,.\videos\65085.mp4,89,train,1,-1,25,"[207, 0, 520, 370]"
40
+ apple,4,65086,.\videos\65086.mp4,89,val,1,-1,25,"[206, 0, 535, 370]"
41
+ apple,4,65084,.\videos\65084.mp4,88,train,1,-1,25,"[119, 4, 486, 370]"
42
+ apple,4,2999,.\videos\02999.mp4,37,val,1,-1,25,"[44, 0, 232, 240]"
43
+ apple,4,3000,.\videos\03000.mp4,28,train,1,-1,25,"[41, 13, 259, 240]"
44
+ apple,4,3001,.\videos\03001.mp4,38,train,1,-1,25,"[350, 53, 815, 720]"
45
+ apple,4,3002,.\videos\03002.mp4,36,train,1,-1,25,"[212, 17, 526, 414]"
46
+ apple,4,3003,.\videos\03003.mp4,13,train,1,-1,25,"[24, 13, 526, 480]"
47
+ brown,5,69252,.\videos\69252.mp4,118,test,1,-1,25,"[335, 37, 874, 720]"
48
+ brown,5,7963,.\videos\07963.mp4,59,train,1,-1,25,"[102, 30, 523, 480]"
49
+ brown,5,7966,.\videos\07966.mp4,11,train,1,-1,25,"[62, 15, 217, 192]"
50
+ brown,5,65263,.\videos\65263.mp4,90,train,1,-1,25,"[158, 12, 462, 370]"
51
+ brown,5,7960,.\videos\07960.mp4,2,train,1,-1,25,"[37, 6, 250, 240]"
52
+ brown,5,7973,.\videos\07973.mp4,12,val,1,-1,25,"[182, 52, 542, 400]"
53
+ brown,5,7961,.\videos\07961.mp4,36,train,1,-1,25,"[213, 11, 525, 414]"
54
+ brown,5,7962,.\videos\07962.mp4,4,train,1,-1,25,"[381, 38, 1076, 720]"
55
+ cat,6,69261,.\videos\69261.mp4,118,test,1,-1,25,"[357, 37, 874, 720]"
56
+ cat,6,9528,.\videos\09528.mp4,32,train,1,-1,25,"[743, 79, 1579, 1066]"
57
+ cat,6,9532,.\videos\09532.mp4,10,val,1,-1,25,"[84, 21, 216, 192]"
58
+ cat,6,9533,.\videos\09533.mp4,10,train,1,-1,25,"[83, 20, 218, 192]"
59
+ cat,6,65312,.\videos\65312.mp4,102,train,1,-1,25,"[156, 19, 486, 370]"
60
+ cat,6,65313,.\videos\65313.mp4,101,train,1,-1,25,"[168, 18, 462, 370]"
61
+ cat,6,9525,.\videos\09525.mp4,2,val,1,-1,25,"[57, 0, 271, 240]"
62
+ cat,6,9538,.\videos\09538.mp4,41,train,1,-1,25,"[215, 42, 465, 400]"
63
+ cat,6,9526,.\videos\09526.mp4,36,train,1,-1,25,"[210, 18, 523, 414]"
64
+ cold,7,65377,.\videos\65377.mp4,99,test,1,-1,25,"[129, 16, 476, 370]"
65
+ cold,7,11638,.\videos\11638.mp4,12,test,1,-1,25,"[180, 57, 551, 400]"
66
+ cold,7,11622,.\videos\11622.mp4,36,train,1,-1,25,"[210, 16, 540, 414]"
67
+ cold,7,11623,.\videos\11623.mp4,52,train,1,-1,25,"[380, 16, 825, 480]"
68
+ cold,7,11624,.\videos\11624.mp4,6,train,1,-1,25,"[593, 70, 1468, 1080]"
69
+ cold,7,11625,.\videos\11625.mp4,39,val,1,-1,25,"[624, 133, 1621, 1072]"
70
+ cold,7,11627,.\videos\11627.mp4,4,train,1,-1,25,"[411, 31, 1128, 720]"
71
+ cold,7,11628,.\videos\11628.mp4,59,val,1,-1,25,"[116, 29, 513, 480]"
72
+ cold,7,11621,.\videos\11621.mp4,56,train,1,-1,25,"[59, 16, 263, 240]"
73
+ cold,7,11633,.\videos\11633.mp4,10,train,1,-1,25,"[88, 22, 216, 192]"
74
+ cold,7,11634,.\videos\11634.mp4,10,val,1,-1,25,"[65, 21, 233, 192]"
75
+ cold,7,11635,.\videos\11635.mp4,11,train,1,-1,25,"[79, 16, 221, 192]"
76
+ child,8,10450,.\videos\10450.mp4,11,train,1,-1,25,"[69, 17, 215, 192]"
77
+ child,8,65351,.\videos\65351.mp4,90,train,1,-1,25,"[130, 14, 465, 370]"
78
+ child,8,10443,.\videos\10443.mp4,2,train,1,-1,25,"[64, 0, 269, 240]"
79
+ child,8,10453,.\videos\10453.mp4,12,train,1,-1,25,"[130, 54, 550, 400]"
80
+ child,8,10444,.\videos\10444.mp4,32,train,1,-1,25,"[700, 66, 1636, 1073]"
81
+ child,8,10445,.\videos\10445.mp4,4,train,1,-1,25,"[616, 61, 1702, 1079]"
82
+ child,8,10446,.\videos\10446.mp4,32,test,1,-1,25,"[693, 70, 1631, 1073]"
83
+ child,8,10447,.\videos\10447.mp4,59,train,1,-1,25,"[50, 24, 520, 480]"
84
+ child,8,10449,.\videos\10449.mp4,10,val,1,-1,25,"[50, 17, 219, 192]"
85
+ come,9,69275,.\videos\69275.mp4,115,test,1,-1,25,"[140, 37, 943, 720]"
86
+ come,9,11884,.\videos\11884.mp4,12,train,1,-1,25,"[178, 59, 534, 400]"
87
+ come,9,11876,.\videos\11876.mp4,56,train,1,-1,25,"[63, 13, 261, 240]"
88
+ come,9,11877,.\videos\11877.mp4,31,train,1,-1,25,"[540, 64, 1480, 1080]"
89
+ come,9,11878,.\videos\11878.mp4,59,val,1,-1,25,"[84, 27, 590, 480]"
90
+ come,9,11882,.\videos\11882.mp4,11,train,1,-1,25,"[82, 14, 230, 192]"
91
+ apple,4,personal_1753086535,my_recorded_signs\apple_1753086535.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
92
+ apple,4,personal_1753086544,my_recorded_signs\apple_1753086544.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
93
+ apple,4,personal_1753086553,my_recorded_signs\apple_1753086553.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
94
+ apple,4,personal_1753086562,my_recorded_signs\apple_1753086562.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
95
+ apple,4,personal_1753086570,my_recorded_signs\apple_1753086570.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
96
+ apple,4,personal_1753086578,my_recorded_signs\apple_1753086578.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
97
+ apple,4,personal_1753086587,my_recorded_signs\apple_1753086587.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
98
+ apple,4,personal_1753086602,my_recorded_signs\apple_1753086602.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
99
+ apple,4,personal_1753086624,my_recorded_signs\apple_1753086624.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
100
+ apple,4,personal_1753086633,my_recorded_signs\apple_1753086633.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
101
+ apple,4,personal_1753086643,my_recorded_signs\apple_1753086643.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
102
+ apple,4,personal_1753086653,my_recorded_signs\apple_1753086653.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
103
+ apple,4,personal_1753086662,my_recorded_signs\apple_1753086662.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
104
+ apple,4,personal_1753086671,my_recorded_signs\apple_1753086671.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
105
+ apple,4,personal_1753086683,my_recorded_signs\apple_1753086683.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
106
+ apple,4,personal_1753086692,my_recorded_signs\apple_1753086692.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
107
+ apple,4,personal_1753086702,my_recorded_signs\apple_1753086702.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
108
+ apple,4,personal_1753086715,my_recorded_signs\apple_1753086715.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
109
+ apple,4,personal_1753086726,my_recorded_signs\apple_1753086726.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
110
+ apple,4,personal_1753086735,my_recorded_signs\apple_1753086735.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
111
+ apple,4,personal_1753086744,my_recorded_signs\apple_1753086744.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
112
+ apple,4,personal_1753086754,my_recorded_signs\apple_1753086754.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
113
+ apple,4,personal_1753086763,my_recorded_signs\apple_1753086763.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
114
+ apple,4,personal_1753086772,my_recorded_signs\apple_1753086772.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
115
+ apple,4,personal_1753086782,my_recorded_signs\apple_1753086782.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
116
+ apple,4,personal_1753171696,my_recorded_signs\apple_1753171696.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
117
+ apple,4,personal_1753171707,my_recorded_signs\apple_1753171707.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
118
+ apple,4,personal_1753171715,my_recorded_signs\apple_1753171715.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
119
+ apple,4,personal_1753171728,my_recorded_signs\apple_1753171728.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
120
+ apple,4,personal_1753171738,my_recorded_signs\apple_1753171738.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
121
+ apple,4,personal_1753171747,my_recorded_signs\apple_1753171747.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
122
+ apple,4,personal_1753171756,my_recorded_signs\apple_1753171756.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
123
+ apple,4,personal_1753171766,my_recorded_signs\apple_1753171766.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
124
+ apple,4,personal_1753171778,my_recorded_signs\apple_1753171778.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
125
+ apple,4,personal_1753171787,my_recorded_signs\apple_1753171787.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
126
+ apple,4,personal_1753171797,my_recorded_signs\apple_1753171797.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
127
+ apple,4,personal_1753171807,my_recorded_signs\apple_1753171807.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
128
+ apple,4,personal_1753171817,my_recorded_signs\apple_1753171817.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
129
+ apple,4,personal_1753171827,my_recorded_signs\apple_1753171827.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
130
+ apple,4,personal_1753171838,my_recorded_signs\apple_1753171838.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
131
+ apple,4,personal_1753171847,my_recorded_signs\apple_1753171847.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
132
+ apple,4,personal_1753171856,my_recorded_signs\apple_1753171856.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
133
+ apple,4,personal_1753183653,my_recorded_signs\apple_1753183653.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
134
+ apple,4,personal_1753183661,my_recorded_signs\apple_1753183661.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
135
+ apple,4,personal_1753183670,my_recorded_signs\apple_1753183670.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
136
+ apple,4,personal_1753183679,my_recorded_signs\apple_1753183679.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
137
+ apple,4,personal_1753183688,my_recorded_signs\apple_1753183688.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
138
+ apple,4,personal_1753183697,my_recorded_signs\apple_1753183697.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
139
+ apple,4,personal_1753183708,my_recorded_signs\apple_1753183708.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
140
+ apple,4,personal_1753183717,my_recorded_signs\apple_1753183717.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
141
+ apple,4,personal_1753183726,my_recorded_signs\apple_1753183726.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
142
+ apple,4,personal_1753206542,my_recorded_signs\apple_1753206542.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
143
+ apple,4,personal_1753206551,my_recorded_signs\apple_1753206551.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
144
+ apple,4,personal_1753206559,my_recorded_signs\apple_1753206559.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
145
+ apple,4,personal_1753206568,my_recorded_signs\apple_1753206568.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
146
+ apple,4,personal_1753206576,my_recorded_signs\apple_1753206576.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
147
+ apple,4,personal_1753206585,my_recorded_signs\apple_1753206585.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
148
+ apple,4,personal_1753206615,my_recorded_signs\apple_1753206615.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
149
+ apple,4,personal_1753206624,my_recorded_signs\apple_1753206624.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
150
+ apple,4,personal_1753206633,my_recorded_signs\apple_1753206633.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
151
+ apple,4,personal_1753206641,my_recorded_signs\apple_1753206641.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
152
+ apple,4,personal_1753206650,my_recorded_signs\apple_1753206650.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
153
+ apple,4,personal_1753274889,my_recorded_signs\apple_1753274889.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
154
+ apple,4,personal_1753274898,my_recorded_signs\apple_1753274898.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
155
+ apple,4,personal_1753274910,my_recorded_signs\apple_1753274910.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
156
+ apple,4,personal_1753274918,my_recorded_signs\apple_1753274918.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
157
+ apple,4,personal_1753274927,my_recorded_signs\apple_1753274927.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
158
+ apple,4,personal_1753367091,my_recorded_signs\apple_1753367091.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
159
+ apple,4,personal_1753367099,my_recorded_signs\apple_1753367099.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
160
+ apple,4,personal_1753367108,my_recorded_signs\apple_1753367108.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
161
+ apple,4,personal_1753367117,my_recorded_signs\apple_1753367117.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
162
+ apple,4,personal_1753367126,my_recorded_signs\apple_1753367126.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
163
+ apple,4,personal_1753367134,my_recorded_signs\apple_1753367134.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
164
+ apple,4,personal_1753367143,my_recorded_signs\apple_1753367143.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
165
+ apple,4,personal_1753367154,my_recorded_signs\apple_1753367154.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
166
+ apple,4,personal_1753367163,my_recorded_signs\apple_1753367163.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
167
+ apple,4,personal_1753367174,my_recorded_signs\apple_1753367174.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
168
+ black,1,personal_1753085581,my_recorded_signs\black_1753085581.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
169
+ black,1,personal_1753085593,my_recorded_signs\black_1753085593.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
170
+ black,1,personal_1753085605,my_recorded_signs\black_1753085605.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
171
+ black,1,personal_1753085616,my_recorded_signs\black_1753085616.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
172
+ black,1,personal_1753085627,my_recorded_signs\black_1753085627.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
173
+ black,1,personal_1753085637,my_recorded_signs\black_1753085637.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
174
+ black,1,personal_1753085648,my_recorded_signs\black_1753085648.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
175
+ black,1,personal_1753085660,my_recorded_signs\black_1753085660.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
176
+ black,1,personal_1753085673,my_recorded_signs\black_1753085673.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
177
+ black,1,personal_1753085684,my_recorded_signs\black_1753085684.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
178
+ black,1,personal_1753085695,my_recorded_signs\black_1753085695.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
179
+ black,1,personal_1753085705,my_recorded_signs\black_1753085705.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
180
+ black,1,personal_1753085715,my_recorded_signs\black_1753085715.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
181
+ black,1,personal_1753085725,my_recorded_signs\black_1753085725.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
182
+ black,1,personal_1753085735,my_recorded_signs\black_1753085735.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
183
+ black,1,personal_1753085744,my_recorded_signs\black_1753085744.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
184
+ black,1,personal_1753085756,my_recorded_signs\black_1753085756.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
185
+ black,1,personal_1753085770,my_recorded_signs\black_1753085770.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
186
+ black,1,personal_1753085787,my_recorded_signs\black_1753085787.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
187
+ black,1,personal_1753085797,my_recorded_signs\black_1753085797.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
188
+ black,1,personal_1753175295,my_recorded_signs\black_1753175295.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
189
+ black,1,personal_1753175308,my_recorded_signs\black_1753175308.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
190
+ black,1,personal_1753175317,my_recorded_signs\black_1753175317.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
191
+ black,1,personal_1753175331,my_recorded_signs\black_1753175331.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
192
+ black,1,personal_1753175339,my_recorded_signs\black_1753175339.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
193
+ black,1,personal_1753175348,my_recorded_signs\black_1753175348.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
194
+ black,1,personal_1753175356,my_recorded_signs\black_1753175356.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
195
+ black,1,personal_1753183331,my_recorded_signs\black_1753183331.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
196
+ black,1,personal_1753183377,my_recorded_signs\black_1753183377.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
197
+ black,1,personal_1753183390,my_recorded_signs\black_1753183390.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
198
+ black,1,personal_1753183409,my_recorded_signs\black_1753183409.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
199
+ black,1,personal_1753183419,my_recorded_signs\black_1753183419.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
200
+ black,1,personal_1753183470,my_recorded_signs\black_1753183470.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
201
+ black,1,personal_1753183479,my_recorded_signs\black_1753183479.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
202
+ black,1,personal_1753183487,my_recorded_signs\black_1753183487.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
203
+ black,1,personal_1753183496,my_recorded_signs\black_1753183496.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
204
+ black,1,personal_1753183511,my_recorded_signs\black_1753183511.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
205
+ black,1,personal_1753366647,my_recorded_signs\black_1753366647.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
206
+ black,1,personal_1753366656,my_recorded_signs\black_1753366656.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
207
+ black,1,personal_1753366664,my_recorded_signs\black_1753366664.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
208
+ black,1,personal_1753366672,my_recorded_signs\black_1753366672.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
209
+ black,1,personal_1753366681,my_recorded_signs\black_1753366681.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
210
+ black,1,personal_1753366699,my_recorded_signs\black_1753366699.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
211
+ black,1,personal_1753366707,my_recorded_signs\black_1753366707.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
212
+ black,1,personal_1753366716,my_recorded_signs\black_1753366716.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
213
+ black,1,personal_1753366725,my_recorded_signs\black_1753366725.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
214
+ blue,2,personal_1753085844,my_recorded_signs\blue_1753085844.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
215
+ blue,2,personal_1753085855,my_recorded_signs\blue_1753085855.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
216
+ blue,2,personal_1753085863,my_recorded_signs\blue_1753085863.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
217
+ blue,2,personal_1753085872,my_recorded_signs\blue_1753085872.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
218
+ blue,2,personal_1753085882,my_recorded_signs\blue_1753085882.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
219
+ blue,2,personal_1753085893,my_recorded_signs\blue_1753085893.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
220
+ blue,2,personal_1753085912,my_recorded_signs\blue_1753085912.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
221
+ blue,2,personal_1753085922,my_recorded_signs\blue_1753085922.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
222
+ blue,2,personal_1753085957,my_recorded_signs\blue_1753085957.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
223
+ blue,2,personal_1753085966,my_recorded_signs\blue_1753085966.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
224
+ blue,2,personal_1753085976,my_recorded_signs\blue_1753085976.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
225
+ blue,2,personal_1753085984,my_recorded_signs\blue_1753085984.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
226
+ blue,2,personal_1753085995,my_recorded_signs\blue_1753085995.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
227
+ blue,2,personal_1753086005,my_recorded_signs\blue_1753086005.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
228
+ blue,2,personal_1753086020,my_recorded_signs\blue_1753086020.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
229
+ blue,2,personal_1753086030,my_recorded_signs\blue_1753086030.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
230
+ blue,2,personal_1753086040,my_recorded_signs\blue_1753086040.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
231
+ blue,2,personal_1753086050,my_recorded_signs\blue_1753086050.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
232
+ blue,2,personal_1753086060,my_recorded_signs\blue_1753086060.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
233
+ blue,2,personal_1753086069,my_recorded_signs\blue_1753086069.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
234
+ blue,2,personal_1753086080,my_recorded_signs\blue_1753086080.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
235
+ blue,2,personal_1753175373,my_recorded_signs\blue_1753175373.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
236
+ blue,2,personal_1753175384,my_recorded_signs\blue_1753175384.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
237
+ blue,2,personal_1753175392,my_recorded_signs\blue_1753175392.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
238
+ blue,2,personal_1753175400,my_recorded_signs\blue_1753175400.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
239
+ blue,2,personal_1753175408,my_recorded_signs\blue_1753175408.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
240
+ blue,2,personal_1753175417,my_recorded_signs\blue_1753175417.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
241
+ blue,2,personal_1753175426,my_recorded_signs\blue_1753175426.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
242
+ blue,2,personal_1753206662,my_recorded_signs\blue_1753206662.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
243
+ blue,2,personal_1753206671,my_recorded_signs\blue_1753206671.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
244
+ blue,2,personal_1753206699,my_recorded_signs\blue_1753206699.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
245
+ blue,2,personal_1753206707,my_recorded_signs\blue_1753206707.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
246
+ blue,2,personal_1753206718,my_recorded_signs\blue_1753206718.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
247
+ blue,2,personal_1753206726,my_recorded_signs\blue_1753206726.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
248
+ blue,2,personal_1753206735,my_recorded_signs\blue_1753206735.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
249
+ blue,2,personal_1753206744,my_recorded_signs\blue_1753206744.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
250
+ blue,2,personal_1753206753,my_recorded_signs\blue_1753206753.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
251
+ blue,2,personal_1753206761,my_recorded_signs\blue_1753206761.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
252
+ blue,2,personal_1753262291,my_recorded_signs\blue_1753262291.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
253
+ blue,2,personal_1753262303,my_recorded_signs\blue_1753262303.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
254
+ blue,2,personal_1753262311,my_recorded_signs\blue_1753262311.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
255
+ blue,2,personal_1753262319,my_recorded_signs\blue_1753262319.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
256
+ blue,2,personal_1753262327,my_recorded_signs\blue_1753262327.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
257
+ blue,2,personal_1753262335,my_recorded_signs\blue_1753262335.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
258
+ blue,2,personal_1753262343,my_recorded_signs\blue_1753262343.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
259
+ blue,2,personal_1753262351,my_recorded_signs\blue_1753262351.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
260
+ blue,2,personal_1753262359,my_recorded_signs\blue_1753262359.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
261
+ blue,2,personal_1753262366,my_recorded_signs\blue_1753262366.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
262
+ blue,2,personal_1753262375,my_recorded_signs\blue_1753262375.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
263
+ blue,2,personal_1753262383,my_recorded_signs\blue_1753262383.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
264
+ blue,2,personal_1753262391,my_recorded_signs\blue_1753262391.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
265
+ blue,2,personal_1753262399,my_recorded_signs\blue_1753262399.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
266
+ blue,2,personal_1753262408,my_recorded_signs\blue_1753262408.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
267
+ blue,2,personal_1753262416,my_recorded_signs\blue_1753262416.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
268
+ blue,2,personal_1753262424,my_recorded_signs\blue_1753262424.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
269
+ blue,2,personal_1753262432,my_recorded_signs\blue_1753262432.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
270
+ blue,2,personal_1753262441,my_recorded_signs\blue_1753262441.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
271
+ blue,2,personal_1753262453,my_recorded_signs\blue_1753262453.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
272
+ blue,2,personal_1753262462,my_recorded_signs\blue_1753262462.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
273
+ blue,2,personal_1753262471,my_recorded_signs\blue_1753262471.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
274
+ blue,2,personal_1753262480,my_recorded_signs\blue_1753262480.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
275
+ blue,2,personal_1753262491,my_recorded_signs\blue_1753262491.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
276
+ blue,2,personal_1753262500,my_recorded_signs\blue_1753262500.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
277
+ blue,2,personal_1753262509,my_recorded_signs\blue_1753262509.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
278
+ blue,2,personal_1753262517,my_recorded_signs\blue_1753262517.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
279
+ blue,2,personal_1753262524,my_recorded_signs\blue_1753262524.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
280
+ blue,2,personal_1753262533,my_recorded_signs\blue_1753262533.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
281
+ blue,2,personal_1753262542,my_recorded_signs\blue_1753262542.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
282
+ blue,2,personal_1753262551,my_recorded_signs\blue_1753262551.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
283
+ blue,2,personal_1753262560,my_recorded_signs\blue_1753262560.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
284
+ blue,2,personal_1753262568,my_recorded_signs\blue_1753262568.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
285
+ blue,2,personal_1753262586,my_recorded_signs\blue_1753262586.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
286
+ blue,2,personal_1753262596,my_recorded_signs\blue_1753262596.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
287
+ blue,2,personal_1753262605,my_recorded_signs\blue_1753262605.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
288
+ blue,2,personal_1753262615,my_recorded_signs\blue_1753262615.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
289
+ blue,2,personal_1753262625,my_recorded_signs\blue_1753262625.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
290
+ blue,2,personal_1753262635,my_recorded_signs\blue_1753262635.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
291
+ blue,2,personal_1753262645,my_recorded_signs\blue_1753262645.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
292
+ blue,2,personal_1753366739,my_recorded_signs\blue_1753366739.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
293
+ blue,2,personal_1753366748,my_recorded_signs\blue_1753366748.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
294
+ blue,2,personal_1753366757,my_recorded_signs\blue_1753366757.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
295
+ blue,2,personal_1753366766,my_recorded_signs\blue_1753366766.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
296
+ blue,2,personal_1753366774,my_recorded_signs\blue_1753366774.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
297
+ blue,2,personal_1753366782,my_recorded_signs\blue_1753366782.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
298
+ blue,2,personal_1753366791,my_recorded_signs\blue_1753366791.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
299
+ blue,2,personal_1753366800,my_recorded_signs\blue_1753366800.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
300
+ blue,2,personal_1753366808,my_recorded_signs\blue_1753366808.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
301
+ brown,5,personal_1753086830,my_recorded_signs\brown_1753086830.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
302
+ brown,5,personal_1753086839,my_recorded_signs\brown_1753086839.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
303
+ brown,5,personal_1753086851,my_recorded_signs\brown_1753086851.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
304
+ brown,5,personal_1753086859,my_recorded_signs\brown_1753086859.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
305
+ brown,5,personal_1753086870,my_recorded_signs\brown_1753086870.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
306
+ brown,5,personal_1753086879,my_recorded_signs\brown_1753086879.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
307
+ brown,5,personal_1753086889,my_recorded_signs\brown_1753086889.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
308
+ brown,5,personal_1753086898,my_recorded_signs\brown_1753086898.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
309
+ brown,5,personal_1753086908,my_recorded_signs\brown_1753086908.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
310
+ brown,5,personal_1753086917,my_recorded_signs\brown_1753086917.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
311
+ brown,5,personal_1753086927,my_recorded_signs\brown_1753086927.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
312
+ brown,5,personal_1753086942,my_recorded_signs\brown_1753086942.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
313
+ brown,5,personal_1753086951,my_recorded_signs\brown_1753086951.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
314
+ brown,5,personal_1753086959,my_recorded_signs\brown_1753086959.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
315
+ brown,5,personal_1753086968,my_recorded_signs\brown_1753086968.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
316
+ brown,5,personal_1753086976,my_recorded_signs\brown_1753086976.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
317
+ brown,5,personal_1753086985,my_recorded_signs\brown_1753086985.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
318
+ brown,5,personal_1753086994,my_recorded_signs\brown_1753086994.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
319
+ brown,5,personal_1753087007,my_recorded_signs\brown_1753087007.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
320
+ brown,5,personal_1753087015,my_recorded_signs\brown_1753087015.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
321
+ brown,5,personal_1753087025,my_recorded_signs\brown_1753087025.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
322
+ brown,5,personal_1753087034,my_recorded_signs\brown_1753087034.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
323
+ brown,5,personal_1753087044,my_recorded_signs\brown_1753087044.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
324
+ brown,5,personal_1753172046,my_recorded_signs\brown_1753172046.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
325
+ brown,5,personal_1753172058,my_recorded_signs\brown_1753172058.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
326
+ brown,5,personal_1753172067,my_recorded_signs\brown_1753172067.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
327
+ brown,5,personal_1753172076,my_recorded_signs\brown_1753172076.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
328
+ brown,5,personal_1753172086,my_recorded_signs\brown_1753172086.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
329
+ brown,5,personal_1753172095,my_recorded_signs\brown_1753172095.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
330
+ brown,5,personal_1753172103,my_recorded_signs\brown_1753172103.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
331
+ brown,5,personal_1753172112,my_recorded_signs\brown_1753172112.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
332
+ brown,5,personal_1753172123,my_recorded_signs\brown_1753172123.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
333
+ brown,5,personal_1753172132,my_recorded_signs\brown_1753172132.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
334
+ brown,5,personal_1753172140,my_recorded_signs\brown_1753172140.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
335
+ brown,5,personal_1753172149,my_recorded_signs\brown_1753172149.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
336
+ brown,5,personal_1753172158,my_recorded_signs\brown_1753172158.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
337
+ brown,5,personal_1753172167,my_recorded_signs\brown_1753172167.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
338
+ brown,5,personal_1753172178,my_recorded_signs\brown_1753172178.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
339
+ brown,5,personal_1753172187,my_recorded_signs\brown_1753172187.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
340
+ brown,5,personal_1753172195,my_recorded_signs\brown_1753172195.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
341
+ brown,5,personal_1753172205,my_recorded_signs\brown_1753172205.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
342
+ brown,5,personal_1753172214,my_recorded_signs\brown_1753172214.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
343
+ brown,5,personal_1753172222,my_recorded_signs\brown_1753172222.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
344
+ brown,5,personal_1753172231,my_recorded_signs\brown_1753172231.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
345
+ brown,5,personal_1753172241,my_recorded_signs\brown_1753172241.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
346
+ brown,5,personal_1753172250,my_recorded_signs\brown_1753172250.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
347
+ brown,5,personal_1753172265,my_recorded_signs\brown_1753172265.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
348
+ brown,5,personal_1753183524,my_recorded_signs\brown_1753183524.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
349
+ brown,5,personal_1753183533,my_recorded_signs\brown_1753183533.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
350
+ brown,5,personal_1753183541,my_recorded_signs\brown_1753183541.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
351
+ brown,5,personal_1753183550,my_recorded_signs\brown_1753183550.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
352
+ brown,5,personal_1753183565,my_recorded_signs\brown_1753183565.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
353
+ brown,5,personal_1753183576,my_recorded_signs\brown_1753183576.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
354
+ brown,5,personal_1753183585,my_recorded_signs\brown_1753183585.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
355
+ brown,5,personal_1753183595,my_recorded_signs\brown_1753183595.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
356
+ brown,5,personal_1753183604,my_recorded_signs\brown_1753183604.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
357
+ brown,5,personal_1753183615,my_recorded_signs\brown_1753183615.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
358
+ brown,5,personal_1753183625,my_recorded_signs\brown_1753183625.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
359
+ brown,5,personal_1753183635,my_recorded_signs\brown_1753183635.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
360
+ brown,5,personal_1753206451,my_recorded_signs\brown_1753206451.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
361
+ brown,5,personal_1753206460,my_recorded_signs\brown_1753206460.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
362
+ brown,5,personal_1753206468,my_recorded_signs\brown_1753206468.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
363
+ brown,5,personal_1753206477,my_recorded_signs\brown_1753206477.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
364
+ brown,5,personal_1753206486,my_recorded_signs\brown_1753206486.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
365
+ brown,5,personal_1753206494,my_recorded_signs\brown_1753206494.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
366
+ brown,5,personal_1753206504,my_recorded_signs\brown_1753206504.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
367
+ brown,5,personal_1753206514,my_recorded_signs\brown_1753206514.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
368
+ brown,5,personal_1753206523,my_recorded_signs\brown_1753206523.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
369
+ brown,5,personal_1753206531,my_recorded_signs\brown_1753206531.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
370
+ brown,5,personal_1753262658,my_recorded_signs\brown_1753262658.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
371
+ brown,5,personal_1753262667,my_recorded_signs\brown_1753262667.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
372
+ brown,5,personal_1753262676,my_recorded_signs\brown_1753262676.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
373
+ brown,5,personal_1753262686,my_recorded_signs\brown_1753262686.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
374
+ brown,5,personal_1753262695,my_recorded_signs\brown_1753262695.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
375
+ brown,5,personal_1753262704,my_recorded_signs\brown_1753262704.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
376
+ brown,5,personal_1753262713,my_recorded_signs\brown_1753262713.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
377
+ brown,5,personal_1753262723,my_recorded_signs\brown_1753262723.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
378
+ brown,5,personal_1753262732,my_recorded_signs\brown_1753262732.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
379
+ brown,5,personal_1753262745,my_recorded_signs\brown_1753262745.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
380
+ brown,5,personal_1753262753,my_recorded_signs\brown_1753262753.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
381
+ brown,5,personal_1753262761,my_recorded_signs\brown_1753262761.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
382
+ brown,5,personal_1753262769,my_recorded_signs\brown_1753262769.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
383
+ brown,5,personal_1753262778,my_recorded_signs\brown_1753262778.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
384
+ brown,5,personal_1753262786,my_recorded_signs\brown_1753262786.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
385
+ brown,5,personal_1753262794,my_recorded_signs\brown_1753262794.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
386
+ brown,5,personal_1753262802,my_recorded_signs\brown_1753262802.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
387
+ brown,5,personal_1753262810,my_recorded_signs\brown_1753262810.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
388
+ brown,5,personal_1753262819,my_recorded_signs\brown_1753262819.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
389
+ brown,5,personal_1753262827,my_recorded_signs\brown_1753262827.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
390
+ brown,5,personal_1753262835,my_recorded_signs\brown_1753262835.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
391
+ brown,5,personal_1753262843,my_recorded_signs\brown_1753262843.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
392
+ brown,5,personal_1753262852,my_recorded_signs\brown_1753262852.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
393
+ brown,5,personal_1753262860,my_recorded_signs\brown_1753262860.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
394
+ brown,5,personal_1753262868,my_recorded_signs\brown_1753262868.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
395
+ brown,5,personal_1753262876,my_recorded_signs\brown_1753262876.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
396
+ brown,5,personal_1753262885,my_recorded_signs\brown_1753262885.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
397
+ brown,5,personal_1753262894,my_recorded_signs\brown_1753262894.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
398
+ brown,5,personal_1753262902,my_recorded_signs\brown_1753262902.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
399
+ brown,5,personal_1753262911,my_recorded_signs\brown_1753262911.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
400
+ brown,5,personal_1753262920,my_recorded_signs\brown_1753262920.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
401
+ brown,5,personal_1753262928,my_recorded_signs\brown_1753262928.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
402
+ brown,5,personal_1753262936,my_recorded_signs\brown_1753262936.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
403
+ brown,5,personal_1753262944,my_recorded_signs\brown_1753262944.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
404
+ brown,5,personal_1753262953,my_recorded_signs\brown_1753262953.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
405
+ brown,5,personal_1753262961,my_recorded_signs\brown_1753262961.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
406
+ brown,5,personal_1753367243,my_recorded_signs\brown_1753367243.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
407
+ brown,5,personal_1753367254,my_recorded_signs\brown_1753367254.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
408
+ brown,5,personal_1753367283,my_recorded_signs\brown_1753367283.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
409
+ brown,5,personal_1753367292,my_recorded_signs\brown_1753367292.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
410
+ brown,5,personal_1753367300,my_recorded_signs\brown_1753367300.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
411
+ brown,5,personal_1753367313,my_recorded_signs\brown_1753367313.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
412
+ brown,5,personal_1753367344,my_recorded_signs\brown_1753367344.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
413
+ brown,5,personal_1753367352,my_recorded_signs\brown_1753367352.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
414
+ brown,5,personal_1753367361,my_recorded_signs\brown_1753367361.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
415
+ brown,5,personal_1753367370,my_recorded_signs\brown_1753367370.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
416
+ brown,5,personal_1753367379,my_recorded_signs\brown_1753367379.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
417
+ can,3,personal_1753086108,my_recorded_signs\can_1753086108.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
418
+ can,3,personal_1753086118,my_recorded_signs\can_1753086118.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
419
+ can,3,personal_1753086127,my_recorded_signs\can_1753086127.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
420
+ can,3,personal_1753086136,my_recorded_signs\can_1753086136.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
421
+ can,3,personal_1753086146,my_recorded_signs\can_1753086146.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
422
+ can,3,personal_1753086155,my_recorded_signs\can_1753086155.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
423
+ can,3,personal_1753086165,my_recorded_signs\can_1753086165.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
424
+ can,3,personal_1753086174,my_recorded_signs\can_1753086174.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
425
+ can,3,personal_1753086186,my_recorded_signs\can_1753086186.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
426
+ can,3,personal_1753086197,my_recorded_signs\can_1753086197.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
427
+ can,3,personal_1753086207,my_recorded_signs\can_1753086207.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
428
+ can,3,personal_1753086218,my_recorded_signs\can_1753086218.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
429
+ can,3,personal_1753086228,my_recorded_signs\can_1753086228.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
430
+ can,3,personal_1753086241,my_recorded_signs\can_1753086241.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
431
+ can,3,personal_1753086249,my_recorded_signs\can_1753086249.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
432
+ can,3,personal_1753086261,my_recorded_signs\can_1753086261.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
433
+ can,3,personal_1753086339,my_recorded_signs\can_1753086339.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
434
+ can,3,personal_1753086352,my_recorded_signs\can_1753086352.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
435
+ can,3,personal_1753086361,my_recorded_signs\can_1753086361.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
436
+ can,3,personal_1753086369,my_recorded_signs\can_1753086369.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
437
+ can,3,personal_1753086378,my_recorded_signs\can_1753086378.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
438
+ can,3,personal_1753086387,my_recorded_signs\can_1753086387.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
439
+ can,3,personal_1753086396,my_recorded_signs\can_1753086396.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
440
+ can,3,personal_1753086405,my_recorded_signs\can_1753086405.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
441
+ can,3,personal_1753086415,my_recorded_signs\can_1753086415.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
442
+ can,3,personal_1753086423,my_recorded_signs\can_1753086423.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
443
+ can,3,personal_1753086432,my_recorded_signs\can_1753086432.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
444
+ can,3,personal_1753086441,my_recorded_signs\can_1753086441.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
445
+ can,3,personal_1753086452,my_recorded_signs\can_1753086452.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
446
+ can,3,personal_1753086462,my_recorded_signs\can_1753086462.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
447
+ can,3,personal_1753086473,my_recorded_signs\can_1753086473.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
448
+ can,3,personal_1753086501,my_recorded_signs\can_1753086501.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
449
+ can,3,personal_1753086512,my_recorded_signs\can_1753086512.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
450
+ can,3,personal_1753175438,my_recorded_signs\can_1753175438.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
451
+ can,3,personal_1753175448,my_recorded_signs\can_1753175448.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
452
+ can,3,personal_1753175456,my_recorded_signs\can_1753175456.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
453
+ can,3,personal_1753175465,my_recorded_signs\can_1753175465.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
454
+ can,3,personal_1753175477,my_recorded_signs\can_1753175477.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
455
+ can,3,personal_1753175485,my_recorded_signs\can_1753175485.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
456
+ can,3,personal_1753206162,my_recorded_signs\can_1753206162.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
457
+ can,3,personal_1753206182,my_recorded_signs\can_1753206182.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
458
+ can,3,personal_1753206191,my_recorded_signs\can_1753206191.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
459
+ can,3,personal_1753206199,my_recorded_signs\can_1753206199.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
460
+ can,3,personal_1753206208,my_recorded_signs\can_1753206208.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
461
+ can,3,personal_1753206218,my_recorded_signs\can_1753206218.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
462
+ can,3,personal_1753206226,my_recorded_signs\can_1753206226.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
463
+ can,3,personal_1753263384,my_recorded_signs\can_1753263384.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
464
+ can,3,personal_1753263394,my_recorded_signs\can_1753263394.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
465
+ can,3,personal_1753263403,my_recorded_signs\can_1753263403.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
466
+ can,3,personal_1753263411,my_recorded_signs\can_1753263411.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
467
+ can,3,personal_1753263420,my_recorded_signs\can_1753263420.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
468
+ can,3,personal_1753263431,my_recorded_signs\can_1753263431.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
469
+ can,3,personal_1753263441,my_recorded_signs\can_1753263441.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
470
+ can,3,personal_1753263449,my_recorded_signs\can_1753263449.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
471
+ can,3,personal_1753263458,my_recorded_signs\can_1753263458.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
472
+ can,3,personal_1753263466,my_recorded_signs\can_1753263466.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
473
+ can,3,personal_1753263475,my_recorded_signs\can_1753263475.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
474
+ can,3,personal_1753263483,my_recorded_signs\can_1753263483.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
475
+ can,3,personal_1753263492,my_recorded_signs\can_1753263492.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
476
+ can,3,personal_1753263500,my_recorded_signs\can_1753263500.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
477
+ can,3,personal_1753263508,my_recorded_signs\can_1753263508.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
478
+ can,3,personal_1753263517,my_recorded_signs\can_1753263517.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
479
+ can,3,personal_1753263525,my_recorded_signs\can_1753263525.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
480
+ can,3,personal_1753263533,my_recorded_signs\can_1753263533.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
481
+ can,3,personal_1753263542,my_recorded_signs\can_1753263542.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
482
+ can,3,personal_1753263550,my_recorded_signs\can_1753263550.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
483
+ can,3,personal_1753263561,my_recorded_signs\can_1753263561.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
484
+ can,3,personal_1753263570,my_recorded_signs\can_1753263570.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
485
+ can,3,personal_1753263579,my_recorded_signs\can_1753263579.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
486
+ can,3,personal_1753263589,my_recorded_signs\can_1753263589.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
487
+ can,3,personal_1753263598,my_recorded_signs\can_1753263598.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
488
+ can,3,personal_1753263607,my_recorded_signs\can_1753263607.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
489
+ can,3,personal_1753366987,my_recorded_signs\can_1753366987.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
490
+ can,3,personal_1753366995,my_recorded_signs\can_1753366995.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
491
+ can,3,personal_1753367004,my_recorded_signs\can_1753367004.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
492
+ can,3,personal_1753367013,my_recorded_signs\can_1753367013.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
493
+ can,3,personal_1753367022,my_recorded_signs\can_1753367022.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
494
+ can,3,personal_1753367030,my_recorded_signs\can_1753367030.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
495
+ can,3,personal_1753367039,my_recorded_signs\can_1753367039.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
496
+ can,3,personal_1753367050,my_recorded_signs\can_1753367050.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
497
+ can,3,personal_1753367067,my_recorded_signs\can_1753367067.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
498
+ cat,6,personal_1753087072,my_recorded_signs\cat_1753087072.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
499
+ cat,6,personal_1753087081,my_recorded_signs\cat_1753087081.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
500
+ cat,6,personal_1753087089,my_recorded_signs\cat_1753087089.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
501
+ cat,6,personal_1753087097,my_recorded_signs\cat_1753087097.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
502
+ cat,6,personal_1753087105,my_recorded_signs\cat_1753087105.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
503
+ cat,6,personal_1753087115,my_recorded_signs\cat_1753087115.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
504
+ cat,6,personal_1753087124,my_recorded_signs\cat_1753087124.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
505
+ cat,6,personal_1753087134,my_recorded_signs\cat_1753087134.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
506
+ cat,6,personal_1753087143,my_recorded_signs\cat_1753087143.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
507
+ cat,6,personal_1753087155,my_recorded_signs\cat_1753087155.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
508
+ cat,6,personal_1753087193,my_recorded_signs\cat_1753087193.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
509
+ cat,6,personal_1753087202,my_recorded_signs\cat_1753087202.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
510
+ cat,6,personal_1753087224,my_recorded_signs\cat_1753087224.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
511
+ cat,6,personal_1753087233,my_recorded_signs\cat_1753087233.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
512
+ cat,6,personal_1753087244,my_recorded_signs\cat_1753087244.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
513
+ cat,6,personal_1753087254,my_recorded_signs\cat_1753087254.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
514
+ cat,6,personal_1753087264,my_recorded_signs\cat_1753087264.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
515
+ cat,6,personal_1753087273,my_recorded_signs\cat_1753087273.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
516
+ cat,6,personal_1753087283,my_recorded_signs\cat_1753087283.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
517
+ cat,6,personal_1753087292,my_recorded_signs\cat_1753087292.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
518
+ cat,6,personal_1753087302,my_recorded_signs\cat_1753087302.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
519
+ cat,6,personal_1753172292,my_recorded_signs\cat_1753172292.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
520
+ cat,6,personal_1753172306,my_recorded_signs\cat_1753172306.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
521
+ cat,6,personal_1753172316,my_recorded_signs\cat_1753172316.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
522
+ cat,6,personal_1753172326,my_recorded_signs\cat_1753172326.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
523
+ cat,6,personal_1753172335,my_recorded_signs\cat_1753172335.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
524
+ cat,6,personal_1753172344,my_recorded_signs\cat_1753172344.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
525
+ cat,6,personal_1753172353,my_recorded_signs\cat_1753172353.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
526
+ cat,6,personal_1753172363,my_recorded_signs\cat_1753172363.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
527
+ cat,6,personal_1753172371,my_recorded_signs\cat_1753172371.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
528
+ cat,6,personal_1753172380,my_recorded_signs\cat_1753172380.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
529
+ cat,6,personal_1753172390,my_recorded_signs\cat_1753172390.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
530
+ cat,6,personal_1753172399,my_recorded_signs\cat_1753172399.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
531
+ cat,6,personal_1753172408,my_recorded_signs\cat_1753172408.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
532
+ cat,6,personal_1753172418,my_recorded_signs\cat_1753172418.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
533
+ cat,6,personal_1753172430,my_recorded_signs\cat_1753172430.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
534
+ cat,6,personal_1753172440,my_recorded_signs\cat_1753172440.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
535
+ cat,6,personal_1753172449,my_recorded_signs\cat_1753172449.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
536
+ cat,6,personal_1753172462,my_recorded_signs\cat_1753172462.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
537
+ cat,6,personal_1753172470,my_recorded_signs\cat_1753172470.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
538
+ cat,6,personal_1753172479,my_recorded_signs\cat_1753172479.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
539
+ cat,6,personal_1753172486,my_recorded_signs\cat_1753172486.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
540
+ cat,6,personal_1753172495,my_recorded_signs\cat_1753172495.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
541
+ cat,6,personal_1753172505,my_recorded_signs\cat_1753172505.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
542
+ cat,6,personal_1753172514,my_recorded_signs\cat_1753172514.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
543
+ cat,6,personal_1753206359,my_recorded_signs\cat_1753206359.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
544
+ cat,6,personal_1753206368,my_recorded_signs\cat_1753206368.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
545
+ cat,6,personal_1753206377,my_recorded_signs\cat_1753206377.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
546
+ cat,6,personal_1753206386,my_recorded_signs\cat_1753206386.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
547
+ cat,6,personal_1753206395,my_recorded_signs\cat_1753206395.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
548
+ cat,6,personal_1753206404,my_recorded_signs\cat_1753206404.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
549
+ cat,6,personal_1753206412,my_recorded_signs\cat_1753206412.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
550
+ cat,6,personal_1753206421,my_recorded_signs\cat_1753206421.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
551
+ cat,6,personal_1753206431,my_recorded_signs\cat_1753206431.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
552
+ cat,6,personal_1753206440,my_recorded_signs\cat_1753206440.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
553
+ cat,6,personal_1753263033,my_recorded_signs\cat_1753263033.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
554
+ cat,6,personal_1753263044,my_recorded_signs\cat_1753263044.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
555
+ cat,6,personal_1753263052,my_recorded_signs\cat_1753263052.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
556
+ cat,6,personal_1753263060,my_recorded_signs\cat_1753263060.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
557
+ cat,6,personal_1753263068,my_recorded_signs\cat_1753263068.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
558
+ cat,6,personal_1753263076,my_recorded_signs\cat_1753263076.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
559
+ cat,6,personal_1753263084,my_recorded_signs\cat_1753263084.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
560
+ cat,6,personal_1753263092,my_recorded_signs\cat_1753263092.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
561
+ cat,6,personal_1753263101,my_recorded_signs\cat_1753263101.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
562
+ cat,6,personal_1753263109,my_recorded_signs\cat_1753263109.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
563
+ cat,6,personal_1753263119,my_recorded_signs\cat_1753263119.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
564
+ cat,6,personal_1753263129,my_recorded_signs\cat_1753263129.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
565
+ cat,6,personal_1753263137,my_recorded_signs\cat_1753263137.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
566
+ cat,6,personal_1753263146,my_recorded_signs\cat_1753263146.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
567
+ cat,6,personal_1753263155,my_recorded_signs\cat_1753263155.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
568
+ cat,6,personal_1753263164,my_recorded_signs\cat_1753263164.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
569
+ cat,6,personal_1753263173,my_recorded_signs\cat_1753263173.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
570
+ cat,6,personal_1753263183,my_recorded_signs\cat_1753263183.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
571
+ cat,6,personal_1753263193,my_recorded_signs\cat_1753263193.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
572
+ cat,6,personal_1753263202,my_recorded_signs\cat_1753263202.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
573
+ cat,6,personal_1753263211,my_recorded_signs\cat_1753263211.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
574
+ cat,6,personal_1753263220,my_recorded_signs\cat_1753263220.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
575
+ cat,6,personal_1753263231,my_recorded_signs\cat_1753263231.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
576
+ cat,6,personal_1753263240,my_recorded_signs\cat_1753263240.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
577
+ cat,6,personal_1753263249,my_recorded_signs\cat_1753263249.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
578
+ cat,6,personal_1753263258,my_recorded_signs\cat_1753263258.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
579
+ cat,6,personal_1753263267,my_recorded_signs\cat_1753263267.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
580
+ cat,6,personal_1753263276,my_recorded_signs\cat_1753263276.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
581
+ cat,6,personal_1753263285,my_recorded_signs\cat_1753263285.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
582
+ cat,6,personal_1753263294,my_recorded_signs\cat_1753263294.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
583
+ cat,6,personal_1753263303,my_recorded_signs\cat_1753263303.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
584
+ cat,6,personal_1753263313,my_recorded_signs\cat_1753263313.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
585
+ cat,6,personal_1753263322,my_recorded_signs\cat_1753263322.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
586
+ cat,6,personal_1753263331,my_recorded_signs\cat_1753263331.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
587
+ cat,6,personal_1753263341,my_recorded_signs\cat_1753263341.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
588
+ cat,6,personal_1753272527,my_recorded_signs\cat_1753272527.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
589
+ cat,6,personal_1753272572,my_recorded_signs\cat_1753272572.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
590
+ cat,6,personal_1753272583,my_recorded_signs\cat_1753272583.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
591
+ cat,6,personal_1753272592,my_recorded_signs\cat_1753272592.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
592
+ cat,6,personal_1753272602,my_recorded_signs\cat_1753272602.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
593
+ cat,6,personal_1753272611,my_recorded_signs\cat_1753272611.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
594
+ cat,6,personal_1753272620,my_recorded_signs\cat_1753272620.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
595
+ cat,6,personal_1753272628,my_recorded_signs\cat_1753272628.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
596
+ cat,6,personal_1753272637,my_recorded_signs\cat_1753272637.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
597
+ cat,6,personal_1753272647,my_recorded_signs\cat_1753272647.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
598
+ cat,6,personal_1753272656,my_recorded_signs\cat_1753272656.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
599
+ cat,6,personal_1753272667,my_recorded_signs\cat_1753272667.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
600
+ cat,6,personal_1753272677,my_recorded_signs\cat_1753272677.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
601
+ cat,6,personal_1753272688,my_recorded_signs\cat_1753272688.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
602
+ cat,6,personal_1753272704,my_recorded_signs\cat_1753272704.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
603
+ cat,6,personal_1753272713,my_recorded_signs\cat_1753272713.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
604
+ cat,6,personal_1753272722,my_recorded_signs\cat_1753272722.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
605
+ cat,6,personal_1753272732,my_recorded_signs\cat_1753272732.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
606
+ cat,6,personal_1753272741,my_recorded_signs\cat_1753272741.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
607
+ cat,6,personal_1753272751,my_recorded_signs\cat_1753272751.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
608
+ cat,6,personal_1753272762,my_recorded_signs\cat_1753272762.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
609
+ cat,6,personal_1753272775,my_recorded_signs\cat_1753272775.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
610
+ cat,6,personal_1753272785,my_recorded_signs\cat_1753272785.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
611
+ cat,6,personal_1753272796,my_recorded_signs\cat_1753272796.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
612
+ cat,6,personal_1753272807,my_recorded_signs\cat_1753272807.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
613
+ cat,6,personal_1753272817,my_recorded_signs\cat_1753272817.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
614
+ cat,6,personal_1753367412,my_recorded_signs\cat_1753367412.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
615
+ cat,6,personal_1753367421,my_recorded_signs\cat_1753367421.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
616
+ cat,6,personal_1753367435,my_recorded_signs\cat_1753367435.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
617
+ cat,6,personal_1753367446,my_recorded_signs\cat_1753367446.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
618
+ cat,6,personal_1753367454,my_recorded_signs\cat_1753367454.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
619
+ cat,6,personal_1753367463,my_recorded_signs\cat_1753367463.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
620
+ cat,6,personal_1753367472,my_recorded_signs\cat_1753367472.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
621
+ cat,6,personal_1753367483,my_recorded_signs\cat_1753367483.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
622
+ cat,6,personal_1753367493,my_recorded_signs\cat_1753367493.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
623
+ chair,0,personal_1753085287,my_recorded_signs\chair_1753085287.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
624
+ chair,0,personal_1753085321,my_recorded_signs\chair_1753085321.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
625
+ chair,0,personal_1753085340,my_recorded_signs\chair_1753085340.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
626
+ chair,0,personal_1753085356,my_recorded_signs\chair_1753085356.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
627
+ chair,0,personal_1753085373,my_recorded_signs\chair_1753085373.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
628
+ chair,0,personal_1753085385,my_recorded_signs\chair_1753085385.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
629
+ chair,0,personal_1753085397,my_recorded_signs\chair_1753085397.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
630
+ chair,0,personal_1753085418,my_recorded_signs\chair_1753085418.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
631
+ chair,0,personal_1753085441,my_recorded_signs\chair_1753085441.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
632
+ chair,0,personal_1753085454,my_recorded_signs\chair_1753085454.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
633
+ chair,0,personal_1753085471,my_recorded_signs\chair_1753085471.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
634
+ chair,0,personal_1753085483,my_recorded_signs\chair_1753085483.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
635
+ chair,0,personal_1753085495,my_recorded_signs\chair_1753085495.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
636
+ chair,0,personal_1753085515,my_recorded_signs\chair_1753085515.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
637
+ chair,0,personal_1753085531,my_recorded_signs\chair_1753085531.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
638
+ chair,0,personal_1753171870,my_recorded_signs\chair_1753171870.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
639
+ chair,0,personal_1753171890,my_recorded_signs\chair_1753171890.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
640
+ chair,0,personal_1753171899,my_recorded_signs\chair_1753171899.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
641
+ chair,0,personal_1753171908,my_recorded_signs\chair_1753171908.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
642
+ chair,0,personal_1753171918,my_recorded_signs\chair_1753171918.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
643
+ chair,0,personal_1753171927,my_recorded_signs\chair_1753171927.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
644
+ chair,0,personal_1753171937,my_recorded_signs\chair_1753171937.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
645
+ chair,0,personal_1753171945,my_recorded_signs\chair_1753171945.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
646
+ chair,0,personal_1753171954,my_recorded_signs\chair_1753171954.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
647
+ chair,0,personal_1753171963,my_recorded_signs\chair_1753171963.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
648
+ chair,0,personal_1753171976,my_recorded_signs\chair_1753171976.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
649
+ chair,0,personal_1753171985,my_recorded_signs\chair_1753171985.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
650
+ chair,0,personal_1753171994,my_recorded_signs\chair_1753171994.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
651
+ chair,0,personal_1753172003,my_recorded_signs\chair_1753172003.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
652
+ chair,0,personal_1753172013,my_recorded_signs\chair_1753172013.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
653
+ chair,0,personal_1753172022,my_recorded_signs\chair_1753172022.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
654
+ chair,0,personal_1753172030,my_recorded_signs\chair_1753172030.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
655
+ chair,0,personal_1753206977,my_recorded_signs\chair_1753206977.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
656
+ chair,0,personal_1753206986,my_recorded_signs\chair_1753206986.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
657
+ chair,0,personal_1753206994,my_recorded_signs\chair_1753206994.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
658
+ chair,0,personal_1753207003,my_recorded_signs\chair_1753207003.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
659
+ chair,0,personal_1753207012,my_recorded_signs\chair_1753207012.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
660
+ chair,0,personal_1753366491,my_recorded_signs\chair_1753366491.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
661
+ chair,0,personal_1753366500,my_recorded_signs\chair_1753366500.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
662
+ chair,0,personal_1753366508,my_recorded_signs\chair_1753366508.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
663
+ chair,0,personal_1753366516,my_recorded_signs\chair_1753366516.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
664
+ chair,0,personal_1753366526,my_recorded_signs\chair_1753366526.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
665
+ chair,0,personal_1753366535,my_recorded_signs\chair_1753366535.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
666
+ chair,0,personal_1753366544,my_recorded_signs\chair_1753366544.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
667
+ chair,0,personal_1753366553,my_recorded_signs\chair_1753366553.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
668
+ chair,0,personal_1753366562,my_recorded_signs\chair_1753366562.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
669
+ chair,0,personal_1753366571,my_recorded_signs\chair_1753366571.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
670
+ chair,0,personal_1753366579,my_recorded_signs\chair_1753366579.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
671
+ chair,0,personal_1753366588,my_recorded_signs\chair_1753366588.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
672
+ chair,0,personal_1753366596,my_recorded_signs\chair_1753366596.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
673
+ chair,0,personal_1753366609,my_recorded_signs\chair_1753366609.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
674
+ chair,0,personal_1753366617,my_recorded_signs\chair_1753366617.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
675
+ chair,0,personal_1753366626,my_recorded_signs\chair_1753366626.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
676
+ chair,0,personal_1753366635,my_recorded_signs\chair_1753366635.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
677
+ child,8,personal_1753174998,my_recorded_signs\child_1753174998.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
678
+ child,8,personal_1753175009,my_recorded_signs\child_1753175009.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
679
+ child,8,personal_1753175016,my_recorded_signs\child_1753175016.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
680
+ child,8,personal_1753175025,my_recorded_signs\child_1753175025.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
681
+ child,8,personal_1753175033,my_recorded_signs\child_1753175033.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
682
+ child,8,personal_1753175041,my_recorded_signs\child_1753175041.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
683
+ child,8,personal_1753175050,my_recorded_signs\child_1753175050.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
684
+ child,8,personal_1753175059,my_recorded_signs\child_1753175059.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
685
+ child,8,personal_1753175068,my_recorded_signs\child_1753175068.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
686
+ child,8,personal_1753175076,my_recorded_signs\child_1753175076.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
687
+ child,8,personal_1753175085,my_recorded_signs\child_1753175085.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
688
+ child,8,personal_1753175093,my_recorded_signs\child_1753175093.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
689
+ child,8,personal_1753175102,my_recorded_signs\child_1753175102.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
690
+ child,8,personal_1753175110,my_recorded_signs\child_1753175110.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
691
+ child,8,personal_1753175127,my_recorded_signs\child_1753175127.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
692
+ child,8,personal_1753175136,my_recorded_signs\child_1753175136.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
693
+ child,8,personal_1753175144,my_recorded_signs\child_1753175144.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
694
+ child,8,personal_1753175152,my_recorded_signs\child_1753175152.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
695
+ child,8,personal_1753175160,my_recorded_signs\child_1753175160.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
696
+ child,8,personal_1753175168,my_recorded_signs\child_1753175168.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
697
+ child,8,personal_1753175177,my_recorded_signs\child_1753175177.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
698
+ child,8,personal_1753175184,my_recorded_signs\child_1753175184.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
699
+ child,8,personal_1753175194,my_recorded_signs\child_1753175194.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
700
+ child,8,personal_1753175203,my_recorded_signs\child_1753175203.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
701
+ child,8,personal_1753175212,my_recorded_signs\child_1753175212.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
702
+ child,8,personal_1753175221,my_recorded_signs\child_1753175221.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
703
+ child,8,personal_1753175230,my_recorded_signs\child_1753175230.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
704
+ child,8,personal_1753175239,my_recorded_signs\child_1753175239.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
705
+ child,8,personal_1753175249,my_recorded_signs\child_1753175249.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
706
+ child,8,personal_1753175258,my_recorded_signs\child_1753175258.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
707
+ child,8,personal_1753175268,my_recorded_signs\child_1753175268.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
708
+ child,8,personal_1753175277,my_recorded_signs\child_1753175277.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
709
+ child,8,personal_1753208132,my_recorded_signs\child_1753208132.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
710
+ child,8,personal_1753208143,my_recorded_signs\child_1753208143.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
711
+ child,8,personal_1753208152,my_recorded_signs\child_1753208152.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
712
+ child,8,personal_1753208161,my_recorded_signs\child_1753208161.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
713
+ child,8,personal_1753208170,my_recorded_signs\child_1753208170.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
714
+ child,8,personal_1753208179,my_recorded_signs\child_1753208179.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
715
+ child,8,personal_1753208187,my_recorded_signs\child_1753208187.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
716
+ child,8,personal_1753208196,my_recorded_signs\child_1753208196.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
717
+ child,8,personal_1753208204,my_recorded_signs\child_1753208204.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
718
+ child,8,personal_1753208213,my_recorded_signs\child_1753208213.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
719
+ child,8,personal_1753208221,my_recorded_signs\child_1753208221.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
720
+ child,8,personal_1753208229,my_recorded_signs\child_1753208229.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
721
+ child,8,personal_1753208239,my_recorded_signs\child_1753208239.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
722
+ child,8,personal_1753208247,my_recorded_signs\child_1753208247.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
723
+ child,8,personal_1753208256,my_recorded_signs\child_1753208256.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
724
+ child,8,personal_1753208266,my_recorded_signs\child_1753208266.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
725
+ child,8,personal_1753208275,my_recorded_signs\child_1753208275.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
726
+ child,8,personal_1753208284,my_recorded_signs\child_1753208284.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
727
+ child,8,personal_1753208295,my_recorded_signs\child_1753208295.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
728
+ child,8,personal_1753208303,my_recorded_signs\child_1753208303.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
729
+ child,8,personal_1753208315,my_recorded_signs\child_1753208315.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
730
+ child,8,personal_1753263792,my_recorded_signs\child_1753263792.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
731
+ child,8,personal_1753263801,my_recorded_signs\child_1753263801.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
732
+ child,8,personal_1753263809,my_recorded_signs\child_1753263809.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
733
+ child,8,personal_1753263817,my_recorded_signs\child_1753263817.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
734
+ child,8,personal_1753263825,my_recorded_signs\child_1753263825.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
735
+ child,8,personal_1753263834,my_recorded_signs\child_1753263834.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
736
+ child,8,personal_1753263843,my_recorded_signs\child_1753263843.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
737
+ child,8,personal_1753263851,my_recorded_signs\child_1753263851.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
738
+ child,8,personal_1753263860,my_recorded_signs\child_1753263860.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
739
+ child,8,personal_1753263868,my_recorded_signs\child_1753263868.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
740
+ child,8,personal_1753263878,my_recorded_signs\child_1753263878.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
741
+ child,8,personal_1753263887,my_recorded_signs\child_1753263887.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
742
+ child,8,personal_1753263896,my_recorded_signs\child_1753263896.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
743
+ child,8,personal_1753263905,my_recorded_signs\child_1753263905.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
744
+ child,8,personal_1753263914,my_recorded_signs\child_1753263914.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
745
+ child,8,personal_1753263923,my_recorded_signs\child_1753263923.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
746
+ child,8,personal_1753263933,my_recorded_signs\child_1753263933.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
747
+ child,8,personal_1753263943,my_recorded_signs\child_1753263943.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
748
+ child,8,personal_1753263953,my_recorded_signs\child_1753263953.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
749
+ child,8,personal_1753272883,my_recorded_signs\child_1753272883.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
750
+ child,8,personal_1753272892,my_recorded_signs\child_1753272892.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
751
+ child,8,personal_1753272903,my_recorded_signs\child_1753272903.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
752
+ child,8,personal_1753272914,my_recorded_signs\child_1753272914.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
753
+ child,8,personal_1753272924,my_recorded_signs\child_1753272924.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
754
+ child,8,personal_1753272934,my_recorded_signs\child_1753272934.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
755
+ child,8,personal_1753273064,my_recorded_signs\child_1753273064.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
756
+ child,8,personal_1753273073,my_recorded_signs\child_1753273073.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
757
+ child,8,personal_1753273082,my_recorded_signs\child_1753273082.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
758
+ child,8,personal_1753273091,my_recorded_signs\child_1753273091.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
759
+ child,8,personal_1753273104,my_recorded_signs\child_1753273104.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
760
+ child,8,personal_1753273135,my_recorded_signs\child_1753273135.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
761
+ child,8,personal_1753273166,my_recorded_signs\child_1753273166.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
762
+ child,8,personal_1753273180,my_recorded_signs\child_1753273180.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
763
+ child,8,personal_1753273188,my_recorded_signs\child_1753273188.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
764
+ child,8,personal_1753273198,my_recorded_signs\child_1753273198.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
765
+ child,8,personal_1753273208,my_recorded_signs\child_1753273208.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
766
+ child,8,personal_1753273219,my_recorded_signs\child_1753273219.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
767
+ child,8,personal_1753273230,my_recorded_signs\child_1753273230.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
768
+ child,8,personal_1753273239,my_recorded_signs\child_1753273239.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
769
+ child,8,personal_1753367664,my_recorded_signs\child_1753367664.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
770
+ child,8,personal_1753367672,my_recorded_signs\child_1753367672.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
771
+ child,8,personal_1753367681,my_recorded_signs\child_1753367681.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
772
+ child,8,personal_1753367689,my_recorded_signs\child_1753367689.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
773
+ child,8,personal_1753367698,my_recorded_signs\child_1753367698.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
774
+ child,8,personal_1753367707,my_recorded_signs\child_1753367707.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
775
+ child,8,personal_1753367716,my_recorded_signs\child_1753367716.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
776
+ cold,7,personal_1753087366,my_recorded_signs\cold_1753087366.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
777
+ cold,7,personal_1753087374,my_recorded_signs\cold_1753087374.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
778
+ cold,7,personal_1753087383,my_recorded_signs\cold_1753087383.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
779
+ cold,7,personal_1753087391,my_recorded_signs\cold_1753087391.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
780
+ cold,7,personal_1753087400,my_recorded_signs\cold_1753087400.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
781
+ cold,7,personal_1753087409,my_recorded_signs\cold_1753087409.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
782
+ cold,7,personal_1753087418,my_recorded_signs\cold_1753087418.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
783
+ cold,7,personal_1753087428,my_recorded_signs\cold_1753087428.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
784
+ cold,7,personal_1753087437,my_recorded_signs\cold_1753087437.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
785
+ cold,7,personal_1753087448,my_recorded_signs\cold_1753087448.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
786
+ cold,7,personal_1753087457,my_recorded_signs\cold_1753087457.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
787
+ cold,7,personal_1753087466,my_recorded_signs\cold_1753087466.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
788
+ cold,7,personal_1753087478,my_recorded_signs\cold_1753087478.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
789
+ cold,7,personal_1753087494,my_recorded_signs\cold_1753087494.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
790
+ cold,7,personal_1753087502,my_recorded_signs\cold_1753087502.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
791
+ cold,7,personal_1753087510,my_recorded_signs\cold_1753087510.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
792
+ cold,7,personal_1753087519,my_recorded_signs\cold_1753087519.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
793
+ cold,7,personal_1753087528,my_recorded_signs\cold_1753087528.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
794
+ cold,7,personal_1753172528,my_recorded_signs\cold_1753172528.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
795
+ cold,7,personal_1753172537,my_recorded_signs\cold_1753172537.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
796
+ cold,7,personal_1753172546,my_recorded_signs\cold_1753172546.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
797
+ cold,7,personal_1753174197,my_recorded_signs\cold_1753174197.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
798
+ cold,7,personal_1753174209,my_recorded_signs\cold_1753174209.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
799
+ cold,7,personal_1753174220,my_recorded_signs\cold_1753174220.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
800
+ cold,7,personal_1753174231,my_recorded_signs\cold_1753174231.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
801
+ cold,7,personal_1753174250,my_recorded_signs\cold_1753174250.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
802
+ cold,7,personal_1753174265,my_recorded_signs\cold_1753174265.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
803
+ cold,7,personal_1753174274,my_recorded_signs\cold_1753174274.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
804
+ cold,7,personal_1753174283,my_recorded_signs\cold_1753174283.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
805
+ cold,7,personal_1753174293,my_recorded_signs\cold_1753174293.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
806
+ cold,7,personal_1753174301,my_recorded_signs\cold_1753174301.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
807
+ cold,7,personal_1753174310,my_recorded_signs\cold_1753174310.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
808
+ cold,7,personal_1753174320,my_recorded_signs\cold_1753174320.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
809
+ cold,7,personal_1753174329,my_recorded_signs\cold_1753174329.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
810
+ cold,7,personal_1753174338,my_recorded_signs\cold_1753174338.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
811
+ cold,7,personal_1753174347,my_recorded_signs\cold_1753174347.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
812
+ cold,7,personal_1753206239,my_recorded_signs\cold_1753206239.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
813
+ cold,7,personal_1753206248,my_recorded_signs\cold_1753206248.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
814
+ cold,7,personal_1753206258,my_recorded_signs\cold_1753206258.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
815
+ cold,7,personal_1753206289,my_recorded_signs\cold_1753206289.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
816
+ cold,7,personal_1753206300,my_recorded_signs\cold_1753206300.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
817
+ cold,7,personal_1753206309,my_recorded_signs\cold_1753206309.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
818
+ cold,7,personal_1753206320,my_recorded_signs\cold_1753206320.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
819
+ cold,7,personal_1753206329,my_recorded_signs\cold_1753206329.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
820
+ cold,7,personal_1753206339,my_recorded_signs\cold_1753206339.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
821
+ cold,7,personal_1753206348,my_recorded_signs\cold_1753206348.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
822
+ cold,7,personal_1753263631,my_recorded_signs\cold_1753263631.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
823
+ cold,7,personal_1753263639,my_recorded_signs\cold_1753263639.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
824
+ cold,7,personal_1753263648,my_recorded_signs\cold_1753263648.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
825
+ cold,7,personal_1753263657,my_recorded_signs\cold_1753263657.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
826
+ cold,7,personal_1753263666,my_recorded_signs\cold_1753263666.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
827
+ cold,7,personal_1753263675,my_recorded_signs\cold_1753263675.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
828
+ cold,7,personal_1753263684,my_recorded_signs\cold_1753263684.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
829
+ cold,7,personal_1753263694,my_recorded_signs\cold_1753263694.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
830
+ cold,7,personal_1753263703,my_recorded_signs\cold_1753263703.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
831
+ cold,7,personal_1753263713,my_recorded_signs\cold_1753263713.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
832
+ cold,7,personal_1753263722,my_recorded_signs\cold_1753263722.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
833
+ cold,7,personal_1753263733,my_recorded_signs\cold_1753263733.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
834
+ cold,7,personal_1753263741,my_recorded_signs\cold_1753263741.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
835
+ cold,7,personal_1753263749,my_recorded_signs\cold_1753263749.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
836
+ cold,7,personal_1753263757,my_recorded_signs\cold_1753263757.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
837
+ cold,7,personal_1753263765,my_recorded_signs\cold_1753263765.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
838
+ cold,7,personal_1753263774,my_recorded_signs\cold_1753263774.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
839
+ cold,7,personal_1753263782,my_recorded_signs\cold_1753263782.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
840
+ cold,7,personal_1753367505,my_recorded_signs\cold_1753367505.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
841
+ cold,7,personal_1753367513,my_recorded_signs\cold_1753367513.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
842
+ cold,7,personal_1753367521,my_recorded_signs\cold_1753367521.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
843
+ cold,7,personal_1753367530,my_recorded_signs\cold_1753367530.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
844
+ cold,7,personal_1753367538,my_recorded_signs\cold_1753367538.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
845
+ cold,7,personal_1753367547,my_recorded_signs\cold_1753367547.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
846
+ cold,7,personal_1753367555,my_recorded_signs\cold_1753367555.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
847
+ cold,7,personal_1753367569,my_recorded_signs\cold_1753367569.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
848
+ cold,7,personal_1753367578,my_recorded_signs\cold_1753367578.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
849
+ cold,7,personal_1753367587,my_recorded_signs\cold_1753367587.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
850
+ cold,7,personal_1753367595,my_recorded_signs\cold_1753367595.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
851
+ come,9,personal_1753087544,my_recorded_signs\come_1753087544.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
852
+ come,9,personal_1753087553,my_recorded_signs\come_1753087553.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
853
+ come,9,personal_1753087561,my_recorded_signs\come_1753087561.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
854
+ come,9,personal_1753087569,my_recorded_signs\come_1753087569.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
855
+ come,9,personal_1753087579,my_recorded_signs\come_1753087579.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
856
+ come,9,personal_1753087589,my_recorded_signs\come_1753087589.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
857
+ come,9,personal_1753087597,my_recorded_signs\come_1753087597.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
858
+ come,9,personal_1753087606,my_recorded_signs\come_1753087606.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
859
+ come,9,personal_1753087614,my_recorded_signs\come_1753087614.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
860
+ come,9,personal_1753087630,my_recorded_signs\come_1753087630.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
861
+ come,9,personal_1753087639,my_recorded_signs\come_1753087639.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
862
+ come,9,personal_1753087648,my_recorded_signs\come_1753087648.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
863
+ come,9,personal_1753087657,my_recorded_signs\come_1753087657.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
864
+ come,9,personal_1753087667,my_recorded_signs\come_1753087667.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
865
+ come,9,personal_1753087676,my_recorded_signs\come_1753087676.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
866
+ come,9,personal_1753087687,my_recorded_signs\come_1753087687.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
867
+ come,9,personal_1753087696,my_recorded_signs\come_1753087696.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
868
+ come,9,personal_1753087707,my_recorded_signs\come_1753087707.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
869
+ come,9,personal_1753206777,my_recorded_signs\come_1753206777.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
870
+ come,9,personal_1753206786,my_recorded_signs\come_1753206786.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
871
+ come,9,personal_1753206794,my_recorded_signs\come_1753206794.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
872
+ come,9,personal_1753206804,my_recorded_signs\come_1753206804.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
873
+ come,9,personal_1753206813,my_recorded_signs\come_1753206813.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
874
+ come,9,personal_1753206822,my_recorded_signs\come_1753206822.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
875
+ come,9,personal_1753206831,my_recorded_signs\come_1753206831.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
876
+ come,9,personal_1753206841,my_recorded_signs\come_1753206841.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
877
+ come,9,personal_1753206849,my_recorded_signs\come_1753206849.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
878
+ come,9,personal_1753206865,my_recorded_signs\come_1753206865.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
879
+ come,9,personal_1753262044,my_recorded_signs\come_1753262044.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
880
+ come,9,personal_1753262052,my_recorded_signs\come_1753262052.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
881
+ come,9,personal_1753262061,my_recorded_signs\come_1753262061.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
882
+ come,9,personal_1753262070,my_recorded_signs\come_1753262070.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
883
+ come,9,personal_1753262079,my_recorded_signs\come_1753262079.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
884
+ come,9,personal_1753262087,my_recorded_signs\come_1753262087.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
885
+ come,9,personal_1753262096,my_recorded_signs\come_1753262096.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
886
+ come,9,personal_1753262105,my_recorded_signs\come_1753262105.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
887
+ come,9,personal_1753262115,my_recorded_signs\come_1753262115.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
888
+ come,9,personal_1753262125,my_recorded_signs\come_1753262125.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
889
+ come,9,personal_1753262135,my_recorded_signs\come_1753262135.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
890
+ come,9,personal_1753262144,my_recorded_signs\come_1753262144.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
891
+ come,9,personal_1753262158,my_recorded_signs\come_1753262158.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
892
+ come,9,personal_1753262167,my_recorded_signs\come_1753262167.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
893
+ come,9,personal_1753262176,my_recorded_signs\come_1753262176.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
894
+ come,9,personal_1753262184,my_recorded_signs\come_1753262184.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
895
+ come,9,personal_1753262193,my_recorded_signs\come_1753262193.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
896
+ come,9,personal_1753262202,my_recorded_signs\come_1753262202.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
897
+ come,9,personal_1753262210,my_recorded_signs\come_1753262210.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
898
+ come,9,personal_1753262218,my_recorded_signs\come_1753262218.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
899
+ come,9,personal_1753262226,my_recorded_signs\come_1753262226.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
900
+ come,9,personal_1753262236,my_recorded_signs\come_1753262236.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
901
+ come,9,personal_1753262244,my_recorded_signs\come_1753262244.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
902
+ come,9,personal_1753262253,my_recorded_signs\come_1753262253.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
903
+ come,9,personal_1753262261,my_recorded_signs\come_1753262261.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
904
+ come,9,personal_1753273473,my_recorded_signs\come_1753273473.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
905
+ come,9,personal_1753273483,my_recorded_signs\come_1753273483.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
906
+ come,9,personal_1753273493,my_recorded_signs\come_1753273493.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
907
+ come,9,personal_1753273503,my_recorded_signs\come_1753273503.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
908
+ come,9,personal_1753273512,my_recorded_signs\come_1753273512.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
909
+ come,9,personal_1753273522,my_recorded_signs\come_1753273522.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
910
+ come,9,personal_1753273532,my_recorded_signs\come_1753273532.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
911
+ come,9,personal_1753273543,my_recorded_signs\come_1753273543.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
912
+ come,9,personal_1753273554,my_recorded_signs\come_1753273554.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
913
+ come,9,personal_1753273563,my_recorded_signs\come_1753273563.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
914
+ come,9,personal_1753273572,my_recorded_signs\come_1753273572.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
915
+ come,9,personal_1753273580,my_recorded_signs\come_1753273580.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
916
+ come,9,personal_1753273589,my_recorded_signs\come_1753273589.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
917
+ come,9,personal_1753273615,my_recorded_signs\come_1753273615.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
918
+ come,9,personal_1753273627,my_recorded_signs\come_1753273627.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
919
+ come,9,personal_1753273636,my_recorded_signs\come_1753273636.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
920
+ come,9,personal_1753273650,my_recorded_signs\come_1753273650.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
921
+ come,9,personal_1753273660,my_recorded_signs\come_1753273660.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
922
+ come,9,personal_1753273680,my_recorded_signs\come_1753273680.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
923
+ come,9,personal_1753273689,my_recorded_signs\come_1753273689.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
924
+ come,9,personal_1753273702,my_recorded_signs\come_1753273702.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
925
+ come,9,personal_1753273711,my_recorded_signs\come_1753273711.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
926
+ come,9,personal_1753273723,my_recorded_signs\come_1753273723.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
927
+ come,9,personal_1753273734,my_recorded_signs\come_1753273734.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
928
+ come,9,personal_1753273744,my_recorded_signs\come_1753273744.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
929
+ come,9,personal_1753273754,my_recorded_signs\come_1753273754.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
930
+ come,9,personal_1753273765,my_recorded_signs\come_1753273765.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
931
+ come,9,personal_1753273775,my_recorded_signs\come_1753273775.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
932
+ come,9,personal_1753273786,my_recorded_signs\come_1753273786.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
933
+ come,9,personal_1753273798,my_recorded_signs\come_1753273798.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
934
+ come,9,personal_1753273810,my_recorded_signs\come_1753273810.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
935
+ come,9,personal_1753367611,my_recorded_signs\come_1753367611.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
936
+ come,9,personal_1753367619,my_recorded_signs\come_1753367619.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
937
+ come,9,personal_1753367627,my_recorded_signs\come_1753367627.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
938
+ come,9,personal_1753367636,my_recorded_signs\come_1753367636.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
939
+ come,9,personal_1753367644,my_recorded_signs\come_1753367644.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
940
+ come,9,personal_1753367652,my_recorded_signs\come_1753367652.npy,personal,train,1,-1,25,"[0, 0, 0, 0]"
ai_model/words/wlasl_10_words_processed.csv ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ gloss,gloss_id,video_id,video_path,signer_id,split,frame_start,frame_end,fps,bbox
2
+ chair,0,09848,.\videos\09848.mp4,0,train,1,-1,25,"[40, 6, 266, 240]"
3
+ chair,0,09869,.\videos\09869.mp4,12,train,1,-1,25,"[183, 55, 560, 400]"
4
+ chair,0,09849,.\videos\09849.mp4,38,train,1,-1,25,"[388, 56, 806, 720]"
5
+ chair,0,09850,.\videos\09850.mp4,31,train,1,-1,25,"[667, 144, 1472, 1061]"
6
+ chair,0,09851,.\videos\09851.mp4,59,val,1,-1,25,"[102, 22, 563, 480]"
7
+ chair,0,65328,.\videos\65328.mp4,90,train,1,-1,25,"[169, 15, 476, 370]"
8
+ chair,0,09854,.\videos\09854.mp4,11,val,1,-1,25,"[81, 15, 233, 192]"
9
+ black,1,69236,.\videos\69236.mp4,118,val,1,-1,25,"[295, 38, 885, 720]"
10
+ black,1,06472,.\videos\06472.mp4,36,train,1,-1,25,"[205, 17, 524, 414]"
11
+ black,1,06473,.\videos\06473.mp4,4,train,1,-1,25,"[544, 60, 1618, 1080]"
12
+ black,1,06474,.\videos\06474.mp4,59,train,1,-1,25,"[77, 18, 515, 480]"
13
+ black,1,06476,.\videos\06476.mp4,11,val,1,-1,25,"[58, 15, 216, 192]"
14
+ black,1,06477,.\videos\06477.mp4,11,train,1,-1,25,"[48, 11, 226, 192]"
15
+ black,1,06478,.\videos\06478.mp4,11,train,1,-1,25,"[63, 8, 245, 192]"
16
+ black,1,65200,.\videos\65200.mp4,90,train,1,-1,25,"[149, 24, 479, 370]"
17
+ black,1,06471,.\videos\06471.mp4,56,train,1,-1,25,"[66, 13, 258, 240]"
18
+ black,1,06486,.\videos\06486.mp4,12,train,1,-1,25,"[131, 52, 555, 400]"
19
+ blue,2,69238,.\videos\69238.mp4,118,val,1,-1,25,"[257, 39, 881, 720]"
20
+ blue,2,06835,.\videos\06835.mp4,59,train,1,-1,25,"[125, 26, 528, 480]"
21
+ blue,2,06839,.\videos\06839.mp4,10,train,1,-1,25,"[90, 21, 213, 192]"
22
+ blue,2,65216,.\videos\65216.mp4,90,train,1,-1,25,"[158, 24, 482, 370]"
23
+ blue,2,06832,.\videos\06832.mp4,8,train,1,-1,25,"[41, 0, 232, 240]"
24
+ blue,2,06845,.\videos\06845.mp4,41,test,1,-1,25,"[232, 39, 483, 400]"
25
+ blue,2,06833,.\videos\06833.mp4,36,train,1,-1,25,"[225, 18, 519, 414]"
26
+ blue,2,06834,.\videos\06834.mp4,46,train,1,-1,25,"[188, 0, 794, 720]"
27
+ can,3,69257,.\videos\69257.mp4,118,test,1,-1,25,"[285, 31, 964, 720]"
28
+ can,3,65294,.\videos\65294.mp4,90,val,1,-1,25,"[137, 15, 500, 370]"
29
+ can,3,08955,.\videos\08955.mp4,12,train,1,-1,25,"[163, 54, 555, 400]"
30
+ can,3,08935,.\videos\08935.mp4,38,train,1,-1,25,"[434, 54, 814, 720]"
31
+ can,3,08936,.\videos\08936.mp4,70,train,1,-1,25,"[201, 5, 823, 480]"
32
+ can,3,08937,.\videos\08937.mp4,59,train,1,-1,25,"[69, 17, 552, 480]"
33
+ can,3,08938,.\videos\08938.mp4,59,train,1,-1,25,"[110, 29, 555, 480]"
34
+ can,3,08942,.\videos\08942.mp4,11,train,1,-1,25,"[76, 18, 237, 192]"
35
+ can,3,08944,.\videos\08944.mp4,11,train,1,-1,25,"[70, 18, 217, 192]"
36
+ apple,4,69213,.\videos\69213.mp4,117,val,1,-1,25,"[304, 41, 916, 720]"
37
+ apple,4,03005,.\videos\03005.mp4,11,train,1,-1,25,"[64, 15, 229, 192]"
38
+ apple,4,03008,.\videos\03008.mp4,12,train,1,-1,25,"[158, 50, 541, 399]"
39
+ apple,4,65085,.\videos\65085.mp4,89,train,1,-1,25,"[207, 0, 520, 370]"
40
+ apple,4,65086,.\videos\65086.mp4,89,val,1,-1,25,"[206, 0, 535, 370]"
41
+ apple,4,65084,.\videos\65084.mp4,88,train,1,-1,25,"[119, 4, 486, 370]"
42
+ apple,4,02999,.\videos\02999.mp4,37,val,1,-1,25,"[44, 0, 232, 240]"
43
+ apple,4,03000,.\videos\03000.mp4,28,train,1,-1,25,"[41, 13, 259, 240]"
44
+ apple,4,03001,.\videos\03001.mp4,38,train,1,-1,25,"[350, 53, 815, 720]"
45
+ apple,4,03002,.\videos\03002.mp4,36,train,1,-1,25,"[212, 17, 526, 414]"
46
+ apple,4,03003,.\videos\03003.mp4,13,train,1,-1,25,"[24, 13, 526, 480]"
47
+ brown,5,69252,.\videos\69252.mp4,118,test,1,-1,25,"[335, 37, 874, 720]"
48
+ brown,5,07963,.\videos\07963.mp4,59,train,1,-1,25,"[102, 30, 523, 480]"
49
+ brown,5,07966,.\videos\07966.mp4,11,train,1,-1,25,"[62, 15, 217, 192]"
50
+ brown,5,65263,.\videos\65263.mp4,90,train,1,-1,25,"[158, 12, 462, 370]"
51
+ brown,5,07960,.\videos\07960.mp4,2,train,1,-1,25,"[37, 6, 250, 240]"
52
+ brown,5,07973,.\videos\07973.mp4,12,val,1,-1,25,"[182, 52, 542, 400]"
53
+ brown,5,07961,.\videos\07961.mp4,36,train,1,-1,25,"[213, 11, 525, 414]"
54
+ brown,5,07962,.\videos\07962.mp4,4,train,1,-1,25,"[381, 38, 1076, 720]"
55
+ cat,6,69261,.\videos\69261.mp4,118,test,1,-1,25,"[357, 37, 874, 720]"
56
+ cat,6,09528,.\videos\09528.mp4,32,train,1,-1,25,"[743, 79, 1579, 1066]"
57
+ cat,6,09532,.\videos\09532.mp4,10,val,1,-1,25,"[84, 21, 216, 192]"
58
+ cat,6,09533,.\videos\09533.mp4,10,train,1,-1,25,"[83, 20, 218, 192]"
59
+ cat,6,65312,.\videos\65312.mp4,102,train,1,-1,25,"[156, 19, 486, 370]"
60
+ cat,6,65313,.\videos\65313.mp4,101,train,1,-1,25,"[168, 18, 462, 370]"
61
+ cat,6,09525,.\videos\09525.mp4,2,val,1,-1,25,"[57, 0, 271, 240]"
62
+ cat,6,09538,.\videos\09538.mp4,41,train,1,-1,25,"[215, 42, 465, 400]"
63
+ cat,6,09526,.\videos\09526.mp4,36,train,1,-1,25,"[210, 18, 523, 414]"
64
+ cold,7,65377,.\videos\65377.mp4,99,test,1,-1,25,"[129, 16, 476, 370]"
65
+ cold,7,11638,.\videos\11638.mp4,12,test,1,-1,25,"[180, 57, 551, 400]"
66
+ cold,7,11622,.\videos\11622.mp4,36,train,1,-1,25,"[210, 16, 540, 414]"
67
+ cold,7,11623,.\videos\11623.mp4,52,train,1,-1,25,"[380, 16, 825, 480]"
68
+ cold,7,11624,.\videos\11624.mp4,6,train,1,-1,25,"[593, 70, 1468, 1080]"
69
+ cold,7,11625,.\videos\11625.mp4,39,val,1,-1,25,"[624, 133, 1621, 1072]"
70
+ cold,7,11627,.\videos\11627.mp4,4,train,1,-1,25,"[411, 31, 1128, 720]"
71
+ cold,7,11628,.\videos\11628.mp4,59,val,1,-1,25,"[116, 29, 513, 480]"
72
+ cold,7,11621,.\videos\11621.mp4,56,train,1,-1,25,"[59, 16, 263, 240]"
73
+ cold,7,11633,.\videos\11633.mp4,10,train,1,-1,25,"[88, 22, 216, 192]"
74
+ cold,7,11634,.\videos\11634.mp4,10,val,1,-1,25,"[65, 21, 233, 192]"
75
+ cold,7,11635,.\videos\11635.mp4,11,train,1,-1,25,"[79, 16, 221, 192]"
76
+ child,8,10450,.\videos\10450.mp4,11,train,1,-1,25,"[69, 17, 215, 192]"
77
+ child,8,65351,.\videos\65351.mp4,90,train,1,-1,25,"[130, 14, 465, 370]"
78
+ child,8,10443,.\videos\10443.mp4,2,train,1,-1,25,"[64, 0, 269, 240]"
79
+ child,8,10453,.\videos\10453.mp4,12,train,1,-1,25,"[130, 54, 550, 400]"
80
+ child,8,10444,.\videos\10444.mp4,32,train,1,-1,25,"[700, 66, 1636, 1073]"
81
+ child,8,10445,.\videos\10445.mp4,4,train,1,-1,25,"[616, 61, 1702, 1079]"
82
+ child,8,10446,.\videos\10446.mp4,32,test,1,-1,25,"[693, 70, 1631, 1073]"
83
+ child,8,10447,.\videos\10447.mp4,59,train,1,-1,25,"[50, 24, 520, 480]"
84
+ child,8,10449,.\videos\10449.mp4,10,val,1,-1,25,"[50, 17, 219, 192]"
85
+ come,9,69275,.\videos\69275.mp4,115,test,1,-1,25,"[140, 37, 943, 720]"
86
+ come,9,11884,.\videos\11884.mp4,12,train,1,-1,25,"[178, 59, 534, 400]"
87
+ come,9,11876,.\videos\11876.mp4,56,train,1,-1,25,"[63, 13, 261, 240]"
88
+ come,9,11877,.\videos\11877.mp4,31,train,1,-1,25,"[540, 64, 1480, 1080]"
89
+ come,9,11878,.\videos\11878.mp4,59,val,1,-1,25,"[84, 27, 590, 480]"
90
+ come,9,11882,.\videos\11882.mp4,11,train,1,-1,25,"[82, 14, 230, 192]"
ai_model/words/wlasl_125_words_personal_final_processed_data_augmented_seq90.csv ADDED
The diff for this file is too large to render. See raw diff