Skip to content
Snippets Groups Projects
Commit c742ade4 authored by Lucas Philippe's avatar Lucas Philippe
Browse files

ajout TP2 amélioré

parent bba5d3b7
No related branches found
No related tags found
No related merge requests found
Showing
with 1158 additions and 580 deletions
......@@ -16,7 +16,7 @@ class BubbleCursor:
def move(self, x, y):
self.x = x
self.y = y
min_distance = float("inf") # variable valeur infini pour démarrer la recherche de min
min_distance = float("inf")
previous_closest = self.closest
for target in self.targets:
......
......@@ -2,7 +2,7 @@ import csv
import random
import time
from PyQt5.QtGui import QPainter
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget
from BubbleCursor import BubbleCursor
......@@ -10,13 +10,14 @@ from Target import Target
class BubbleWidget(QWidget):
def __init__(self, file_name, exp_setup, number_of_targets):
def __init__(self, file_name, exp_setup, number_of_targets, technique_name):
super().__init__()
self.exp_setup = exp_setup
self.targets = []
self.setMouseTracking(True)
self.start_time = None
self.errors = 0
self.technique_name = technique_name
# Chargement du fichier csv
with open(file_name) as csvfile:
......@@ -37,6 +38,9 @@ class BubbleWidget(QWidget):
self.cursor.paint(painter)
for target in self.targets:
target.paint(painter)
painter.setPen(QColor("black"))
status_text = f"Technique: {self.technique_name}, Cible: {self.target_number}/15, Configuration: {self.config_number}/9, Répétition: {self.repeat_number}/{self.total_repeats}"
painter.drawText(10, 20, status_text)
def mouseMoveEvent(self, event):
self.cursor.move(event.x(), event.y())
......@@ -55,9 +59,17 @@ class BubbleWidget(QWidget):
self.errors = 0
self.start_time = None
def set_status(self, target_number, config_number, repeat_number, total_repeats):
self.target_number = target_number
self.config_number = config_number
self.repeat_number = repeat_number
self.total_repeats = total_repeats
def mousePressEvent(self, event):
if self.cursor.closest is not None:
if self.cursor.closest.click_cible():
self.errors = 0
self.target_number += 1
self.printLog()
if len(self.target_to_select) > 0:
self.selectRandomTarget()
......@@ -65,3 +77,6 @@ class BubbleWidget(QWidget):
self.exp_setup.next_experience()
else:
self.errors += 1
self.set_status(self.target_number, self.config_number, self.repeat_number,
self.total_repeats)
self.update()
......@@ -2,20 +2,21 @@ import csv
import random
import time
from PyQt5.QtGui import QPainter
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget
from NormalCursor import NormalCursor
from Target import Target
class NormalWidget(QWidget):
def __init__(self, file_name, exp_setup, number_of_targets):
def __init__(self, file_name, exp_setup, number_of_targets, technique_name):
super().__init__()
self.targets = []
self.setMouseTracking(True)
self.start_time = None
self.exp_setup = exp_setup
self.errors = 0
self.technique_name = technique_name
# Chargement du fichier csv
with open(file_name) as csvfile:
......@@ -35,7 +36,15 @@ class NormalWidget(QWidget):
painter = QPainter(self)
for target in self.targets:
target.paint(painter)
painter.setPen(QColor("black"))
status_text = f"Technique: {self.technique_name}, Cible: {self.target_number}/15, Configuration: {self.config_number}/9, Répétition: {self.repeat_number}/{self.total_repeats}"
painter.drawText(10, 20, status_text)
def set_status(self, target_number, config_number, repeat_number, total_repeats):
self.target_number = target_number
self.config_number = config_number
self.repeat_number = repeat_number
self.total_repeats = total_repeats
def mouseMoveEvent(self, event):
self.cursor.move(event.x(), event.y())
self.update()
......@@ -58,13 +67,16 @@ class NormalWidget(QWidget):
if self.cursor.closest is not None and self.cursor.closest.toSelect:
distance = ((event.x() - self.cursor.closest.x) ** 2 + (event.y() - self.cursor.closest.y) ** 2) ** 0.5
if distance <= self.cursor.closest.size / 2:
if self.cursor.closest.click_cible():
self.printLog()
if len(self.target_to_select) > 0:
self.selectRandomTarget()
else:
self.exp_setup.next_experience()
self.target_number += 1
self.printLog()
self.cursor.closest.toSelect = False
self.cursor.closest = None
if len(self.target_to_select) > 0:
self.selectRandomTarget()
else:
self.errors += 1
self.exp_setup.next_experience()
else:
self.errors += 1
\ No newline at end of file
self.errors += 1
self.set_status(self.target_number, self.config_number, self.repeat_number, self.total_repeats)
self.update()
import csv, random, time
from PyQt5.QtGui import QPainter
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget
from Target import Target
from RopeCursor import RopeCursor
class RopeWidget(QWidget):
def __init__(self, file_name, exp_setup, number_of_targets):
def __init__(self, file_name, exp_setup, number_of_targets, technique_name):
super().__init__()
self.exp_setup = exp_setup
self.targets = []
self.setMouseTracking(True)
self.start_time = None
self.errors = 0
self.technique_name = technique_name
# Chargement du fichier csv
with open(file_name) as csvfile:
......@@ -32,6 +33,15 @@ class RopeWidget(QWidget):
self.cursor.paint(painter)
for target in self.targets:
target.paint(painter)
painter.setPen(QColor("black"))
status_text = f"Technique: {self.technique_name}, Cible: {self.target_number}/15, Configuration: {self.config_number}/9, Répétition: {self.repeat_number}/{self.total_repeats}"
painter.drawText(10, 20, status_text)
def set_status(self, target_number, config_number, repeat_number, total_repeats):
self.target_number = target_number
self.config_number = config_number
self.repeat_number = repeat_number
self.total_repeats = total_repeats
def mouseMoveEvent(self, event):
self.cursor.move(event.x(), event.y())
......@@ -53,6 +63,8 @@ class RopeWidget(QWidget):
def mousePressEvent(self, event):
if self.cursor.closest is not None:
if self.cursor.closest.click_cible():
self.errors = 0
self.target_number += 1
self.printLog()
if len(self.target_to_select) > 0:
self.selectRandomTarget()
......@@ -60,3 +72,6 @@ class RopeWidget(QWidget):
self.exp_setup.next_experience()
else:
self.errors += 1
self.set_status(self.target_number, self.config_number, self.repeat_number,
self.total_repeats)
self.update()
......@@ -7,14 +7,14 @@ from PyQt5.QtWidgets import QDialog, QLabel, QLineEdit, QComboBox, QGridLayout,
from Experience import Experience
from FileDisplayWidget import FileDisplayWidget
DIR_PATH = "experience/generated_exp/"
DIR_PATH = "generated_exp/"
TARGETS_PER_EXPERIENCE = 15
class ExpSetup(QDialog):
def __init__(self, window):
super().__init__()
self.file_name = 'experience/data/response.csv'
self.file_name = 'data/response.csv'
self.current_ordonnance = None
self.ordonnance = None
self.window = window
......@@ -68,9 +68,8 @@ class ExpSetup(QDialog):
self.init_ordonnance()
self.next_experience()
def create_experience(self, experience, density, target_size):
def create_experience(self, experience, density, target_size, technique_name):
if experience not in Experience:
# Error
print('Aucune expérience selectionné')
return None
......@@ -79,7 +78,7 @@ class ExpSetup(QDialog):
file_name = "src_d_" + density + "_s_" + target_size + ".csv"
file_path = DIR_PATH + file_name
return experience.create_widget(file_path, self, TARGETS_PER_EXPERIENCE)
return experience.create_widget(file_path, self, TARGETS_PER_EXPERIENCE, technique_name)
def start_experience(self, widget):
if widget is not None:
......@@ -95,25 +94,32 @@ class ExpSetup(QDialog):
density_list = [30, 60, 90]
size_list = [9, 12, 18]
# Répéter la création des widgets pour chaque expérience en fonction du nombre de répétitions
for _ in range(self.repeats): # Répéter pour le nombre total de répétitions
for _ in range(self.repeats):
for experience in experience_ordered:
for density in density_list:
for size in size_list:
widget = self.create_experience(experience, density, size)
widget = self.create_experience(experience, density, size, experience.name)
self.ordonnance.append((widget, experience, density, size))
def next_experience(self):
self.current_target_number = 1
self.current_ordonnance += 1
total_experiences_per_repeat = len(Experience) * len([30, 60, 90]) * len([9, 12, 18])
if self.current_ordonnance >= len(self.ordonnance):
self.display_data()
return
if self.current_ordonnance % (len(self.ordonnance) / self.repeats) == 0:
if self.current_ordonnance % total_experiences_per_repeat == 0 and self.current_ordonnance != 0:
self.current_repeat_series += 1
widget = self.ordonnance[self.current_ordonnance][0]
self.current_configuration_number = (self.current_ordonnance % 9) + 1
self.current_repeat_number = (self.current_ordonnance // total_experiences_per_repeat) + 1
widget, experience, density, size = self.ordonnance[self.current_ordonnance]
widget.set_status(self.current_repeat_series, self.current_configuration_number, self.current_repeat_number,
self.repeats)
self.start_experience(widget)
def add_line_to_response(self, time, error):
......
......@@ -9,13 +9,13 @@ class Experience(Enum):
ROPE = 2
NORMAL = 3
def create_widget(self, file_path, exp_setup, number_of_targets):
def create_widget(self, file_path, exp_setup, number_of_targets, technique_name):
if self.value == Experience.BUBBLE.value:
widget = BubbleWidget(file_path, exp_setup, number_of_targets)
widget = BubbleWidget(file_path, exp_setup, number_of_targets, technique_name)
elif self.value == Experience.ROPE.value:
widget = RopeWidget(file_path, exp_setup, number_of_targets)
widget = RopeWidget(file_path, exp_setup, number_of_targets, technique_name)
elif self.value == Experience.NORMAL.value:
widget = NormalWidget(file_path, exp_setup, number_of_targets)
widget = NormalWidget(file_path, exp_setup, number_of_targets, technique_name)
else:
print('Aucune expérience selectionnée')
widget = None
......
......@@ -19,8 +19,6 @@ def generate_targets(num_targets, max_target_size, min_spacing):
if not all_targets:
all_targets.append(target)
else:
# cf. Theoreme de Pythagore
# Prendre la distance avec le cercle et pas le centre
min_distance = min([(((x - t[0]) ** 2 + (y - t[1]) ** 2) ** 0.5) - max_target_size/2 for t in all_targets])
if min_distance >= min_spacing:
all_targets.append(target)
......
This diff is collapsed.
666,638,12
1,172,12
864,57,12
8,125,12
162,369,12
796,19,12
677,424,12
312,9,12
558,732,12
674,128,12
973,467,12
592,150,12
245,148,12
425,561,12
687,794,12
14,652,12
607,52,12
295,440,12
571,375,12
769,588,12
412,625,12
857,611,12
191,673,12
648,702,12
445,344,12
218,338,12
951,523,12
542,229,12
851,671,12
518,383,12
846,461,12
269,46,12
705,287,12
618,790,12
347,311,12
403,474,12
74,60,12
688,678,12
813,643,12
45,529,12
16,299,12
995,619,12
397,307,12
187,498,12
551,637,12
700,346,12
525,209,12
280,17,12
403,713,12
282,244,12
209,652,12
96,611,12
935,176,12
294,585,12
797,686,12
213,463,12
915,346,12
613,488,12
587,553,12
999,390,12
666,638,18
1,172,18
864,57,18
8,125,18
162,369,18
796,19,18
677,424,18
312,9,18
558,732,18
674,128,18
973,467,18
592,150,18
245,148,18
425,561,18
687,794,18
14,652,18
607,52,18
295,440,18
571,375,18
769,588,18
412,625,18
857,611,18
191,673,18
648,702,18
445,344,18
218,338,18
951,523,18
542,229,18
851,671,18
518,383,18
846,461,18
269,46,18
705,287,18
618,790,18
347,311,18
403,474,18
74,60,18
688,678,18
813,643,18
45,529,18
16,299,18
995,619,18
397,307,18
187,498,18
551,637,18
700,346,18
525,209,18
280,17,18
403,713,18
282,244,18
209,652,18
96,611,18
935,176,18
294,585,18
797,686,18
213,463,18
915,346,18
613,488,18
587,553,18
999,390,18
666,638,9
1,172,9
864,57,9
8,125,9
162,369,9
796,19,9
677,424,9
312,9,9
558,732,9
674,128,9
973,467,9
592,150,9
245,148,9
425,561,9
687,794,9
14,652,9
607,52,9
295,440,9
571,375,9
769,588,9
412,625,9
857,611,9
191,673,9
648,702,9
445,344,9
218,338,9
951,523,9
542,229,9
851,671,9
518,383,9
846,461,9
269,46,9
705,287,9
618,790,9
347,311,9
403,474,9
74,60,9
688,678,9
813,643,9
45,529,9
16,299,9
995,619,9
397,307,9
187,498,9
551,637,9
700,346,9
525,209,9
280,17,9
403,713,9
282,244,9
209,652,9
96,611,9
935,176,9
294,585,9
797,686,9
213,463,9
915,346,9
613,488,9
587,553,9
999,390,9
666,638,12
1,172,12
864,57,12
8,125,12
162,369,12
796,19,12
677,424,12
312,9,12
558,732,12
674,128,12
973,467,12
592,150,12
245,148,12
425,561,12
687,794,12
14,652,12
607,52,12
295,440,12
571,375,12
769,588,12
412,625,12
857,611,12
191,673,12
648,702,12
445,344,12
218,338,12
951,523,12
542,229,12
851,671,12
518,383,12
670,3,12
304,665,12
562,112,12
198,128,12
363,337,12
583,344,12
168,558,12
715,629,12
697,660,12
435,149,12
239,82,12
46,69,12
380,685,12
964,5,12
620,136,12
351,471,12
528,536,12
501,75,12
910,317,12
223,724,12
563,641,12
791,244,12
987,77,12
907,244,12
22,538,12
782,353,12
235,793,12
751,447,12
515,258,12
418,538,12
846,461,12
269,46,12
705,287,12
618,790,12
347,311,12
403,474,12
74,60,12
688,678,12
813,643,12
45,529,12
16,299,12
995,619,12
397,307,12
187,498,12
551,637,12
700,346,12
525,209,12
280,17,12
403,713,12
282,244,12
209,652,12
96,611,12
935,176,12
294,585,12
797,686,12
213,463,12
915,346,12
613,488,12
587,553,12
999,390,12
885,307,12
267,456,12
796,59,12
406,93,12
673,464,12
365,751,12
95,29,12
24,10,12
240,512,12
731,783,12
356,138,12
745,493,12
270,703,12
344,608,12
148,319,12
462,347,12
501,230,12
541,6,12
238,572,12
177,784,12
212,435,12
278,739,12
433,343,12
308,717,12
392,541,12
802,173,12
292,758,12
990,753,12
385,461,12
989,280,12
666,638,18
1,172,18
864,57,18
8,125,18
162,369,18
796,19,18
677,424,18
312,9,18
558,732,18
674,128,18
973,467,18
592,150,18
245,148,18
425,561,18
687,794,18
14,652,18
607,52,18
295,440,18
571,375,18
769,588,18
412,625,18
857,611,18
191,673,18
648,702,18
445,344,18
218,338,18
951,523,18
542,229,18
851,671,18
518,383,18
670,3,18
304,665,18
562,112,18
198,128,18
363,337,18
583,344,18
168,558,18
715,629,18
697,660,18
435,149,18
239,82,18
46,69,18
380,685,18
964,5,18
620,136,18
351,471,18
528,536,18
501,75,18
910,317,18
223,724,18
563,641,18
791,244,18
987,77,18
907,244,18
22,538,18
782,353,18
235,793,18
751,447,18
515,258,18
418,538,18
846,461,18
269,46,18
705,287,18
618,790,18
347,311,18
403,474,18
74,60,18
688,678,18
813,643,18
45,529,18
16,299,18
995,619,18
397,307,18
187,498,18
551,637,18
700,346,18
525,209,18
280,17,18
403,713,18
282,244,18
209,652,18
96,611,18
935,176,18
294,585,18
797,686,18
213,463,18
915,346,18
613,488,18
587,553,18
999,390,18
885,307,18
267,456,18
796,59,18
406,93,18
673,464,18
365,751,18
95,29,18
24,10,18
240,512,18
731,783,18
356,138,18
745,493,18
270,703,18
344,608,18
148,319,18
462,347,18
501,230,18
541,6,18
238,572,18
177,784,18
212,435,18
278,739,18
433,343,18
308,717,18
392,541,18
802,173,18
292,758,18
990,753,18
385,461,18
989,280,18
666,638,9
1,172,9
864,57,9
8,125,9
162,369,9
796,19,9
677,424,9
312,9,9
558,732,9
674,128,9
973,467,9
592,150,9
245,148,9
425,561,9
687,794,9
14,652,9
607,52,9
295,440,9
571,375,9
769,588,9
412,625,9
857,611,9
191,673,9
648,702,9
445,344,9
218,338,9
951,523,9
542,229,9
851,671,9
518,383,9
670,3,9
304,665,9
562,112,9
198,128,9
363,337,9
583,344,9
168,558,9
715,629,9
697,660,9
435,149,9
239,82,9
46,69,9
380,685,9
964,5,9
620,136,9
351,471,9
528,536,9
501,75,9
910,317,9
223,724,9
563,641,9
791,244,9
987,77,9
907,244,9
22,538,9
782,353,9
235,793,9
751,447,9
515,258,9
418,538,9
846,461,9
269,46,9
705,287,9
618,790,9
347,311,9
403,474,9
74,60,9
688,678,9
813,643,9
45,529,9
16,299,9
995,619,9
397,307,9
187,498,9
551,637,9
700,346,9
525,209,9
280,17,9
403,713,9
282,244,9
209,652,9
96,611,9
935,176,9
294,585,9
797,686,9
213,463,9
915,346,9
613,488,9
587,553,9
999,390,9
885,307,9
267,456,9
796,59,9
406,93,9
673,464,9
365,751,9
95,29,9
24,10,9
240,512,9
731,783,9
356,138,9
745,493,9
270,703,9
344,608,9
148,319,9
462,347,9
501,230,9
541,6,9
238,572,9
177,784,9
212,435,9
278,739,9
433,343,9
308,717,9
392,541,9
802,173,9
292,758,9
990,753,9
385,461,9
989,280,9
666,638,12
1,172,12
864,57,12
8,125,12
162,369,12
796,19,12
677,424,12
312,9,12
558,732,12
674,128,12
973,467,12
592,150,12
245,148,12
425,561,12
687,794,12
14,652,12
607,52,12
295,440,12
571,375,12
769,588,12
412,625,12
857,611,12
191,673,12
648,702,12
445,344,12
218,338,12
951,523,12
542,229,12
851,671,12
518,383,12
670,3,12
304,665,12
562,112,12
198,128,12
363,337,12
583,344,12
168,558,12
715,629,12
697,660,12
435,149,12
239,82,12
46,69,12
380,685,12
964,5,12
620,136,12
351,471,12
528,536,12
501,75,12
910,317,12
223,724,12
563,641,12
791,244,12
987,77,12
907,244,12
22,538,12
782,353,12
235,793,12
751,447,12
515,258,12
418,538,12
643,468,12
471,327,12
789,481,12
48,420,12
364,625,12
296,629,12
201,320,12
159,3,12
414,168,12
873,230,12
481,633,12
357,702,12
815,292,12
393,674,12
411,435,12
646,90,12
439,101,12
691,187,12
101,627,12
411,597,12
671,381,12
977,516,12
302,562,12
383,285,12
109,253,12
37,337,12
826,741,12
583,91,12
846,461,12
269,46,12
705,287,12
618,790,12
347,311,12
403,474,12
74,60,12
688,678,12
813,643,12
45,529,12
16,299,12
995,619,12
397,307,12
187,498,12
551,637,12
700,346,12
525,209,12
280,17,12
403,713,12
282,244,12
209,652,12
96,611,12
935,176,12
294,585,12
797,686,12
213,463,12
915,346,12
613,488,12
587,553,12
999,390,12
885,307,12
267,456,12
796,59,12
406,93,12
673,464,12
365,751,12
95,29,12
24,10,12
240,512,12
731,783,12
356,138,12
745,493,12
270,703,12
344,608,12
148,319,12
462,347,12
501,230,12
541,6,12
238,572,12
177,784,12
212,435,12
278,739,12
433,343,12
308,717,12
392,541,12
802,173,12
292,758,12
990,753,12
385,461,12
989,280,12
936,501,12
535,634,12
820,589,12
274,669,12
860,212,12
939,261,12
133,676,12
639,445,12
793,77,12
968,238,12
767,385,12
502,508,12
849,167,12
345,259,12
293,402,12
654,580,12
319,437,12
261,89,12
31,55,12
282,553,12
860,589,12
532,572,12
372,18,12
84,152,12
59,383,12
144,536,12
775,711,12
218,61,12
666,638,18
1,172,18
864,57,18
8,125,18
162,369,18
796,19,18
677,424,18
312,9,18
558,732,18
674,128,18
973,467,18
592,150,18
245,148,18
425,561,18
687,794,18
14,652,18
607,52,18
295,440,18
571,375,18
769,588,18
412,625,18
857,611,18
191,673,18
648,702,18
445,344,18
218,338,18
951,523,18
542,229,18
851,671,18
518,383,18
670,3,18
304,665,18
562,112,18
198,128,18
363,337,18
583,344,18
168,558,18
715,629,18
697,660,18
435,149,18
239,82,18
46,69,18
380,685,18
964,5,18
620,136,18
351,471,18
528,536,18
501,75,18
910,317,18
223,724,18
563,641,18
791,244,18
987,77,18
907,244,18
22,538,18
782,353,18
235,793,18
751,447,18
515,258,18
418,538,18
643,468,18
471,327,18
789,481,18
48,420,18
364,625,18
296,629,18
201,320,18
159,3,18
414,168,18
873,230,18
481,633,18
357,702,18
815,292,18
393,674,18
411,435,18
646,90,18
439,101,18
691,187,18
101,627,18
411,597,18
671,381,18
977,516,18
302,562,18
383,285,18
109,253,18
37,337,18
826,741,18
583,91,18
846,461,18
269,46,18
705,287,18
618,790,18
347,311,18
403,474,18
74,60,18
688,678,18
813,643,18
45,529,18
16,299,18
995,619,18
397,307,18
187,498,18
551,637,18
700,346,18
525,209,18
280,17,18
403,713,18
282,244,18
209,652,18
96,611,18
935,176,18
294,585,18
797,686,18
213,463,18
915,346,18
613,488,18
587,553,18
999,390,18
885,307,18
267,456,18
796,59,18
406,93,18
673,464,18
365,751,18
95,29,18
24,10,18
240,512,18
731,783,18
356,138,18
745,493,18
270,703,18
344,608,18
148,319,18
462,347,18
501,230,18
541,6,18
238,572,18
177,784,18
212,435,18
278,739,18
433,343,18
308,717,18
392,541,18
802,173,18
292,758,18
990,753,18
385,461,18
989,280,18
936,501,18
535,634,18
820,589,18
274,669,18
860,212,18
939,261,18
133,676,18
639,445,18
793,77,18
968,238,18
767,385,18
502,508,18
849,167,18
345,259,18
293,402,18
654,580,18
319,437,18
261,89,18
31,55,18
282,553,18
860,589,18
532,572,18
372,18,18
84,152,18
59,383,18
144,536,18
775,711,18
218,61,18
666,638,9
1,172,9
864,57,9
8,125,9
162,369,9
796,19,9
677,424,9
312,9,9
558,732,9
674,128,9
973,467,9
592,150,9
245,148,9
425,561,9
687,794,9
14,652,9
607,52,9
295,440,9
571,375,9
769,588,9
412,625,9
857,611,9
191,673,9
648,702,9
445,344,9
218,338,9
951,523,9
542,229,9
851,671,9
518,383,9
670,3,9
304,665,9
562,112,9
198,128,9
363,337,9
583,344,9
168,558,9
715,629,9
697,660,9
435,149,9
239,82,9
46,69,9
380,685,9
964,5,9
620,136,9
351,471,9
528,536,9
501,75,9
910,317,9
223,724,9
563,641,9
791,244,9
987,77,9
907,244,9
22,538,9
782,353,9
235,793,9
751,447,9
515,258,9
418,538,9
643,468,9
471,327,9
789,481,9
48,420,9
364,625,9
296,629,9
201,320,9
159,3,9
414,168,9
873,230,9
481,633,9
357,702,9
815,292,9
393,674,9
411,435,9
646,90,9
439,101,9
691,187,9
101,627,9
411,597,9
671,381,9
977,516,9
302,562,9
383,285,9
109,253,9
37,337,9
826,741,9
583,91,9
846,461,9
269,46,9
705,287,9
618,790,9
347,311,9
403,474,9
74,60,9
688,678,9
813,643,9
45,529,9
16,299,9
995,619,9
397,307,9
187,498,9
551,637,9
700,346,9
525,209,9
280,17,9
403,713,9
282,244,9
209,652,9
96,611,9
935,176,9
294,585,9
797,686,9
213,463,9
915,346,9
613,488,9
587,553,9
999,390,9
885,307,9
267,456,9
796,59,9
406,93,9
673,464,9
365,751,9
95,29,9
24,10,9
240,512,9
731,783,9
356,138,9
745,493,9
270,703,9
344,608,9
148,319,9
462,347,9
501,230,9
541,6,9
238,572,9
177,784,9
212,435,9
278,739,9
433,343,9
308,717,9
392,541,9
802,173,9
292,758,9
990,753,9
385,461,9
989,280,9
936,501,9
535,634,9
820,589,9
274,669,9
860,212,9
939,261,9
133,676,9
639,445,9
793,77,9
968,238,9
767,385,9
502,508,9
849,167,9
345,259,9
293,402,9
654,580,9
319,437,9
261,89,9
31,55,9
282,553,9
860,589,9
532,572,9
372,18,9
84,152,9
59,383,9
144,536,9
775,711,9
218,61,9
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment