Merge lp:~jpakkane/grail/glue-reworking into lp:grail

Proposed by Jussi Pakkanen
Status: Rejected
Rejected by: Chase Douglas
Proposed branch: lp:~jpakkane/grail/glue-reworking
Merge into: lp:grail
Diff against target: 47441 lines (+45627/-1225)
36 files modified
include/grail-bits.h (+2/-0)
include/grail.h (+29/-25)
src/Makefile.am (+0/-7)
src/gestures-drag.c (+0/-135)
src/gestures-pinch.c (+0/-131)
src/gestures-rotate.c (+0/-130)
src/gestures-tapping.c (+0/-100)
src/gestures-touch.c (+0/-98)
src/grail-api.c (+7/-180)
src/grail-bits.c (+10/-0)
src/grail-frame.c (+98/-3)
src/grail-gestures.c (+0/-223)
src/grail-gestures.h (+0/-115)
src/grail-impl.h (+30/-0)
src/grail-init.c (+16/-3)
src/grail-inserter.c (+0/-33)
src/grail-inserter.h (+31/-2)
src/grail-legacy.c (+105/-0)
src/grail-recognizer.c (+344/-15)
src/grail-recognizer.h (+89/-5)
test/Makefile.am (+3/-0)
test/check-gestures.c (+230/-0)
test/check-grail.c (+3/-1)
test/check-mapping.c (+4/-2)
test/check-transform.c (+4/-2)
test/io/functional/drag-1.evemu (+3988/-0)
test/io/functional/drag-2.evemu (+3849/-0)
test/io/functional/drag-3.evemu (+16278/-0)
test/io/functional/drag-4.evemu (+8032/-0)
test/io/functional/hold-1.evemu (+1375/-0)
test/io/functional/pinch-2.evemu (+2457/-0)
test/io/functional/pinch-3.evemu (+4971/-0)
test/io/functional/rotate-2.evemu (+3073/-0)
test/io/functional/tap-1.evemu (+94/-0)
test/io/functional/tap-4.evemu (+388/-0)
tools/grail-gesture.c (+117/-15)
To merge this branch: bzr merge lp:~jpakkane/grail/glue-reworking
Reviewer Review Type Date Requested Status
Chase Douglas (community) Disapprove
Review via email: mp+63820@code.launchpad.net

Description of the change

This branch has Henrik's changes merged together with Grail 2.0.0. No testing has yet been done, just eyeballing and basic build.

Thus not merge ready yet, but put up for review and analysis.

To post a comment you must log in.
lp:~jpakkane/grail/glue-reworking updated
169. By Jussi Pakkanen on 2011-06-14

Unit tests now work if the build directory is different from the source directory.

170. By Jussi Pakkanen on 2011-06-14

Take verbosity from env var.

171. By Jussi Pakkanen on 2011-06-14

Renamed variables now that we live IN THE FUTURE and can use over 8 characters per name.

Jussi Pakkanen (jpakkane) wrote :

The reason the unit tests fail:

drag4 and rotate2: Grail detects something else in addition to the main event.
pinch2 and 3: Grail does not detect pinch even though there definitely is one. This is serious.

lp:~jpakkane/grail/glue-reworking updated
172. By Jussi Pakkanen on 2011-06-14

Textual description on failed unit tests.

Jussi Pakkanen (jpakkane) wrote :

Looking at the traces in event viewer gives the following detail:

Rotate2 is a rotation around one finger. This should probably not do anything else. Maybe it also produces drag?

One of the sub-events in drag 4 looks quite a lot like a pinch to me.

lp:~jpakkane/grail/glue-reworking updated
173. By Jussi Pakkanen on 2011-07-22

Changed drag4 test case.

174. By Jussi Pakkanen on 2011-07-22

Changed test for rotate-2.

Jussi Pakkanen (jpakkane) wrote :

I fixed the two cases where there are extraneous (drag) events by changing the test cases.

The remaining two are cases where the expected gesture is not detected even though it should be. These are bugs caused by the branch merge and need proper fixing.

lp:~jpakkane/grail/glue-reworking updated
175. By Jussi Pakkanen on 2011-08-17

Merged trunk changes.

176. By Jussi Pakkanen on 2011-08-17

Process test cases faster.

Jussi Pakkanen (jpakkane) wrote :

Merged trunk changes and made the test cases use the new fast forward feature.

Chase Douglas (chasedouglas) wrote :

We've skipped this grail implementation and have moved on to grail v3. I'm closing this proposal out.

review: Disapprove

Unmerged revisions

176. By Jussi Pakkanen on 2011-08-17

Process test cases faster.

175. By Jussi Pakkanen on 2011-08-17

Merged trunk changes.

174. By Jussi Pakkanen on 2011-07-22

Changed test for rotate-2.

173. By Jussi Pakkanen on 2011-07-22

Changed drag4 test case.

172. By Jussi Pakkanen on 2011-06-14

Textual description on failed unit tests.

171. By Jussi Pakkanen on 2011-06-14

Renamed variables now that we live IN THE FUTURE and can use over 8 characters per name.

170. By Jussi Pakkanen on 2011-06-14

Take verbosity from env var.

169. By Jussi Pakkanen on 2011-06-14

Unit tests now work if the build directory is different from the source directory.

168. By Jussi Pakkanen on 2011-06-08

Merged 2.0.0 release.

167. By Jussi Pakkanen on 2011-06-01

Merged trunk changes to this branch. Some tests fail still and slot_center might be missing some work.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/grail-bits.h'
2--- include/grail-bits.h 2011-05-27 09:22:36 +0000
3+++ include/grail-bits.h 2011-08-17 12:41:50 +0000
4@@ -78,6 +78,8 @@
5 void GRAIL_PUBLIC grail_mask_clear_mask(grail_mask_t *a, const grail_mask_t *b,
6 int bytes);
7
8+int GRAIL_PUBLIC grail_mask_inner(const grail_mask_t *a, const grail_mask_t *b,
9+ int bytes);
10 int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes);
11 int GRAIL_PUBLIC grail_mask_get_first(const grail_mask_t *mask, int bytes);
12 int GRAIL_PUBLIC grail_mask_get_next(int i, const grail_mask_t *mask,
13
14=== modified file 'include/grail.h'
15--- include/grail.h 2011-05-18 16:41:41 +0000
16+++ include/grail.h 2011-08-17 12:41:50 +0000
17@@ -169,6 +169,11 @@
18 * @drop_y_ms: vertical expect timeout (ms)
19 * @drop_scale_ms: scaling expect timeout (ms)
20 * @drop_angle_ms: rotation expect timeout (ms)
21+<<<<<<< TREE
22+ * @pivot_unbound: when true, the pivot is not bound to the contact area
23+ * @tap_time_ms: maximum tap time (ms)
24+=======
25+>>>>>>> MERGE-SOURCE
26 *
27 * The parameters are used to tune the behavior of the gesture recognition.
28 *
29@@ -189,6 +194,8 @@
30 float drop_y_ms;
31 float drop_scale_ms;
32 float drop_angle_ms;
33+ int pivot_unbound;
34+ float tap_time_ms;
35 };
36
37 /**
38@@ -229,6 +236,8 @@
39 * @velocity: current center velocity (surface units per second)
40 * @radius: gesture radius from center (surface units)
41 * @transform: the transformation matrix of the gesture
42+ * @moveness: fraction of center movement attributed to drag motion
43+ * @pivot: current center of rotate and scale (surface units)
44 * @rotation_center: current instant center of rotation (surface units)
45 * @drag: accumulated transformation displacement (surface units)
46 * @scale: accumulated scale (dimensionless)
47@@ -256,6 +265,7 @@
48 int num_touches;
49 const struct utouch_contact **touches;
50 grail_time_t start_time;
51+ struct grail_coord start_center;
52 unsigned int expect_mask;
53 unsigned int active_mask;
54 struct grail_coord center;
55@@ -352,21 +362,6 @@
56 };
57
58 /**
59- * grail_open - open a grail device
60- * @ge: the grail device to open
61- * @fd: file descriptor of the kernel device
62- *
63- * Initialize the internal grail structures and configure it by reading the
64- * protocol capabilities through the file descriptor.
65- *
66- * The callbacks, parameters and priv pointer should be set prior to this
67- * call.
68- *
69- * Returns zero on success, negative error number otherwise.
70- */
71-int GRAIL_PUBLIC grail_open(struct grail *ge, int fd);
72-
73-/**
74 * grail_idle - check state of kernel device
75 * @ge: the grail device in use
76 * @fd: file descriptor of the kernel device
77@@ -394,16 +389,6 @@
78 int GRAIL_PUBLIC grail_pull(struct grail *ge, int fd);
79
80 /**
81- * grail_close - close the grail device
82- * @ge: the grail device to close
83- * @fd: file descriptor of the kernel device
84- *
85- * Deallocates all memory associated with grail, and clears the grail
86- * structure.
87- */
88-void GRAIL_PUBLIC grail_close(struct grail *ge, int fd);
89-
90-/**
91 * grail_set_bbox - set the grail unit bounding box
92 * @ge: the grail device in use
93 * @min: the minimum (lower-left) corner of the bounding box
94@@ -447,6 +432,23 @@
95 const struct utouch_frame GRAIL_PUBLIC *
96 grail_get_contact_frame(const struct grail *ge);
97
98+/**
99+ * grail_get_gesture_frame - get current gesture frame
100+ * @ge: the grail device in use
101+ *
102+ * Return the gesture frame currently being processed. If called from
103+ * within a gesture callback, it is guaranteed to return the frame
104+ * corresponding to the gesture.
105+ *
106+ * The returned pointer can be NULL if no input has yet been extracted
107+ * through the grail instance.
108+ *
109+ * The frame pointer is ABI agnostic, owned by the grail instance, and
110+ * has grail scope.
111+ */
112+const struct grail_frame GRAIL_PUBLIC *
113+grail_get_gesture_frame(const struct grail *ge);
114+
115 #ifndef GRAIL_NO_LEGACY_API
116
117 struct grail_contact {
118@@ -461,6 +463,8 @@
119 float pressure;
120 };
121
122+int GRAIL_PUBLIC grail_open(struct grail *ge, int fd);
123+void GRAIL_PUBLIC grail_close(struct grail *ge, int fd);
124 void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage);
125
126 int GRAIL_PUBLIC grail_get_contacts(const struct grail *ge,
127
128=== modified file 'src/Makefile.am'
129--- src/Makefile.am 2011-04-28 16:53:41 +0000
130+++ src/Makefile.am 2011-08-17 12:41:50 +0000
131@@ -14,13 +14,6 @@
132 grail-bits.c \
133 grail-inserter.c \
134 grail-inserter.h \
135- grail-gestures.c \
136- grail-gestures.h \
137- gestures-touch.c \
138- gestures-drag.c \
139- gestures-pinch.c \
140- gestures-rotate.c \
141- gestures-tapping.c \
142 grail-recognizer.c \
143 grail-recognizer.h \
144 grail-event.c \
145
146=== removed file 'src/gestures-drag.c'
147--- src/gestures-drag.c 2011-04-28 16:53:57 +0000
148+++ src/gestures-drag.c 1970-01-01 00:00:00 +0000
149@@ -1,135 +0,0 @@
150-/*****************************************************************************
151- *
152- * grail - Gesture Recognition And Instantiation Library
153- *
154- * Copyright (C) 2010-2011 Canonical Ltd.
155- *
156- * This program is free software: you can redistribute it and/or modify it
157- * under the terms of the GNU General Public License as published by the
158- * Free Software Foundation, either version 3 of the License, or (at your
159- * option) any later version.
160- *
161- * This program is distributed in the hope that it will be useful, but
162- * WITHOUT ANY WARRANTY; without even the implied warranty of
163- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
164- * General Public License for more details.
165- *
166- * You should have received a copy of the GNU General Public License along
167- * with this program. If not, see <http://www.gnu.org/licenses/>.
168- *
169- ****************************************************************************/
170-
171-#include "grail-recognizer.h"
172-#include <math.h>
173-#include <stdio.h>
174-
175-static const int getype[DIM_TOUCH + 1] = {
176- -1,
177- GRAIL_TYPE_DRAG1,
178- GRAIL_TYPE_DRAG2,
179- GRAIL_TYPE_DRAG3,
180- GRAIL_TYPE_DRAG4,
181- GRAIL_TYPE_DRAG5,
182-};
183-
184-static void set_props(const struct gesture_inserter *gin,
185- struct combo_model *s, const struct move_model *m,
186- const struct utouch_frame *frame)
187-{
188- if (m->single) {
189- s->prop[GRAIL_PROP_DRAG_DX] = m->fm[FM_X].raw_delta;
190- s->prop[GRAIL_PROP_DRAG_DY] = m->fm[FM_Y].raw_delta;
191- } else {
192- s->prop[GRAIL_PROP_DRAG_DX] = m->fm[FM_X].action_delta;
193- s->prop[GRAIL_PROP_DRAG_DY] = m->fm[FM_Y].action_delta;
194- }
195- s->prop[GRAIL_PROP_DRAG_VX] = m->fm[FM_X].velocity;
196- s->prop[GRAIL_PROP_DRAG_VY] = m->fm[FM_Y].velocity;
197- s->prop[GRAIL_PROP_DRAG_X] = m->fm[FM_X].value;
198- s->prop[GRAIL_PROP_DRAG_Y] = m->fm[FM_Y].value;
199- s->nprop = 6;
200- s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
201-}
202-
203-static const int fm_mask = 0x03;
204-
205-int gru_drag(struct grail *ge,
206- const struct utouch_frame *frame)
207-{
208- struct gesture_recognizer *gru = ge->gru;
209- struct combo_model *state = &gru->drag;
210- struct move_model *move = &gru->move;
211- int mask = state->active ? (move->active & fm_mask) : fm_mask;
212- if (!move->multi && !move->single) {
213- if (state->active) {
214- gru_end(ge, state->gid, move,
215- state->prop, state->nprop);
216- state->active = 0;
217- }
218- }
219- if ((move->timeout & fm_mask) == fm_mask) {
220- if (state->active) {
221- gin_gid_timeout(ge, state->gid);
222- }
223- }
224- if (!state->active) {
225- int type = getype[move->ntouch];
226- if (type < 0)
227- return 0;
228- state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
229- state->active = 1;
230- }
231- if (!(move->tickle & mask))
232- return 0;
233- if (!(move->active & fm_mask))
234- return 0;
235- set_props(ge->gin, state, move, frame);
236- gru_event(ge, state->gid, move, state->prop, state->nprop);
237- return 1;
238-}
239-
240-int gru_windrag(struct grail *ge,
241- const struct utouch_frame *frame)
242-{
243- struct gesture_recognizer *gru = ge->gru;
244- struct combo_model *state = &gru->windrag;
245- struct move_model *move = &gru->move;
246- int mask = state->active ? (move->active & fm_mask) : fm_mask;
247- if (!move->multi && !move->single) {
248- if (state->active && out_of_bounds(state, move)) {
249- gru_end(ge, state->gid, move,
250- state->prop, state->nprop);
251- state->active = 0;
252- }
253- }
254- if ((move->timeout & fm_mask) == fm_mask) {
255- if (state->active) {
256- gin_gid_timeout(ge, state->gid);
257- }
258- }
259- if (!state->active) {
260- if (move->ntouch == 4) {
261- state->gid = gin_gid_begin(ge, GRAIL_TYPE_MDRAG,
262- PRIO_META, frame);
263- state->mintouch = 1;
264- state->maxtouch = 4;
265- state->active = 1;
266- } else if (move->ntouch == 3) {
267- state->gid = gin_gid_begin(ge, GRAIL_TYPE_EDRAG,
268- PRIO_ENV, frame);
269- state->mintouch = 1;
270- state->maxtouch = 3;
271- state->active = 1;
272- } else {
273- return 0;
274- }
275- }
276- if (!(move->tickle & mask))
277- return 0;
278- if (!(move->active & fm_mask))
279- return 0;
280- set_props(ge->gin, state, move, frame);
281- gru_event(ge, state->gid, move, state->prop, state->nprop);
282- return 1;
283-}
284-
285
286=== removed file 'src/gestures-pinch.c'
287--- src/gestures-pinch.c 2011-06-06 14:42:39 +0000
288+++ src/gestures-pinch.c 1970-01-01 00:00:00 +0000
289@@ -1,131 +0,0 @@
290-/*****************************************************************************
291- *
292- * grail - Gesture Recognition And Instantiation Library
293- *
294- * Copyright (C) 2010-2011 Canonical Ltd.
295- *
296- * This program is free software: you can redistribute it and/or modify it
297- * under the terms of the GNU General Public License as published by the
298- * Free Software Foundation, either version 3 of the License, or (at your
299- * option) any later version.
300- *
301- * This program is distributed in the hope that it will be useful, but
302- * WITHOUT ANY WARRANTY; without even the implied warranty of
303- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
304- * General Public License for more details.
305- *
306- * You should have received a copy of the GNU General Public License along
307- * with this program. If not, see <http://www.gnu.org/licenses/>.
308- *
309- ****************************************************************************/
310-
311-#include "grail-recognizer.h"
312-#include <math.h>
313-#include <stdio.h>
314-
315-static const int getype[DIM_TOUCH + 1] = {
316- 0,
317- 0,
318- GRAIL_TYPE_PINCH2,
319- GRAIL_TYPE_PINCH3,
320- GRAIL_TYPE_PINCH4,
321- GRAIL_TYPE_PINCH5,
322-};
323-
324-static const int fm_mask = 0x04;
325-
326-static void set_props(const struct gesture_inserter *gin,
327- struct combo_model *s,
328- const struct move_model *m,
329- const struct utouch_frame *frame)
330-{
331- s->prop[GRAIL_PROP_PINCH_DR] = m->fm[FM_R].action_delta;
332- s->prop[GRAIL_PROP_PINCH_VR] = m->fm[FM_R].velocity;
333- s->prop[GRAIL_PROP_PINCH_R] = m->fm[FM_R].value;
334- s->prop[GRAIL_PROP_PINCH_X] = m->fm[FM_X].value;
335- s->prop[GRAIL_PROP_PINCH_Y] = m->fm[FM_Y].value;
336- s->nprop = 5;
337- s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
338-}
339-
340-int gru_pinch(struct grail *ge,
341- const struct utouch_frame *frame)
342-{
343- struct gesture_recognizer *gru = ge->gru;
344- struct combo_model *state = &gru->pinch;
345- struct move_model *move = &gru->move;
346- int mask = state->active ? (move->active & fm_mask) : fm_mask;
347- if (!move->multi && !move->single) {
348- if (state->active) {
349- gru_end(ge, state->gid, move,
350- state->prop, state->nprop);
351- state->active = 0;
352- }
353- return 0;
354- }
355- if ((move->timeout & fm_mask) == fm_mask) {
356- if (state->active) {
357- gin_gid_timeout(ge, state->gid);
358- }
359- }
360- if (!(move->tickle & mask))
361- return 0;
362- if (!state->active) {
363- int type = getype[move->ntouch];
364- if (!type)
365- return 0;
366- state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
367- state->active = 1;
368- }
369- if (!(move->active & fm_mask))
370- return 0;
371- set_props(ge->gin, state, move, frame);
372- gru_event(ge, state->gid, move, state->prop, state->nprop);
373- return 1;
374-}
375-
376-int gru_winpinch(struct grail *ge,
377- const struct utouch_frame *frame)
378-{
379- struct gesture_recognizer *gru = ge->gru;
380- struct combo_model *state = &gru->winpinch;
381- struct move_model *move = &gru->move;
382- int mask = state->active ? (move->active & fm_mask) : fm_mask;
383- if (!move->multi) {
384- if (state->active && out_of_bounds(state, move)) {
385- gru_end(ge, state->gid, move,
386- state->prop, state->nprop);
387- state->active = 0;
388- }
389- return 0;
390- }
391- if ((move->timeout & fm_mask) == fm_mask) {
392- if (state->active) {
393- gin_gid_timeout(ge, state->gid);
394- }
395- }
396- if (!(move->tickle & mask))
397- return 0;
398- if (!state->active) {
399- if (move->ntouch == 4) {
400- state->gid = gin_gid_begin(ge, GRAIL_TYPE_MPINCH,
401- PRIO_META, frame);
402- state->mintouch = 2;
403- state->maxtouch = 4;
404- state->active = 1;
405- } else if (move->ntouch == 3) {
406- state->gid = gin_gid_begin(ge, GRAIL_TYPE_EPINCH,
407- PRIO_ENV, frame);
408- state->mintouch = 2;
409- state->maxtouch = 3;
410- state->active = 1;
411- } else {
412- return 0;
413- }
414- }
415- if (!(move->active & fm_mask))
416- return 0;
417- set_props(ge->gin, state, move, frame);
418- gru_event(ge, state->gid, move, state->prop, state->nprop);
419- return 1;
420-}
421
422=== removed file 'src/gestures-rotate.c'
423--- src/gestures-rotate.c 2011-06-03 12:54:23 +0000
424+++ src/gestures-rotate.c 1970-01-01 00:00:00 +0000
425@@ -1,130 +0,0 @@
426-/*****************************************************************************
427- *
428- * grail - Gesture Recognition And Instantiation Library
429- *
430- * Copyright (C) 2010-2011 Canonical Ltd.
431- *
432- * This program is free software: you can redistribute it and/or modify it
433- * under the terms of the GNU General Public License as published by the
434- * Free Software Foundation, either version 3 of the License, or (at your
435- * option) any later version.
436- *
437- * This program is distributed in the hope that it will be useful, but
438- * WITHOUT ANY WARRANTY; without even the implied warranty of
439- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
440- * General Public License for more details.
441- *
442- * You should have received a copy of the GNU General Public License along
443- * with this program. If not, see <http://www.gnu.org/licenses/>.
444- *
445- ****************************************************************************/
446-
447-#include "grail-recognizer.h"
448-#include <math.h>
449-#include <stdio.h>
450-
451-static const int getype[DIM_TOUCH + 1] = {
452- 0,
453- 0,
454- GRAIL_TYPE_ROTATE2,
455- GRAIL_TYPE_ROTATE3,
456- GRAIL_TYPE_ROTATE4,
457- GRAIL_TYPE_ROTATE5,
458-};
459-
460-static const int fm_mask = 0x08;
461-
462-static void set_props(const struct gesture_inserter *gin,
463- struct combo_model *s, const struct move_model *m,
464- const struct utouch_frame *frame)
465-{
466- s->prop[GRAIL_PROP_ROTATE_DA] = m->fm[FM_A].action_delta;
467- s->prop[GRAIL_PROP_ROTATE_VA] = m->fm[FM_A].velocity;
468- s->prop[GRAIL_PROP_ROTATE_A] = m->fm[FM_A].value;
469- s->prop[GRAIL_PROP_ROTATE_X] = m->fm[FM_X].value;
470- s->prop[GRAIL_PROP_ROTATE_Y] = m->fm[FM_Y].value;
471- s->nprop = 5;
472- s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
473-}
474-
475-int gru_rotate(struct grail *ge,
476- const struct utouch_frame *frame)
477-{
478- struct gesture_recognizer *gru = ge->gru;
479- struct combo_model *state = &gru->rotate;
480- struct move_model *move = &gru->move;
481- int mask = state->active ? (move->active & fm_mask) : fm_mask;
482- if (!move->multi && !move->single) {
483- if (state->active) {
484- gru_end(ge, state->gid, move,
485- state->prop, state->nprop);
486- state->active = 0;
487- }
488- return 0;
489- }
490- if ((move->timeout & fm_mask) == fm_mask) {
491- if (state->active) {
492- gin_gid_timeout(ge, state->gid);
493- }
494- }
495- if (!(move->tickle & mask))
496- return 0;
497- if (!state->active) {
498- int type = getype[move->ntouch];
499- if (!type)
500- return 0;
501- state->gid = gin_gid_begin(ge, type, PRIO_GESTURE, frame);
502- state->active = 1;
503- }
504- if (!(move->active & fm_mask))
505- return 0;
506- set_props(ge->gin, state, move, frame);
507- gru_event(ge, state->gid, move, state->prop, state->nprop);
508- return 1;
509-}
510-
511-int gru_winrotate(struct grail *ge,
512- const struct utouch_frame *frame)
513-{
514- struct gesture_recognizer *gru = ge->gru;
515- struct combo_model *state = &gru->winrotate;
516- struct move_model *move = &gru->move;
517- int mask = state->active ? (move->active & fm_mask) : fm_mask;
518- if (!move->multi) {
519- if (state->active && out_of_bounds(state, move)) {
520- gru_end(ge, state->gid, move,
521- state->prop, state->nprop);
522- state->active = 0;
523- }
524- return 0;
525- }
526- if ((move->timeout & fm_mask) == fm_mask) {
527- if (state->active) {
528- gin_gid_timeout(ge, state->gid);
529- }
530- }
531- if (!(move->tickle & mask))
532- return 0;
533- if (!state->active) {
534- if (move->ntouch == 4) {
535- state->gid = gin_gid_begin(ge, GRAIL_TYPE_MROTATE,
536- PRIO_META, frame);
537- state->mintouch = 2;
538- state->maxtouch = 4;
539- state->active = 1;
540- } else if (move->ntouch == 3) {
541- state->gid = gin_gid_begin(ge, GRAIL_TYPE_EROTATE,
542- PRIO_ENV, frame);
543- state->mintouch = 2;
544- state->maxtouch = 3;
545- state->active = 1;
546- } else {
547- return 0;
548- }
549- }
550- if (!(move->active & fm_mask))
551- return 0;
552- set_props(ge->gin, state, move, frame);
553- gru_event(ge, state->gid, move, state->prop, state->nprop);
554- return 1;
555-}
556
557=== removed file 'src/gestures-tapping.c'
558--- src/gestures-tapping.c 2011-04-28 16:53:57 +0000
559+++ src/gestures-tapping.c 1970-01-01 00:00:00 +0000
560@@ -1,100 +0,0 @@
561-/*****************************************************************************
562- *
563- * grail - Gesture Recognition And Instantiation Library
564- *
565- * Copyright (C) 2010-2011 Canonical Ltd.
566- *
567- * This program is free software: you can redistribute it and/or modify it
568- * under the terms of the GNU General Public License as published by the
569- * Free Software Foundation, either version 3 of the License, or (at your
570- * option) any later version.
571- *
572- * This program is distributed in the hope that it will be useful, but
573- * WITHOUT ANY WARRANTY; without even the implied warranty of
574- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
575- * General Public License for more details.
576- *
577- * You should have received a copy of the GNU General Public License along
578- * with this program. If not, see <http://www.gnu.org/licenses/>.
579- *
580- ****************************************************************************/
581-
582-#include "grail-recognizer.h"
583-#include <math.h>
584-
585-static const int fm_mask = 0x07;
586-
587-static void set_props(const struct gesture_inserter *gin,
588- struct tapping_model *s, const struct move_model *m,
589- const struct utouch_frame *frame)
590-{
591- s->prop[GRAIL_PROP_TAP_DT] = m->time - s->start;
592- s->prop[GRAIL_PROP_TAP_X] = m->fm[FM_X].value;
593- s->prop[GRAIL_PROP_TAP_Y] = m->fm[FM_Y].value;
594- s->nprop = 3;
595- s->nprop += gin_add_contact_props(gin, s->prop + s->nprop, frame);
596-}
597-
598-int gru_tapping(struct grail *ge,
599- const struct utouch_frame *frame)
600-{
601- struct gesture_recognizer *gru = ge->gru;
602- struct tapping_model *state = &gru->tapping;
603- struct move_model *move = &gru->move;
604- state->tap = 0;
605- if (frame->num_active && !frame->prev->num_active) {
606- state->mintouch = 0;
607- state->maxtouch = 0;
608- }
609- if (move->ntouch > state->maxtouch) {
610- if (state->active) {
611- gin_gid_discard(ge, state->gid);
612- state->active = 0;
613- }
614- state->start = move->time;
615- state->maxtouch = move->ntouch;
616- set_props(ge->gin, state, move, frame);
617- if (state->maxtouch <= 5) {
618- int type = GRAIL_TYPE_TAP1 + state->maxtouch - 1;
619- state->gid = gin_gid_begin(ge, type, PRIO_TAP, frame);
620- state->active = 1;
621- }
622- return 0;
623- }
624- if (!state->active) {
625- state->mintouch = move->ntouch;
626- state->maxtouch = move->ntouch;
627- return 0;
628- }
629- if (move->ntouch <= state->mintouch) {
630- int x = state->prop[GRAIL_PROP_TAP_X];
631- int y = state->prop[GRAIL_PROP_TAP_Y];
632- int t = move->time - state->start;
633- if (t > move->fm[FM_X].bar_ms) {
634- gin_gid_discard(ge, state->gid);
635- state->mintouch = move->ntouch;
636- state->maxtouch = move->ntouch;
637- state->active = 0;
638- return 0;
639- }
640- state->tap = state->maxtouch;
641- state->prop[GRAIL_PROP_TAP_DT] = t;
642- gin_gid_event(ge, state->gid, x, y, state->maxtouch,
643- state->prop, state->nprop, 1);
644- state->mintouch = move->ntouch;
645- state->maxtouch = move->ntouch;
646- state->active = 0;
647- return 1;
648- }
649- if (!move->ntouch)
650- return 0;
651- state->prop[GRAIL_PROP_TAP_DT] = move->time - state->start;
652- if ((move->active & fm_mask) ||
653- move->time - state->start > move->fm[FM_X].bar_ms) {
654- gin_gid_discard(ge, state->gid);
655- state->mintouch = move->ntouch;
656- state->maxtouch = move->ntouch;
657- state->active = 0;
658- }
659- return 0;
660-}
661
662=== removed file 'src/gestures-touch.c'
663--- src/gestures-touch.c 2011-04-04 17:27:38 +0000
664+++ src/gestures-touch.c 1970-01-01 00:00:00 +0000
665@@ -1,98 +0,0 @@
666-/*****************************************************************************
667- *
668- * grail - Gesture Recognition And Instantiation Library
669- *
670- * Copyright (C) 2010 Canonical Ltd.
671- * Copyright (C) 2010 Henrik Rydberg <rydberg@bitmath.org>
672- *
673- * This program is free software: you can redistribute it and/or modify it
674- * under the terms of the GNU General Public License as published by the
675- * Free Software Foundation, either version 3 of the License, or (at your
676- * option) any later version.
677- *
678- * This program is distributed in the hope that it will be useful, but
679- * WITHOUT ANY WARRANTY; without even the implied warranty of
680- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
681- * General Public License for more details.
682- *
683- * You should have received a copy of the GNU General Public License along
684- * with this program. If not, see <http://www.gnu.org/licenses/>.
685- *
686- ****************************************************************************/
687-
688-#include "grail-recognizer.h"
689-#include <math.h>
690-#include <stdio.h>
691-
692-static const int getype[DIM_TOUCH + 1] = {
693- -1,
694- GRAIL_TYPE_TOUCH1,
695- GRAIL_TYPE_TOUCH2,
696- GRAIL_TYPE_TOUCH3,
697- GRAIL_TYPE_TOUCH4,
698- GRAIL_TYPE_TOUCH5,
699-};
700-
701-int gru_touch(struct grail *ge,
702- const struct utouch_frame *frame)
703-{
704- struct gesture_recognizer *gru = ge->gru;
705- struct combo_model *state = &gru->touch;
706- struct move_model *move = &gru->move;
707- if (frame->slot_revision != frame->prev->slot_revision) {
708- if (state->active) {
709- gru_end(ge, state->gid, move,
710- state->prop, state->nprop);
711- state->active = 0;
712- }
713- }
714- if (!state->active) {
715- int type = getype[move->ntouch];
716- if (type <= 0)
717- return 0;
718- state->gid = gin_gid_begin(ge, type, -PRIO_GESTURE, frame);
719- state->active = 1;
720- }
721- if (move->time - move->fm[FM_X].original_ms <= move->fm[FM_X].hold_ms)
722- return 0;
723- state->nprop = gin_add_contact_props(ge->gin, state->prop, frame);
724- gru_event(ge, state->gid, move, state->prop, state->nprop);
725- return 1;
726-}
727-
728-int gru_wintouch(struct grail *ge,
729- const struct utouch_frame *frame)
730-{
731- struct gesture_recognizer *gru = ge->gru;
732- struct combo_model *state = &gru->wintouch;
733- struct move_model *move = &gru->move;
734- if (frame->slot_revision != frame->prev->slot_revision) {
735- if (state->active && out_of_bounds(state, move)) {
736- gru_end(ge, state->gid, move,
737- state->prop, state->nprop);
738- state->active = 0;
739- }
740- }
741- if (!state->active) {
742- if (move->ntouch == 4) {
743- state->gid = gin_gid_begin(ge, GRAIL_TYPE_MTOUCH,
744- -PRIO_META, frame);
745- state->mintouch = 1;
746- state->maxtouch = 4;
747- state->active = 1;
748- } else if (move->ntouch == 3) {
749- state->gid = gin_gid_begin(ge, GRAIL_TYPE_ETOUCH,
750- -PRIO_ENV, frame);
751- state->mintouch = 1;
752- state->maxtouch = 3;
753- state->active = 1;
754- } else {
755- return 0;
756- }
757- }
758- if (move->time - move->fm[FM_X].original_ms <= move->fm[FM_X].hold_ms)
759- return 0;
760- state->nprop = gin_add_contact_props(ge->gin, state->prop, frame);
761- gru_event(ge, state->gid, move, state->prop, state->nprop);
762- return 1;
763-}
764
765=== modified file 'src/grail-api.c'
766--- src/grail-api.c 2011-08-09 10:03:32 +0000
767+++ src/grail-api.c 2011-08-17 12:41:50 +0000
768@@ -31,105 +31,11 @@
769 #include <stdlib.h>
770 #include <sys/stat.h>
771
772-#define DIM_FRAMES 100
773-#define FRAME_RATE 100
774-
775 unsigned int GRAIL_PUBLIC grail_get_version(void)
776 {
777 return GRAIL_VERSION;
778 }
779
780-int GRAIL_PUBLIC grail_open(struct grail *ge, int fd)
781-{
782- struct grail_impl *x;
783- struct stat fs;
784- int ret;
785-
786- ret = fstat(fd, &fs);
787- if (ret)
788- return ret;
789-
790- x = calloc(1, sizeof(*x));
791- if (!x)
792- return -ENOMEM;
793-
794- if (!fs.st_rdev)
795- x->fptest = fdopen(fd, "r");
796-
797- x->evemu = evemu_new(x->fptest ? "fptest" : 0);
798- if (!x->evemu) {
799- ret = -ENOMEM;
800- goto freemem;
801- }
802- if (x->fptest)
803- ret = evemu_read(x->evemu, x->fptest) <= 0;
804- else
805- ret = evemu_extract(x->evemu, fd);
806- if (ret)
807- goto freemem;
808- if (!utouch_frame_is_supported_mtdev(x->evemu)) {
809- ret = -ENODEV;
810- goto freemem;
811- }
812-
813- if (!x->fptest) {
814- x->mtdev = mtdev_new_open(fd);
815- if (!x->mtdev) {
816- ret = -ENOMEM;
817- goto freemem;
818- }
819- }
820- x->fh = utouch_frame_new_engine(DIM_FRAMES, DIM_TOUCH, FRAME_RATE);
821- if (!x->fh) {
822- ret = -ENOMEM;
823- goto freedev;
824- }
825- ret = utouch_frame_init_mtdev(x->fh, x->evemu);
826- if (ret)
827- goto freeframe;
828-
829- ge->impl = x;
830-
831- ret = gin_init(ge);
832- if (ret)
833- goto freeframe;
834-
835- ret = gru_init(ge);
836- if (ret)
837- goto freegin;
838-
839- return 0;
840- freegin:
841- gin_destroy(ge);
842- freeframe:
843- utouch_frame_delete_engine(x->fh);
844- freedev:
845- if (x->mtdev)
846- mtdev_close_delete(x->mtdev);
847- freemem:
848- evemu_delete(x->evemu);
849- if (x->fptest)
850- fclose(x->fptest);
851- free(x);
852- ge->impl = 0;
853- return ret;
854-}
855-
856-void GRAIL_PUBLIC grail_close(struct grail *ge, int fd)
857-{
858- struct grail_impl *x = ge->impl;
859- gru_destroy(ge);
860- gin_destroy(ge);
861- utouch_frame_delete_engine(x->fh);
862- if (x->mtdev)
863- mtdev_close_delete(x->mtdev);
864- evemu_delete(x->evemu);
865- if (x->fptest)
866- fclose(x->fptest);
867- free(x);
868- ge->impl = 0;
869-}
870-
871 int GRAIL_PUBLIC grail_idle(struct grail *ge, int fd, int ms)
872 {
873 struct grail_impl *x = ge->impl;
874@@ -156,6 +62,12 @@
875 return ge->impl->touch;
876 }
877
878+const struct grail_frame GRAIL_PUBLIC *
879+grail_get_gesture_frame(const struct grail *ge)
880+{
881+ return ge->impl->frame;
882+}
883+
884 static void flush_events(struct grail *ge)
885 {
886 struct grail_impl *impl = ge->impl;
887@@ -169,89 +81,6 @@
888 }
889 }
890
891-static int skip_event(const struct input_event *ev, int count)
892-{
893- switch (ev->type) {
894- case EV_ABS:
895- return 1;
896- case EV_KEY:
897- return ev->code >= BTN_DIGI && ev->code < BTN_WHEEL;
898- case EV_SYN:
899- switch (ev->code) {
900- case SYN_MT_REPORT:
901- return 1;
902- case SYN_REPORT:
903- return count == 0;
904- default:
905- return 0;
906- }
907- default:
908- return 0;
909- }
910-}
911-
912-static void flush_gestures(struct grail *ge)
913-{
914- struct grail_impl *impl = ge->impl;
915- struct input_event iev;
916- struct grail_event gev;
917- int count = 0;
918-
919- while (!evbuf_empty(&impl->evbuf)) {
920- evbuf_get(&impl->evbuf, &iev);
921- if (skip_event(&iev, count))
922- continue;
923- if (ge->event)
924- ge->event(ge, &iev);
925- if (iev.type == EV_SYN && iev.code == SYN_REPORT)
926- count = 0;
927- else
928- count++;
929- }
930- while (!grailbuf_empty(&impl->gbuf)) {
931- grailbuf_get(&impl->gbuf, &gev);
932- if (ge->gesture)
933- ge->gesture(ge, &gev);
934- }
935-}
936-
937-static int gesture_timeout(struct grail *ge, const struct utouch_frame *frame)
938-{
939- struct gesture_recognizer *gru = ge->gru;
940- struct gesture_inserter *gin = ge->gin;
941-
942- return grail_mask_count(gin->used, sizeof(gin->used)) == 0 &&
943- frame->time - frame->mod_time > gru->move.fm[FM_X].hold_ms;
944-}
945-
946-static void report_frame(struct grail *ge,
947- const struct utouch_frame *touch,
948- const struct input_event *syn)
949-{
950- struct grail_impl *impl = ge->impl;
951- struct grail_event gev;
952-
953- impl->touch = touch;
954-
955- if (touch->num_active && !touch->prev->num_active) {
956- impl->ongoing = 1;
957- impl->gesture = 0;
958- }
959-
960- if (!impl->ongoing)
961- return;
962-
963- gin_frame_begin(ge, touch);
964- gru_recognize(ge, touch);
965- gin_frame_end(ge, touch);
966-
967- if (!grailbuf_empty(&impl->gbuf))
968- impl->gesture = 1;
969-
970- if (touch->num_active == 0 || gesture_timeout(ge, touch))
971- impl->ongoing &= impl->gesture;
972-}
973-
974 static void grail_pump_mtdev(struct grail *ge, const struct input_event *ev)
975 {
976 struct grail_impl *impl = ge->impl;
977@@ -262,14 +91,12 @@
978 if (ev->type == EV_SYN || ev->type == EV_ABS || ev->type == EV_KEY) {
979 frame = utouch_frame_pump_mtdev(impl->fh, ev);
980 if (frame)
981- report_frame(ge, frame, ev);
982+ grail_pump_frame(ge, frame);
983 }
984
985 if (ev->type == EV_SYN) {
986 if (!impl->ongoing)
987 flush_events(ge);
988- if (impl->gesture)
989- flush_gestures(ge);
990 }
991 }
992
993
994=== modified file 'src/grail-bits.c'
995--- src/grail-bits.c 2011-04-28 16:53:57 +0000
996+++ src/grail-bits.c 2011-08-17 12:41:50 +0000
997@@ -59,6 +59,16 @@
998 *a++ &= ~*b++;
999 }
1000
1001+int GRAIL_PUBLIC grail_mask_inner(const grail_mask_t *a, const grail_mask_t *b,
1002+ int bytes)
1003+{
1004+ int k;
1005+ for (k = 0; k < bytes; k++)
1006+ if (a[k] & b[k])
1007+ return 1;
1008+ return 0;
1009+}
1010+
1011 int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes)
1012 {
1013 int count = 0;
1014
1015=== modified file 'src/grail-frame.c'
1016--- src/grail-frame.c 2011-05-20 14:35:18 +0000
1017+++ src/grail-frame.c 2011-08-17 12:41:50 +0000
1018@@ -20,6 +20,8 @@
1019 ****************************************************************************/
1020
1021 #include "grail-impl.h"
1022+#include "grail-inserter.h"
1023+#include "grail-recognizer.h"
1024 #include <stdlib.h>
1025 #include <string.h>
1026 #include <math.h>
1027@@ -106,6 +108,7 @@
1028 slot->expect_mask = GRAIL_EXPECT_MASK;
1029 slot->active_mask = 0;
1030 slot->start_time = touch->time;
1031+ slot->start_center = slot->start_center;
1032 set_center_velocity_and_radius(impl, slot);
1033 T[0] = T[4] = 1;
1034 T[1] = T[2] = T[3] = T[5] = 0;
1035@@ -228,7 +231,7 @@
1036 int i, j, n = impl->num_touches;
1037 struct grail_element *best = 0;
1038
1039- if (touch->num_active < 3) {
1040+ if (!touch->num_active) {
1041 stop_slot(impl, slot);
1042 return;
1043 }
1044@@ -258,6 +261,8 @@
1045 best = s;
1046 }
1047 }
1048+ if (!best)
1049+ best = slots[0];
1050
1051 update_slot(impl, slot, best->transform[1], best->transform[0]);
1052 }
1053@@ -385,14 +390,75 @@
1054 }
1055 }
1056
1057+static int skip_event(const struct input_event *ev, int count)
1058+{
1059+ switch (ev->type) {
1060+ case EV_ABS:
1061+ return 1;
1062+ case EV_KEY:
1063+ return ev->code >= BTN_DIGI && ev->code < BTN_WHEEL;
1064+ case EV_SYN:
1065+ switch (ev->code) {
1066+ case SYN_MT_REPORT:
1067+ return 1;
1068+ case SYN_REPORT:
1069+ return count == 0;
1070+ default:
1071+ return 0;
1072+ }
1073+ default:
1074+ return 0;
1075+ }
1076+}
1077+
1078+static void flush_gestures(struct grail *ge)
1079+{
1080+ struct grail_impl *impl = ge->impl;
1081+ struct input_event iev;
1082+ struct grail_event gev;
1083+ int count = 0;
1084+
1085+ while (!evbuf_empty(&impl->evbuf)) {
1086+ evbuf_get(&impl->evbuf, &iev);
1087+ if (skip_event(&iev, count))
1088+ continue;
1089+ if (ge->event)
1090+ ge->event(ge, &iev);
1091+ if (iev.type == EV_SYN && iev.code == SYN_REPORT)
1092+ count = 0;
1093+ else
1094+ count++;
1095+ }
1096+ while (!grailbuf_empty(&impl->gbuf)) {
1097+ grailbuf_get(&impl->gbuf, &gev);
1098+ if (ge->gesture)
1099+ ge->gesture(ge, &gev);
1100+ }
1101+}
1102+
1103+static int gesture_timeout(struct grail *ge, const struct utouch_frame *frame)
1104+{
1105+ struct gesture_inserter *gin = ge->gin;
1106+ struct grail_impl *impl = ge->impl;
1107+
1108+ return grail_mask_count(gin->used, sizeof(gin->used)) == 0 &&
1109+ frame->time - frame->mod_time > impl->ctl->drop_x_ms;
1110+}
1111+
1112 const struct grail_frame GRAIL_PUBLIC *
1113 grail_pump_frame(grail_handle ge, const struct utouch_frame *touch)
1114 {
1115 struct grail_impl *impl = ge->impl;
1116- struct grail_frame *frame = impl->frames[impl->nextframe];
1117- const struct grail_frame *prev = frame->prev;
1118+ struct grail_frame *frame;
1119+ const struct grail_frame *prev;
1120 int i;
1121
1122+ if (!impl->frames)
1123+ return 0;
1124+
1125+ frame = impl->frames[impl->nextframe];
1126+ prev = frame->prev;
1127+
1128 if (touch->slot_revision == touch->prev->slot_revision &&
1129 !prev->num_ongoing)
1130 return 0;
1131@@ -407,5 +473,34 @@
1132
1133 impl->nextframe = (impl->nextframe + 1) % impl->num_frames;
1134
1135+ if (!ge->gesture)
1136+ return frame;
1137+
1138+ impl->touch = touch;
1139+ impl->frame = frame;
1140+
1141+ if (touch->num_active && !touch->prev->num_active) {
1142+ impl->ongoing = 1;
1143+ impl->gesture = 0;
1144+ }
1145+
1146+ if (!impl->ongoing)
1147+ return frame;
1148+
1149+ gin_frame_begin(ge, touch);
1150+
1151+ gru_recognize(ge, frame, touch);
1152+
1153+ gin_frame_end(ge, touch);
1154+
1155+ if (!grailbuf_empty(&impl->gbuf))
1156+ impl->gesture = 1;
1157+
1158+ if (touch->num_active == 0 || gesture_timeout(ge, touch))
1159+ impl->ongoing &= impl->gesture;
1160+
1161+ if (impl->gesture)
1162+ flush_gestures(ge);
1163+
1164 return frame;
1165 }
1166
1167=== removed file 'src/grail-gestures.c'
1168--- src/grail-gestures.c 2011-08-11 19:31:50 +0000
1169+++ src/grail-gestures.c 1970-01-01 00:00:00 +0000
1170@@ -1,223 +0,0 @@
1171-/*****************************************************************************
1172- *
1173- * grail - Gesture Recognition And Instantiation Library
1174- *
1175- * Copyright (C) 2010-2011 Canonical Ltd.
1176- *
1177- * This program is free software: you can redistribute it and/or modify it
1178- * under the terms of the GNU General Public License as published by the
1179- * Free Software Foundation, either version 3 of the License, or (at your
1180- * option) any later version.
1181- *
1182- * This program is distributed in the hope that it will be useful, but
1183- * WITHOUT ANY WARRANTY; without even the implied warranty of
1184- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1185- * General Public License for more details.
1186- *
1187- * You should have received a copy of the GNU General Public License along
1188- * with this program. If not, see <http://www.gnu.org/licenses/>.
1189- *
1190- ****************************************************************************/
1191-
1192-#include "grail-recognizer.h"
1193-#include "grail-impl.h"
1194-#include <math.h>
1195-
1196-/* Units of mm or radians */
1197-static const float FM_SN[DIM_FM] = { 0.13, 0.13, 0.26, 2 * M_PI / 1000 };
1198-static const float FM_BAR[DIM_FM] = { 2.6, 2.6, 5.2, 2 * M_PI / 50 };
1199-
1200-/* Units of ms */
1201-static const grail_time_t FM_HOLD_MS[DIM_FM] = { 60, 60, 60, 60 };
1202-static const grail_time_t FM_BAR_MS[DIM_FM] = { 300, 300, 500, 500 };
1203-static const grail_time_t SAMPLE_MS = 10;
1204-
1205-static const float EPS = 1e-3;
1206-
1207-static void compute_position(float *x, float *y,
1208- const struct utouch_frame *frame)
1209-{
1210- int i, n = frame->num_active;
1211- *x = 0;
1212- *y = 0;
1213- if (n < 1)
1214- return;
1215- for (i = 0; i < n; i++) {
1216- const struct utouch_contact *t = frame->active[i];
1217- *x += t->x;
1218- *y += t->y;
1219- }
1220- *x /= n;
1221- *y /= n;
1222-}
1223-
1224-static float compute_radius(float x, float y,
1225- const struct utouch_frame *frame)
1226-{
1227- int i, n = frame->num_active;
1228- float r = 0, r2 = 0;
1229- if (n < 2)
1230- return r;
1231- for (i = 0; i < n; i++) {
1232- const struct utouch_contact *t = frame->active[i];
1233- float dx = t->x - x;
1234- float dy = t->y - y;
1235- r2 += dx * dx + dy * dy;
1236- }
1237- r2 /= n;
1238- r = sqrt(r2);
1239- return r;
1240-}
1241-
1242-static float compute_rotation(float x, float y, float r,
1243- const struct utouch_frame *frame)
1244-{
1245- int i, n = frame->num_active;
1246- float da = 0, darc2 = 0;
1247- if (n < 2)
1248- return da;
1249- for (i = 0; i < n; i++) {
1250- const struct utouch_contact *t = frame->active[i];
1251- const struct utouch_contact *ot = t->prev;
1252- float dx = t->x - x;
1253- float dy = t->y - y;
1254- float mx = t->x - ot->x;
1255- float my = t->y - ot->y;
1256- darc2 += dx * my - dy * mx;
1257- }
1258- darc2 /= n;
1259- da = darc2 / (r * r);
1260- return da;
1261-}
1262-
1263-static void move_reset(struct move_model *m, int i, float x, grail_time_t t)
1264-{
1265- struct filter_model *fm = &m->fm[i];
1266- fm->raw_delta = 0;
1267- fm->action_delta = 0;
1268- fm->velocity = 0;
1269- fm->value = x;
1270- fm->original = x;
1271- fm->original_ms = t;
1272- fm->sample = x;
1273- fm->sample_ms = t;
1274- m->tickle &= ~(1 << i);
1275- m->active &= ~(1 << i);
1276- m->timeout &= ~(1 << i);
1277-}
1278-
1279-static void move_update(struct move_model *m, int i, float x, grail_time_t t)
1280-{
1281- struct filter_model *fm = &m->fm[i];
1282- float dt = t - fm->sample_ms;
1283-
1284- if (fabs(x - fm->value) < fm->fuzz)
1285- return;
1286-
1287- fm->raw_delta = x - fm->value;
1288- fm->action_delta = fm->raw_delta;
1289- fm->value = x;
1290- if (dt > SAMPLE_MS) {
1291- fm->velocity = (x - fm->sample) / dt;
1292- fm->sample = x;
1293- fm->sample_ms = t;
1294- }
1295- if (fabs(fm->raw_delta) > EPS)
1296- m->tickle |= (1 << i);
1297- else
1298- m->tickle &= ~(1 << i);
1299- if (m->active & (1 << i))
1300- return;
1301- fm->action_delta = 0;
1302- if (fabs(x - fm->original) > fm->bar) {
1303- if (t - fm->original_ms > fm->hold_ms) {
1304- m->active |= (1 << i);
1305- fm->action_delta = x - fm->original;
1306- }
1307- } else if (t - fm->original_ms > fm->bar_ms) {
1308- m->timeout |= (1 << i);
1309- }
1310-}
1311-
1312-void gru_init_motion(struct grail *ge)
1313-{
1314- struct utouch_surface *s = utouch_frame_get_surface(ge->impl->fh);
1315- struct gesture_recognizer *gru = ge->gru;
1316- struct move_model *m = &gru->move;
1317- float U[DIM_FM]; /* Device unit dimensions */
1318- float P[DIM_FM]; /* Device physical dimensions */
1319- int i;
1320- U[FM_X] = s->mapped_max_x - s->mapped_min_x;
1321- U[FM_Y] = s->mapped_max_y - s->mapped_min_y;
1322- U[FM_R] = sqrt(U[FM_X] * U[FM_X] + U[FM_Y] * U[FM_Y]);
1323- U[FM_A] = 2 * M_PI;
1324- P[FM_X] = s->phys_width;
1325- P[FM_Y] = s->phys_height;
1326- P[FM_R] = sqrt(P[FM_X] * P[FM_X] + P[FM_Y] * P[FM_Y]);
1327- P[FM_A] = 2 * M_PI;
1328- for (i = 0; i < DIM_FM; i++) {
1329- m->fm[i].fuzz = U[i] * FM_SN[i] / P[i];
1330- m->fm[i].bar = U[i] * FM_BAR[i] / P[i];
1331- m->fm[i].hold_ms = FM_HOLD_MS[i];
1332- m->fm[i].bar_ms = FM_BAR_MS[i];
1333- }
1334-}
1335-
1336-void gru_motion(struct grail *ge,
1337- const struct utouch_frame *frame)
1338-{
1339- const struct utouch_surface *s = utouch_frame_get_surface(ge->impl->fh);
1340- struct gesture_recognizer *gru = ge->gru;
1341- struct move_model *m = &gru->move;
1342- grail_time_t t = frame->time;
1343- float x, y, r, a;
1344-
1345- compute_position(&x, &y, frame);
1346- if (frame->prev->revision != frame->revision) {
1347- r = compute_radius(x, y, frame);
1348- a = 0;
1349- move_reset(m, FM_X, x, t);
1350- move_reset(m, FM_Y, y, t);
1351- move_reset(m, FM_R, r, t);
1352- move_reset(m, FM_A, a, t);
1353- m->single = 0;
1354- m->multi = 0;
1355- } else if (frame->num_active < 2) {
1356- r = 0;
1357- a = 0;
1358- move_update(m, FM_X, x, t);
1359- move_update(m, FM_Y, y, t);
1360- move_reset(m, FM_R, r, t);
1361- move_reset(m, FM_A, a, t);
1362- m->single = 1;
1363- m->multi = 0;
1364- } else {
1365- r = compute_radius(x, y, frame);
1366- a = m->fm[FM_A].value;
1367- if (!s->is_semi_mt)
1368- a += compute_rotation(x, y, r, frame);
1369- move_update(m, FM_X, x, t);
1370- move_update(m, FM_Y, y, t);
1371- move_update(m, FM_R, r, t);
1372- move_update(m, FM_A, a, t);
1373- m->single = 0;
1374- m->multi = 1;
1375- }
1376- m->ntouch = frame->num_active;
1377- m->time = t;
1378-}
1379-
1380-void gru_event(struct grail *ge, int gid,
1381- const struct move_model *m,
1382- const grail_prop_t *prop, int nprop)
1383-{
1384- gin_gid_event(ge, gid, m->fm[FM_X].value, m->fm[FM_Y].value, m->ntouch,
1385- prop, nprop, 0);
1386-}
1387-
1388-void gru_end(struct grail *ge, int gid, const struct move_model *m,
1389- const grail_prop_t *prop, int nprop)
1390-{
1391- gin_gid_end(ge, gid, m->fm[FM_X].value, m->fm[FM_Y].value, m->ntouch,
1392- prop, nprop);
1393-}
1394
1395=== removed file 'src/grail-gestures.h'
1396--- src/grail-gestures.h 2011-05-17 14:15:22 +0000
1397+++ src/grail-gestures.h 1970-01-01 00:00:00 +0000
1398@@ -1,115 +0,0 @@
1399-/*****************************************************************************
1400- *
1401- * grail - Gesture Recognition And Instantiation Library
1402- *
1403- * Copyright (C) 2010-2011 Canonical Ltd.
1404- *
1405- * This program is free software: you can redistribute it and/or modify it
1406- * under the terms of the GNU General Public License as published by the
1407- * Free Software Foundation, either version 3 of the License, or (at your
1408- * option) any later version.
1409- *
1410- * This program is distributed in the hope that it will be useful, but
1411- * WITHOUT ANY WARRANTY; without even the implied warranty of
1412- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1413- * General Public License for more details.
1414- *
1415- * You should have received a copy of the GNU General Public License along
1416- * with this program. If not, see <http://www.gnu.org/licenses/>.
1417- *
1418- ****************************************************************************/
1419-
1420-#ifndef GRAIL_GESTURES_H
1421-#define GRAIL_GESTURES_H
1422-
1423-#include "grail-inserter.h"
1424-
1425-#define PRIO_POINTER 1
1426-#define PRIO_GESTURE 2
1427-#define PRIO_ENV 3
1428-#define PRIO_META 4
1429-#define PRIO_TAP 5
1430-
1431-#define DIM_FM 4
1432-
1433-#define FM_X 0
1434-#define FM_Y 1
1435-#define FM_R 2
1436-#define FM_A 3
1437-
1438-struct filter_model {
1439- float raw_delta;
1440- float action_delta;
1441- float velocity;
1442- float value;
1443- float original;
1444- float sample;
1445- float fuzz;
1446- float bar;
1447- grail_time_t original_ms;
1448- grail_time_t sample_ms;
1449- grail_time_t hold_ms;
1450- grail_time_t bar_ms;
1451-};
1452-
1453-struct move_model {
1454- struct filter_model fm[DIM_FM];
1455- int tickle, active, timeout;
1456- int single, multi, ntouch;
1457- grail_time_t time;
1458-};
1459-
1460-void gru_init_motion(struct grail *ge);
1461-void gru_motion(struct grail *ge,
1462- const struct utouch_frame *frame);
1463-void gru_event(struct grail *ge, int gid,
1464- const struct move_model *move,
1465- const grail_prop_t *prop, int nprop);
1466-void gru_end(struct grail *ge, int gid,
1467- const struct move_model *move,
1468- const grail_prop_t *prop, int nprop);
1469-
1470-struct combo_model {
1471- int active, gid;
1472- int mintouch, maxtouch;
1473- int nprop;
1474- grail_prop_t prop[DIM_GRAIL_PROP];
1475-};
1476-
1477-int gru_touch(struct grail *ge,
1478- const struct utouch_frame *frame);
1479-int gru_drag(struct grail *ge,
1480- const struct utouch_frame *frame);
1481-int gru_pinch(struct grail *ge,
1482- const struct utouch_frame *frame);
1483-int gru_rotate(struct grail *ge,
1484- const struct utouch_frame *frame);
1485-
1486-static inline int out_of_bounds(const struct combo_model *s,
1487- const struct move_model *m)
1488-{
1489- return m->ntouch < s->mintouch || m->ntouch > s->maxtouch;
1490-}
1491-
1492-int gru_wintouch(struct grail *ge,
1493- const struct utouch_frame *frame);
1494-int gru_windrag(struct grail *ge,
1495- const struct utouch_frame *frame);
1496-int gru_winpinch(struct grail *ge,
1497- const struct utouch_frame *frame);
1498-int gru_winrotate(struct grail *ge,
1499- const struct utouch_frame *frame);
1500-
1501-struct tapping_model {
1502- grail_time_t start;
1503- int mintouch, maxtouch;
1504- int active, gid, tap;
1505- int nprop;
1506- grail_prop_t prop[DIM_GRAIL_PROP];
1507-};
1508-
1509-int gru_tapping(struct grail *ge,
1510- const struct utouch_frame *frame);
1511-
1512-#endif
1513-
1514
1515=== modified file 'src/grail-impl.h'
1516--- src/grail-impl.h 2011-08-09 10:03:32 +0000
1517+++ src/grail-impl.h 2011-08-17 12:41:50 +0000
1518@@ -59,6 +59,35 @@
1519
1520 void destroy_grail2(struct grail_impl *x);
1521
1522+/*
1523+ * struct grail_impl - gesture engine state
1524+ * @evemu: evemu instance (grail1 only)
1525+ * @mtdev: mtdev instance (grail1 only)
1526+ * @fh: frame handler instance (grail1: owner, grail2: referenced)
1527+ * @touch: current touch frame
1528+ * @evbuf: input event buffer (grail1 only)
1529+ * @gbuf: gesture event buffer (grail1 only)
1530+ * @filter_abs: if true, abs events are filtered (grail1 only)
1531+ * @ongoing: if true, a gesture is ongoing (grail1 only)
1532+ * @gesture: if true, a gesture is active (events sent) (grail1 only)
1533+ * @fptest: file pointer used for data input from file (grail1 only)
1534+ * @ctl: mutable grail control structure
1535+ * @select: grail event secltion callback
1536+ * @num_frames: number of gestures frames in cyclic buffer
1537+ * @num_slots: number of allocated gesture element slots
1538+ * @num_touches: number of touches supported for frame instance
1539+ * @nextframe: index of next frame to be (re)used
1540+ * @seqid: next gesture frame sequence number
1541+ * @control_size: maximum number of bytes for grail_control struct
1542+ * @frame_size: maximum number of bytes for grail_frame struct
1543+ * @slot_size: maximum number of bytes for grail_element struct
1544+ * @frames: cyclic array of allocated gesture frames
1545+ * @frame: current gesture frame (grail1 only)
1546+ *
1547+ * The grail engine supports both the grail1 interface, with
1548+ * open/close and event pulling, and the grail2 interface, with
1549+ * new/delete, gesture frames and event pumping.
1550+ */
1551 struct grail_impl {
1552 struct evemu_device *evemu;
1553 struct mtdev *mtdev;
1554@@ -83,6 +112,7 @@
1555 unsigned int frame_size;
1556 unsigned int slot_size;
1557 struct grail_frame **frames;
1558+ const struct grail_frame *frame;
1559 };
1560
1561 #endif
1562
1563=== modified file 'src/grail-init.c'
1564--- src/grail-init.c 2011-05-18 16:38:44 +0000
1565+++ src/grail-init.c 2011-08-17 12:41:50 +0000
1566@@ -34,12 +34,13 @@
1567 c->glue_ms = 60;
1568 c->bar_drag_x = 0.03;
1569 c->bar_drag_y = 0.03;
1570- c->bar_scale = 0.3;
1571- c->bar_angle = 0.1;
1572+ c->bar_scale = 0.2;
1573+ c->bar_angle = 0.2;
1574 c->drop_x_ms = 300;
1575 c->drop_y_ms = 300;
1576 c->drop_scale_ms = 300;
1577 c->drop_angle_ms = 300;
1578+ c->tap_time_ms = 300;
1579
1580 return c;
1581 }
1582@@ -204,6 +205,7 @@
1583 {
1584 struct grail *ge;
1585 struct grail_impl *x;
1586+ int ret;
1587
1588 ge = calloc(1, sizeof(*ge));
1589 if (!ge)
1590@@ -217,8 +219,17 @@
1591 goto out;
1592
1593 ge->impl = x;
1594+
1595+ ret = gin_init(ge);
1596+ if (ret)
1597+ goto out;
1598+ ret = gru_init(ge);
1599+ if (ret)
1600+ goto freegin;
1601+
1602 return ge;
1603-
1604+ freegin:
1605+ gin_destroy(ge);
1606 out:
1607 free(x);
1608 free(ge);
1609@@ -227,6 +238,8 @@
1610
1611 void GRAIL_PUBLIC grail_delete(grail_handle ge)
1612 {
1613+ gru_destroy(ge);
1614+ gin_destroy(ge);
1615 destroy_grail2(ge->impl);
1616 free(ge->impl);
1617 free(ge);
1618
1619=== modified file 'src/grail-inserter.c'
1620--- src/grail-inserter.c 2011-04-28 16:53:57 +0000
1621+++ src/grail-inserter.c 2011-08-17 12:41:50 +0000
1622@@ -19,7 +19,6 @@
1623 *
1624 ****************************************************************************/
1625
1626-#include "grail-gestures.h"
1627 #include "grail-inserter.h"
1628 #include "grail-impl.h"
1629 #include <malloc.h>
1630@@ -38,18 +37,6 @@
1631 return -1;
1632 }
1633
1634-static int mask_overlap(const grail_mask_t *a, const grail_mask_t *b,
1635- int bytes)
1636-{
1637- int i;
1638-
1639- for (i = 0; i < bytes; i++)
1640- if (a[i] & b[i])
1641- return 1;
1642-
1643- return 0;
1644-}
1645-
1646 // todo: spanning tree for multi-user case
1647 static void setup_new_gestures(struct grail *ge,
1648 const struct utouch_frame *frame)
1649@@ -158,15 +145,6 @@
1650
1651 grail_mask_foreach(i, gin->used, sizeof(gin->used)) {
1652 struct slot_state *s = &gin->state[i];
1653- if (!s->timeout)
1654- continue;
1655- if (mask_overlap(keep, s->span, sizeof(keep)))
1656- continue;
1657- gin_gid_discard(ge, s->id);
1658- }
1659-
1660- grail_mask_foreach(i, gin->used, sizeof(gin->used)) {
1661- struct slot_state *s = &gin->state[i];
1662 struct gesture_event ev;
1663 grail_mask_set(gin->types, s->type);
1664 if (s->priority < hold[s->slice] && !s->sent)
1665@@ -203,7 +181,6 @@
1666 s->priority = priority;
1667 s->slice = 0;
1668 }
1669- s->timeout = 0;
1670 s->sent = 0;
1671 s->id = gin->gestureid++ & MAX_GESTURE_ID;
1672 s->status = GRAIL_STATUS_BEGIN;
1673@@ -231,13 +208,6 @@
1674 grail_mask_set(gin->unused, i);
1675 }
1676
1677-void gin_gid_timeout(struct grail *ge, int gid)
1678-{
1679- int i = find_gslot(ge->gin, gid);
1680- if (i >= 0)
1681- ge->gin->state[i].timeout = 1;
1682-}
1683-
1684 void gin_gid_event(struct grail *ge, int gid,
1685 float x, float y, int ntouch,
1686 const grail_prop_t *prop, int nprop,
1687@@ -298,7 +268,4 @@
1688 s->mapped_min_y = tmin->y;
1689 s->mapped_max_x = tmax->x;
1690 s->mapped_max_y = tmax->y;
1691-
1692- if (ge->gru)
1693- gru_init_motion(ge);
1694 }
1695
1696=== modified file 'src/grail-inserter.h'
1697--- src/grail-inserter.h 2011-05-17 14:15:22 +0000
1698+++ src/grail-inserter.h 2011-08-17 12:41:50 +0000
1699@@ -33,11 +33,27 @@
1700
1701 #define DIM_CLIENT 32
1702
1703+/*
1704+ * struct slot_state - gesture state
1705+ * @type: gesture type of this gesture
1706+ * @priority: priority of this gesture
1707+ * @slice: 0: normal gesture, 1: touch gesture
1708+ * @sent: events have been sent for this gesture
1709+ * @id: unique identifier of this gesture
1710+ * @status: gesture status (begin, update, end)
1711+ * @nclient: number of clients listening to this gesture
1712+ * @client_id: array of clients listening to this gesture
1713+ * @span: bitmask of contact slots used in this gesture
1714+ * @buf: gesture event buffer
1715+ *
1716+ * This structure keeps track of an individual gesture, from the
1717+ * tentative state before being qualified as a gesture, through the
1718+ * beginning of the gesture to the end of the gesture.
1719+ */
1720 struct slot_state {
1721 int type;
1722 int priority;
1723 int slice;
1724- int timeout;
1725 int sent;
1726 int id;
1727 int status;
1728@@ -47,6 +63,20 @@
1729 struct gebuf buf;
1730 };
1731
1732+/*
1733+ * struct gesture_inserter - gesture inserter state
1734+ * @state: array of simultaneous gesture states
1735+ * @types: bitmask of ongoing gesture types
1736+ * @unused: bitmask of unused gesture slots
1737+ * @fresh: bitmask of slots initiated in this frame
1738+ * @used: bitmask of used gesture slots
1739+ * @time: time of current gesture frame
1740+ * @gestureid: next gesture id to be used
1741+ * @grab_active: used to signal an active system gesture grab
1742+ * @grab_client: the grabbing client
1743+ *
1744+ * This is the state of the gesture inserter.
1745+ */
1746 struct gesture_inserter {
1747 struct slot_state state[DIM_INSTANCE];
1748 grail_mask_t types[DIM_GRAIL_TYPE_BYTES];
1749@@ -80,7 +110,6 @@
1750 int gin_gid_begin(struct grail *ge, int type, int priority,
1751 const struct utouch_frame *frame);
1752 void gin_gid_discard(struct grail *ge, int gid);
1753-void gin_gid_timeout(struct grail *ge, int gid);
1754
1755 void gin_gid_event(struct grail *ge, int gid,
1756 float x, float y, int ntouch,
1757
1758=== modified file 'src/grail-legacy.c'
1759--- src/grail-legacy.c 2011-04-28 16:53:57 +0000
1760+++ src/grail-legacy.c 2011-08-17 12:41:50 +0000
1761@@ -31,6 +31,111 @@
1762
1763 #ifndef GRAIL_NO_LEGACY_ABI
1764
1765+#define DIM_FRAMES 100
1766+#define FRAME_RATE 100
1767+
1768+int GRAIL_PUBLIC grail_open(struct grail *ge, int fd)
1769+{
1770+ struct grail_impl *x;
1771+ struct stat fs;
1772+ int ret;
1773+
1774+ ret = fstat(fd, &fs);
1775+ if (ret)
1776+ return ret;
1777+
1778+ x = calloc(1, sizeof(*x));
1779+ if (!x)
1780+ return -ENOMEM;
1781+
1782+ if (!fs.st_rdev)
1783+ x->fptest = fdopen(fd, "r");
1784+
1785+ x->evemu = evemu_new(x->fptest ? "fptest" : 0);
1786+ if (!x->evemu) {
1787+ ret = -ENOMEM;
1788+ goto freemem;
1789+ }
1790+ if (x->fptest)
1791+ ret = evemu_read(x->evemu, x->fptest) <= 0;
1792+ else
1793+ ret = evemu_extract(x->evemu, fd);
1794+ if (ret)
1795+ goto freemem;
1796+ if (!utouch_frame_is_supported_mtdev(x->evemu)) {
1797+ ret = -ENODEV;
1798+ goto freemem;
1799+ }
1800+
1801+ if (!x->fptest) {
1802+ x->mtdev = mtdev_new_open(fd);
1803+ if (!x->mtdev) {
1804+ ret = -ENOMEM;
1805+ goto freemem;
1806+ }
1807+ }
1808+ x->fh = utouch_frame_new_engine(DIM_FRAMES, DIM_TOUCH, FRAME_RATE);
1809+ if (!x->fh) {
1810+ ret = -ENOMEM;
1811+ goto freedev;
1812+ }
1813+ ret = utouch_frame_init_mtdev(x->fh, x->evemu);
1814+ if (ret)
1815+ goto freeframe;
1816+
1817+ ret = create_grail2(x, x->fh, DIM_FRAMES, NULL,
1818+ GRAIL_VERSION,
1819+ sizeof(struct grail_control),
1820+ sizeof(struct grail_frame),
1821+ sizeof(struct grail_element));
1822+ if (ret)
1823+ goto freeframe;
1824+
1825+ ge->impl = x;
1826+
1827+ ret = gin_init(ge);
1828+ if (ret)
1829+ goto freegrail2;
1830+
1831+ ret = gru_init(ge);
1832+ if (ret)
1833+ goto freegin;
1834+
1835+ return 0;
1836+ freegin:
1837+ gin_destroy(ge);
1838+ freegrail2:
1839+ destroy_grail2(x);
1840+ freeframe:
1841+ utouch_frame_delete_engine(x->fh);
1842+ freedev:
1843+ if (x->mtdev)
1844+ mtdev_close_delete(x->mtdev);
1845+ freemem:
1846+ evemu_delete(x->evemu);
1847+ if (x->fptest)
1848+ fclose(x->fptest);
1849+ free(x);
1850+ ge->impl = 0;
1851+ return ret;
1852+}
1853+
1854+void GRAIL_PUBLIC grail_close(struct grail *ge, int fd)
1855+{
1856+ struct grail_impl *x = ge->impl;
1857+ gru_destroy(ge);
1858+ gin_destroy(ge);
1859+ destroy_grail2(x);
1860+ utouch_frame_delete_engine(x->fh);
1861+ if (x->mtdev)
1862+ mtdev_close_delete(x->mtdev);
1863+ evemu_delete(x->evemu);
1864+ if (x->fptest)
1865+ fclose(x->fptest);
1866+ free(x);
1867+ ge->impl = 0;
1868+}
1869+
1870 void GRAIL_PUBLIC grail_filter_abs_events(struct grail *ge, int usage)
1871 {
1872 struct grail_impl *x = ge->impl;
1873
1874=== modified file 'src/grail-recognizer.c'
1875--- src/grail-recognizer.c 2011-04-28 16:53:57 +0000
1876+++ src/grail-recognizer.c 2011-08-17 12:41:50 +0000
1877@@ -23,6 +23,177 @@
1878 #include <string.h>
1879 #include <malloc.h>
1880 #include <errno.h>
1881+#include <math.h>
1882+
1883+static const int MAX_TOUCH_GESTURE = 5;
1884+
1885+static void touch_props(const struct gesture_inserter *gin,
1886+ struct combo_model *s, const struct grail_element *m,
1887+ const struct utouch_frame *frame)
1888+{
1889+ s->nprop = 0;
1890+}
1891+
1892+static void drag_props(const struct gesture_inserter *gin,
1893+ struct combo_model *s, const struct grail_element *m,
1894+ const struct utouch_frame *frame)
1895+{
1896+ s->prop[GRAIL_PROP_DRAG_DX] = m->center.x - m->prev->center.x;
1897+ s->prop[GRAIL_PROP_DRAG_DY] = m->center.y - m->prev->center.y;
1898+ s->prop[GRAIL_PROP_DRAG_VX] = m->velocity.x;
1899+ s->prop[GRAIL_PROP_DRAG_VY] = m->velocity.y;
1900+ s->prop[GRAIL_PROP_DRAG_X] = m->center.x - m->start_center.x;
1901+ s->prop[GRAIL_PROP_DRAG_Y] = m->center.y - m->start_center.x;
1902+ s->nprop = 6;
1903+}
1904+
1905+static void pinch_props(const struct gesture_inserter *gin,
1906+ struct combo_model *s, const struct grail_element *m,
1907+ const struct utouch_frame *frame)
1908+{
1909+ s->prop[GRAIL_PROP_PINCH_DR] =
1910+ sqrt(m->radius2) - sqrt(m->prev->radius2);
1911+ s->prop[GRAIL_PROP_PINCH_VR] = 0;
1912+ s->prop[GRAIL_PROP_PINCH_R] = sqrt(m->radius2);
1913+ s->nprop = 3;
1914+}
1915+
1916+static void rotate_props(const struct gesture_inserter *gin,
1917+ struct combo_model *s, const struct grail_element *m,
1918+ const struct utouch_frame *frame)
1919+{
1920+ s->prop[GRAIL_PROP_ROTATE_DA] = m->angle - m->prev->angle;
1921+ s->prop[GRAIL_PROP_ROTATE_VA] = 0;
1922+ s->prop[GRAIL_PROP_ROTATE_A] = m->angle;
1923+ s->nprop = 3;
1924+}
1925+
1926+static void tap_props(const struct gesture_inserter *gin,
1927+ struct combo_model *s, const struct grail_element *m,
1928+ const struct utouch_frame *frame)
1929+{
1930+ s->prop[GRAIL_PROP_TAP_DT] = frame->time - s->start;
1931+ s->prop[GRAIL_PROP_TAP_X] = m->center.x;
1932+ s->prop[GRAIL_PROP_TAP_Y] = m->center.y;
1933+ s->nprop = 3;
1934+}
1935+
1936+static const struct gesture_handler touch_handler = {
1937+ 0,
1938+ {
1939+ { -1, 0, 0, 0 },
1940+ { GRAIL_TYPE_TOUCH1, 1, 1, PRIO_DRAG },
1941+ { GRAIL_TYPE_TOUCH2, 2, 2, PRIO_DRAG },
1942+ { GRAIL_TYPE_TOUCH3, 3, 3, PRIO_DRAG },
1943+ { GRAIL_TYPE_TOUCH4, 4, 4, PRIO_DRAG },
1944+ { GRAIL_TYPE_TOUCH5, 5, 5, PRIO_DRAG }
1945+ },
1946+ touch_props
1947+};
1948+
1949+static const struct gesture_handler drag_handler = {
1950+ GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
1951+ {
1952+ { -1, 0, 0, 0 },
1953+ { GRAIL_TYPE_DRAG1, 1, 1, PRIO_DRAG },
1954+ { GRAIL_TYPE_DRAG2, 2, 2, PRIO_DRAG },
1955+ { GRAIL_TYPE_DRAG3, 3, 3, PRIO_DRAG },
1956+ { GRAIL_TYPE_DRAG4, 4, 4, PRIO_DRAG },
1957+ { GRAIL_TYPE_DRAG5, 5, 5, PRIO_DRAG }
1958+ },
1959+ drag_props
1960+};
1961+
1962+static const struct gesture_handler pinch_handler = {
1963+ GRAIL_EXPECT_SCALE,
1964+ {
1965+ { -1, 0, 0, 0 },
1966+ { -1, 0, 0, 0 },
1967+ { GRAIL_TYPE_PINCH2, 2, 2, PRIO_PINCH },
1968+ { GRAIL_TYPE_PINCH3, 3, 3, PRIO_PINCH },
1969+ { GRAIL_TYPE_PINCH4, 4, 4, PRIO_PINCH },
1970+ { GRAIL_TYPE_PINCH5, 5, 5, PRIO_PINCH }
1971+ },
1972+ pinch_props
1973+};
1974+
1975+static const struct gesture_handler rotate_handler = {
1976+ GRAIL_EXPECT_ANGLE,
1977+ {
1978+ { -1, 0, 0, 0 },
1979+ { -1, 0, 0, 0 },
1980+ { GRAIL_TYPE_ROTATE2, 2, 2, PRIO_ROTATE },
1981+ { GRAIL_TYPE_ROTATE3, 3, 3, PRIO_ROTATE },
1982+ { GRAIL_TYPE_ROTATE4, 4, 4, PRIO_ROTATE },
1983+ { GRAIL_TYPE_ROTATE5, 5, 5, PRIO_ROTATE }
1984+ },
1985+ rotate_props
1986+};
1987+
1988+static const struct gesture_handler tap_handler = {
1989+ GRAIL_EXPECT_MASK,
1990+ {
1991+ { -1, 0, 0, 0 },
1992+ { GRAIL_TYPE_TAP1, 1, 1, PRIO_TAP },
1993+ { GRAIL_TYPE_TAP2, 2, 2, PRIO_TAP },
1994+ { GRAIL_TYPE_TAP3, 3, 3, PRIO_TAP },
1995+ { GRAIL_TYPE_TAP4, 4, 4, PRIO_TAP },
1996+ { GRAIL_TYPE_TAP5, 5, 5, PRIO_TAP }
1997+ },
1998+ tap_props
1999+};
2000+
2001+static const struct gesture_handler wintouch_handler = {
2002+ 0,
2003+ {
2004+ { -1, 0, 0, 0 },
2005+ { -1, 0, 0, 0 },
2006+ { -1, 0, 0, 0 },
2007+ { GRAIL_TYPE_ETOUCH, 1, 3, PRIO_EDRAG },
2008+ { GRAIL_TYPE_MTOUCH, 1, 4, PRIO_MDRAG },
2009+ { -1, 0, 0, 0 },
2010+ },
2011+ touch_props
2012+};
2013+
2014+static const struct gesture_handler windrag_handler = {
2015+ GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
2016+ {
2017+ { -1, 0, 0, 0 },
2018+ { -1, 0, 0, 0 },
2019+ { -1, 0, 0, 0 },
2020+ { GRAIL_TYPE_EDRAG, 1, 3, PRIO_EDRAG },
2021+ { GRAIL_TYPE_MDRAG, 1, 4, PRIO_MDRAG },
2022+ { -1, 0, 0, 0 },
2023+ },
2024+ drag_props
2025+};
2026+
2027+static const struct gesture_handler winpinch_handler = {
2028+ GRAIL_EXPECT_SCALE | GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
2029+ {
2030+ { -1, 0, 0, 0 },
2031+ { -1, 0, 0, 0 },
2032+ { -1, 0, 0, 0 },
2033+ { GRAIL_TYPE_EPINCH, 2, 3, PRIO_EPINCH },
2034+ { GRAIL_TYPE_MPINCH, 2, 4, PRIO_MPINCH },
2035+ { -1, 0, 0, 0 },
2036+ },
2037+ pinch_props
2038+};
2039+
2040+static const struct gesture_handler winrotate_handler = {
2041+ GRAIL_EXPECT_ANGLE | GRAIL_EXPECT_DRAG_X | GRAIL_EXPECT_DRAG_Y,
2042+ {
2043+ { -1, 0, 0, 0 },
2044+ { -1, 0, 0, 0 },
2045+ { -1, 0, 0, 0 },
2046+ { GRAIL_TYPE_EROTATE, 2, 3, PRIO_EROTATE },
2047+ { GRAIL_TYPE_MROTATE, 2, 4, PRIO_MROTATE },
2048+ { -1, 0, 0, 0 },
2049+ },
2050+ rotate_props
2051+};
2052
2053 int gru_init(struct grail *ge)
2054 {
2055@@ -30,8 +201,18 @@
2056 gru = calloc(1, sizeof(struct gesture_recognizer));
2057 if (!gru)
2058 return -ENOMEM;
2059+
2060+ gru->touch.handler = &touch_handler;
2061+ gru->drag.handler = &drag_handler;
2062+ gru->pinch.handler = &pinch_handler;
2063+ gru->rotate.handler = &rotate_handler;
2064+ gru->tapping.handler = &tap_handler;
2065+ gru->wintouch.handler = &wintouch_handler;
2066+ gru->windrag.handler = &windrag_handler;
2067+ gru->winpinch.handler = &winpinch_handler;
2068+ gru->winrotate.handler = &winrotate_handler;
2069+
2070 ge->gru = gru;
2071- gru_init_motion(ge);
2072 return 0;
2073 }
2074
2075@@ -41,18 +222,166 @@
2076 ge->gru = NULL;
2077 }
2078
2079-void gru_recognize(struct grail *ge, const struct utouch_frame *frame)
2080-{
2081- if (!ge->gin || !ge->gru)
2082- return;
2083- gru_motion(ge, frame);
2084- gru_touch(ge, frame);
2085- gru_drag(ge, frame);
2086- gru_pinch(ge, frame);
2087- gru_rotate(ge, frame);
2088- gru_wintouch(ge, frame);
2089- gru_windrag(ge, frame);
2090- gru_winpinch(ge, frame);
2091- gru_winrotate(ge, frame);
2092- gru_tapping(ge, frame);
2093+static void set_props(struct grail *ge,
2094+ struct combo_model *s,
2095+ const struct utouch_frame *frame)
2096+{
2097+ const struct gesture_handler *gh = s->handler;
2098+ gh->set_props(ge->gin, s, ge->gru->move, frame);
2099+ s->nprop += gin_add_contact_props(ge->gin, s->prop + s->nprop, frame);
2100+}
2101+
2102+static int gru_touch_handler(struct grail *ge,
2103+ struct combo_model *state,
2104+ const struct utouch_frame *frame)
2105+{
2106+ struct gesture_recognizer *gru = ge->gru;
2107+ struct gesture_inserter *gin = ge->gin;
2108+ struct grail_element *move = gru->move;
2109+ const struct gesture_handler *gh = state->handler;
2110+ int ntouch = move->num_touches;
2111+ if (frame->slot_revision != frame->prev->slot_revision) {
2112+ if (state->active) {
2113+ gin_gid_end(ge, state->gid, move->center.x,
2114+ move->center.y, ntouch,
2115+ state->prop, state->nprop);
2116+ state->active = 0;
2117+ }
2118+ }
2119+ if (ntouch > MAX_TOUCH_GESTURE)
2120+ return 0;
2121+ if (!state->active) {
2122+ struct gesture_head h = gh->getype[ntouch];
2123+ if (h.type < 0)
2124+ return 0;
2125+ state->gid = gin_gid_begin(ge, h.type, -h.priority, frame);
2126+ state->mintouch = h.mintouch;
2127+ state->maxtouch = h.maxtouch;
2128+ state->active = 1;
2129+ }
2130+ set_props(ge, state, frame);
2131+ gin_gid_event(ge, state->gid, move->center.x, move->center.y,
2132+ ntouch, state->prop, state->nprop, 0);
2133+ return 1;
2134+}
2135+
2136+static int gru_gesture_handler(struct grail *ge,
2137+ struct combo_model *state,
2138+ const struct utouch_frame *frame)
2139+{
2140+ struct gesture_recognizer *gru = ge->gru;
2141+ struct gesture_inserter *gin = ge->gin;
2142+ struct grail_element *move = gru->move;
2143+ const struct gesture_handler *gh = state->handler;
2144+ int expect = move->expect_mask & gh->fm_mask;
2145+ int active = move->active_mask & gh->fm_mask;
2146+ int ntouch = move->num_touches;
2147+ if (state->active &&
2148+ (!expect || ntouch < state->mintouch || ntouch > state->maxtouch)) {
2149+ gin_gid_end(ge, state->gid, move->center.x,
2150+ move->center.y, ntouch,
2151+ state->prop, state->nprop);
2152+ state->active = 0;
2153+ return 0;
2154+ }
2155+ if (!expect || ntouch > MAX_TOUCH_GESTURE)
2156+ return 0;
2157+ if (!state->active) {
2158+ struct gesture_head h = gh->getype[ntouch];
2159+ if (h.type < 0)
2160+ return 0;
2161+ state->gid = gin_gid_begin(ge, h.type, h.priority, frame);
2162+ state->mintouch = h.mintouch;
2163+ state->maxtouch = h.maxtouch;
2164+ state->active = 1;
2165+ }
2166+ if (!active)
2167+ return 0;
2168+ set_props(ge, state, frame);
2169+ gin_gid_event(ge, state->gid, move->center.x, move->center.y,
2170+ ntouch, state->prop, state->nprop, 0);
2171+ return 1;
2172+}
2173+
2174+static int gru_tap_handler(struct grail *ge,
2175+ struct combo_model *state,
2176+ const struct utouch_frame *frame)
2177+{
2178+ const struct grail_control *ctl = ge->impl->ctl;
2179+ struct gesture_recognizer *gru = ge->gru;
2180+ struct grail_element *move = gru->move;
2181+ const struct gesture_handler *gh = state->handler;
2182+ int active = move->active_mask & gh->fm_mask;
2183+ int ntouch = move->num_touches;
2184+ if (frame->num_active && !frame->prev->num_active) {
2185+ state->mintouch = 0;
2186+ state->maxtouch = 0;
2187+ }
2188+ if (ntouch > state->maxtouch) {
2189+ if (state->active) {
2190+ gin_gid_discard(ge, state->gid);
2191+ state->active = 0;
2192+ }
2193+ state->start = frame->time;
2194+ state->maxtouch = ntouch;
2195+ set_props(ge, state, frame);
2196+ if (state->maxtouch <= MAX_TOUCH_GESTURE) {
2197+ struct gesture_head h = gh->getype[ntouch];
2198+ if (h.type < 0)
2199+ return 0;
2200+ state->gid = gin_gid_begin(ge, h.type, h.priority,
2201+ frame);
2202+ state->active = 1;
2203+ }
2204+ return 0;
2205+ }
2206+ if (!state->active) {
2207+ state->mintouch = ntouch;
2208+ return 0;
2209+ }
2210+ if (active || frame->time - state->start > ctl->tap_time_ms) {
2211+ gin_gid_discard(ge, state->gid);
2212+ state->mintouch = ntouch;
2213+ state->maxtouch = ntouch;
2214+ state->active = 0;
2215+ return 0;
2216+ }
2217+ if (ntouch <= state->mintouch) {
2218+ float x = state->prop[GRAIL_PROP_TAP_X];
2219+ float y = state->prop[GRAIL_PROP_TAP_Y];
2220+ float t = frame->time - state->start;
2221+ state->prop[GRAIL_PROP_TAP_DT] = t;
2222+ gin_gid_event(ge, state->gid, x, y, state->maxtouch,
2223+ state->prop, state->nprop, 1);
2224+ state->mintouch = ntouch;
2225+ state->maxtouch = ntouch;
2226+ state->active = 0;
2227+ return 1;
2228+ }
2229+ if (!ntouch)
2230+ return 0;
2231+ state->prop[GRAIL_PROP_TAP_DT] = frame->time - state->start;
2232+ return 0;
2233+}
2234+
2235+void gru_recognize(struct grail *ge,
2236+ const struct grail_frame *frame,
2237+ const struct utouch_frame *touch)
2238+{
2239+ struct gesture_recognizer *gru = ge->gru;
2240+
2241+ if (frame && frame->num_ongoing)
2242+ gru->slot = frame->ongoing[frame->num_ongoing - 1]->slot;
2243+
2244+ gru->move = frame->slots[gru->slot];
2245+
2246+ gru_touch_handler(ge, &gru->touch, touch);
2247+ gru_gesture_handler(ge, &gru->drag, touch);
2248+ gru_gesture_handler(ge, &gru->pinch, touch);
2249+ gru_gesture_handler(ge, &gru->rotate, touch);
2250+ gru_touch_handler(ge, &gru->wintouch, touch);
2251+ gru_gesture_handler(ge, &gru->windrag, touch);
2252+ gru_gesture_handler(ge, &gru->winpinch, touch);
2253+ gru_gesture_handler(ge, &gru->winrotate, touch);
2254+ gru_tap_handler(ge, &gru->tapping, touch);
2255 }
2256
2257=== modified file 'src/grail-recognizer.h'
2258--- src/grail-recognizer.h 2011-05-17 14:15:22 +0000
2259+++ src/grail-recognizer.h 2011-08-17 12:41:50 +0000
2260@@ -22,10 +22,60 @@
2261 #ifndef GRAIL_RECOGNIZER_H
2262 #define GRAIL_RECOGNIZER_H
2263
2264-#include "grail-gestures.h"
2265-
2266+#include "grail-inserter.h"
2267+
2268+#define PRIO_POINTER 1
2269+#define PRIO_PINCH 2
2270+#define PRIO_ROTATE 3
2271+#define PRIO_DRAG 3
2272+#define PRIO_EPINCH 4
2273+#define PRIO_EROTATE 5
2274+#define PRIO_EDRAG 5
2275+#define PRIO_MPINCH 6
2276+#define PRIO_MROTATE 7
2277+#define PRIO_MDRAG 7
2278+#define PRIO_TAP 8
2279+
2280+/*
2281+ * struct combo_model - gesture primitive state
2282+ * @start: time this primitive started
2283+ * @active: true if this primitive is active
2284+ * @gid: gesture slot used for this primitive
2285+ * @mintouch: number of touches below this value ends the primitive
2286+ * @maxtouch: number of touches above this value ends the primitive
2287+ * @nprop: number of properties of this primitive
2288+ * @handler: pointer to gesture handler for this primitive
2289+ *
2290+ * This structure keeps track of an individual gesture primitive.
2291+ */
2292+struct combo_model {
2293+ grail_time_t start;
2294+ int active, gid;
2295+ int mintouch, maxtouch;
2296+ int nprop;
2297+ grail_prop_t prop[DIM_GRAIL_PROP];
2298+ const struct gesture_handler *handler;
2299+};
2300+
2301+/*
2302+ * struct gesture_recognizer - gesture recognizer state
2303+ * @slot: touch slot of current touch frame
2304+ * @move: the grail element used for all gestures
2305+ * @touch: touch primitive state
2306+ * @drag: drag primitive state
2307+ * @pinch: pinch primitive state
2308+ * @rotate: rotate primitive state
2309+ * @wintouch: env/meta touch primitive state
2310+ * @windrag: env/meta drag primitive state
2311+ * @winpinch: env/meta pinch primitive state
2312+ * @winrotate: env/meta rotate primitive state
2313+ * @tapping: tapping gesture primitive state
2314+ *
2315+ * This is the state of the gesture recognizer.
2316+ */
2317 struct gesture_recognizer {
2318- struct move_model move;
2319+ int slot;
2320+ struct grail_element *move;
2321 struct combo_model touch;
2322 struct combo_model drag;
2323 struct combo_model pinch;
2324@@ -34,11 +84,45 @@
2325 struct combo_model windrag;
2326 struct combo_model winpinch;
2327 struct combo_model winrotate;
2328- struct tapping_model tapping;
2329+ struct combo_model tapping;
2330+};
2331+
2332+/*
2333+ * struct gesture_head - gesture type handler data
2334+ * @type: gesture type of this primitive
2335+ * @mintouch: minimum number of touches for this primitive
2336+ * @maxtouch: maximum number of touches for this primitive
2337+ * @priority: priority of this primitive
2338+ */
2339+struct gesture_head {
2340+ int type;
2341+ int mintouch;
2342+ int maxtouch;
2343+ int priority;
2344+};
2345+
2346+/*
2347+ * struct gesture_handler - gesture handler state
2348+ * @fm_mask: gesture frame expectation mask used in this handler
2349+ * @getype: array of gesture type data per number of touches
2350+ * @set_props: properties method for this handler
2351+ *
2352+ * This is the state of the gesture handler.
2353+ */
2354+struct gesture_handler {
2355+ int fm_mask;
2356+ struct gesture_head getype[DIM_TOUCH + 1];
2357+
2358+ void (*set_props)(const struct gesture_inserter *gin,
2359+ struct combo_model *state,
2360+ const struct grail_element *element,
2361+ const struct utouch_frame *frame);
2362 };
2363
2364 int gru_init(struct grail *ge);
2365-void gru_recognize(struct grail *ge, const struct utouch_frame *frame);
2366+void gru_recognize(struct grail *ge,
2367+ const struct grail_frame *frame,
2368+ const struct utouch_frame *touch);
2369 void gru_destroy(struct grail *ge);
2370
2371 #endif
2372
2373=== modified file 'test/Makefile.am'
2374--- test/Makefile.am 2011-04-28 16:53:46 +0000
2375+++ test/Makefile.am 2011-08-17 12:41:50 +0000
2376@@ -10,9 +10,12 @@
2377 check_grail_SOURCES = \
2378 check-mapping.c \
2379 check-transform.c \
2380+ check-gestures.c \
2381 check-grail.c
2382
2383 check_grail_CFLAGS = \
2384+ -DTEST_ROOT_DIR=\"$(abs_top_srcdir)/test\"\
2385+ -Wall -Wextra \
2386 -Wall -Wextra \
2387 -I$(top_srcdir) \
2388 -I$(top_srcdir)/include \
2389
2390=== added file 'test/check-gestures.c'
2391--- test/check-gestures.c 1970-01-01 00:00:00 +0000
2392+++ test/check-gestures.c 2011-08-17 12:41:50 +0000
2393@@ -0,0 +1,230 @@
2394+#include <check.h>
2395+#include <grail.h>
2396+#include "../src/grail-impl.h"
2397+#include <string.h>
2398+#include <stdio.h>
2399+#include <unistd.h>
2400+#include <fcntl.h>
2401+#include <stdlib.h>
2402+#include <time.h>
2403+#include <math.h>
2404+
2405+#define TEST_TIME_MS 20000
2406+
2407+#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
2408+
2409+struct test_data {
2410+ struct grail ge;
2411+ int fd;
2412+ int begin_count[DIM_GRAIL_TYPE];
2413+ int update_count[DIM_GRAIL_TYPE];
2414+ int end_count[DIM_GRAIL_TYPE];
2415+};
2416+
2417+static int tp_get_clients(struct grail *ge,
2418+ struct grail_client_info *clients, int max_clients,
2419+ const struct grail_coord *coords, int num_coords,
2420+ const grail_mask_t *types, int type_bytes)
2421+{
2422+ memset(&clients[0], 0, sizeof(clients[0]));
2423+ clients[0].mask[0] = 255;
2424+ clients[0].mask[1] = 255;
2425+ clients[0].mask[2] = 255;
2426+ clients[0].mask[3] = 255;
2427+ clients[0].id.client = 345;
2428+ clients[0].id.root = 1;
2429+ clients[0].id.event = 2;
2430+ clients[0].id.child = 3;
2431+ ge = 0;
2432+ types = 0;
2433+ type_bytes = 0;
2434+ max_clients = 0;
2435+ coords = 0;
2436+ num_coords = 0;
2437+ return 1;
2438+}
2439+
2440+static void tp_event(struct grail *ge, const struct input_event *ev)
2441+{
2442+ ge = 0;
2443+ ev = 0;
2444+}
2445+
2446+static void tp_gesture(struct grail *ge, const struct grail_event *ev)
2447+{
2448+ struct test_data *data = ge->priv;
2449+
2450+ switch (ev->status) {
2451+ case GRAIL_STATUS_BEGIN:
2452+ data->begin_count[ev->type]++;
2453+ break;
2454+ case GRAIL_STATUS_UPDATE:
2455+ data->update_count[ev->type]++;
2456+ break;
2457+ case GRAIL_STATUS_END:
2458+ data->end_count[ev->type]++;
2459+ break;
2460+ }
2461+}
2462+
2463+static int init_test_data(struct test_data *data, const char *path)
2464+{
2465+ int ret;
2466+
2467+ memset(data, 0, sizeof(*data));
2468+
2469+ data->ge.get_clients = tp_get_clients;
2470+ data->ge.event = tp_event;
2471+ data->ge.gesture = tp_gesture;
2472+
2473+ data->fd = open(path, O_RDONLY | O_NONBLOCK);
2474+ ret = grail_open(&data->ge, data->fd);
2475+ data->ge.impl->fast_fileread = 1;
2476+ if(ret)
2477+ return ret;
2478+ return 0;
2479+}
2480+
2481+static void term_test_data(struct test_data *data)
2482+{
2483+ grail_close(&data->ge, data->fd);
2484+ close(data->fd);
2485+}
2486+
2487+static void test_gesture_type(const char *name, int type,
2488+ int expected_begin_events,
2489+ int expected_update_events,
2490+ int expected_other_type_events)
2491+{
2492+ struct test_data data;
2493+ char path[1024];
2494+ int type_count = 0;
2495+ int i;
2496+
2497+ sprintf(path, TEST_FILE("io/functional/%s"), name);
2498+ fail_if(init_test_data(&data, path));
2499+
2500+ data.ge.priv = &data;
2501+ grail_pull(&data.ge, data.fd);
2502+
2503+ for (i = 0; i < DIM_GRAIL_TYPE; i++) {
2504+ if (data.begin_count[i] || data.update_count[i] || data.end_count[i]) {
2505+ //fprintf(stderr, "type %d %d\n", i, data.begin[i]);
2506+ type_count++;
2507+ }
2508+ }
2509+
2510+ fail_unless(data.begin_count[type] == expected_begin_events,
2511+ "Event begin count was %d, expected %d.",
2512+ data.begin_count[type], expected_begin_events);
2513+ fail_unless(data.update_count[type] >= expected_update_events,
2514+ "Event update count was %d, expecter more than %d.",
2515+ data.update_count[type], expected_update_events);
2516+ fail_unless(data.end_count[type] == expected_begin_events,
2517+ "Event end count was %d, expected %d",
2518+ data.end_count[type], expected_begin_events);
2519+ fail_unless(type_count == 1 + expected_other_type_events,
2520+ "Detected %d types of gestures, expected %d.",
2521+ type_count, 1+expected_other_type_events);
2522+
2523+ term_test_data(&data);
2524+}
2525+
2526+
2527+START_TEST(drag_1)
2528+{
2529+ test_gesture_type("drag-1.evemu", GRAIL_TYPE_DRAG1, 4, 4, 0);
2530+}
2531+END_TEST
2532+
2533+START_TEST(drag_2)
2534+{
2535+ test_gesture_type("drag-2.evemu", GRAIL_TYPE_DRAG2, 3, 3, 0);
2536+}
2537+END_TEST
2538+
2539+START_TEST(drag_3)
2540+{
2541+ test_gesture_type("drag-3.evemu", GRAIL_TYPE_EDRAG, 2, 2, 1);
2542+}
2543+END_TEST
2544+
2545+START_TEST(drag_4)
2546+{
2547+ /*
2548+ * This test should have drag only, but the data has
2549+ * some rotation and the current algorithm detects that.
2550+ * If the detector is fine tuned, the test case can be
2551+ * changed to not allow anything else than drags.
2552+ */
2553+ test_gesture_type("drag-4.evemu", GRAIL_TYPE_MDRAG, 4, 4, 1);
2554+}
2555+END_TEST
2556+
2557+START_TEST(hold_1)
2558+{
2559+ test_gesture_type("hold-1.evemu", GRAIL_TYPE_DRAG1, 0, 0, -1);
2560+}
2561+END_TEST
2562+
2563+START_TEST(pinch_2)
2564+{
2565+ test_gesture_type("pinch-2.evemu", GRAIL_TYPE_PINCH2, 2, 2, 0);
2566+}
2567+END_TEST
2568+
2569+START_TEST(pinch_3)
2570+{
2571+ test_gesture_type("pinch-3.evemu", GRAIL_TYPE_EPINCH, 2, 2, 0);
2572+}
2573+END_TEST
2574+
2575+START_TEST(rotate_2)
2576+{
2577+ test_gesture_type("rotate-2.evemu", GRAIL_TYPE_ROTATE2, 4, 4, 1);
2578+ /* In a perfect world, rotation around one finger would not cause
2579+ * drags.
2580+ *
2581+ * When we reach that world, remove the following test.
2582+ */
2583+ test_gesture_type("rotate-2.evemu", GRAIL_TYPE_DRAG2, 4, 4, 1);
2584+}
2585+END_TEST
2586+
2587+START_TEST(tap_1)
2588+{
2589+ test_gesture_type("tap-1.evemu", GRAIL_TYPE_TAP1, 0, 1, 0);
2590+}
2591+END_TEST
2592+
2593+START_TEST(tap_4)
2594+{
2595+ test_gesture_type("tap-4.evemu", GRAIL_TYPE_TAP4, 0, 1, 0);
2596+}
2597+END_TEST
2598+
2599+#define ADD_TEST(suite, name) \
2600+ do { \
2601+ TCase *test = tcase_create(#name); \
2602+ tcase_set_timeout (test, TEST_TIME_MS / 1000); \
2603+ tcase_add_test(test, name); \
2604+ suite_add_tcase(suite, test); \
2605+ } while (0)
2606+
2607+Suite *make_gesture_suite()
2608+{
2609+ Suite *suite = suite_create("grail-gestures");
2610+
2611+ ADD_TEST(suite, drag_1);
2612+ ADD_TEST(suite, drag_2);
2613+ ADD_TEST(suite, drag_3);
2614+ ADD_TEST(suite, drag_4);
2615+ ADD_TEST(suite, hold_1);
2616+ ADD_TEST(suite, pinch_2);
2617+ ADD_TEST(suite, pinch_3);
2618+ ADD_TEST(suite, rotate_2);
2619+ ADD_TEST(suite, tap_1);
2620+ ADD_TEST(suite, tap_4);
2621+
2622+ return suite;
2623+}
2624
2625=== modified file 'test/check-grail.c'
2626--- test/check-grail.c 2011-04-28 16:53:46 +0000
2627+++ test/check-grail.c 2011-08-17 12:41:50 +0000
2628@@ -4,6 +4,7 @@
2629
2630 extern Suite *make_mapping_suite();
2631 extern Suite *make_transform_suite();
2632+extern Suite *make_gesture_suite();
2633
2634 int main(int argc CK_ATTRIBUTE_UNUSED, char* argv[] CK_ATTRIBUTE_UNUSED)
2635 {
2636@@ -13,10 +14,11 @@
2637
2638 srunner_add_suite(sr, make_mapping_suite());
2639 srunner_add_suite(sr, make_transform_suite());
2640+ srunner_add_suite(sr, make_gesture_suite());
2641
2642 srunner_set_log(sr, "check_grail.log");
2643 srunner_set_xml(sr, "check_grail.xml");
2644- srunner_run_all(sr, CK_NORMAL);
2645+ srunner_run_all(sr, CK_ENV);
2646 num_failed = srunner_ntests_failed(sr);
2647
2648 srunner_free(sr);
2649
2650=== modified file 'test/check-mapping.c'
2651--- test/check-mapping.c 2011-03-17 09:47:52 +0000
2652+++ test/check-mapping.c 2011-08-17 12:41:50 +0000
2653@@ -8,6 +8,8 @@
2654 #include <time.h>
2655 #include <math.h>
2656
2657+#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
2658+
2659 struct test_data {
2660 struct grail ge;
2661 int fd;
2662@@ -83,7 +85,7 @@
2663 {
2664 struct test_data data;
2665
2666- fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));
2667+ fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
2668
2669 data.ge.priv = &data;
2670 grail_pull(&data.ge, data.fd);
2671@@ -99,7 +101,7 @@
2672 static const struct grail_coord min = { 0, 0 }, max = { 1.6, 1 };
2673 struct test_data data;
2674
2675- fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));
2676+ fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
2677 grail_set_bbox(&data.ge, &min, &max);
2678
2679 data.ge.priv = &data;
2680
2681=== modified file 'test/check-transform.c'
2682--- test/check-transform.c 2011-04-28 16:53:46 +0000
2683+++ test/check-transform.c 2011-08-17 12:41:50 +0000
2684@@ -9,6 +9,8 @@
2685 #include <time.h>
2686 #include <math.h>
2687
2688+#define TEST_FILE(relative_path) (TEST_ROOT_DIR "/" relative_path)
2689+
2690 struct test_data {
2691 struct evemu_device *evemu;
2692 utouch_frame_handle fh;
2693@@ -83,7 +85,7 @@
2694 const struct grail_element *slot;
2695 struct grail_coord pos = { 0, 0 };
2696
2697- fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));
2698+ fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
2699
2700 while (get_event(&data, &ev)) {
2701 slot = get_element(&data, &ev);
2702@@ -105,7 +107,7 @@
2703 const struct grail_element *slot;
2704 struct grail_coord pos = { 0, 0 };
2705
2706- fail_if(init_test_data(&data, "io/evemu/one-tap.evemu"));
2707+ fail_if(init_test_data(&data, TEST_FILE("io/evemu/one-tap.evemu")));
2708 grail_set_bbox(data.ge, &min, &max);
2709
2710 while (get_event(&data, &ev)) {
2711
2712=== added directory 'test/io/functional'
2713=== added file 'test/io/functional/drag-1.evemu'
2714--- test/io/functional/drag-1.evemu 1970-01-01 00:00:00 +0000
2715+++ test/io/functional/drag-1.evemu 2011-08-17 12:41:50 +0000
2716@@ -0,0 +1,3988 @@
2717+N: 3M-Microtouch
2718+I: 0003 0596 0502 0110
2719+P: 00 00 00 00 00 00 00 00
2720+B: 00 0b 00 00 00 00 00 00 00
2721+B: 01 00 00 00 00 00 00 00 00
2722+B: 01 00 00 00 00 00 00 00 00
2723+B: 01 00 00 00 00 00 00 00 00
2724+B: 01 00 00 00 00 00 00 00 00
2725+B: 01 00 00 00 00 00 00 00 00
2726+B: 01 00 04 00 00 00 00 00 00
2727+B: 01 00 00 00 00 00 00 00 00
2728+B: 01 00 00 00 00 00 00 00 00
2729+B: 01 00 00 00 00 00 00 00 00
2730+B: 01 00 00 00 00 00 00 00 00
2731+B: 01 00 00 00 00 00 00 00 00
2732+B: 01 00 00 00 00 00 00 00 00
2733+B: 02 00 00 00 00 00 00 00 00
2734+B: 03 03 00 00 00 00 80 73 02
2735+B: 04 00 00 00 00 00 00 00 00
2736+B: 05 00 00 00 00 00 00 00 00
2737+B: 11 00 00 00 00 00 00 00 00
2738+B: 12 00 00 00 00 00 00 00 00
2739+B: 15 00 00 00 00 00 00 00 00
2740+B: 15 00 00 00 00 00 00 00 00
2741+A: 00 0 32767 15 0
2742+A: 01 0 32767 15 0
2743+A: 2f 0 59 0 0
2744+A: 30 0 32767 255 0
2745+A: 31 0 32767 255 0
2746+A: 34 0 1 0 0
2747+A: 35 0 32767 15 0
2748+A: 36 0 32767 15 0
2749+A: 39 0 65535 0 0
2750+E: 1304510649.770760 0003 002f 0
2751+E: 1304510649.770775 0003 0039 135
2752+E: 1304510649.770778 0003 0035 16448
2753+E: 1304510649.770779 0003 0036 6505
2754+E: 1304510649.770782 0003 0030 1312
2755+E: 1304510649.770787 0001 014a 1
2756+E: 1304510649.770791 0003 0000 16448
2757+E: 1304510649.770792 0003 0001 6505
2758+E: 1304510649.770794 0000 0000 0
2759+E: 1304510649.775755 0003 0030 1348
2760+E: 1304510649.775775 0000 0000 0
2761+E: 1304510649.801747 0003 0036 6507
2762+E: 1304510649.801769 0000 0000 0
2763+E: 1304510649.806750 0003 0036 6509
2764+E: 1304510649.806771 0000 0000 0
2765+E: 1304510649.811749 0003 0036 6521
2766+E: 1304510649.811769 0003 0001 6513
2767+E: 1304510649.811771 0000 0000 0
2768+E: 1304510649.816750 0003 0036 6529
2769+E: 1304510649.816763 0003 0030 1220
2770+E: 1304510649.816771 0003 0001 6521
2771+E: 1304510649.816773 0000 0000 0
2772+E: 1304510649.821749 0003 0036 6559
2773+E: 1304510649.821762 0003 0030 1188
2774+E: 1304510649.821770 0003 0001 6559
2775+E: 1304510649.821772 0000 0000 0
2776+E: 1304510649.826749 0003 0036 6570
2777+E: 1304510649.826769 0003 0001 6561
2778+E: 1304510649.826771 0000 0000 0
2779+E: 1304510649.831749 0003 0036 6603
2780+E: 1304510649.831769 0003 0001 6603
2781+E: 1304510649.831771 0000 0000 0
2782+E: 1304510649.836750 0003 0036 6617
2783+E: 1304510649.836770 0003 0001 6606
2784+E: 1304510649.836772 0000 0000 0
2785+E: 1304510649.841749 0003 0036 6657
2786+E: 1304510649.841769 0003 0001 6657
2787+E: 1304510649.841771 0000 0000 0
2788+E: 1304510649.847750 0003 0036 6671
2789+E: 1304510649.847763 0003 0030 1322
2790+E: 1304510649.847771 0003 0001 6660
2791+E: 1304510649.847772 0000 0000 0
2792+E: 1304510649.852748 0003 0036 6715
2793+E: 1304510649.852761 0003 0030 1355
2794+E: 1304510649.852769 0003 0001 6715
2795+E: 1304510649.852771 0000 0000 0
2796+E: 1304510649.857749 0003 0036 6729
2797+E: 1304510649.857769 0003 0001 6718
2798+E: 1304510649.857771 0000 0000 0
2799+E: 1304510649.862749 0003 0036 6771
2800+E: 1304510649.862769 0003 0001 6771
2801+E: 1304510649.862771 0000 0000 0
2802+E: 1304510649.867749 0003 0036 6805
2803+E: 1304510649.867770 0003 0001 6805
2804+E: 1304510649.867772 0000 0000 0
2805+E: 1304510649.872746 0003 0035 16445
2806+E: 1304510649.872758 0003 0036 6873
2807+E: 1304510649.872768 0003 0001 6873
2808+E: 1304510649.872770 0000 0000 0
2809+E: 1304510649.877748 0003 0035 16443
2810+E: 1304510649.877761 0003 0036 6887
2811+E: 1304510649.877771 0003 0001 6876
2812+E: 1304510649.877773 0000 0000 0
2813+E: 1304510649.882747 0003 0035 16441
2814+E: 1304510649.882759 0003 0036 6969
2815+E: 1304510649.882768 0003 0000 16446
2816+E: 1304510649.882770 0003 0001 6969
2817+E: 1304510649.882771 0000 0000 0
2818+E: 1304510649.887748 0003 0035 16438
2819+E: 1304510649.887759 0003 0036 7035
2820+E: 1304510649.887769 0003 0000 16444
2821+E: 1304510649.887770 0003 0001 7035
2822+E: 1304510649.887772 0000 0000 0
2823+E: 1304510649.892747 0003 0036 7067
2824+E: 1304510649.892760 0003 0030 1223
2825+E: 1304510649.892769 0003 0001 7067
2826+E: 1304510649.892770 0000 0000 0
2827+E: 1304510649.897747 0003 0035 16436
2828+E: 1304510649.897759 0003 0036 7143
2829+E: 1304510649.897762 0003 0030 1190
2830+E: 1304510649.897769 0003 0000 16442
2831+E: 1304510649.897771 0003 0001 7143
2832+E: 1304510649.897773 0000 0000 0
2833+E: 1304510649.903736 0003 0035 16434
2834+E: 1304510649.903747 0003 0036 7207
2835+E: 1304510649.903756 0003 0000 16440
2836+E: 1304510649.903758 0003 0001 7207
2837+E: 1304510649.903760 0000 0000 0
2838+E: 1304510649.908748 0003 0036 7241
2839+E: 1304510649.908768 0003 0001 7241
2840+E: 1304510649.908770 0000 0000 0
2841+E: 1304510649.913735 0003 0035 16431
2842+E: 1304510649.913746 0003 0036 7311
2843+E: 1304510649.913756 0003 0000 16437
2844+E: 1304510649.913757 0003 0001 7311
2845+E: 1304510649.913759 0000 0000 0
2846+E: 1304510649.918747 0003 0035 16428
2847+E: 1304510649.918759 0003 0036 7383
2848+E: 1304510649.918762 0003 0030 1323
2849+E: 1304510649.918769 0003 0000 16434
2850+E: 1304510649.918771 0003 0001 7383
2851+E: 1304510649.918773 0000 0000 0
2852+E: 1304510649.923734 0003 0035 16426
2853+E: 1304510649.923745 0003 0036 7453
2854+E: 1304510649.923748 0003 0030 1356
2855+E: 1304510649.923756 0003 0000 16432
2856+E: 1304510649.923757 0003 0001 7453
2857+E: 1304510649.923759 0000 0000 0
2858+E: 1304510649.928747 0003 0035 16424
2859+E: 1304510649.928759 0003 0036 7485
2860+E: 1304510649.928768 0003 0000 16430
2861+E: 1304510649.928770 0003 0001 7485
2862+E: 1304510649.928771 0000 0000 0
2863+E: 1304510649.933734 0003 0035 16422
2864+E: 1304510649.933746 0003 0036 7557
2865+E: 1304510649.933755 0003 0000 16428
2866+E: 1304510649.933757 0003 0001 7557
2867+E: 1304510649.933759 0000 0000 0
2868+E: 1304510649.938748 0003 0035 16419
2869+E: 1304510649.938761 0003 0036 7623
2870+E: 1304510649.938770 0003 0000 16425
2871+E: 1304510649.938772 0003 0001 7623
2872+E: 1304510649.938773 0000 0000 0
2873+E: 1304510649.943735 0003 0035 16417
2874+E: 1304510649.943747 0003 0036 7655
2875+E: 1304510649.943756 0003 0000 16423
2876+E: 1304510649.943758 0003 0001 7655
2877+E: 1304510649.943759 0000 0000 0
2878+E: 1304510649.948766 0003 0035 16414
2879+E: 1304510649.948779 0003 0036 7723
2880+E: 1304510649.948788 0003 0000 16420
2881+E: 1304510649.948790 0003 0001 7723
2882+E: 1304510649.948792 0000 0000 0
2883+E: 1304510649.953738 0003 0035 16412
2884+E: 1304510649.953750 0003 0036 7791
2885+E: 1304510649.953753 0003 0030 1224
2886+E: 1304510649.953760 0003 0000 16418
2887+E: 1304510649.953762 0003 0001 7791
2888+E: 1304510649.953763 0000 0000 0
2889+E: 1304510649.958757 0003 0036 7823
2890+E: 1304510649.958771 0003 0030 1191
2891+E: 1304510649.958779 0003 0001 7823
2892+E: 1304510649.958780 0000 0000 0
2893+E: 1304510649.964759 0003 0036 7893
2894+E: 1304510649.964780 0003 0001 7893
2895+E: 1304510649.964782 0000 0000 0
2896+E: 1304510649.969754 0003 0035 16410
2897+E: 1304510649.969765 0003 0036 7965
2898+E: 1304510649.969776 0003 0000 16416
2899+E: 1304510649.969778 0003 0001 7965
2900+E: 1304510649.969779 0000 0000 0
2901+E: 1304510649.974758 0003 0035 16408
2902+E: 1304510649.974770 0003 0036 8037
2903+E: 1304510649.974779 0003 0000 16414
2904+E: 1304510649.974781 0003 0001 8037
2905+E: 1304510649.974783 0000 0000 0
2906+E: 1304510649.979758 0003 0036 8105
2907+E: 1304510649.979771 0003 0030 1323
2908+E: 1304510649.979779 0003 0001 8105
2909+E: 1304510649.979781 0000 0000 0
2910+E: 1304510649.984759 0003 0036 8137
2911+E: 1304510649.984771 0003 0030 1356
2912+E: 1304510649.984780 0003 0001 8137
2913+E: 1304510649.984782 0000 0000 0
2914+E: 1304510649.989751 0003 0036 8211
2915+E: 1304510649.989765 0003 0001 8211
2916+E: 1304510649.989767 0000 0000 0
2917+E: 1304510649.994736 0003 0035 16406
2918+E: 1304510649.994744 0003 0036 8283
2919+E: 1304510649.994757 0003 0000 16412
2920+E: 1304510649.994764 0003 0001 8283
2921+E: 1304510649.994766 0000 0000 0
2922+E: 1304510649.999738 0003 0036 8355
2923+E: 1304510649.999759 0003 0001 8355
2924+E: 1304510649.999764 0000 0000 0
2925+E: 1304510650.004602 0003 0036 8425
2926+E: 1304510650.004613 0003 0001 8425
2927+E: 1304510650.004613 0000 0000 0
2928+E: 1304510650.009715 0003 0035 16404
2929+E: 1304510650.009719 0003 0036 8493
2930+E: 1304510650.009727 0003 0000 16410
2931+E: 1304510650.009728 0003 0001 8493
2932+E: 1304510650.009728 0000 0000 0
2933+E: 1304510650.014589 0003 0036 8525
2934+E: 1304510650.014592 0003 0030 1224
2935+E: 1304510650.014598 0003 0001 8525
2936+E: 1304510650.014599 0000 0000 0
2937+E: 1304510650.020610 0003 0035 16402
2938+E: 1304510650.020619 0003 0036 8597
2939+E: 1304510650.020620 0003 0030 1191
2940+E: 1304510650.020622 0003 0000 16408
2941+E: 1304510650.020623 0003 0001 8597
2942+E: 1304510650.020623 0000 0000 0
2943+E: 1304510650.025601 0003 0036 8671
2944+E: 1304510650.025612 0003 0001 8671
2945+E: 1304510650.025613 0000 0000 0
2946+E: 1304510650.030604 0003 0036 8743
2947+E: 1304510650.030617 0003 0001 8743
2948+E: 1304510650.030617 0000 0000 0
2949+E: 1304510650.035594 0003 0036 8815
2950+E: 1304510650.035601 0003 0030 1323
2951+E: 1304510650.035603 0003 0001 8815
2952+E: 1304510650.035604 0000 0000 0
2953+E: 1304510650.040607 0003 0036 8891
2954+E: 1304510650.040615 0003 0030 1356
2955+E: 1304510650.040619 0003 0001 8891
2956+E: 1304510650.040619 0000 0000 0
2957+E: 1304510650.045605 0003 0036 8961
2958+E: 1304510650.045616 0003 0001 8961
2959+E: 1304510650.045616 0000 0000 0
2960+E: 1304510650.050606 0003 0036 9031
2961+E: 1304510650.050614 0003 0001 9031
2962+E: 1304510650.050618 0000 0000 0
2963+E: 1304510650.055591 0003 0036 9103
2964+E: 1304510650.055601 0003 0001 9103
2965+E: 1304510650.055602 0000 0000 0
2966+E: 1304510650.060606 0003 0036 9135
2967+E: 1304510650.060617 0003 0001 9135
2968+E: 1304510650.060618 0000 0000 0
2969+E: 1304510650.065595 0003 0036 9209
2970+E: 1304510650.065602 0003 0001 9209
2971+E: 1304510650.065605 0000 0000 0
2972+E: 1304510650.070607 0003 0036 9279
2973+E: 1304510650.070615 0003 0030 1224
2974+E: 1304510650.070618 0003 0001 9279
2975+E: 1304510650.070619 0000 0000 0
2976+E: 1304510650.076602 0003 0036 9351
2977+E: 1304510650.076610 0003 0030 1191
2978+E: 1304510650.076613 0003 0001 9351
2979+E: 1304510650.076614 0000 0000 0
2980+E: 1304510650.081604 0003 0036 9419
2981+E: 1304510650.081615 0003 0001 9419
2982+E: 1304510650.081615 0000 0000 0
2983+E: 1304510650.086607 0003 0036 9493
2984+E: 1304510650.086617 0003 0001 9493
2985+E: 1304510650.086618 0000 0000 0
2986+E: 1304510650.091607 0003 0036 9567
2987+E: 1304510650.091616 0003 0030 1323
2988+E: 1304510650.091619 0003 0001 9567
2989+E: 1304510650.091619 0000 0000 0
2990+E: 1304510650.096607 0003 0036 9635
2991+E: 1304510650.096616 0003 0030 1356
2992+E: 1304510650.096619 0003 0001 9635
2993+E: 1304510650.096619 0000 0000 0
2994+E: 1304510650.101602 0003 0036 9701
2995+E: 1304510650.101614 0003 0001 9701
2996+E: 1304510650.101614 0000 0000 0
2997+E: 1304510650.106599 0003 0036 9733
2998+E: 1304510650.106613 0003 0001 9733
2999+E: 1304510650.106614 0000 0000 0
3000+E: 1304510650.111603 0003 0035 16400
3001+E: 1304510650.111607 0003 0036 9801
3002+E: 1304510650.111614 0003 0000 16406
3003+E: 1304510650.111615 0003 0001 9801
3004+E: 1304510650.111615 0000 0000 0
3005+E: 1304510650.116667 0003 0035 16398
3006+E: 1304510650.116671 0003 0036 9833
3007+E: 1304510650.116675 0003 0000 16404
3008+E: 1304510650.116675 0003 0001 9833
3009+E: 1304510650.116676 0000 0000 0
3010+E: 1304510650.121598 0003 0035 16396
3011+E: 1304510650.121604 0003 0036 9903
3012+E: 1304510650.121611 0003 0000 16402
3013+E: 1304510650.121612 0003 0001 9903
3014+E: 1304510650.121612 0000 0000 0
3015+E: 1304510650.126602 0003 0036 9935
3016+E: 1304510650.126613 0003 0001 9935
3017+E: 1304510650.126614 0000 0000 0
3018+E: 1304510650.131602 0003 0035 16394
3019+E: 1304510650.131611 0003 0036 10013
3020+E: 1304510650.131612 0003 0030 1224
3021+E: 1304510650.131615 0003 0000 16400
3022+E: 1304510650.131616 0003 0001 10013
3023+E: 1304510650.131616 0000 0000 0
3024+E: 1304510650.137600 0003 0035 16392
3025+E: 1304510650.137605 0003 0036 10085
3026+E: 1304510650.137605 0003 0030 1191
3027+E: 1304510650.137608 0003 0000 16398
3028+E: 1304510650.137612 0003 0001 10085
3029+E: 1304510650.137613 0000 0000 0
3030+E: 1304510650.142604 0003 0035 16390
3031+E: 1304510650.142607 0003 0036 10161
3032+E: 1304510650.142614 0003 0000 16396
3033+E: 1304510650.142615 0003 0001 10161
3034+E: 1304510650.142616 0000 0000 0
3035+E: 1304510650.147598 0003 0035 16388
3036+E: 1304510650.147602 0003 0036 10233
3037+E: 1304510650.147607 0003 0030 1323
3038+E: 1304510650.147609 0003 0000 16394
3039+E: 1304510650.147610 0003 0001 10233
3040+E: 1304510650.147610 0000 0000 0
3041+E: 1304510650.152604 0003 0036 10301
3042+E: 1304510650.152612 0003 0030 1356
3043+E: 1304510650.152615 0003 0001 10301
3044+E: 1304510650.152616 0000 0000 0
3045+E: 1304510650.157605 0003 0035 16386
3046+E: 1304510650.157616 0003 0036 10333
3047+E: 1304510650.157620 0003 0000 16392
3048+E: 1304510650.157620 0003 0001 10333
3049+E: 1304510650.157621 0000 0000 0
3050+E: 1304510650.162597 0003 0036 10401
3051+E: 1304510650.162610 0003 0001 10401
3052+E: 1304510650.162610 0000 0000 0
3053+E: 1304510650.167601 0003 0035 16383
3054+E: 1304510650.167609 0003 0036 10471
3055+E: 1304510650.167612 0003 0000 16389
3056+E: 1304510650.167613 0003 0001 10471
3057+E: 1304510650.167614 0000 0000 0
3058+E: 1304510650.172601 0003 0035 16380
3059+E: 1304510650.172604 0003 0036 10545
3060+E: 1304510650.172612 0003 0000 16386
3061+E: 1304510650.172612 0003 0001 10545
3062+E: 1304510650.172613 0000 0000 0
3063+E: 1304510650.177599 0003 0035 16377
3064+E: 1304510650.177608 0003 0036 10611
3065+E: 1304510650.177611 0003 0000 16383
3066+E: 1304510650.177612 0003 0001 10611
3067+E: 1304510650.177612 0000 0000 0
3068+E: 1304510650.182604 0003 0035 16375
3069+E: 1304510650.182607 0003 0036 10645
3070+E: 1304510650.182610 0003 0000 16381
3071+E: 1304510650.182611 0003 0001 10645
3072+E: 1304510650.182612 0000 0000 0
3073+E: 1304510650.187606 0003 0035 16373
3074+E: 1304510650.187610 0003 0036 10677
3075+E: 1304510650.187617 0003 0000 16379
3076+E: 1304510650.187618 0003 0001 10677
3077+E: 1304510650.187618 0000 0000 0
3078+E: 1304510650.193603 0003 0035 16370
3079+E: 1304510650.193607 0003 0036 10747
3080+E: 1304510650.193608 0003 0030 1224
3081+E: 1304510650.193610 0003 0000 16376
3082+E: 1304510650.193611 0003 0001 10747
3083+E: 1304510650.193612 0000 0000 0
3084+E: 1304510650.198595 0003 0035 16367
3085+E: 1304510650.198598 0003 0036 10813
3086+E: 1304510650.198603 0003 0030 1191
3087+E: 1304510650.198606 0003 0000 16373
3088+E: 1304510650.198606 0003 0001 10813
3089+E: 1304510650.198607 0000 0000 0
3090+E: 1304510650.203604 0003 0035 16364
3091+E: 1304510650.203607 0003 0036 10883
3092+E: 1304510650.203611 0003 0000 16370
3093+E: 1304510650.203611 0003 0001 10883
3094+E: 1304510650.203612 0000 0000 0
3095+E: 1304510650.208600 0003 0035 16362
3096+E: 1304510650.208604 0003 0036 10955
3097+E: 1304510650.208605 0003 0030 1323
3098+E: 1304510650.208607 0003 0000 16368
3099+E: 1304510650.208608 0003 0001 10955
3100+E: 1304510650.208608 0000 0000 0
3101+E: 1304510650.213594 0003 0035 16359
3102+E: 1304510650.213598 0003 0036 11029
3103+E: 1304510650.213599 0003 0030 1356
3104+E: 1304510650.213601 0003 0000 16365
3105+E: 1304510650.213605 0003 0001 11029
3106+E: 1304510650.213606 0000 0000 0
3107+E: 1304510650.218600 0003 0035 16357
3108+E: 1304510650.218604 0003 0036 11059
3109+E: 1304510650.218609 0003 0000 16363
3110+E: 1304510650.218613 0003 0001 11059
3111+E: 1304510650.218613 0000 0000 0
3112+E: 1304510650.223597 0003 0035 16355
3113+E: 1304510650.223601 0003 0036 11129
3114+E: 1304510650.223604 0003 0000 16361
3115+E: 1304510650.223605 0003 0001 11129
3116+E: 1304510650.223605 0000 0000 0
3117+E: 1304510650.228597 0003 0035 16352
3118+E: 1304510650.228605 0003 0036 11201
3119+E: 1304510650.228606 0003 0031 968
3120+E: 1304510650.228609 0003 0000 16358
3121+E: 1304510650.228609 0003 0001 11201
3122+E: 1304510650.228610 0000 0000 0
3123+E: 1304510650.233596 0003 0035 16349
3124+E: 1304510650.233601 0003 0036 11269
3125+E: 1304510650.233602 0003 0031 1008
3126+E: 1304510650.233604 0003 0000 16355
3127+E: 1304510650.233605 0003 0001 11269
3128+E: 1304510650.233606 0000 0000 0
3129+E: 1304510650.238604 0003 0035 16346
3130+E: 1304510650.238608 0003 0036 11299
3131+E: 1304510650.238615 0003 0000 16352
3132+E: 1304510650.238616 0003 0001 11299
3133+E: 1304510650.238616 0000 0000 0
3134+E: 1304510650.243601 0003 0035 16343
3135+E: 1304510650.243605 0003 0036 11369
3136+E: 1304510650.243608 0003 0000 16349
3137+E: 1304510650.243609 0003 0001 11369
3138+E: 1304510650.243609 0000 0000 0
3139+E: 1304510650.248597 0003 0035 16340
3140+E: 1304510650.248600 0003 0036 11447
3141+E: 1304510650.248605 0003 0034 1
3142+E: 1304510650.248605 0003 0030 1299
3143+E: 1304510650.248608 0003 0000 16346
3144+E: 1304510650.248608 0003 0001 11447
3145+E: 1304510650.248609 0000 0000 0
3146+E: 1304510650.254598 0003 0035 16337
3147+E: 1304510650.254601 0003 0036 11517
3148+E: 1304510650.254606 0003 0030 1256
3149+E: 1304510650.254609 0003 0000 16343
3150+E: 1304510650.254610 0003 0001 11517
3151+E: 1304510650.254610 0000 0000 0
3152+E: 1304510650.259599 0003 0035 16333
3153+E: 1304510650.259608 0003 0036 11595
3154+E: 1304510650.259612 0003 0000 16340
3155+E: 1304510650.259612 0003 0001 11595
3156+E: 1304510650.259613 0000 0000 0
3157+E: 1304510650.264599 0003 0035 16330
3158+E: 1304510650.264608 0003 0036 11663
3159+E: 1304510650.264608 0003 0034 0
3160+E: 1304510650.264609 0003 0030 1306
3161+E: 1304510650.264612 0003 0000 16337
3162+E: 1304510650.264612 0003 0001 11663
3163+E: 1304510650.264613 0000 0000 0
3164+E: 1304510650.269601 0003 0035 16327
3165+E: 1304510650.269604 0003 0036 11731
3166+E: 1304510650.269610 0003 0030 1343
3167+E: 1304510650.269612 0003 0000 16334
3168+E: 1304510650.269613 0003 0001 11731
3169+E: 1304510650.269613 0000 0000 0
3170+E: 1304510650.274602 0003 0035 16324
3171+E: 1304510650.274605 0003 0036 11803
3172+E: 1304510650.274613 0003 0000 16331
3173+E: 1304510650.274613 0003 0001 11803
3174+E: 1304510650.274614 0000 0000 0
3175+E: 1304510650.279591 0003 0036 11877
3176+E: 1304510650.279597 0003 0000 16329
3177+E: 1304510650.279597 0003 0001 11877
3178+E: 1304510650.279598 0000 0000 0
3179+E: 1304510650.284598 0003 0035 16322
3180+E: 1304510650.284602 0003 0036 11947
3181+E: 1304510650.284605 0003 0000 16327
3182+E: 1304510650.284605 0003 0001 11947
3183+E: 1304510650.284606 0000 0000 0
3184+E: 1304510650.289602 0003 0035 16320
3185+E: 1304510650.289607 0003 0036 12025
3186+E: 1304510650.289614 0003 0000 16325
3187+E: 1304510650.289615 0003 0001 12025
3188+E: 1304510650.289615 0000 0000 0
3189+E: 1304510650.294599 0003 0035 16318
3190+E: 1304510650.294602 0003 0036 12097
3191+E: 1304510650.294610 0003 0000 16323
3192+E: 1304510650.294610 0003 0001 12097
3193+E: 1304510650.294611 0000 0000 0
3194+E: 1304510650.299597 0003 0035 16316
3195+E: 1304510650.299601 0003 0036 12169
3196+E: 1304510650.299606 0003 0034 1
3197+E: 1304510650.299606 0003 0030 1289
3198+E: 1304510650.299609 0003 0000 16321
3199+E: 1304510650.299609 0003 0001 12169
3200+E: 1304510650.299610 0000 0000 0
3201+E: 1304510650.304599 0003 0036 12243
3202+E: 1304510650.304604 0003 0030 1249
3203+E: 1304510650.304607 0003 0001 12243
3204+E: 1304510650.304611 0000 0000 0
3205+E: 1304510650.310596 0003 0035 16314
3206+E: 1304510650.310602 0003 0036 12311
3207+E: 1304510650.310610 0003 0000 16319
3208+E: 1304510650.310610 0003 0001 12311
3209+E: 1304510650.310611 0000 0000 0
3210+E: 1304510650.315595 0003 0035 16312
3211+E: 1304510650.315599 0003 0036 12387
3212+E: 1304510650.315604 0003 0034 0
3213+E: 1304510650.315605 0003 0030 1300
3214+E: 1304510650.315607 0003 0000 16317
3215+E: 1304510650.315608 0003 0001 12387
3216+E: 1304510650.315608 0000 0000 0
3217+E: 1304510650.320596 0003 0036 12461
3218+E: 1304510650.320605 0003 0030 1339
3219+E: 1304510650.320608 0003 0001 12461
3220+E: 1304510650.320608 0000 0000 0
3221+E: 1304510650.325597 0003 0036 12535
3222+E: 1304510650.325608 0003 0001 12535
3223+E: 1304510650.325609 0000 0000 0
3224+E: 1304510650.330598 0003 0036 12607
3225+E: 1304510650.330609 0003 0001 12607
3226+E: 1304510650.330610 0000 0000 0
3227+E: 1304510650.335605 0003 0036 12683
3228+E: 1304510650.335616 0003 0001 12683
3229+E: 1304510650.335617 0000 0000 0
3230+E: 1304510650.340583 0003 0036 12761
3231+E: 1304510650.340588 0003 0001 12761
3232+E: 1304510650.340588 0000 0000 0
3233+E: 1304510650.345597 0003 0036 12837
3234+E: 1304510650.345608 0003 0001 12837
3235+E: 1304510650.345609 0000 0000 0
3236+E: 1304510650.350595 0003 0036 12907
3237+E: 1304510650.350603 0003 0034 1
3238+E: 1304510650.350604 0003 0030 1286
3239+E: 1304510650.350607 0003 0001 12907
3240+E: 1304510650.350607 0000 0000 0
3241+E: 1304510650.355599 0003 0036 12977
3242+E: 1304510650.355607 0003 0030 1247
3243+E: 1304510650.355611 0003 0001 12977
3244+E: 1304510650.355611 0000 0000 0
3245+E: 1304510650.360596 0003 0036 13055
3246+E: 1304510650.360605 0003 0034 0
3247+E: 1304510650.360605 0003 0030 1208
3248+E: 1304510650.360609 0003 0001 13055
3249+E: 1304510650.360610 0000 0000 0
3250+E: 1304510650.366588 0003 0036 13133
3251+E: 1304510650.366592 0003 0030 1270
3252+E: 1304510650.366598 0003 0001 13133
3253+E: 1304510650.366598 0000 0000 0
3254+E: 1304510650.371595 0003 0036 13207
3255+E: 1304510650.371603 0003 0030 1316
3256+E: 1304510650.371606 0003 0001 13207
3257+E: 1304510650.371606 0000 0000 0
3258+E: 1304510650.376604 0003 0035 16314
3259+E: 1304510650.376612 0003 0036 13281
3260+E: 1304510650.376614 0003 0030 1351
3261+E: 1304510650.376617 0003 0001 13281
3262+E: 1304510650.376617 0000 0000 0
3263+E: 1304510650.381583 0003 0035 16316
3264+E: 1304510650.381586 0003 0036 13359
3265+E: 1304510650.381592 0003 0001 13359
3266+E: 1304510650.381592 0000 0000 0
3267+E: 1304510650.386599 0003 0035 16318
3268+E: 1304510650.386604 0003 0036 13433
3269+E: 1304510650.386611 0003 0001 13433
3270+E: 1304510650.386612 0000 0000 0
3271+E: 1304510650.391587 0003 0035 16320
3272+E: 1304510650.391589 0003 0036 13511
3273+E: 1304510650.391597 0003 0001 13511
3274+E: 1304510650.391597 0000 0000 0
3275+E: 1304510650.396603 0003 0035 16323
3276+E: 1304510650.396606 0003 0036 13593
3277+E: 1304510650.396611 0003 0030 1221
3278+E: 1304510650.396614 0003 0001 13593
3279+E: 1304510650.396615 0000 0000 0
3280+E: 1304510650.401591 0003 0035 16325
3281+E: 1304510650.401595 0003 0036 13669
3282+E: 1304510650.401600 0003 0030 1188
3283+E: 1304510650.401602 0003 0000 16319
3284+E: 1304510650.401603 0003 0001 13669
3285+E: 1304510650.401604 0000 0000 0
3286+E: 1304510650.406597 0003 0035 16328
3287+E: 1304510650.406601 0003 0036 13751
3288+E: 1304510650.406608 0003 0000 16321
3289+E: 1304510650.406609 0003 0001 13751
3290+E: 1304510650.406609 0000 0000 0
3291+E: 1304510650.411595 0003 0035 16336
3292+E: 1304510650.411603 0003 0036 13831
3293+E: 1304510650.411604 0003 0030 1322
3294+E: 1304510650.411607 0003 0000 16328
3295+E: 1304510650.411607 0003 0001 13831
3296+E: 1304510650.411608 0000 0000 0
3297+E: 1304510650.416593 0003 0035 16339
3298+E: 1304510650.416596 0003 0036 13911
3299+E: 1304510650.416601 0003 0030 1355
3300+E: 1304510650.416603 0003 0000 16330
3301+E: 1304510650.416604 0003 0001 13911
3302+E: 1304510650.416605 0000 0000 0
3303+E: 1304510650.421595 0003 0035 16346
3304+E: 1304510650.421598 0003 0036 13995
3305+E: 1304510650.421605 0003 0000 16338
3306+E: 1304510650.421606 0003 0001 13995
3307+E: 1304510650.421607 0000 0000 0
3308+E: 1304510650.427596 0003 0035 16349
3309+E: 1304510650.427600 0003 0036 14073
3310+E: 1304510650.427608 0003 0000 16340
3311+E: 1304510650.427608 0003 0001 14073
3312+E: 1304510650.427609 0000 0000 0
3313+E: 1304510650.432589 0003 0035 16352
3314+E: 1304510650.432592 0003 0036 14151
3315+E: 1304510650.432599 0003 0000 16343
3316+E: 1304510650.432599 0003 0001 14151
3317+E: 1304510650.432600 0000 0000 0
3318+E: 1304510650.437603 0003 0035 16355
3319+E: 1304510650.437607 0003 0036 14233
3320+E: 1304510650.437614 0003 0000 16346
3321+E: 1304510650.437615 0003 0001 14233
3322+E: 1304510650.437615 0000 0000 0
3323+E: 1304510650.442592 0003 0035 16358
3324+E: 1304510650.442595 0003 0036 14315
3325+E: 1304510650.442600 0003 0030 1223
3326+E: 1304510650.442602 0003 0000 16349
3327+E: 1304510650.442603 0003 0001 14315
3328+E: 1304510650.442604 0000 0000 0
3329+E: 1304510650.447600 0003 0035 16366
3330+E: 1304510650.447604 0003 0036 14395
3331+E: 1304510650.447608 0003 0030 1190
3332+E: 1304510650.447611 0003 0000 16357
3333+E: 1304510650.447612 0003 0001 14395
3334+E: 1304510650.447612 0000 0000 0
3335+E: 1304510650.452590 0003 0035 16369
3336+E: 1304510650.452599 0003 0036 14481
3337+E: 1304510650.452602 0003 0000 16360
3338+E: 1304510650.452603 0003 0001 14481
3339+E: 1304510650.452603 0000 0000 0
3340+E: 1304510650.457599 0003 0035 16372
3341+E: 1304510650.457603 0003 0036 14565
3342+E: 1304510650.457608 0003 0030 1323
3343+E: 1304510650.457611 0003 0000 16363
3344+E: 1304510650.457611 0003 0001 14565
3345+E: 1304510650.457612 0000 0000 0
3346+E: 1304510650.462602 0003 0035 16375
3347+E: 1304510650.462605 0003 0036 14651
3348+E: 1304510650.462611 0003 0030 1356
3349+E: 1304510650.462613 0003 0000 16366
3350+E: 1304510650.462614 0003 0001 14651
3351+E: 1304510650.462615 0000 0000 0
3352+E: 1304510650.467593 0003 0035 16378
3353+E: 1304510650.467597 0003 0036 14741
3354+E: 1304510650.467605 0003 0000 16369
3355+E: 1304510650.467605 0003 0001 14741
3356+E: 1304510650.467606 0000 0000 0
3357+E: 1304510650.472596 0003 0035 16381
3358+E: 1304510650.472604 0003 0036 14823
3359+E: 1304510650.472607 0003 0000 16372
3360+E: 1304510650.472608 0003 0001 14823
3361+E: 1304510650.472608 0000 0000 0
3362+E: 1304510650.477595 0003 0035 16384
3363+E: 1304510650.477599 0003 0036 14909
3364+E: 1304510650.477606 0003 0000 16375
3365+E: 1304510650.477607 0003 0001 14909
3366+E: 1304510650.477607 0000 0000 0
3367+E: 1304510650.482600 0003 0035 16387
3368+E: 1304510650.482603 0003 0036 14993
3369+E: 1304510650.482609 0003 0030 1224
3370+E: 1304510650.482612 0003 0000 16378
3371+E: 1304510650.482612 0003 0001 14993
3372+E: 1304510650.482613 0000 0000 0
3373+E: 1304510650.488595 0003 0035 16389
3374+E: 1304510650.488599 0003 0036 15075
3375+E: 1304510650.488605 0003 0030 1191
3376+E: 1304510650.488607 0003 0000 16380
3377+E: 1304510650.488608 0003 0001 15075
3378+E: 1304510650.488608 0000 0000 0
3379+E: 1304510650.493594 0003 0035 16391
3380+E: 1304510650.493597 0003 0036 15157
3381+E: 1304510650.493601 0003 0000 16382
3382+E: 1304510650.493601 0003 0001 15157
3383+E: 1304510650.493602 0000 0000 0
3384+E: 1304510650.498600 0003 0035 16398
3385+E: 1304510650.498604 0003 0036 15243
3386+E: 1304510650.498609 0003 0030 1323
3387+E: 1304510650.498612 0003 0000 16390
3388+E: 1304510650.498613 0003 0001 15243
3389+E: 1304510650.498614 0000 0000 0
3390+E: 1304510650.503583 0003 0035 16400
3391+E: 1304510650.503586 0003 0036 15329
3392+E: 1304510650.503586 0003 0030 1356
3393+E: 1304510650.503589 0003 0000 16392
3394+E: 1304510650.503589 0003 0001 15329
3395+E: 1304510650.503590 0000 0000 0
3396+E: 1304510650.508595 0003 0035 16402
3397+E: 1304510650.508604 0003 0036 15413
3398+E: 1304510650.508607 0003 0000 16394
3399+E: 1304510650.508608 0003 0001 15413
3400+E: 1304510650.508608 0000 0000 0
3401+E: 1304510650.513590 0003 0035 16404
3402+E: 1304510650.513594 0003 0036 15497
3403+E: 1304510650.513597 0003 0000 16396
3404+E: 1304510650.513604 0003 0001 15497
3405+E: 1304510650.513604 0000 0000 0
3406+E: 1304510650.518591 0003 0035 16406
3407+E: 1304510650.518597 0003 0036 15583
3408+E: 1304510650.518604 0003 0000 16398
3409+E: 1304510650.518604 0003 0001 15583
3410+E: 1304510650.518605 0000 0000 0
3411+E: 1304510650.523595 0003 0035 16408
3412+E: 1304510650.523598 0003 0036 15663
3413+E: 1304510650.523602 0003 0000 16400
3414+E: 1304510650.523602 0003 0001 15663
3415+E: 1304510650.523603 0000 0000 0
3416+E: 1304510650.528592 0003 0035 16410
3417+E: 1304510650.528596 0003 0036 15739
3418+E: 1304510650.528601 0003 0030 1224
3419+E: 1304510650.528603 0003 0000 16402
3420+E: 1304510650.528604 0003 0001 15739
3421+E: 1304510650.528604 0000 0000 0
3422+E: 1304510650.533597 0003 0035 16412
3423+E: 1304510650.533601 0003 0036 15823
3424+E: 1304510650.533602 0003 0030 1191
3425+E: 1304510650.533605 0003 0000 16404
3426+E: 1304510650.533606 0003 0001 15823
3427+E: 1304510650.533606 0000 0000 0
3428+E: 1304510650.538595 0003 0036 15913
3429+E: 1304510650.538606 0003 0000 16406
3430+E: 1304510650.538606 0003 0001 15913
3431+E: 1304510650.538607 0000 0000 0
3432+E: 1304510650.544594 0003 0035 16414
3433+E: 1304510650.544602 0003 0036 15991
3434+E: 1304510650.544603 0003 0030 1323
3435+E: 1304510650.544606 0003 0000 16408
3436+E: 1304510650.544606 0003 0001 15991
3437+E: 1304510650.544607 0000 0000 0
3438+E: 1304510650.549590 0003 0035 16416
3439+E: 1304510650.549596 0003 0036 16069
3440+E: 1304510650.549601 0003 0030 1356
3441+E: 1304510650.549604 0003 0000 16410
3442+E: 1304510650.549604 0003 0001 16069
3443+E: 1304510650.549605 0000 0000 0
3444+E: 1304510650.554589 0003 0036 16143
3445+E: 1304510650.554600 0003 0001 16143
3446+E: 1304510650.554601 0000 0000 0
3447+E: 1304510650.559595 0003 0036 16219
3448+E: 1304510650.559606 0003 0001 16219
3449+E: 1304510650.559607 0000 0000 0
3450+E: 1304510650.564589 0003 0035 16418
3451+E: 1304510650.564592 0003 0036 16299
3452+E: 1304510650.564599 0003 0000 16412
3453+E: 1304510650.564600 0003 0001 16299
3454+E: 1304510650.564600 0000 0000 0
3455+E: 1304510650.569595 0003 0036 16373
3456+E: 1304510650.569607 0003 0001 16373
3457+E: 1304510650.569607 0000 0000 0
3458+E: 1304510650.574584 0003 0036 16445
3459+E: 1304510650.574595 0003 0001 16445
3460+E: 1304510650.574596 0000 0000 0
3461+E: 1304510650.579603 0003 0036 16515
3462+E: 1304510650.579612 0003 0030 1224
3463+E: 1304510650.579616 0003 0001 16515
3464+E: 1304510650.579616 0000 0000 0
3465+E: 1304510650.584585 0003 0036 16585
3466+E: 1304510650.584592 0003 0030 1191
3467+E: 1304510650.584595 0003 0001 16585
3468+E: 1304510650.584595 0000 0000 0
3469+E: 1304510650.589596 0003 0036 16651
3470+E: 1304510650.589607 0003 0001 16651
3471+E: 1304510650.589607 0000 0000 0
3472+E: 1304510650.594594 0003 0035 16420
3473+E: 1304510650.594598 0003 0036 16717
3474+E: 1304510650.594605 0003 0000 16414
3475+E: 1304510650.594606 0003 0001 16717
3476+E: 1304510650.594606 0000 0000 0
3477+E: 1304510650.599594 0003 0035 16422
3478+E: 1304510650.599598 0003 0036 16785
3479+E: 1304510650.599606 0003 0000 16416
3480+E: 1304510650.599606 0003 0001 16785
3481+E: 1304510650.599607 0000 0000 0
3482+E: 1304510650.605591 0003 0036 16799
3483+E: 1304510650.605603 0003 0001 16788
3484+E: 1304510650.605604 0000 0000 0
3485+E: 1304510650.610593 0003 0036 16847
3486+E: 1304510650.610602 0003 0030 1323
3487+E: 1304510650.610605 0003 0001 16847
3488+E: 1304510650.610605 0000 0000 0
3489+E: 1304510650.615590 0003 0035 16424
3490+E: 1304510650.615593 0003 0036 16877
3491+E: 1304510650.615598 0003 0030 1356
3492+E: 1304510650.615600 0003 0000 16418
3493+E: 1304510650.615601 0003 0001 16877
3494+E: 1304510650.615601 0000 0000 0
3495+E: 1304510650.620599 0003 0036 16907
3496+E: 1304510650.620610 0003 0001 16907
3497+E: 1304510650.620611 0000 0000 0
3498+E: 1304510650.625583 0003 0035 16426
3499+E: 1304510650.625587 0003 0036 16939
3500+E: 1304510650.625595 0003 0000 16420
3501+E: 1304510650.625595 0003 0001 16939
3502+E: 1304510650.625596 0000 0000 0
3503+E: 1304510650.630596 0003 0036 16971
3504+E: 1304510650.630609 0003 0001 16971
3505+E: 1304510650.630610 0000 0000 0
3506+E: 1304510650.635591 0003 0036 16985
3507+E: 1304510650.635602 0003 0001 16974
3508+E: 1304510650.635602 0000 0000 0
3509+E: 1304510650.640593 0003 0036 17031
3510+E: 1304510650.640606 0003 0001 17031
3511+E: 1304510650.640606 0000 0000 0
3512+E: 1304510650.645582 0003 0036 17061
3513+E: 1304510650.645592 0003 0001 17061
3514+E: 1304510650.645593 0000 0000 0
3515+E: 1304510650.650594 0003 0036 17131
3516+E: 1304510650.650606 0003 0001 17131
3517+E: 1304510650.650607 0000 0000 0
3518+E: 1304510650.655591 0003 0036 17144
3519+E: 1304510650.655601 0003 0001 17134
3520+E: 1304510650.655602 0000 0000 0
3521+E: 1304510650.661592 0003 0036 17179
3522+E: 1304510650.661604 0003 0001 17179
3523+E: 1304510650.661604 0000 0000 0
3524+E: 1304510650.666588 0003 0036 17190
3525+E: 1304510650.666598 0003 0001 17181
3526+E: 1304510650.666599 0000 0000 0
3527+E: 1304510650.671593 0003 0036 17227
3528+E: 1304510650.671604 0003 0001 17227
3529+E: 1304510650.671605 0000 0000 0
3530+E: 1304510650.676593 0003 0036 17238
3531+E: 1304510650.676606 0003 0001 17229
3532+E: 1304510650.676607 0000 0000 0
3533+E: 1304510650.681593 0003 0036 17269
3534+E: 1304510650.681604 0003 0001 17269
3535+E: 1304510650.681605 0000 0000 0
3536+E: 1304510650.686589 0003 0036 17279
3537+E: 1304510650.686601 0003 0001 17271
3538+E: 1304510650.686601 0000 0000 0
3539+E: 1304510650.691597 0003 0036 17309
3540+E: 1304510650.691610 0003 0001 17309
3541+E: 1304510650.691610 0000 0000 0
3542+E: 1304510650.696585 0003 0036 17319
3543+E: 1304510650.696595 0003 0001 17311
3544+E: 1304510650.696595 0000 0000 0
3545+E: 1304510650.701592 0003 0036 17333
3546+E: 1304510650.701603 0003 0001 17322
3547+E: 1304510650.701604 0000 0000 0
3548+E: 1304510650.706578 0003 0036 17363
3549+E: 1304510650.706587 0003 0001 17363
3550+E: 1304510650.706588 0000 0000 0
3551+E: 1304510650.711595 0003 0036 17372
3552+E: 1304510650.711607 0003 0001 17365
3553+E: 1304510650.711607 0000 0000 0
3554+E: 1304510650.717594 0003 0036 17375
3555+E: 1304510650.717601 0003 0001 17367
3556+E: 1304510650.717602 0000 0000 0
3557+E: 1304510650.722591 0003 0036 17378
3558+E: 1304510650.722598 0003 0001 17369
3559+E: 1304510650.722599 0000 0000 0
3560+E: 1304510650.727591 0003 0036 17386
3561+E: 1304510650.727602 0003 0001 17377
3562+E: 1304510650.727603 0000 0000 0
3563+E: 1304510650.732591 0003 0036 17389
3564+E: 1304510650.732602 0003 0001 17380
3565+E: 1304510650.732603 0000 0000 0
3566+E: 1304510650.737590 0003 0036 17392
3567+E: 1304510650.737601 0003 0001 17383
3568+E: 1304510650.737601 0000 0000 0
3569+E: 1304510650.742591 0003 0036 17395
3570+E: 1304510650.742603 0003 0001 17386
3571+E: 1304510650.742603 0000 0000 0
3572+E: 1304510650.747575 0003 0036 17398
3573+E: 1304510650.747583 0003 0001 17389
3574+E: 1304510650.747583 0000 0000 0
3575+E: 1304510650.752592 0003 0036 17401
3576+E: 1304510650.752603 0003 0001 17392
3577+E: 1304510650.752604 0000 0000 0
3578+E: 1304510650.757587 0003 0036 17404
3579+E: 1304510650.757598 0003 0001 17395
3580+E: 1304510650.757599 0000 0000 0
3581+E: 1304510650.762594 0003 0036 17406
3582+E: 1304510650.762601 0003 0001 17397
3583+E: 1304510650.762602 0000 0000 0
3584+E: 1304510650.767584 0003 0036 17408
3585+E: 1304510650.767591 0003 0001 17399
3586+E: 1304510650.767595 0000 0000 0
3587+E: 1304510650.772601 0003 0036 17410
3588+E: 1304510650.772611 0003 0001 17401
3589+E: 1304510650.772611 0000 0000 0
3590+E: 1304510650.778599 0003 0036 17413
3591+E: 1304510650.778607 0003 0001 17404
3592+E: 1304510650.778608 0000 0000 0
3593+E: 1304510650.783591 0003 0036 17415
3594+E: 1304510650.783600 0003 0001 17406
3595+E: 1304510650.783600 0000 0000 0
3596+E: 1304510650.788598 0003 0036 17417
3597+E: 1304510650.788607 0003 0001 17408
3598+E: 1304510650.788608 0000 0000 0
3599+E: 1304510650.793591 0003 0036 17419
3600+E: 1304510650.793600 0003 0001 17410
3601+E: 1304510650.793601 0000 0000 0
3602+E: 1304510650.798597 0003 0036 17421
3603+E: 1304510650.798606 0003 0001 17412
3604+E: 1304510650.798606 0000 0000 0
3605+E: 1304510650.803590 0003 0036 17423
3606+E: 1304510650.803599 0003 0001 17414
3607+E: 1304510650.803600 0000 0000 0
3608+E: 1304510650.808602 0003 0001 17416
3609+E: 1304510650.808609 0000 0000 0
3610+E: 1304510650.813591 0003 0036 17425
3611+E: 1304510650.813600 0003 0001 17418
3612+E: 1304510650.813600 0000 0000 0
3613+E: 1304510650.818601 0003 0001 17419
3614+E: 1304510650.818607 0000 0000 0
3615+E: 1304510650.854591 0003 0030 1224
3616+E: 1304510650.854596 0000 0000 0
3617+E: 1304510650.859598 0003 0030 1191
3618+E: 1304510650.859607 0000 0000 0
3619+E: 1304510650.864596 0003 0036 17412
3620+E: 1304510650.864604 0003 0001 17417
3621+E: 1304510650.864605 0000 0000 0
3622+E: 1304510650.869597 0003 0036 17377
3623+E: 1304510650.869606 0003 0001 17377
3624+E: 1304510650.869606 0000 0000 0
3625+E: 1304510650.874596 0003 0036 17364
3626+E: 1304510650.874604 0003 0001 17373
3627+E: 1304510650.874605 0000 0000 0
3628+E: 1304510650.879591 0003 0036 17323
3629+E: 1304510650.879600 0003 0030 1323
3630+E: 1304510650.879603 0003 0001 17323
3631+E: 1304510650.879604 0000 0000 0
3632+E: 1304510650.884710 0003 0036 17291
3633+E: 1304510650.884718 0003 0030 1356
3634+E: 1304510650.884729 0003 0001 17291
3635+E: 1304510650.884731 0000 0000 0
3636+E: 1304510650.889723 0003 0036 17277
3637+E: 1304510650.889743 0003 0001 17287
3638+E: 1304510650.889745 0000 0000 0
3639+E: 1304510650.895587 0003 0036 17195
3640+E: 1304510650.895599 0003 0001 17195
3641+E: 1304510650.895600 0000 0000 0
3642+E: 1304510650.900591 0003 0036 17129
3643+E: 1304510650.900602 0003 0001 17129
3644+E: 1304510650.900603 0000 0000 0
3645+E: 1304510650.905585 0003 0036 17059
3646+E: 1304510650.905599 0003 0001 17059
3647+E: 1304510650.905600 0000 0000 0
3648+E: 1304510650.910589 0003 0036 17029
3649+E: 1304510650.910600 0003 0030 1224
3650+E: 1304510650.910603 0003 0001 17029
3651+E: 1304510650.910603 0000 0000 0
3652+E: 1304510650.915584 0003 0036 16961
3653+E: 1304510650.915592 0003 0030 1191
3654+E: 1304510650.915595 0003 0001 16961
3655+E: 1304510650.915596 0000 0000 0
3656+E: 1304510650.920587 0003 0036 16891
3657+E: 1304510650.920597 0003 0001 16891
3658+E: 1304510650.920598 0000 0000 0
3659+E: 1304510650.925587 0003 0036 16821
3660+E: 1304510650.925598 0003 0001 16821
3661+E: 1304510650.925599 0000 0000 0
3662+E: 1304510650.930586 0003 0036 16755
3663+E: 1304510650.930597 0003 0001 16755
3664+E: 1304510650.930598 0000 0000 0
3665+E: 1304510650.935586 0003 0036 16689
3666+E: 1304510650.935599 0003 0001 16689
3667+E: 1304510650.935600 0000 0000 0
3668+E: 1304510650.940588 0003 0036 16621
3669+E: 1304510650.940596 0003 0030 1323
3670+E: 1304510650.940599 0003 0001 16621
3671+E: 1304510650.940600 0000 0000 0
3672+E: 1304510650.945592 0003 0036 16589
3673+E: 1304510650.945598 0003 0030 1356
3674+E: 1304510650.945601 0003 0001 16589
3675+E: 1304510650.945607 0000 0000 0
3676+E: 1304510650.951584 0003 0036 16515
3677+E: 1304510650.951594 0003 0001 16515
3678+E: 1304510650.951595 0000 0000 0
3679+E: 1304510650.956584 0003 0036 16445
3680+E: 1304510650.956595 0003 0001 16445
3681+E: 1304510650.956595 0000 0000 0
3682+E: 1304510650.961588 0003 0036 16373
3683+E: 1304510650.961599 0003 0001 16373
3684+E: 1304510650.961599 0000 0000 0
3685+E: 1304510650.966573 0003 0036 16303
3686+E: 1304510650.966577 0003 0030 1224
3687+E: 1304510650.966583 0003 0001 16303
3688+E: 1304510650.966584 0000 0000 0
3689+E: 1304510650.971589 0003 0036 16233
3690+E: 1304510650.971598 0003 0030 1191
3691+E: 1304510650.971602 0003 0001 16233
3692+E: 1304510650.971602 0000 0000 0
3693+E: 1304510650.976582 0003 0036 16151
3694+E: 1304510650.976593 0003 0001 16151
3695+E: 1304510650.976594 0000 0000 0
3696+E: 1304510650.981590 0003 0036 16071
3697+E: 1304510650.981602 0003 0001 16071
3698+E: 1304510650.981602 0000 0000 0
3699+E: 1304510650.986585 0003 0036 15985
3700+E: 1304510650.986594 0003 0030 1323
3701+E: 1304510650.986597 0003 0001 15985
3702+E: 1304510650.986597 0000 0000 0
3703+E: 1304510650.991582 0003 0036 15903
3704+E: 1304510650.991593 0003 0030 1356
3705+E: 1304510650.991596 0003 0001 15903
3706+E: 1304510650.991597 0000 0000 0
3707+E: 1304510650.996583 0003 0036 15819
3708+E: 1304510650.996594 0003 0001 15819
3709+E: 1304510650.996594 0000 0000 0
3710+E: 1304510651.001590 0003 0036 15733
3711+E: 1304510651.001601 0003 0001 15733
3712+E: 1304510651.001601 0000 0000 0
3713+E: 1304510651.006580 0003 0036 15647
3714+E: 1304510651.006589 0003 0030 1224
3715+E: 1304510651.006592 0003 0001 15647
3716+E: 1304510651.006593 0000 0000 0
3717+E: 1304510651.012590 0003 0036 15567
3718+E: 1304510651.012599 0003 0030 1191
3719+E: 1304510651.012602 0003 0001 15567
3720+E: 1304510651.012603 0000 0000 0
3721+E: 1304510651.017592 0003 0036 15481
3722+E: 1304510651.017604 0003 0001 15481
3723+E: 1304510651.017605 0000 0000 0
3724+E: 1304510651.022587 0003 0036 15397
3725+E: 1304510651.022598 0003 0001 15397
3726+E: 1304510651.022599 0000 0000 0
3727+E: 1304510651.027589 0003 0036 15317
3728+E: 1304510651.027597 0003 0030 1323
3729+E: 1304510651.027600 0003 0001 15317
3730+E: 1304510651.027600 0000 0000 0
3731+E: 1304510651.032586 0003 0036 15233
3732+E: 1304510651.032594 0003 0030 1356
3733+E: 1304510651.032597 0003 0001 15233
3734+E: 1304510651.032597 0000 0000 0
3735+E: 1304510651.037583 0003 0035 16424
3736+E: 1304510651.037589 0003 0036 15155
3737+E: 1304510651.037592 0003 0001 15155
3738+E: 1304510651.037597 0000 0000 0
3739+E: 1304510651.042583 0003 0035 16422
3740+E: 1304510651.042592 0003 0036 15081
3741+E: 1304510651.042596 0003 0001 15081
3742+E: 1304510651.042596 0000 0000 0
3743+E: 1304510651.047582 0003 0035 16420
3744+E: 1304510651.047586 0003 0036 15005
3745+E: 1304510651.047594 0003 0001 15005
3746+E: 1304510651.047594 0000 0000 0
3747+E: 1304510651.052592 0003 0035 16418
3748+E: 1304510651.052600 0003 0036 14933
3749+E: 1304510651.052607 0003 0001 14933
3750+E: 1304510651.052608 0000 0000 0
3751+E: 1304510651.057587 0003 0035 16416
3752+E: 1304510651.057595 0003 0036 14857
3753+E: 1304510651.057596 0003 0030 1224
3754+E: 1304510651.057599 0003 0001 14857
3755+E: 1304510651.057599 0000 0000 0
3756+E: 1304510651.062586 0003 0036 14785
3757+E: 1304510651.062590 0003 0030 1191
3758+E: 1304510651.062593 0003 0001 14785
3759+E: 1304510651.062594 0000 0000 0
3760+E: 1304510651.068589 0003 0036 14703
3761+E: 1304510651.068601 0003 0001 14703
3762+E: 1304510651.068602 0000 0000 0
3763+E: 1304510651.073586 0003 0035 16414
3764+E: 1304510651.073590 0003 0036 14625
3765+E: 1304510651.073594 0003 0001 14625
3766+E: 1304510651.073598 0000 0000 0
3767+E: 1304510651.078582 0003 0036 14543
3768+E: 1304510651.078592 0003 0030 1323
3769+E: 1304510651.078594 0003 0001 14543
3770+E: 1304510651.078595 0000 0000 0
3771+E: 1304510651.083580 0003 0035 16412
3772+E: 1304510651.083584 0003 0036 14455
3773+E: 1304510651.083585 0003 0030 1356
3774+E: 1304510651.083588 0003 0000 16418
3775+E: 1304510651.083588 0003 0001 14455
3776+E: 1304510651.083589 0000 0000 0
3777+E: 1304510651.088582 0003 0035 16410
3778+E: 1304510651.088586 0003 0036 14369
3779+E: 1304510651.088593 0003 0000 16416
3780+E: 1304510651.088594 0003 0001 14369
3781+E: 1304510651.088594 0000 0000 0
3782+E: 1304510651.093585 0003 0035 16407
3783+E: 1304510651.093589 0003 0036 14287
3784+E: 1304510651.093592 0003 0000 16413
3785+E: 1304510651.093592 0003 0001 14287
3786+E: 1304510651.093593 0000 0000 0
3787+E: 1304510651.098568 0003 0035 16404
3788+E: 1304510651.098571 0003 0036 14201
3789+E: 1304510651.098572 0003 0030 1224
3790+E: 1304510651.098577 0003 0000 16410
3791+E: 1304510651.098578 0003 0001 14201
3792+E: 1304510651.098578 0000 0000 0
3793+E: 1304510651.103585 0003 0035 16401
3794+E: 1304510651.103589 0003 0036 14107
3795+E: 1304510651.103590 0003 0030 1191
3796+E: 1304510651.103593 0003 0000 16407
3797+E: 1304510651.103593 0003 0001 14107
3798+E: 1304510651.103594 0000 0000 0
3799+E: 1304510651.108575 0003 0035 16398
3800+E: 1304510651.108578 0003 0036 14011
3801+E: 1304510651.108585 0003 0000 16404
3802+E: 1304510651.108586 0003 0001 14011
3803+E: 1304510651.108586 0000 0000 0
3804+E: 1304510651.113586 0003 0035 16395
3805+E: 1304510651.113591 0003 0036 13921
3806+E: 1304510651.113592 0003 0030 1323
3807+E: 1304510651.113595 0003 0000 16401
3808+E: 1304510651.113595 0003 0001 13921
3809+E: 1304510651.113596 0000 0000 0
3810+E: 1304510651.118584 0003 0035 16391
3811+E: 1304510651.118589 0003 0036 13831
3812+E: 1304510651.118590 0003 0030 1356
3813+E: 1304510651.118592 0003 0000 16398
3814+E: 1304510651.118595 0003 0001 13831
3815+E: 1304510651.118596 0000 0000 0
3816+E: 1304510651.124590 0003 0035 16383
3817+E: 1304510651.124594 0003 0036 13745
3818+E: 1304510651.124597 0003 0000 16390
3819+E: 1304510651.124600 0003 0001 13745
3820+E: 1304510651.124601 0000 0000 0
3821+E: 1304510651.129568 0003 0035 16380
3822+E: 1304510651.129571 0003 0036 13655
3823+E: 1304510651.129578 0003 0000 16387
3824+E: 1304510651.129578 0003 0001 13655
3825+E: 1304510651.129578 0000 0000 0
3826+E: 1304510651.134582 0003 0035 16376
3827+E: 1304510651.134586 0003 0036 13563
3828+E: 1304510651.134593 0003 0000 16384
3829+E: 1304510651.134594 0003 0001 13563
3830+E: 1304510651.134594 0000 0000 0
3831+E: 1304510651.139578 0003 0035 16368
3832+E: 1304510651.139583 0003 0036 13473
3833+E: 1304510651.139588 0003 0034 1
3834+E: 1304510651.139588 0003 0030 1299
3835+E: 1304510651.139591 0003 0000 16376
3836+E: 1304510651.139592 0003 0001 13473
3837+E: 1304510651.139593 0000 0000 0
3838+E: 1304510651.144581 0003 0035 16365
3839+E: 1304510651.144585 0003 0036 13383
3840+E: 1304510651.144590 0003 0030 1256
3841+E: 1304510651.144592 0003 0000 16373
3842+E: 1304510651.144593 0003 0001 13383
3843+E: 1304510651.144594 0000 0000 0
3844+E: 1304510651.149583 0003 0035 16357
3845+E: 1304510651.149587 0003 0036 13291
3846+E: 1304510651.149594 0003 0000 16365
3847+E: 1304510651.149595 0003 0001 13291
3848+E: 1304510651.149596 0000 0000 0
3849+E: 1304510651.154588 0003 0035 16354
3850+E: 1304510651.154598 0003 0036 13195
3851+E: 1304510651.154599 0003 0034 0
3852+E: 1304510651.154600 0003 0030 1306
3853+E: 1304510651.154603 0003 0000 16362
3854+E: 1304510651.154604 0003 0001 13195
3855+E: 1304510651.154604 0000 0000 0
3856+E: 1304510651.159587 0003 0035 16351
3857+E: 1304510651.159591 0003 0036 13107
3858+E: 1304510651.159596 0003 0030 1343
3859+E: 1304510651.159599 0003 0000 16359
3860+E: 1304510651.159599 0003 0001 13107
3861+E: 1304510651.159600 0000 0000 0
3862+E: 1304510651.164588 0003 0035 16348
3863+E: 1304510651.164593 0003 0036 13017
3864+E: 1304510651.164600 0003 0000 16356
3865+E: 1304510651.164601 0003 0001 13017
3866+E: 1304510651.164601 0000 0000 0
3867+E: 1304510651.169570 0003 0035 16344
3868+E: 1304510651.169577 0003 0036 12931
3869+E: 1304510651.169580 0003 0000 16353
3870+E: 1304510651.169580 0003 0001 12931
3871+E: 1304510651.169581 0000 0000 0
3872+E: 1304510651.174584 0003 0035 16340
3873+E: 1304510651.174592 0003 0036 12851
3874+E: 1304510651.174596 0003 0000 16349
3875+E: 1304510651.174596 0003 0001 12851
3876+E: 1304510651.174597 0000 0000 0
3877+E: 1304510651.179581 0003 0035 16336
3878+E: 1304510651.179585 0003 0036 12775
3879+E: 1304510651.179592 0003 0000 16345
3880+E: 1304510651.179593 0003 0001 12775
3881+E: 1304510651.179594 0000 0000 0
3882+E: 1304510651.185588 0003 0035 16328
3883+E: 1304510651.185592 0003 0036 12697
3884+E: 1304510651.185597 0003 0034 1
3885+E: 1304510651.185598 0003 0030 1289
3886+E: 1304510651.185601 0003 0000 16336
3887+E: 1304510651.185601 0003 0001 12697
3888+E: 1304510651.185602 0000 0000 0
3889+E: 1304510651.190567 0003 0035 16325
3890+E: 1304510651.190574 0003 0036 12617
3891+E: 1304510651.190575 0003 0030 1249
3892+E: 1304510651.190577 0003 0000 16333
3893+E: 1304510651.190577 0003 0001 12617
3894+E: 1304510651.190578 0000 0000 0
3895+E: 1304510651.195586 0003 0035 16322
3896+E: 1304510651.195590 0003 0036 12533
3897+E: 1304510651.195597 0003 0000 16330
3898+E: 1304510651.195598 0003 0001 12533
3899+E: 1304510651.195598 0000 0000 0
3900+E: 1304510651.200572 0003 0035 16319
3901+E: 1304510651.200580 0003 0036 12451
3902+E: 1304510651.200583 0003 0000 16327
3903+E: 1304510651.200583 0003 0001 12451
3904+E: 1304510651.200584 0000 0000 0
3905+E: 1304510651.205583 0003 0035 16316
3906+E: 1304510651.205587 0003 0036 12365
3907+E: 1304510651.205587 0003 0034 0
3908+E: 1304510651.205588 0003 0030 1300
3909+E: 1304510651.205591 0003 0000 16324
3910+E: 1304510651.205591 0003 0001 12365
3911+E: 1304510651.205592 0000 0000 0
3912+E: 1304510651.210583 0003 0035 16313
3913+E: 1304510651.210587 0003 0036 12283
3914+E: 1304510651.210593 0003 0030 1339
3915+E: 1304510651.210596 0003 0000 16321
3916+E: 1304510651.210596 0003 0001 12283
3917+E: 1304510651.210597 0000 0000 0
3918+E: 1304510651.215582 0003 0035 16310
3919+E: 1304510651.215586 0003 0036 12199
3920+E: 1304510651.215593 0003 0000 16318
3921+E: 1304510651.215594 0003 0001 12199
3922+E: 1304510651.215595 0000 0000 0
3923+E: 1304510651.220578 0003 0035 16302
3924+E: 1304510651.220581 0003 0036 12109
3925+E: 1304510651.220589 0003 0000 16310
3926+E: 1304510651.220589 0003 0001 12109
3927+E: 1304510651.220590 0000 0000 0
3928+E: 1304510651.225581 0003 0035 16293
3929+E: 1304510651.225585 0003 0036 12015
3930+E: 1304510651.225589 0003 0034 1
3931+E: 1304510651.225590 0003 0030 1286
3932+E: 1304510651.225593 0003 0000 16301
3933+E: 1304510651.225593 0003 0001 12015
3934+E: 1304510651.225594 0000 0000 0
3935+E: 1304510651.230574 0003 0035 16285
3936+E: 1304510651.230582 0003 0036 11921
3937+E: 1304510651.230583 0003 0030 1247
3938+E: 1304510651.230586 0003 0000 16293
3939+E: 1304510651.230587 0003 0001 11921
3940+E: 1304510651.230587 0000 0000 0
3941+E: 1304510651.235581 0003 0035 16282
3942+E: 1304510651.235585 0003 0036 11825
3943+E: 1304510651.235590 0003 0034 0
3944+E: 1304510651.235590 0003 0030 1299
3945+E: 1304510651.235593 0003 0000 16290
3946+E: 1304510651.235593 0003 0001 11825
3947+E: 1304510651.235594 0000 0000 0
3948+E: 1304510651.241581 0003 0035 16280
3949+E: 1304510651.241589 0003 0036 11723
3950+E: 1304510651.241590 0003 0030 1338
3951+E: 1304510651.241593 0003 0000 16287
3952+E: 1304510651.241593 0003 0001 11723
3953+E: 1304510651.241594 0000 0000 0
3954+E: 1304510651.246582 0003 0035 16278
3955+E: 1304510651.246586 0003 0036 11631
3956+E: 1304510651.246590 0003 0000 16284
3957+E: 1304510651.246594 0003 0001 11631
3958+E: 1304510651.246594 0000 0000 0
3959+E: 1304510651.251571 0003 0035 16238
3960+E: 1304510651.251574 0003 0036 11531
3961+E: 1304510651.251576 0003 0000 16238
3962+E: 1304510651.251577 0003 0001 11531
3963+E: 1304510651.251577 0000 0000 0
3964+E: 1304510651.256580 0003 0035 16204
3965+E: 1304510651.256584 0003 0036 11431
3966+E: 1304510651.256589 0003 0034 1
3967+E: 1304510651.256589 0003 0030 1286
3968+E: 1304510651.256592 0003 0000 16204
3969+E: 1304510651.256593 0003 0001 11431
3970+E: 1304510651.256593 0000 0000 0
3971+E: 1304510651.261582 0003 0035 16190
3972+E: 1304510651.261586 0003 0036 11325
3973+E: 1304510651.261587 0003 0030 1247
3974+E: 1304510651.261589 0003 0000 16200
3975+E: 1304510651.261590 0003 0001 11325
3976+E: 1304510651.261597 0000 0000 0
3977+E: 1304510651.266581 0003 0035 16187
3978+E: 1304510651.266584 0003 0036 11223
3979+E: 1304510651.266592 0003 0000 16196
3980+E: 1304510651.266592 0003 0001 11223
3981+E: 1304510651.266593 0000 0000 0
3982+E: 1304510651.271578 0003 0035 16185
3983+E: 1304510651.271585 0003 0036 11121
3984+E: 1304510651.271589 0003 0000 16193
3985+E: 1304510651.271589 0003 0001 11121
3986+E: 1304510651.271590 0000 0000 0
3987+E: 1304510651.276583 0003 0035 16170
3988+E: 1304510651.276587 0003 0036 11029
3989+E: 1304510651.276587 0003 0034 0
3990+E: 1304510651.276588 0003 0030 1299
3991+E: 1304510651.276591 0003 0000 16181
3992+E: 1304510651.276596 0003 0001 11029
3993+E: 1304510651.276597 0000 0000 0
3994+E: 1304510651.281565 0003 0036 10933
3995+E: 1304510651.281573 0003 0030 1338
3996+E: 1304510651.281574 0003 0000 16178
3997+E: 1304510651.281575 0003 0001 10933
3998+E: 1304510651.281575 0000 0000 0
3999+E: 1304510651.286579 0003 0035 16140
4000+E: 1304510651.286582 0003 0036 10831
4001+E: 1304510651.286590 0003 0000 16140
4002+E: 1304510651.286590 0003 0001 10831
4003+E: 1304510651.286591 0000 0000 0
4004+E: 1304510651.291572 0003 0035 16130
4005+E: 1304510651.291580 0003 0036 10735
4006+E: 1304510651.291583 0003 0000 16137
4007+E: 1304510651.291583 0003 0001 10735
4008+E: 1304510651.291584 0000 0000 0
4009+E: 1304510651.296583 0003 0035 16098
4010+E: 1304510651.296587 0003 0036 10639
4011+E: 1304510651.296591 0003 0034 1
4012+E: 1304510651.296592 0003 0030 1286
4013+E: 1304510651.296595 0003 0000 16098
4014+E: 1304510651.296595 0003 0001 10639
4015+E: 1304510651.296596 0000 0000 0
4016+E: 1304510651.302588 0003 0036 10535
4017+E: 1304510651.302593 0003 0030 1247
4018+E: 1304510651.302596 0003 0001 10535
4019+E: 1304510651.302601 0000 0000 0
4020+E: 1304510651.307584 0003 0035 16095
4021+E: 1304510651.307588 0003 0036 10431
4022+E: 1304510651.307596 0003 0001 10431
4023+E: 1304510651.307596 0000 0000 0
4024+E: 1304510651.312577 0003 0036 10327
4025+E: 1304510651.312584 0003 0034 0
4026+E: 1304510651.312585 0003 0030 1299
4027+E: 1304510651.312588 0003 0001 10327
4028+E: 1304510651.312588 0000 0000 0
4029+E: 1304510651.317584 0003 0035 16087
4030+E: 1304510651.317588 0003 0036 10225
4031+E: 1304510651.317593 0003 0030 1338
4032+E: 1304510651.317596 0003 0000 16095
4033+E: 1304510651.317596 0003 0001 10225
4034+E: 1304510651.317597 0000 0000 0
4035+E: 1304510651.322579 0003 0035 16074
4036+E: 1304510651.322587 0003 0036 10123
4037+E: 1304510651.322590 0003 0000 16084
4038+E: 1304510651.322591 0003 0001 10123
4039+E: 1304510651.322591 0000 0000 0
4040+E: 1304510651.327574 0003 0035 16060
4041+E: 1304510651.327578 0003 0036 10017
4042+E: 1304510651.327583 0003 0030 1276
4043+E: 1304510651.327583 0003 0031 843
4044+E: 1304510651.327586 0003 0000 16072
4045+E: 1304510651.327586 0003 0001 10017
4046+E: 1304510651.327587 0000 0000 0
4047+E: 1304510651.332577 0003 0036 9909
4048+E: 1304510651.332585 0003 0030 1230
4049+E: 1304510651.332586 0003 0031 801
4050+E: 1304510651.332588 0003 0000 16069
4051+E: 1304510651.332589 0003 0001 9909
4052+E: 1304510651.332589 0000 0000 0
4053+E: 1304510651.337579 0003 0035 16049
4054+E: 1304510651.337582 0003 0036 9803
4055+E: 1304510651.337588 0003 0030 1195
4056+E: 1304510651.337590 0003 0000 16059
4057+E: 1304510651.337591 0003 0001 9803
4058+E: 1304510651.337591 0000 0000 0
4059+E: 1304510651.342574 0003 0035 16036
4060+E: 1304510651.342578 0003 0036 9695
4061+E: 1304510651.342583 0003 0030 1325
4062+E: 1304510651.342585 0003 0000 16047
4063+E: 1304510651.342586 0003 0001 9695
4064+E: 1304510651.342586 0000 0000 0
4065+E: 1304510651.347579 0003 0035 16025
4066+E: 1304510651.347583 0003 0036 9585
4067+E: 1304510651.347584 0003 0030 1357
4068+E: 1304510651.347585 0003 0031 965
4069+E: 1304510651.347587 0003 0000 16036
4070+E: 1304510651.347588 0003 0001 9585
4071+E: 1304510651.347593 0000 0000 0
4072+E: 1304510651.352581 0003 0036 9477
4073+E: 1304510651.352589 0003 0031 821
4074+E: 1304510651.352592 0003 0000 16033
4075+E: 1304510651.352593 0003 0001 9477
4076+E: 1304510651.352593 0000 0000 0
4077+E: 1304510651.358582 0003 0035 16021
4078+E: 1304510651.358586 0003 0036 9369
4079+E: 1304510651.358591 0003 0031 785
4080+E: 1304510651.358593 0003 0000 16030
4081+E: 1304510651.358594 0003 0001 9369
4082+E: 1304510651.358594 0000 0000 0
4083+E: 1304510651.363574 0003 0035 16010
4084+E: 1304510651.363579 0003 0036 9267
4085+E: 1304510651.363580 0003 0030 1224
4086+E: 1304510651.363582 0003 0000 16020
4087+E: 1304510651.363583 0003 0001 9267
4088+E: 1304510651.363583 0000 0000 0
4089+E: 1304510651.368576 0003 0035 16000
4090+E: 1304510651.368580 0003 0036 9167
4091+E: 1304510651.368584 0003 0030 1191
4092+E: 1304510651.368587 0003 0000 16010
4093+E: 1304510651.368588 0003 0001 9167
4094+E: 1304510651.368588 0000 0000 0
4095+E: 1304510651.373572 0003 0035 15990
4096+E: 1304510651.373576 0003 0036 9067
4097+E: 1304510651.373579 0003 0000 16000
4098+E: 1304510651.373580 0003 0001 9067
4099+E: 1304510651.373580 0000 0000 0
4100+E: 1304510651.378586 0003 0035 15981
4101+E: 1304510651.378591 0003 0036 8957
4102+E: 1304510651.378596 0003 0030 1323
4103+E: 1304510651.378599 0003 0000 15990
4104+E: 1304510651.378599 0003 0001 8957
4105+E: 1304510651.378600 0000 0000 0
4106+E: 1304510651.383563 0003 0036 8855
4107+E: 1304510651.383566 0003 0030 1356
4108+E: 1304510651.383568 0003 0000 15987
4109+E: 1304510651.383568 0003 0001 8855
4110+E: 1304510651.383569 0000 0000 0
4111+E: 1304510651.388579 0003 0035 15990
4112+E: 1304510651.388583 0003 0036 8751
4113+E: 1304510651.388591 0003 0001 8751
4114+E: 1304510651.388591 0000 0000 0
4115+E: 1304510651.393568 0003 0035 15999
4116+E: 1304510651.393571 0003 0036 8647
4117+E: 1304510651.393574 0003 0000 15990
4118+E: 1304510651.393575 0003 0001 8647
4119+E: 1304510651.393575 0000 0000 0
4120+E: 1304510651.398583 0003 0035 16006
4121+E: 1304510651.398586 0003 0036 8547
4122+E: 1304510651.398591 0003 0030 1224
4123+E: 1304510651.398594 0003 0000 15998
4124+E: 1304510651.398595 0003 0001 8547
4125+E: 1304510651.398595 0000 0000 0
4126+E: 1304510651.403573 0003 0035 16004
4127+E: 1304510651.403577 0003 0036 8443
4128+E: 1304510651.403578 0003 0030 1191
4129+E: 1304510651.403580 0003 0001 8443
4130+E: 1304510651.403581 0000 0000 0
4131+E: 1304510651.408581 0003 0036 8337
4132+E: 1304510651.408593 0003 0001 8337
4133+E: 1304510651.408593 0000 0000 0
4134+E: 1304510651.414567 0003 0036 8229
4135+E: 1304510651.414574 0003 0030 1323
4136+E: 1304510651.414577 0003 0001 8229
4137+E: 1304510651.414577 0000 0000 0
4138+E: 1304510651.419580 0003 0035 16002
4139+E: 1304510651.419584 0003 0036 8117
4140+E: 1304510651.419589 0003 0030 1356
4141+E: 1304510651.419592 0003 0001 8117
4142+E: 1304510651.419593 0000 0000 0
4143+E: 1304510651.424575 0003 0036 8013
4144+E: 1304510651.424586 0003 0001 8013
4145+E: 1304510651.424587 0000 0000 0
4146+E: 1304510651.429580 0003 0035 15994
4147+E: 1304510651.429583 0003 0036 7909
4148+E: 1304510651.429591 0003 0001 7909
4149+E: 1304510651.429591 0000 0000 0
4150+E: 1304510651.434574 0003 0036 7805
4151+E: 1304510651.434582 0003 0030 1224
4152+E: 1304510651.434585 0003 0001 7805
4153+E: 1304510651.434586 0000 0000 0
4154+E: 1304510651.439578 0003 0036 7703
4155+E: 1304510651.439586 0003 0030 1191
4156+E: 1304510651.439590 0003 0001 7703
4157+E: 1304510651.439590 0000 0000 0
4158+E: 1304510651.444593 0003 0035 15991
4159+E: 1304510651.444600 0003 0036 7599
4160+E: 1304510651.444607 0003 0000 15996
4161+E: 1304510651.444608 0003 0001 7599
4162+E: 1304510651.444608 0000 0000 0
4163+E: 1304510651.449581 0003 0035 15980
4164+E: 1304510651.449585 0003 0036 7485
4165+E: 1304510651.449590 0003 0030 1323
4166+E: 1304510651.449593 0003 0000 15988
4167+E: 1304510651.449593 0003 0001 7485
4168+E: 1304510651.449594 0000 0000 0
4169+E: 1304510651.454564 0003 0035 15970
4170+E: 1304510651.454567 0003 0036 7379
4171+E: 1304510651.454568 0003 0030 1356
4172+E: 1304510651.454573 0003 0000 15979
4173+E: 1304510651.454574 0003 0001 7379
4174+E: 1304510651.454574 0000 0000 0
4175+E: 1304510651.459579 0003 0035 15959
4176+E: 1304510651.459583 0003 0036 7275
4177+E: 1304510651.459590 0003 0000 15969
4178+E: 1304510651.459591 0003 0001 7275
4179+E: 1304510651.459591 0000 0000 0
4180+E: 1304510651.464572 0003 0036 7171
4181+E: 1304510651.464583 0003 0000 15966
4182+E: 1304510651.464583 0003 0001 7171
4183+E: 1304510651.464584 0000 0000 0
4184+E: 1304510651.469578 0003 0036 7069
4185+E: 1304510651.469589 0003 0000 15964
4186+E: 1304510651.469589 0003 0001 7069
4187+E: 1304510651.469590 0000 0000 0
4188+E: 1304510651.475577 0003 0036 6965
4189+E: 1304510651.475586 0003 0030 1224
4190+E: 1304510651.475589 0003 0001 6965
4191+E: 1304510651.475589 0000 0000 0
4192+E: 1304510651.480588 0003 0036 6855
4193+E: 1304510651.480597 0003 0030 1191
4194+E: 1304510651.480600 0003 0001 6855
4195+E: 1304510651.480601 0000 0000 0
4196+E: 1304510651.485562 0003 0036 6745
4197+E: 1304510651.485565 0003 0030 1323
4198+E: 1304510651.485571 0003 0001 6745
4199+E: 1304510651.485571 0000 0000 0
4200+E: 1304510651.490575 0003 0036 6641
4201+E: 1304510651.490580 0003 0030 1356
4202+E: 1304510651.490582 0003 0001 6641
4203+E: 1304510651.490583 0000 0000 0
4204+E: 1304510651.495575 0003 0035 15949
4205+E: 1304510651.495581 0003 0036 6539
4206+E: 1304510651.495584 0003 0000 15956
4207+E: 1304510651.495585 0003 0001 6539
4208+E: 1304510651.495585 0000 0000 0
4209+E: 1304510651.500579 0003 0035 15941
4210+E: 1304510651.500582 0003 0036 6439
4211+E: 1304510651.500589 0003 0000 15948
4212+E: 1304510651.500590 0003 0001 6439
4213+E: 1304510651.500590 0000 0000 0
4214+E: 1304510651.505572 0003 0035 15937
4215+E: 1304510651.505580 0003 0036 6341
4216+E: 1304510651.505583 0003 0000 15945
4217+E: 1304510651.505583 0003 0001 6341
4218+E: 1304510651.505584 0000 0000 0
4219+E: 1304510651.510574 0003 0035 15926
4220+E: 1304510651.510579 0003 0036 6235
4221+E: 1304510651.510584 0003 0030 1224
4222+E: 1304510651.510586 0003 0000 15935
4223+E: 1304510651.510587 0003 0001 6235
4224+E: 1304510651.510587 0000 0000 0
4225+E: 1304510651.515574 0003 0035 15917
4226+E: 1304510651.515577 0003 0036 6125
4227+E: 1304510651.515582 0003 0030 1191
4228+E: 1304510651.515584 0003 0000 15926
4229+E: 1304510651.515585 0003 0001 6125
4230+E: 1304510651.515585 0000 0000 0
4231+E: 1304510651.520577 0003 0035 15907
4232+E: 1304510651.520583 0003 0036 6015
4233+E: 1304510651.520588 0003 0030 1323
4234+E: 1304510651.520591 0003 0000 15916
4235+E: 1304510651.520591 0003 0001 6015
4236+E: 1304510651.520592 0000 0000 0
4237+E: 1304510651.525567 0003 0035 15897
4238+E: 1304510651.525570 0003 0036 5909
4239+E: 1304510651.525575 0003 0030 1356
4240+E: 1304510651.525578 0003 0000 15906
4241+E: 1304510651.525578 0003 0001 5909
4242+E: 1304510651.525579 0000 0000 0
4243+E: 1304510651.531583 0003 0035 15885
4244+E: 1304510651.531588 0003 0036 5809
4245+E: 1304510651.531591 0003 0000 15895
4246+E: 1304510651.531592 0003 0001 5809
4247+E: 1304510651.531593 0000 0000 0
4248+E: 1304510651.536562 0003 0035 15870
4249+E: 1304510651.536564 0003 0036 5711
4250+E: 1304510651.536571 0003 0000 15882
4251+E: 1304510651.536572 0003 0001 5711
4252+E: 1304510651.536572 0000 0000 0
4253+E: 1304510651.541580 0003 0035 15840
4254+E: 1304510651.541584 0003 0036 5613
4255+E: 1304510651.541591 0003 0000 15840
4256+E: 1304510651.541592 0003 0001 5613
4257+E: 1304510651.541592 0000 0000 0
4258+E: 1304510651.546575 0003 0035 15831
4259+E: 1304510651.546579 0003 0036 5509
4260+E: 1304510651.546584 0003 0030 1224
4261+E: 1304510651.546586 0003 0000 15837
4262+E: 1304510651.546587 0003 0001 5509
4263+E: 1304510651.546587 0000 0000 0
4264+E: 1304510651.551575 0003 0035 15819
4265+E: 1304510651.551585 0003 0036 5405
4266+E: 1304510651.551586 0003 0030 1191
4267+E: 1304510651.551588 0003 0000 15828
4268+E: 1304510651.551589 0003 0001 5405
4269+E: 1304510651.551589 0000 0000 0
4270+E: 1304510651.556571 0003 0035 15805
4271+E: 1304510651.556574 0003 0036 5299
4272+E: 1304510651.556579 0003 0030 1323
4273+E: 1304510651.556582 0003 0000 15816
4274+E: 1304510651.556582 0003 0001 5299
4275+E: 1304510651.556583 0000 0000 0
4276+E: 1304510651.561580 0003 0035 15790
4277+E: 1304510651.561584 0003 0036 5197
4278+E: 1304510651.561585 0003 0030 1356
4279+E: 1304510651.561588 0003 0000 15803
4280+E: 1304510651.561589 0003 0001 5197
4281+E: 1304510651.561589 0000 0000 0
4282+E: 1304510651.566574 0003 0035 15777
4283+E: 1304510651.566577 0003 0036 5097
4284+E: 1304510651.566585 0003 0000 15790
4285+E: 1304510651.566585 0003 0001 5097
4286+E: 1304510651.566586 0000 0000 0
4287+E: 1304510651.571578 0003 0035 15740
4288+E: 1304510651.571586 0003 0036 5003
4289+E: 1304510651.571589 0003 0000 15740
4290+E: 1304510651.571590 0003 0001 5003
4291+E: 1304510651.571590 0000 0000 0
4292+E: 1304510651.576562 0003 0035 15730
4293+E: 1304510651.576565 0003 0036 4909
4294+E: 1304510651.576570 0003 0000 15737
4295+E: 1304510651.576571 0003 0001 4909
4296+E: 1304510651.576571 0000 0000 0
4297+E: 1304510651.581575 0003 0035 15716
4298+E: 1304510651.581584 0003 0036 4813
4299+E: 1304510651.581585 0003 0030 1224
4300+E: 1304510651.581588 0003 0000 15726
4301+E: 1304510651.581589 0003 0001 4813
4302+E: 1304510651.581589 0000 0000 0
4303+E: 1304510651.586564 0003 0035 15684
4304+E: 1304510651.586567 0003 0036 4705
4305+E: 1304510651.586568 0003 0030 1191
4306+E: 1304510651.586570 0003 0000 15684
4307+E: 1304510651.586571 0003 0001 4705
4308+E: 1304510651.586571 0000 0000 0
4309+E: 1304510651.592579 0003 0035 15676
4310+E: 1304510651.592585 0003 0036 4599
4311+E: 1304510651.592590 0003 0030 1323
4312+E: 1304510651.592593 0003 0000 15682
4313+E: 1304510651.592593 0003 0001 4599
4314+E: 1304510651.592594 0000 0000 0
4315+E: 1304510651.597572 0003 0035 15664
4316+E: 1304510651.597576 0003 0036 4493
4317+E: 1304510651.597580 0003 0030 1356
4318+E: 1304510651.597583 0003 0000 15673
4319+E: 1304510651.597583 0003 0001 4493
4320+E: 1304510651.597584 0000 0000 0
4321+E: 1304510651.602577 0003 0035 15626
4322+E: 1304510651.602585 0003 0036 4387
4323+E: 1304510651.602588 0003 0000 15626
4324+E: 1304510651.602589 0003 0001 4387
4325+E: 1304510651.602590 0000 0000 0
4326+E: 1304510651.607614 0003 0035 15616
4327+E: 1304510651.607617 0003 0036 4285
4328+E: 1304510651.607624 0003 0000 15623
4329+E: 1304510651.607625 0003 0001 4285
4330+E: 1304510651.607625 0000 0000 0
4331+E: 1304510651.612575 0003 0035 15584
4332+E: 1304510651.612579 0003 0036 4183
4333+E: 1304510651.612586 0003 0000 15584
4334+E: 1304510651.612587 0003 0001 4183
4335+E: 1304510651.612587 0000 0000 0
4336+E: 1304510651.617565 0003 0035 15573
4337+E: 1304510651.617569 0003 0036 4075
4338+E: 1304510651.617574 0003 0030 1224
4339+E: 1304510651.617576 0003 0000 15581
4340+E: 1304510651.617576 0003 0001 4075
4341+E: 1304510651.617577 0000 0000 0
4342+E: 1304510651.622577 0003 0035 15536
4343+E: 1304510651.622581 0003 0036 3965
4344+E: 1304510651.622585 0003 0030 1191
4345+E: 1304510651.622588 0003 0000 15536
4346+E: 1304510651.622589 0003 0001 3965
4347+E: 1304510651.622589 0000 0000 0
4348+E: 1304510651.627579 0003 0035 15506
4349+E: 1304510651.627583 0003 0036 3853
4350+E: 1304510651.627584 0003 0030 1323
4351+E: 1304510651.627586 0003 0000 15506
4352+E: 1304510651.627586 0003 0001 3853
4353+E: 1304510651.627587 0000 0000 0
4354+E: 1304510651.632578 0003 0035 15472
4355+E: 1304510651.632582 0003 0036 3739
4356+E: 1304510651.632583 0003 0030 1356
4357+E: 1304510651.632586 0003 0000 15472
4358+E: 1304510651.632586 0003 0001 3739
4359+E: 1304510651.632587 0000 0000 0
4360+E: 1304510651.637580 0003 0035 15438
4361+E: 1304510651.637584 0003 0036 3633
4362+E: 1304510651.637592 0003 0000 15438
4363+E: 1304510651.637592 0003 0001 3633
4364+E: 1304510651.637593 0000 0000 0
4365+E: 1304510651.642573 0003 0035 15404
4366+E: 1304510651.642581 0003 0036 3521
4367+E: 1304510651.642585 0003 0000 15404
4368+E: 1304510651.642585 0003 0001 3521
4369+E: 1304510651.642586 0000 0000 0
4370+E: 1304510651.648572 0003 0035 15370
4371+E: 1304510651.648576 0003 0036 3405
4372+E: 1304510651.648581 0003 0030 1224
4373+E: 1304510651.648583 0003 0000 15370
4374+E: 1304510651.648584 0003 0001 3405
4375+E: 1304510651.648585 0000 0000 0
4376+E: 1304510651.653572 0003 0035 15340
4377+E: 1304510651.653577 0003 0036 3287
4378+E: 1304510651.653578 0003 0030 1191
4379+E: 1304510651.653580 0003 0000 15340
4380+E: 1304510651.653581 0003 0001 3287
4381+E: 1304510651.653581 0000 0000 0
4382+E: 1304510651.658578 0003 0035 15326
4383+E: 1304510651.658583 0003 0036 3171
4384+E: 1304510651.658588 0003 0030 1323
4385+E: 1304510651.658591 0003 0000 15336
4386+E: 1304510651.658592 0003 0001 3171
4387+E: 1304510651.658592 0000 0000 0
4388+E: 1304510651.663568 0003 0035 15280
4389+E: 1304510651.663573 0003 0036 3049
4390+E: 1304510651.663574 0003 0030 1356
4391+E: 1304510651.663577 0003 0000 15280
4392+E: 1304510651.663577 0003 0001 3049
4393+E: 1304510651.663578 0000 0000 0
4394+E: 1304510651.668574 0003 0035 15248
4395+E: 1304510651.668583 0003 0036 2927
4396+E: 1304510651.668586 0003 0000 15248
4397+E: 1304510651.668587 0003 0001 2927
4398+E: 1304510651.668587 0000 0000 0
4399+E: 1304510651.673576 0003 0035 15216
4400+E: 1304510651.673580 0003 0036 2805
4401+E: 1304510651.673581 0003 0030 1224
4402+E: 1304510651.673584 0003 0000 15216
4403+E: 1304510651.673585 0003 0001 2805
4404+E: 1304510651.673585 0000 0000 0
4405+E: 1304510651.678565 0003 0035 15172
4406+E: 1304510651.678568 0003 0036 2679
4407+E: 1304510651.678573 0003 0030 1191
4408+E: 1304510651.678575 0003 0000 15172
4409+E: 1304510651.678576 0003 0001 2679
4410+E: 1304510651.678576 0000 0000 0
4411+E: 1304510651.683580 0003 0035 15124
4412+E: 1304510651.683585 0003 0036 2551
4413+E: 1304510651.683588 0003 0000 15124
4414+E: 1304510651.683589 0003 0001 2551
4415+E: 1304510651.683590 0000 0000 0
4416+E: 1304510651.688579 0003 0035 15076
4417+E: 1304510651.688584 0003 0036 2427
4418+E: 1304510651.688585 0003 0030 1323
4419+E: 1304510651.688588 0003 0000 15076
4420+E: 1304510651.688588 0003 0001 2427
4421+E: 1304510651.688589 0000 0000 0
4422+E: 1304510651.693582 0003 0035 15024
4423+E: 1304510651.693615 0003 0036 2309
4424+E: 1304510651.693616 0003 0030 1356
4425+E: 1304510651.693619 0003 0000 15024
4426+E: 1304510651.693623 0003 0001 2309
4427+E: 1304510651.693623 0000 0000 0
4428+E: 1304510651.698609 0003 0035 14968
4429+E: 1304510651.698615 0003 0036 2185
4430+E: 1304510651.698617 0003 0030 1224
4431+E: 1304510651.698625 0003 0000 14968
4432+E: 1304510651.698626 0003 0001 2185
4433+E: 1304510651.698627 0000 0000 0
4434+E: 1304510651.703613 0003 0039 -1
4435+E: 1304510651.703621 0001 014a 0
4436+E: 1304510651.703627 0000 0000 0
4437+E: 1304510652.695704 0003 0039 136
4438+E: 1304510652.695720 0003 0035 16944
4439+E: 1304510652.695722 0003 0036 16837
4440+E: 1304510652.695725 0003 0030 1282
4441+E: 1304510652.695727 0003 0031 957
4442+E: 1304510652.695730 0001 014a 1
4443+E: 1304510652.695734 0003 0000 16944
4444+E: 1304510652.695736 0003 0001 16837
4445+E: 1304510652.695737 0000 0000 0
4446+E: 1304510652.700700 0003 0030 1325
4447+E: 1304510652.700711 0003 0031 1000
4448+E: 1304510652.700720 0000 0000 0
4449+E: 1304510652.706696 0003 0030 1357
4450+E: 1304510652.706708 0003 0031 1032
4451+E: 1304510652.706716 0000 0000 0
4452+E: 1304510652.736695 0003 0036 16835
4453+E: 1304510652.736716 0000 0000 0
4454+E: 1304510652.741695 0003 0036 16833
4455+E: 1304510652.741716 0000 0000 0
4456+E: 1304510652.746694 0003 0036 16830
4457+E: 1304510652.746714 0003 0001 16835
4458+E: 1304510652.746716 0000 0000 0
4459+E: 1304510652.751695 0003 0036 16827
4460+E: 1304510652.751707 0003 0034 1
4461+E: 1304510652.751708 0003 0030 1300
4462+E: 1304510652.751716 0003 0001 16833
4463+E: 1304510652.751718 0000 0000 0
4464+E: 1304510652.756694 0003 0036 16814
4465+E: 1304510652.756707 0003 0030 1257
4466+E: 1304510652.756715 0003 0001 16823
4467+E: 1304510652.756717 0000 0000 0
4468+E: 1304510652.762696 0003 0036 16779
4469+E: 1304510652.762709 0003 0030 1225
4470+E: 1304510652.762717 0003 0001 16779
4471+E: 1304510652.762719 0000 0000 0
4472+E: 1304510652.767696 0003 0036 16769
4473+E: 1304510652.767719 0003 0001 16776
4474+E: 1304510652.767721 0000 0000 0
4475+E: 1304510652.772695 0003 0036 16731
4476+E: 1304510652.772715 0003 0001 16731
4477+E: 1304510652.772717 0000 0000 0
4478+E: 1304510652.777693 0003 0035 16946
4479+E: 1304510652.777705 0003 0036 16718
4480+E: 1304510652.777715 0003 0001 16727
4481+E: 1304510652.777717 0000 0000 0
4482+E: 1304510652.782694 0003 0036 16675
4483+E: 1304510652.782715 0003 0001 16675
4484+E: 1304510652.782717 0000 0000 0
4485+E: 1304510652.787694 0003 0036 16605
4486+E: 1304510652.787706 0003 0034 0
4487+E: 1304510652.787708 0003 0030 1282
4488+E: 1304510652.787716 0003 0001 16605
4489+E: 1304510652.787718 0000 0000 0
4490+E: 1304510652.792702 0003 0036 16575
4491+E: 1304510652.792714 0003 0030 1325
4492+E: 1304510652.792723 0003 0001 16575
4493+E: 1304510652.792724 0000 0000 0
4494+E: 1304510652.797694 0003 0035 16912
4495+E: 1304510652.797706 0003 0036 16495
4496+E: 1304510652.797709 0003 0030 1357
4497+E: 1304510652.797716 0003 0000 16912
4498+E: 1304510652.797718 0003 0001 16495
4499+E: 1304510652.797719 0000 0000 0
4500+E: 1304510652.802692 0003 0035 16878
4501+E: 1304510652.802704 0003 0036 16429
4502+E: 1304510652.802713 0003 0000 16878
4503+E: 1304510652.802714 0003 0001 16429
4504+E: 1304510652.802716 0000 0000 0
4505+E: 1304510652.807684 0003 0035 16874
4506+E: 1304510652.807691 0003 0036 16397
4507+E: 1304510652.807701 0003 0001 16397
4508+E: 1304510652.807703 0000 0000 0
4509+E: 1304510652.812694 0003 0035 16834
4510+E: 1304510652.812706 0003 0036 16327
4511+E: 1304510652.812715 0003 0000 16834
4512+E: 1304510652.812717 0003 0001 16327
4513+E: 1304510652.812719 0000 0000 0
4514+E: 1304510652.817692 0003 0035 16820
4515+E: 1304510652.817703 0003 0036 16243
4516+E: 1304510652.817705 0003 0034 1
4517+E: 1304510652.817707 0003 0030 1300
4518+E: 1304510652.817714 0003 0000 16830
4519+E: 1304510652.817716 0003 0001 16243
4520+E: 1304510652.817718 0000 0000 0
4521+E: 1304510652.823703 0003 0035 16786
4522+E: 1304510652.823715 0003 0036 16167
4523+E: 1304510652.823718 0003 0030 1257
4524+E: 1304510652.823725 0003 0000 16786
4525+E: 1304510652.823726 0003 0001 16167
4526+E: 1304510652.823728 0000 0000 0
4527+E: 1304510652.828691 0003 0035 16776
4528+E: 1304510652.828703 0003 0036 16089
4529+E: 1304510652.828705 0003 0034 0
4530+E: 1304510652.828707 0003 0030 1306
4531+E: 1304510652.828714 0003 0000 16783
4532+E: 1304510652.828715 0003 0001 16089
4533+E: 1304510652.828717 0000 0000 0
4534+E: 1304510652.833696 0003 0035 16762
4535+E: 1304510652.833708 0003 0036 16011
4536+E: 1304510652.833711 0003 0030 1343
4537+E: 1304510652.833718 0003 0000 16772
4538+E: 1304510652.833720 0003 0001 16011
4539+E: 1304510652.833721 0000 0000 0
4540+E: 1304510652.838691 0003 0035 16730
4541+E: 1304510652.838703 0003 0036 15923
4542+E: 1304510652.838712 0003 0000 16730
4543+E: 1304510652.838714 0003 0001 15923
4544+E: 1304510652.838715 0000 0000 0
4545+E: 1304510652.843697 0003 0035 16720
4546+E: 1304510652.843709 0003 0036 15839
4547+E: 1304510652.843713 0003 0031 1000
4548+E: 1304510652.843719 0003 0000 16727
4549+E: 1304510652.843721 0003 0001 15839
4550+E: 1304510652.843723 0000 0000 0
4551+E: 1304510652.848691 0003 0035 16706
4552+E: 1304510652.848703 0003 0036 15761
4553+E: 1304510652.848712 0003 0000 16716
4554+E: 1304510652.848714 0003 0001 15761
4555+E: 1304510652.848716 0000 0000 0
4556+E: 1304510652.853704 0003 0035 16692
4557+E: 1304510652.853716 0003 0036 15679
4558+E: 1304510652.853725 0003 0000 16704
4559+E: 1304510652.853727 0003 0001 15679
4560+E: 1304510652.853729 0000 0000 0
4561+E: 1304510652.858693 0003 0035 16678
4562+E: 1304510652.858705 0003 0036 15603
4563+E: 1304510652.858707 0003 0030 1280
4564+E: 1304510652.858714 0003 0000 16691
4565+E: 1304510652.858716 0003 0001 15603
4566+E: 1304510652.858718 0000 0000 0
4567+E: 1304510652.863708 0003 0035 16648
4568+E: 1304510652.863718 0003 0036 15513
4569+E: 1304510652.863721 0003 0030 1233
4570+E: 1304510652.863729 0003 0000 16648
4571+E: 1304510652.863733 0003 0001 15513
4572+E: 1304510652.863735 0000 0000 0
4573+E: 1304510652.868678 0003 0035 16645
4574+E: 1304510652.868686 0003 0036 15425
4575+E: 1304510652.868692 0003 0030 1288
4576+E: 1304510652.868700 0003 0001 15425
4577+E: 1304510652.868702 0000 0000 0
4578+E: 1304510652.873703 0003 0035 16634
4579+E: 1304510652.873711 0003 0036 15335
4580+E: 1304510652.873714 0003 0030 1330
4581+E: 1304510652.873721 0003 0000 16644
4582+E: 1304510652.873724 0003 0001 15335
4583+E: 1304510652.873726 0000 0000 0
4584+E: 1304510652.879551 0003 0035 16625
4585+E: 1304510652.879554 0003 0036 15251
4586+E: 1304510652.879562 0003 0000 16634
4587+E: 1304510652.879563 0003 0001 15251
4588+E: 1304510652.879563 0000 0000 0
4589+E: 1304510652.884553 0003 0035 16613
4590+E: 1304510652.884557 0003 0036 15161
4591+E: 1304510652.884561 0003 0000 16623
4592+E: 1304510652.884565 0003 0001 15161
4593+E: 1304510652.884565 0000 0000 0
4594+E: 1304510652.889544 0003 0035 16602
4595+E: 1304510652.889548 0003 0036 15071
4596+E: 1304510652.889556 0003 0000 16612
4597+E: 1304510652.889556 0003 0001 15071
4598+E: 1304510652.889557 0000 0000 0
4599+E: 1304510652.894555 0003 0035 16592
4600+E: 1304510652.894560 0003 0036 14989
4601+E: 1304510652.894563 0003 0000 16602
4602+E: 1304510652.894564 0003 0001 14989
4603+E: 1304510652.894564 0000 0000 0
4604+E: 1304510652.899545 0003 0035 16588
4605+E: 1304510652.899548 0003 0036 14901
4606+E: 1304510652.899552 0003 0030 1270
4607+E: 1304510652.899555 0003 0000 16598
4608+E: 1304510652.899555 0003 0001 14901
4609+E: 1304510652.899556 0000 0000 0
4610+E: 1304510652.904552 0003 0035 16580
4611+E: 1304510652.904557 0003 0036 14813
4612+E: 1304510652.904558 0003 0030 1225
4613+E: 1304510652.904561 0003 0000 16589
4614+E: 1304510652.904566 0003 0001 14813
4615+E: 1304510652.904567 0000 0000 0
4616+E: 1304510652.909555 0003 0035 16576
4617+E: 1304510652.909560 0003 0036 14721
4618+E: 1304510652.909565 0003 0030 1282
4619+E: 1304510652.909568 0003 0000 16585
4620+E: 1304510652.909568 0003 0001 14721
4621+E: 1304510652.909569 0000 0000 0
4622+E: 1304510652.914550 0003 0035 16568
4623+E: 1304510652.914554 0003 0036 14627
4624+E: 1304510652.914559 0003 0030 1325
4625+E: 1304510652.914561 0003 0000 16576
4626+E: 1304510652.914562 0003 0001 14627
4627+E: 1304510652.914563 0000 0000 0
4628+E: 1304510652.919544 0003 0035 16565
4629+E: 1304510652.919547 0003 0036 14531
4630+E: 1304510652.919552 0003 0030 1357
4631+E: 1304510652.919555 0003 0000 16573
4632+E: 1304510652.919555 0003 0001 14531
4633+E: 1304510652.919556 0000 0000 0
4634+E: 1304510652.924546 0003 0035 16557
4635+E: 1304510652.924550 0003 0036 14441
4636+E: 1304510652.924558 0003 0000 16565
4637+E: 1304510652.924558 0003 0001 14441
4638+E: 1304510652.924559 0000 0000 0
4639+E: 1304510652.929549 0003 0035 16553
4640+E: 1304510652.929555 0003 0036 14355
4641+E: 1304510652.929562 0003 0000 16562
4642+E: 1304510652.929563 0003 0001 14355
4643+E: 1304510652.929563 0000 0000 0
4644+E: 1304510652.935550 0003 0035 16550
4645+E: 1304510652.935554 0003 0036 14271
4646+E: 1304510652.935561 0003 0000 16559
4647+E: 1304510652.935562 0003 0001 14271
4648+E: 1304510652.935563 0000 0000 0
4649+E: 1304510652.940543 0003 0035 16547
4650+E: 1304510652.940551 0003 0036 14181
4651+E: 1304510652.940552 0003 0030 1224
4652+E: 1304510652.940555 0003 0000 16556
4653+E: 1304510652.940555 0003 0001 14181
4654+E: 1304510652.940556 0000 0000 0
4655+E: 1304510652.945554 0003 0035 16544
4656+E: 1304510652.945562 0003 0036 14093
4657+E: 1304510652.945563 0003 0030 1191
4658+E: 1304510652.945566 0003 0000 16553
4659+E: 1304510652.945567 0003 0001 14093
4660+E: 1304510652.945567 0000 0000 0
4661+E: 1304510652.950541 0003 0036 14003
4662+E: 1304510652.950551 0003 0000 16550
4663+E: 1304510652.950551 0003 0001 14003
4664+E: 1304510652.950552 0000 0000 0
4665+E: 1304510652.955555 0003 0036 13911
4666+E: 1304510652.955564 0003 0030 1323
4667+E: 1304510652.955567 0003 0001 13911
4668+E: 1304510652.955567 0000 0000 0
4669+E: 1304510652.960546 0003 0036 13823
4670+E: 1304510652.960554 0003 0030 1356
4671+E: 1304510652.960557 0003 0001 13823
4672+E: 1304510652.960558 0000 0000 0
4673+E: 1304510652.965555 0003 0035 16541
4674+E: 1304510652.965558 0003 0036 13733
4675+E: 1304510652.965565 0003 0000 16547
4676+E: 1304510652.965566 0003 0001 13733
4677+E: 1304510652.965566 0000 0000 0
4678+E: 1304510652.970549 0003 0035 16537
4679+E: 1304510652.970553 0003 0036 13635
4680+E: 1304510652.970560 0003 0000 16544
4681+E: 1304510652.970561 0003 0001 13635
4682+E: 1304510652.970561 0000 0000 0
4683+E: 1304510652.975555 0003 0035 16533
4684+E: 1304510652.975559 0003 0036 13543
4685+E: 1304510652.975566 0003 0000 16541
4686+E: 1304510652.975567 0003 0001 13543
4687+E: 1304510652.975567 0000 0000 0
4688+E: 1304510652.980543 0003 0035 16529
4689+E: 1304510652.980546 0003 0036 13447
4690+E: 1304510652.980551 0003 0030 1224
4691+E: 1304510652.980554 0003 0000 16538
4692+E: 1304510652.980554 0003 0001 13447
4693+E: 1304510652.980555 0000 0000 0
4694+E: 1304510652.985546 0003 0035 16526
4695+E: 1304510652.985555 0003 0036 13353
4696+E: 1304510652.985556 0003 0030 1191
4697+E: 1304510652.985558 0003 0000 16535
4698+E: 1304510652.985559 0003 0001 13353
4699+E: 1304510652.985560 0000 0000 0
4700+E: 1304510652.990544 0003 0035 16523
4701+E: 1304510652.990552 0003 0036 13251
4702+E: 1304510652.990553 0003 0030 1323
4703+E: 1304510652.990555 0003 0000 16532
4704+E: 1304510652.990556 0003 0001 13251
4705+E: 1304510652.990556 0000 0000 0
4706+E: 1304510652.996550 0003 0035 16519
4707+E: 1304510652.996558 0003 0036 13149
4708+E: 1304510652.996559 0003 0030 1356
4709+E: 1304510652.996561 0003 0000 16528
4710+E: 1304510652.996562 0003 0001 13149
4711+E: 1304510652.996563 0000 0000 0
4712+E: 1304510653.001538 0003 0035 16515
4713+E: 1304510653.001542 0003 0036 13049
4714+E: 1304510653.001545 0003 0000 16524
4715+E: 1304510653.001545 0003 0001 13049
4716+E: 1304510653.001546 0000 0000 0
4717+E: 1304510653.006552 0003 0035 16511
4718+E: 1304510653.006556 0003 0036 12953
4719+E: 1304510653.006563 0003 0000 16520
4720+E: 1304510653.006564 0003 0001 12953
4721+E: 1304510653.006565 0000 0000 0
4722+E: 1304510653.011541 0003 0035 16507
4723+E: 1304510653.011545 0003 0036 12855
4724+E: 1304510653.011550 0003 0030 1224
4725+E: 1304510653.011553 0003 0000 16516
4726+E: 1304510653.011553 0003 0001 12855
4727+E: 1304510653.011554 0000 0000 0
4728+E: 1304510653.016548 0003 0035 16504
4729+E: 1304510653.016551 0003 0036 12757
4730+E: 1304510653.016556 0003 0030 1191
4731+E: 1304510653.016559 0003 0000 16513
4732+E: 1304510653.016560 0003 0001 12757
4733+E: 1304510653.016560 0000 0000 0
4734+E: 1304510653.021544 0003 0035 16501
4735+E: 1304510653.021549 0003 0036 12659
4736+E: 1304510653.021556 0003 0000 16510
4737+E: 1304510653.021556 0003 0001 12659
4738+E: 1304510653.021557 0000 0000 0
4739+E: 1304510653.026552 0003 0035 16498
4740+E: 1304510653.026556 0003 0036 12555
4741+E: 1304510653.026560 0003 0030 1323
4742+E: 1304510653.026563 0003 0000 16507
4743+E: 1304510653.026564 0003 0001 12555
4744+E: 1304510653.026564 0000 0000 0
4745+E: 1304510653.031542 0003 0035 16496
4746+E: 1304510653.031545 0003 0036 12453
4747+E: 1304510653.031550 0003 0030 1356
4748+E: 1304510653.031553 0003 0000 16504
4749+E: 1304510653.031553 0003 0001 12453
4750+E: 1304510653.031554 0000 0000 0
4751+E: 1304510653.036544 0003 0035 16494
4752+E: 1304510653.036552 0003 0036 12345
4753+E: 1304510653.036556 0003 0000 16501
4754+E: 1304510653.036556 0003 0001 12345
4755+E: 1304510653.036557 0000 0000 0
4756+E: 1304510653.041548 0003 0035 16492
4757+E: 1304510653.041556 0003 0036 12251
4758+E: 1304510653.041560 0003 0000 16498
4759+E: 1304510653.041561 0003 0001 12251
4760+E: 1304510653.041561 0000 0000 0
4761+E: 1304510653.046543 0003 0035 16489
4762+E: 1304510653.046546 0003 0036 12149
4763+E: 1304510653.046550 0003 0030 1224
4764+E: 1304510653.046553 0003 0000 16495
4765+E: 1304510653.046554 0003 0001 12149
4766+E: 1304510653.046554 0000 0000 0
4767+E: 1304510653.052551 0003 0035 16486
4768+E: 1304510653.052556 0003 0036 12049
4769+E: 1304510653.052561 0003 0030 1191
4770+E: 1304510653.052564 0003 0000 16492
4771+E: 1304510653.052565 0003 0001 12049
4772+E: 1304510653.052565 0000 0000 0
4773+E: 1304510653.057552 0003 0035 16483
4774+E: 1304510653.057556 0003 0036 11949
4775+E: 1304510653.057564 0003 0000 16489
4776+E: 1304510653.057564 0003 0001 11949
4777+E: 1304510653.057565 0000 0000 0
4778+E: 1304510653.062536 0003 0035 16479
4779+E: 1304510653.062543 0003 0036 11849
4780+E: 1304510653.062544 0003 0030 1323
4781+E: 1304510653.062546 0003 0000 16486
4782+E: 1304510653.062547 0003 0001 11849
4783+E: 1304510653.062548 0000 0000 0
4784+E: 1304510653.067549 0003 0035 16476
4785+E: 1304510653.067554 0003 0036 11745
4786+E: 1304510653.067559 0003 0030 1356
4787+E: 1304510653.067561 0003 0000 16483
4788+E: 1304510653.067562 0003 0001 11745
4789+E: 1304510653.067563 0000 0000 0
4790+E: 1304510653.072545 0003 0035 16472
4791+E: 1304510653.072548 0003 0036 11643
4792+E: 1304510653.072556 0003 0000 16480
4793+E: 1304510653.072556 0003 0001 11643
4794+E: 1304510653.072557 0000 0000 0
4795+E: 1304510653.077596 0003 0035 16468
4796+E: 1304510653.077600 0003 0036 11541
4797+E: 1304510653.077603 0003 0000 16477
4798+E: 1304510653.077604 0003 0001 11541
4799+E: 1304510653.077604 0000 0000 0
4800+E: 1304510653.082532 0003 0035 16465
4801+E: 1304510653.082534 0003 0036 11443
4802+E: 1304510653.082540 0003 0000 16474
4803+E: 1304510653.082541 0003 0001 11443
4804+E: 1304510653.082541 0000 0000 0
4805+E: 1304510653.087551 0003 0035 16462
4806+E: 1304510653.087560 0003 0036 11339
4807+E: 1304510653.087561 0003 0030 1224
4808+E: 1304510653.087564 0003 0000 16471
4809+E: 1304510653.087565 0003 0001 11339
4810+E: 1304510653.087565 0000 0000 0
4811+E: 1304510653.092537 0003 0035 16459
4812+E: 1304510653.092545 0003 0036 11235
4813+E: 1304510653.092546 0003 0030 1191
4814+E: 1304510653.092549 0003 0000 16468
4815+E: 1304510653.092549 0003 0001 11235
4816+E: 1304510653.092550 0000 0000 0
4817+E: 1304510653.097549 0003 0035 16456
4818+E: 1304510653.097559 0003 0036 11131
4819+E: 1304510653.097560 0003 0030 1323
4820+E: 1304510653.097563 0003 0000 16465
4821+E: 1304510653.097568 0003 0001 11131
4822+E: 1304510653.097569 0000 0000 0
4823+E: 1304510653.102546 0003 0035 16453
4824+E: 1304510653.102555 0003 0036 11027
4825+E: 1304510653.102556 0003 0030 1356
4826+E: 1304510653.102558 0003 0000 16462
4827+E: 1304510653.102559 0003 0001 11027
4828+E: 1304510653.102560 0000 0000 0
4829+E: 1304510653.108550 0003 0035 16449
4830+E: 1304510653.108553 0003 0036 10923
4831+E: 1304510653.108561 0003 0000 16458
4832+E: 1304510653.108561 0003 0001 10923
4833+E: 1304510653.108562 0000 0000 0
4834+E: 1304510653.113557 0003 0035 16446
4835+E: 1304510653.113561 0003 0036 10821
4836+E: 1304510653.113564 0003 0000 16455
4837+E: 1304510653.113564 0003 0001 10821
4838+E: 1304510653.113565 0000 0000 0
4839+E: 1304510653.118552 0003 0035 16444
4840+E: 1304510653.118557 0003 0036 10723
4841+E: 1304510653.118565 0003 0000 16452
4842+E: 1304510653.118565 0003 0001 10723
4843+E: 1304510653.118566 0000 0000 0
4844+E: 1304510653.123556 0003 0035 16441
4845+E: 1304510653.123559 0003 0036 10623
4846+E: 1304510653.123560 0003 0030 1224
4847+E: 1304510653.123563 0003 0000 16449
4848+E: 1304510653.123563 0003 0001 10623
4849+E: 1304510653.123564 0000 0000 0
4850+E: 1304510653.128552 0003 0035 16438
4851+E: 1304510653.128558 0003 0036 10515
4852+E: 1304510653.128559 0003 0030 1191
4853+E: 1304510653.128562 0003 0000 16446
4854+E: 1304510653.128563 0003 0001 10515
4855+E: 1304510653.128563 0000 0000 0
4856+E: 1304510653.133546 0003 0035 16436
4857+E: 1304510653.133548 0003 0036 10409
4858+E: 1304510653.133549 0003 0030 1323
4859+E: 1304510653.133551 0003 0000 16443
4860+E: 1304510653.133552 0003 0001 10409
4861+E: 1304510653.133552 0000 0000 0
4862+E: 1304510653.138547 0003 0035 16434
4863+E: 1304510653.138551 0003 0036 10301
4864+E: 1304510653.138556 0003 0030 1356
4865+E: 1304510653.138558 0003 0000 16440
4866+E: 1304510653.138559 0003 0001 10301
4867+E: 1304510653.138559 0000 0000 0
4868+E: 1304510653.143558 0003 0035 16432
4869+E: 1304510653.143560 0003 0036 10199
4870+E: 1304510653.143564 0003 0000 16438
4871+E: 1304510653.143564 0003 0001 10199
4872+E: 1304510653.143565 0000 0000 0
4873+E: 1304510653.148549 0003 0035 16429
4874+E: 1304510653.148553 0003 0036 10093
4875+E: 1304510653.148560 0003 0000 16435
4876+E: 1304510653.148561 0003 0001 10093
4877+E: 1304510653.148561 0000 0000 0
4878+E: 1304510653.153555 0003 0035 16426
4879+E: 1304510653.153559 0003 0036 9993
4880+E: 1304510653.153562 0003 0000 16432
4881+E: 1304510653.153563 0003 0001 9993
4882+E: 1304510653.153563 0000 0000 0
4883+E: 1304510653.158562 0003 0035 16424
4884+E: 1304510653.158567 0003 0036 9889
4885+E: 1304510653.158569 0003 0030 1224
4886+E: 1304510653.158572 0003 0000 16430
4887+E: 1304510653.158572 0003 0001 9889
4888+E: 1304510653.158573 0000 0000 0
4889+E: 1304510653.163550 0003 0035 16421
4890+E: 1304510653.163555 0003 0036 9783
4891+E: 1304510653.163556 0003 0030 1191
4892+E: 1304510653.163558 0003 0000 16427
4893+E: 1304510653.163558 0003 0001 9783
4894+E: 1304510653.163559 0000 0000 0
4895+E: 1304510653.169544 0003 0035 16418
4896+E: 1304510653.169548 0003 0036 9679
4897+E: 1304510653.169555 0003 0000 16424
4898+E: 1304510653.169556 0003 0001 9679
4899+E: 1304510653.169557 0000 0000 0
4900+E: 1304510653.174539 0003 0035 16415
4901+E: 1304510653.174544 0003 0036 9575
4902+E: 1304510653.174545 0003 0030 1323
4903+E: 1304510653.174547 0003 0000 16421
4904+E: 1304510653.174550 0003 0001 9575
4905+E: 1304510653.174551 0000 0000 0
4906+E: 1304510653.179546 0003 0035 16411
4907+E: 1304510653.179551 0003 0036 9473
4908+E: 1304510653.179557 0003 0030 1356
4909+E: 1304510653.179559 0003 0000 16418
4910+E: 1304510653.179560 0003 0001 9473
4911+E: 1304510653.179560 0000 0000 0
4912+E: 1304510653.184540 0003 0035 16402
4913+E: 1304510653.184544 0003 0036 9373
4914+E: 1304510653.184551 0003 0000 16410
4915+E: 1304510653.184552 0003 0001 9373
4916+E: 1304510653.184552 0000 0000 0
4917+E: 1304510653.189546 0003 0035 16398
4918+E: 1304510653.189550 0003 0036 9273
4919+E: 1304510653.189557 0003 0000 16407
4920+E: 1304510653.189558 0003 0001 9273
4921+E: 1304510653.189558 0000 0000 0
4922+E: 1304510653.194533 0003 0035 16389
4923+E: 1304510653.194537 0003 0036 9175
4924+E: 1304510653.194537 0003 0030 1224
4925+E: 1304510653.194539 0003 0000 16398
4926+E: 1304510653.194540 0003 0001 9175
4927+E: 1304510653.194540 0000 0000 0
4928+E: 1304510653.199548 0003 0035 16380
4929+E: 1304510653.199553 0003 0036 9067
4930+E: 1304510653.199558 0003 0034 1
4931+E: 1304510653.199561 0003 0000 16389
4932+E: 1304510653.199561 0003 0001 9067
4933+E: 1304510653.199562 0000 0000 0
4934+E: 1304510653.204541 0003 0035 16371
4935+E: 1304510653.204543 0003 0036 8963
4936+E: 1304510653.204548 0003 0034 0
4937+E: 1304510653.204548 0003 0030 1282
4938+E: 1304510653.204549 0003 0031 1032
4939+E: 1304510653.204551 0003 0000 16380
4940+E: 1304510653.204552 0003 0001 8963
4941+E: 1304510653.204552 0000 0000 0
4942+E: 1304510653.209548 0003 0035 16361
4943+E: 1304510653.209552 0003 0036 8857
4944+E: 1304510653.209553 0003 0030 1325
4945+E: 1304510653.209556 0003 0000 16370
4946+E: 1304510653.209557 0003 0001 8857
4947+E: 1304510653.209557 0000 0000 0
4948+E: 1304510653.214528 0003 0035 16352
4949+E: 1304510653.214531 0003 0036 8757
4950+E: 1304510653.214531 0003 0030 1357
4951+E: 1304510653.214535 0003 0000 16361
4952+E: 1304510653.214535 0003 0001 8757
4953+E: 1304510653.214536 0000 0000 0
4954+E: 1304510653.219546 0003 0035 16342
4955+E: 1304510653.219550 0003 0036 8659
4956+E: 1304510653.219557 0003 0000 16351
4957+E: 1304510653.219558 0003 0001 8659
4958+E: 1304510653.219558 0000 0000 0
4959+E: 1304510653.225541 0003 0035 16288
4960+E: 1304510653.225544 0003 0036 8557
4961+E: 1304510653.225545 0003 0034 1
4962+E: 1304510653.225546 0003 0030 1300
4963+E: 1304510653.225548 0003 0000 16288
4964+E: 1304510653.225551 0003 0001 8557
4965+E: 1304510653.225552 0000 0000 0
4966+E: 1304510653.230545 0003 0035 16248
4967+E: 1304510653.230554 0003 0036 8457
4968+E: 1304510653.230555 0003 0030 1257
4969+E: 1304510653.230558 0003 0000 16248
4970+E: 1304510653.230558 0003 0001 8457
4971+E: 1304510653.230559 0000 0000 0
4972+E: 1304510653.235541 0003 0035 16214
4973+E: 1304510653.235549 0003 0036 8347
4974+E: 1304510653.235550 0003 0030 1225
4975+E: 1304510653.235553 0003 0000 16214
4976+E: 1304510653.235553 0003 0001 8347
4977+E: 1304510653.235554 0000 0000 0
4978+E: 1304510653.240541 0003 0036 8239
4979+E: 1304510653.240549 0003 0034 0
4980+E: 1304510653.240549 0003 0030 1282
4981+E: 1304510653.240552 0003 0001 8239
4982+E: 1304510653.240553 0000 0000 0
4983+E: 1304510653.245547 0003 0035 16211
4984+E: 1304510653.245551 0003 0036 8133
4985+E: 1304510653.245556 0003 0030 1325
4986+E: 1304510653.245559 0003 0001 8133
4987+E: 1304510653.245560 0000 0000 0
4988+E: 1304510653.250545 0003 0035 16170
4989+E: 1304510653.250548 0003 0036 8027
4990+E: 1304510653.250553 0003 0030 1357
4991+E: 1304510653.250556 0003 0000 16170
4992+E: 1304510653.250556 0003 0001 8027
4993+E: 1304510653.250557 0000 0000 0
4994+E: 1304510653.255545 0003 0035 16140
4995+E: 1304510653.255548 0003 0036 7921
4996+E: 1304510653.255549 0003 0031 855
4997+E: 1304510653.255554 0003 0000 16140
4998+E: 1304510653.255554 0003 0001 7921
4999+E: 1304510653.255555 0000 0000 0
5000+E: 1304510653.260546 0003 0035 16127
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches