Merge lp:~dandrader/grail/lp960598 into lp:grail

Proposed by Daniel d'Andrada
Status: Merged
Merged at revision: 203
Proposed branch: lp:~dandrader/grail/lp960598
Merge into: lp:grail
Diff against target: 2741 lines (+2688/-5)
6 files modified
src/v3/atomic-recognizer.cpp (+6/-4)
test/Makefile.am (+4/-1)
test/recordings/apple_magic_trackpad/3_drag_ended_by_4th_touch.record (+1896/-0)
test/slice-checker.cpp (+186/-0)
test/slice-checker.h (+203/-0)
test/x11/parallel-atomic-gestures.cpp (+393/-0)
To merge this branch: bzr merge lp:~dandrader/grail/lp960598
Reviewer Review Type Date Requested Status
Chase Douglas (community) Approve
Review via email: mp+98717@code.launchpad.net

This proposal supersedes a proposal from 2012-03-21.

Description of the change

Fix for bug #960598.

Removes assumption that under atomic gesture rules there can be only one accepted gesture.

Adds a test that serves as regression test and partly documents the expected behavior of the atomic gestures recognizer.

The test is not strict in the exact number, content or order of slices produced for the given input. It just checks that the slices come in an order that makes sense:
 - "Begin" comes before "Update" which comes before "End"
 - "Construction finished == false" comes before "Construction finished == true"
 - Touch slices comes before Drag slices (since a Touch gesture is recognized earlier than a Drag)
 - No Pinch slices come out of a physical drag gesture.

Updated according to comments from first and second versions of this proposal (now it's the third).

To post a comment you must log in.
Revision history for this message
Chase Douglas (chasedouglas) wrote : Posted in a previous version of this proposal

* Style: Replace // with /**/

* There's a lot of good code in the slice state checker handling. Most of it should be moved to the parent test subdirectory so it can be reused outside of this particular test, like utouch::grail::testing::Slice in events.h. We should then convert the tests using the Slice test class to this better slice state checker, but that can wait for later.

* Please comment the slice checking classes, structs, and methods. It looks to be well abstracted, but it's hard to follow because it's not obvious what everything is doing.

The rest looks good!

review: Needs Fixing
Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

Updated according to comments from previous version of this proposal.

Revision history for this message
Chase Douglas (chasedouglas) wrote : Posted in a previous version of this proposal

* SliceCheckerState should be inside the utouch::grail::testing namespace.

* In SliceChecker::CheckSlice(UGSlice slice), I think we should be using dynamic_cast instead of static_cast for extra type safety checking.

* "// Map type() to class." needs to be " /* Map type() to class. */"

* I'm not sure that the parallel slice checker is robust enough for general use, but we can worry about that when we need more complex handling. The main issue is the assumption that the same number of events will come through for all parallel gestures. Why not keep track of the number of slices seen per gesture and verify that amount directly instead of looking at averages?

review: Needs Fixing
Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

> [...]
> * In SliceChecker::CheckSlice(UGSlice slice), I think we should be using
> dynamic_cast instead of static_cast for extra type safety checking.

I think it's superfluous in this case, but ok.

> [...] The main issue is the assumption that the same number of events
> will come through for all parallel gestures.

Why is that an issue? That's what I want to check. While there's a Touch and a Drag gesture active, they will both get updated on each new frame event, hand-in-hand. I think that's one behavior to be expected.

If later on some test wants to check parallel gestures with uneven slice counts it's just a matter of creating a new slice checker state that expects so. Some state-renaming work might come in handy as well.

> Why not keep track of the number of slices seen per gesture and verify
> that amount directly instead of looking at averages?

Because I don't want the exact same number of slices per parallel gesture. I accept that one sent a couple more slices than the other.

Revision history for this message
Daniel d'Andrada (dandrader) wrote : Posted in a previous version of this proposal

> * SliceCheckerState should be inside the utouch::grail::testing namespace.
 It is.

Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Updated according to comments

Revision history for this message
Chase Douglas (chasedouglas) wrote : Posted in a previous version of this proposal

> > * SliceCheckerState should be inside the utouch::grail::testing namespace.
> It is.

Oops, I was looking at the wrong thing. You're correct, it's in the namespace.

Revision history for this message
Chase Douglas (chasedouglas) wrote : Posted in a previous version of this proposal

> > [...] The main issue is the assumption that the same number of events
> > will come through for all parallel gestures.
>
> Why is that an issue? That's what I want to check. While there's a Touch and a
> Drag gesture active, they will both get updated on each new frame event, hand-
> in-hand. I think that's one behavior to be expected.
>
> If later on some test wants to check parallel gestures with uneven slice
> counts it's just a matter of creating a new slice checker state that expects
> so. Some state-renaming work might come in handy as well.

I think I understand what you are getting at. You want to check that a similar number of slices for multiple gestures comes through *at the same time*. I think this is a reasonable goal and solution, so I'm fine with it now.

> > Why not keep track of the number of slices seen per gesture and verify
> > that amount directly instead of looking at averages?
>
> Because I don't want the exact same number of slices per parallel gesture. I
> accept that one sent a couple more slices than the other.

This part still feels a bit fragile to me, but we can always fix it up later if it turns out to be.

review: Approve
Revision history for this message
Chase Douglas (chasedouglas) wrote :

Still approve :).

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/v3/atomic-recognizer.cpp'
2--- src/v3/atomic-recognizer.cpp 2012-03-16 22:13:48 +0000
3+++ src/v3/atomic-recognizer.cpp 2012-03-21 20:00:25 +0000
4@@ -213,10 +213,12 @@
5 INSERT_TOUCH(touch_id, free_touches_);
6 }
7
8- /* Under atomic gestures rules there can be only one accepted gesture */
9- assert(accepted_gestures_.size() <= 1);
10- if (accepted_gestures_.size() != 0) {
11- const SharedGesture& gesture = *accepted_gestures_.begin();
12+ /* HandleNewTouchForAcceptedGesture may erase the gesture from
13+ * accepted_gestures_, so we can't use range-based for loops */
14+ for (auto it = accepted_gestures_.begin();
15+ it != accepted_gestures_.end();
16+ ) {
17+ const SharedGesture& gesture = *it++;
18 HandleNewTouchesForAcceptedGesture(gesture);
19 }
20
21
22=== modified file 'test/Makefile.am'
23--- test/Makefile.am 2012-03-19 23:59:02 +0000
24+++ test/Makefile.am 2012-03-21 20:00:25 +0000
25@@ -35,6 +35,8 @@
26 events.h \
27 recording.cpp \
28 recording.h \
29+ slice-checker.cpp \
30+ slice-checker.h \
31 x11/fixture.cpp \
32 x11/fixture.h \
33 x11/no-premature-gestures.cpp \
34@@ -42,7 +44,8 @@
35 x11/twodrag.cpp \
36 x11/dragthresh.cpp \
37 x11/timeout.cpp \
38- x11/atomic-timeout.cpp
39+ x11/atomic-timeout.cpp \
40+ x11/parallel-atomic-gestures.cpp
41 endif
42
43 AM_CPPFLAGS = \
44
45=== added file 'test/recordings/apple_magic_trackpad/3_drag_ended_by_4th_touch.record'
46--- test/recordings/apple_magic_trackpad/3_drag_ended_by_4th_touch.record 1970-01-01 00:00:00 +0000
47+++ test/recordings/apple_magic_trackpad/3_drag_ended_by_4th_touch.record 2012-03-21 20:00:25 +0000
48@@ -0,0 +1,1896 @@
49+E: 1331926700.835652 0003 0039 1
50+E: 1331926700.835653 0003 0030 112
51+E: 1331926700.835654 0003 0031 152
52+E: 1331926700.835655 0003 0034 0
53+E: 1331926700.835655 0003 0035 -1151
54+E: 1331926700.835656 0003 0036 -951
55+E: 1331926700.835657 0000 0002 0
56+E: 1331926700.835657 0003 0039 7
57+E: 1331926700.835658 0003 0030 120
58+E: 1331926700.835659 0003 0031 108
59+E: 1331926700.835659 0003 0034 0
60+E: 1331926700.835660 0003 0035 1177
61+E: 1331926700.835661 0003 0036 -1600
62+E: 1331926700.835661 0000 0002 0
63+E: 1331926700.835662 0003 0039 9
64+E: 1331926700.835663 0003 0030 168
65+E: 1331926700.835663 0003 0031 320
66+E: 1331926700.835664 0003 0034 0
67+E: 1331926700.835665 0003 0035 -73
68+E: 1331926700.835665 0003 0036 -1895
69+E: 1331926700.835666 0000 0002 0
70+E: 1331926700.835667 0001 014a 1
71+E: 1331926700.835668 0001 014e 1
72+E: 1331926700.835670 0003 0000 -1151
73+E: 1331926700.835670 0003 0001 -951
74+E: 1331926700.835671 0000 0000 0
75+E: 1331926700.843123 0003 0039 1
76+E: 1331926700.843124 0003 0030 132
77+E: 1331926700.843125 0003 0031 156
78+E: 1331926700.843125 0003 0034 0
79+E: 1331926700.843126 0003 0035 -1150
80+E: 1331926700.843127 0003 0036 -948
81+E: 1331926700.843127 0000 0002 0
82+E: 1331926700.843128 0003 0039 7
83+E: 1331926700.843129 0003 0030 116
84+E: 1331926700.843129 0003 0031 148
85+E: 1331926700.843130 0003 0034 0
86+E: 1331926700.843131 0003 0035 1178
87+E: 1331926700.843131 0003 0036 -1600
88+E: 1331926700.843132 0000 0002 0
89+E: 1331926700.843133 0003 0039 9
90+E: 1331926700.843133 0003 0030 188
91+E: 1331926700.843134 0003 0031 328
92+E: 1331926700.843135 0003 0034 0
93+E: 1331926700.843135 0003 0035 -78
94+E: 1331926700.843136 0003 0036 -1890
95+E: 1331926700.843136 0000 0002 0
96+E: 1331926700.843140 0003 0001 -950
97+E: 1331926700.843141 0000 0000 0
98+E: 1331926700.863130 0003 0039 1
99+E: 1331926700.863131 0003 0030 144
100+E: 1331926700.863131 0003 0031 160
101+E: 1331926700.863132 0003 0034 0
102+E: 1331926700.863133 0003 0035 -1150
103+E: 1331926700.863133 0003 0036 -944
104+E: 1331926700.863134 0000 0002 0
105+E: 1331926700.863135 0003 0039 7
106+E: 1331926700.863135 0003 0030 112
107+E: 1331926700.863136 0003 0031 168
108+E: 1331926700.863137 0003 0034 0
109+E: 1331926700.863137 0003 0035 1186
110+E: 1331926700.863138 0003 0036 -1592
111+E: 1331926700.863139 0000 0002 0
112+E: 1331926700.863139 0003 0039 9
113+E: 1331926700.863140 0003 0030 208
114+E: 1331926700.863141 0003 0031 328
115+E: 1331926700.863141 0003 0034 0
116+E: 1331926700.863142 0003 0035 -75
117+E: 1331926700.863143 0003 0036 -1887
118+E: 1331926700.863143 0000 0002 0
119+E: 1331926700.863147 0003 0001 -947
120+E: 1331926700.863148 0000 0000 0
121+E: 1331926700.865619 0003 0039 1
122+E: 1331926700.865620 0003 0030 164
123+E: 1331926700.865621 0003 0031 160
124+E: 1331926700.865622 0003 0034 0
125+E: 1331926700.865622 0003 0035 -1149
126+E: 1331926700.865623 0003 0036 -942
127+E: 1331926700.865624 0000 0002 0
128+E: 1331926700.865624 0003 0039 7
129+E: 1331926700.865625 0003 0030 116
130+E: 1331926700.865626 0003 0031 192
131+E: 1331926700.865626 0003 0034 0
132+E: 1331926700.865627 0003 0035 1190
133+E: 1331926700.865628 0003 0036 -1581
134+E: 1331926700.865628 0000 0002 0
135+E: 1331926700.865629 0003 0039 9
136+E: 1331926700.865630 0003 0030 212
137+E: 1331926700.865630 0003 0031 352
138+E: 1331926700.865631 0003 0034 0
139+E: 1331926700.865631 0003 0035 -72
140+E: 1331926700.865632 0003 0036 -1880
141+E: 1331926700.865633 0000 0002 0
142+E: 1331926700.865636 0003 0000 -1150
143+E: 1331926700.865636 0003 0001 -944
144+E: 1331926700.865637 0000 0000 0
145+E: 1331926700.898119 0003 0039 1
146+E: 1331926700.898120 0003 0030 172
147+E: 1331926700.898121 0003 0031 160
148+E: 1331926700.898121 0003 0034 0
149+E: 1331926700.898122 0003 0035 -1147
150+E: 1331926700.898123 0003 0036 -938
151+E: 1331926700.898123 0000 0002 0
152+E: 1331926700.898124 0003 0039 7
153+E: 1331926700.898125 0003 0030 112
154+E: 1331926700.898125 0003 0031 200
155+E: 1331926700.898126 0003 0034 0
156+E: 1331926700.898127 0003 0035 1198
157+E: 1331926700.898127 0003 0036 -1570
158+E: 1331926700.898128 0000 0002 0
159+E: 1331926700.898129 0003 0039 9
160+E: 1331926700.898129 0003 0030 212
161+E: 1331926700.898130 0003 0031 360
162+E: 1331926700.898131 0003 0034 0
163+E: 1331926700.898131 0003 0035 -71
164+E: 1331926700.898132 0003 0036 -1876
165+E: 1331926700.898132 0000 0002 0
166+E: 1331926700.898136 0003 0000 -1149
167+E: 1331926700.898136 0003 0001 -941
168+E: 1331926700.898137 0000 0000 0
169+E: 1331926700.900647 0003 0039 1
170+E: 1331926700.900648 0003 0030 168
171+E: 1331926700.900648 0003 0031 168
172+E: 1331926700.900649 0003 0034 0
173+E: 1331926700.900649 0003 0035 -1145
174+E: 1331926700.900650 0003 0036 -936
175+E: 1331926700.900651 0000 0002 0
176+E: 1331926700.900651 0003 0039 7
177+E: 1331926700.900652 0003 0030 124
178+E: 1331926700.900653 0003 0031 220
179+E: 1331926700.900653 0003 0034 0
180+E: 1331926700.900654 0003 0035 1205
181+E: 1331926700.900655 0003 0036 -1556
182+E: 1331926700.900655 0000 0002 0
183+E: 1331926700.900656 0003 0039 9
184+E: 1331926700.900657 0003 0030 228
185+E: 1331926700.900657 0003 0031 380
186+E: 1331926700.900658 0003 0034 0
187+E: 1331926700.900659 0003 0035 -69
188+E: 1331926700.900659 0003 0036 -1869
189+E: 1331926700.900660 0000 0002 0
190+E: 1331926700.900663 0003 0000 -1147
191+E: 1331926700.900664 0003 0001 -938
192+E: 1331926700.900664 0000 0000 0
193+E: 1331926700.903122 0003 0039 1
194+E: 1331926700.903123 0003 0030 168
195+E: 1331926700.903123 0003 0031 172
196+E: 1331926700.903124 0003 0034 0
197+E: 1331926700.903124 0003 0035 -1140
198+E: 1331926700.903125 0003 0036 -927
199+E: 1331926700.903126 0000 0002 0
200+E: 1331926700.903127 0003 0039 7
201+E: 1331926700.903127 0003 0030 136
202+E: 1331926700.903128 0003 0031 232
203+E: 1331926700.903128 0003 0034 0
204+E: 1331926700.903129 0003 0035 1212
205+E: 1331926700.903130 0003 0036 -1541
206+E: 1331926700.903130 0000 0002 0
207+E: 1331926700.903131 0003 0039 9
208+E: 1331926700.903132 0003 0030 228
209+E: 1331926700.903132 0003 0031 380
210+E: 1331926700.903133 0003 0034 0
211+E: 1331926700.903134 0003 0035 -66
212+E: 1331926700.903134 0003 0036 -1861
213+E: 1331926700.903135 0000 0002 0
214+E: 1331926700.903138 0003 0000 -1143
215+E: 1331926700.903139 0003 0001 -927
216+E: 1331926700.903139 0000 0000 0
217+E: 1331926700.905618 0003 0039 1
218+E: 1331926700.905619 0003 0030 172
219+E: 1331926700.905620 0003 0031 184
220+E: 1331926700.905621 0003 0034 0
221+E: 1331926700.905621 0003 0035 -1134
222+E: 1331926700.905622 0003 0036 -914
223+E: 1331926700.905623 0000 0002 0
224+E: 1331926700.905623 0003 0039 7
225+E: 1331926700.905624 0003 0030 136
226+E: 1331926700.905625 0003 0031 212
227+E: 1331926700.905625 0003 0034 0
228+E: 1331926700.905626 0003 0035 1218
229+E: 1331926700.905627 0003 0036 -1524
230+E: 1331926700.905627 0000 0002 0
231+E: 1331926700.905628 0003 0039 9
232+E: 1331926700.905629 0003 0030 220
233+E: 1331926700.905629 0003 0031 388
234+E: 1331926700.905630 0003 0034 0
235+E: 1331926700.905630 0003 0035 -63
236+E: 1331926700.905631 0003 0036 -1851
237+E: 1331926700.905632 0000 0002 0
238+E: 1331926700.905635 0003 0000 -1134
239+E: 1331926700.905635 0003 0001 -914
240+E: 1331926700.905636 0000 0000 0
241+E: 1331926700.925617 0003 0039 1
242+E: 1331926700.925618 0003 0030 180
243+E: 1331926700.925618 0003 0031 204
244+E: 1331926700.925619 0003 0034 0
245+E: 1331926700.925620 0003 0035 -1128
246+E: 1331926700.925620 0003 0036 -899
247+E: 1331926700.925621 0000 0002 0
248+E: 1331926700.925622 0003 0039 7
249+E: 1331926700.925622 0003 0030 136
250+E: 1331926700.925623 0003 0031 208
251+E: 1331926700.925624 0003 0034 0
252+E: 1331926700.925624 0003 0035 1225
253+E: 1331926700.925625 0003 0036 -1507
254+E: 1331926700.925626 0000 0002 0
255+E: 1331926700.925626 0003 0039 9
256+E: 1331926700.925627 0003 0030 216
257+E: 1331926700.925628 0003 0031 400
258+E: 1331926700.925628 0003 0034 0
259+E: 1331926700.925629 0003 0035 -58
260+E: 1331926700.925630 0003 0036 -1836
261+E: 1331926700.925630 0000 0002 0
262+E: 1331926700.925633 0003 0000 -1131
263+E: 1331926700.925634 0003 0001 -899
264+E: 1331926700.925635 0000 0000 0
265+E: 1331926700.928083 0003 0039 1
266+E: 1331926700.928084 0003 0030 180
267+E: 1331926700.928084 0003 0031 216
268+E: 1331926700.928085 0003 0034 0
269+E: 1331926700.928086 0003 0035 -1122
270+E: 1331926700.928086 0003 0036 -882
271+E: 1331926700.928087 0000 0002 0
272+E: 1331926700.928088 0003 0039 7
273+E: 1331926700.928088 0003 0030 140
274+E: 1331926700.928089 0003 0031 228
275+E: 1331926700.928090 0003 0034 0
276+E: 1331926700.928090 0003 0035 1232
277+E: 1331926700.928091 0003 0036 -1489
278+E: 1331926700.928092 0000 0002 0
279+E: 1331926700.928092 0003 0039 9
280+E: 1331926700.928093 0003 0030 200
281+E: 1331926700.928094 0003 0031 376
282+E: 1331926700.928094 0003 0034 0
283+E: 1331926700.928095 0003 0035 -53
284+E: 1331926700.928096 0003 0036 -1820
285+E: 1331926700.928096 0000 0002 0
286+E: 1331926700.928099 0003 0000 -1122
287+E: 1331926700.928100 0003 0001 -882
288+E: 1331926700.928101 0000 0000 0
289+E: 1331926700.935646 0003 0039 1
290+E: 1331926700.935647 0003 0030 168
291+E: 1331926700.935648 0003 0031 196
292+E: 1331926700.935648 0003 0034 0
293+E: 1331926700.935649 0003 0035 -1115
294+E: 1331926700.935650 0003 0036 -863
295+E: 1331926700.935650 0000 0002 0
296+E: 1331926700.935651 0003 0039 7
297+E: 1331926700.935652 0003 0030 152
298+E: 1331926700.935652 0003 0031 248
299+E: 1331926700.935653 0003 0034 0
300+E: 1331926700.935654 0003 0035 1240
301+E: 1331926700.935654 0003 0036 -1470
302+E: 1331926700.935655 0000 0002 0
303+E: 1331926700.935656 0003 0039 9
304+E: 1331926700.935656 0003 0030 204
305+E: 1331926700.935657 0003 0031 380
306+E: 1331926700.935658 0003 0034 0
307+E: 1331926700.935658 0003 0035 -48
308+E: 1331926700.935659 0003 0036 -1803
309+E: 1331926700.935659 0000 0002 0
310+E: 1331926700.935663 0003 0000 -1118
311+E: 1331926700.935663 0003 0001 -863
312+E: 1331926700.935664 0000 0000 0
313+E: 1331926700.955645 0003 0039 1
314+E: 1331926700.955646 0003 0030 164
315+E: 1331926700.955647 0003 0031 164
316+E: 1331926700.955647 0003 0034 0
317+E: 1331926700.955648 0003 0035 -1102
318+E: 1331926700.955649 0003 0036 -829
319+E: 1331926700.955649 0000 0002 0
320+E: 1331926700.955650 0003 0039 7
321+E: 1331926700.955651 0003 0030 148
322+E: 1331926700.955651 0003 0031 260
323+E: 1331926700.955652 0003 0034 0
324+E: 1331926700.955653 0003 0035 1255
325+E: 1331926700.955653 0003 0036 -1433
326+E: 1331926700.955654 0000 0002 0
327+E: 1331926700.955655 0003 0039 9
328+E: 1331926700.955655 0003 0030 204
329+E: 1331926700.955656 0003 0031 376
330+E: 1331926700.955656 0003 0034 0
331+E: 1331926700.955657 0003 0035 -40
332+E: 1331926700.955658 0003 0036 -1779
333+E: 1331926700.955658 0000 0002 0
334+E: 1331926700.955662 0003 0000 -1102
335+E: 1331926700.955662 0003 0001 -829
336+E: 1331926700.955663 0000 0000 0
337+E: 1331926700.969388 0003 0039 1
338+E: 1331926700.969389 0003 0030 160
339+E: 1331926700.969390 0003 0031 152
340+E: 1331926700.969390 0003 0034 0
341+E: 1331926700.969391 0003 0035 -1095
342+E: 1331926700.969392 0003 0036 -808
343+E: 1331926700.969392 0000 0002 0
344+E: 1331926700.969393 0003 0039 7
345+E: 1331926700.969394 0003 0030 152
346+E: 1331926700.969394 0003 0031 248
347+E: 1331926700.969395 0003 0034 0
348+E: 1331926700.969396 0003 0035 1267
349+E: 1331926700.969396 0003 0036 -1400
350+E: 1331926700.969397 0000 0002 0
351+E: 1331926700.969398 0003 0039 9
352+E: 1331926700.969398 0003 0030 212
353+E: 1331926700.969399 0003 0031 388
354+E: 1331926700.969400 0003 0034 0
355+E: 1331926700.969400 0003 0035 -31
356+E: 1331926700.969401 0003 0036 -1753
357+E: 1331926700.969402 0000 0002 0
358+E: 1331926700.969405 0003 0000 -1098
359+E: 1331926700.969405 0003 0001 -808
360+E: 1331926700.969406 0000 0000 0
361+E: 1331926700.979390 0003 0039 1
362+E: 1331926700.979391 0003 0030 176
363+E: 1331926700.979392 0003 0031 160
364+E: 1331926700.979392 0003 0034 26
365+E: 1331926700.979393 0003 0035 -1084
366+E: 1331926700.979393 0003 0036 -778
367+E: 1331926700.979394 0000 0002 0
368+E: 1331926700.979395 0003 0039 7
369+E: 1331926700.979396 0003 0030 140
370+E: 1331926700.979396 0003 0031 224
371+E: 1331926700.979397 0003 0034 0
372+E: 1331926700.979398 0003 0035 1279
373+E: 1331926700.979398 0003 0036 -1366
374+E: 1331926700.979399 0000 0002 0
375+E: 1331926700.979400 0003 0039 9
376+E: 1331926700.979400 0003 0030 220
377+E: 1331926700.979401 0003 0031 400
378+E: 1331926700.979401 0003 0034 0
379+E: 1331926700.979402 0003 0035 -22
380+E: 1331926700.979403 0003 0036 -1725
381+E: 1331926700.979403 0000 0002 0
382+E: 1331926700.979407 0003 0000 -1084
383+E: 1331926700.979407 0003 0001 -778
384+E: 1331926700.979408 0000 0000 0
385+E: 1331926700.981988 0003 0039 1
386+E: 1331926700.981989 0003 0030 180
387+E: 1331926700.981990 0003 0031 172
388+E: 1331926700.981991 0003 0034 0
389+E: 1331926700.981991 0003 0035 -1072
390+E: 1331926700.981992 0003 0036 -746
391+E: 1331926700.981993 0000 0002 0
392+E: 1331926700.981993 0003 0039 7
393+E: 1331926700.981994 0003 0030 132
394+E: 1331926700.981995 0003 0031 204
395+E: 1331926700.981995 0003 0034 0
396+E: 1331926700.981996 0003 0035 1286
397+E: 1331926700.981997 0003 0036 -1343
398+E: 1331926700.981997 0000 0002 0
399+E: 1331926700.981998 0003 0039 9
400+E: 1331926700.981999 0003 0030 224
401+E: 1331926700.981999 0003 0031 400
402+E: 1331926700.982000 0003 0034 0
403+E: 1331926700.982001 0003 0035 -12
404+E: 1331926700.982001 0003 0036 -1696
405+E: 1331926700.982002 0000 0002 0
406+E: 1331926700.982005 0003 0000 -1072
407+E: 1331926700.982006 0003 0001 -746
408+E: 1331926700.982006 0000 0000 0
409+E: 1331926700.986990 0003 0039 1
410+E: 1331926700.986991 0003 0030 196
411+E: 1331926700.986991 0003 0031 204
412+E: 1331926700.986992 0003 0034 0
413+E: 1331926700.986993 0003 0035 -1056
414+E: 1331926700.986993 0003 0036 -702
415+E: 1331926700.986994 0000 0002 0
416+E: 1331926700.986995 0003 0039 7
417+E: 1331926700.986995 0003 0030 140
418+E: 1331926700.986996 0003 0031 248
419+E: 1331926700.986997 0003 0034 0
420+E: 1331926700.986997 0003 0035 1302
421+E: 1331926700.986998 0003 0036 -1296
422+E: 1331926700.986999 0000 0002 0
423+E: 1331926700.986999 0003 0039 9
424+E: 1331926700.987000 0003 0030 248
425+E: 1331926700.987001 0003 0031 404
426+E: 1331926700.987001 0003 0034 0
427+E: 1331926700.987002 0003 0035 0
428+E: 1331926700.987002 0003 0036 -1654
429+E: 1331926700.987003 0000 0002 0
430+E: 1331926700.987006 0003 0000 -1056
431+E: 1331926700.987007 0003 0001 -702
432+E: 1331926700.987007 0000 0000 0
433+E: 1331926701.006989 0003 0039 1
434+E: 1331926701.006990 0003 0030 200
435+E: 1331926701.006991 0003 0031 216
436+E: 1331926701.006991 0003 0034 0
437+E: 1331926701.006992 0003 0035 -1044
438+E: 1331926701.006993 0003 0036 -668
439+E: 1331926701.006993 0000 0002 0
440+E: 1331926701.006994 0003 0039 7
441+E: 1331926701.006995 0003 0030 136
442+E: 1331926701.006995 0003 0031 252
443+E: 1331926701.006996 0003 0034 0
444+E: 1331926701.006997 0003 0035 1314
445+E: 1331926701.006997 0003 0036 -1261
446+E: 1331926701.006998 0000 0002 0
447+E: 1331926701.006999 0003 0039 9
448+E: 1331926701.006999 0003 0030 248
449+E: 1331926701.007000 0003 0031 424
450+E: 1331926701.007001 0003 0034 0
451+E: 1331926701.007001 0003 0035 11
452+E: 1331926701.007002 0003 0036 -1620
453+E: 1331926701.007003 0000 0002 0
454+E: 1331926701.007006 0003 0000 -1044
455+E: 1331926701.007006 0003 0001 -668
456+E: 1331926701.007007 0000 0000 0
457+E: 1331926701.011995 0003 0039 1
458+E: 1331926701.011996 0003 0030 204
459+E: 1331926701.011997 0003 0031 208
460+E: 1331926701.011997 0003 0034 25
461+E: 1331926701.011998 0003 0035 -1032
462+E: 1331926701.011999 0003 0036 -633
463+E: 1331926701.011999 0000 0002 0
464+E: 1331926701.012000 0003 0039 7
465+E: 1331926701.012001 0003 0030 140
466+E: 1331926701.012001 0003 0031 236
467+E: 1331926701.012002 0003 0034 0
468+E: 1331926701.012003 0003 0035 1323
469+E: 1331926701.012003 0003 0036 -1237
470+E: 1331926701.012004 0000 0002 0
471+E: 1331926701.012005 0003 0039 9
472+E: 1331926701.012005 0003 0030 240
473+E: 1331926701.012006 0003 0031 416
474+E: 1331926701.012006 0003 0034 0
475+E: 1331926701.012007 0003 0035 23
476+E: 1331926701.012008 0003 0036 -1586
477+E: 1331926701.012008 0000 0002 0
478+E: 1331926701.012011 0003 0000 -1032
479+E: 1331926701.012012 0003 0001 -633
480+E: 1331926701.012013 0000 0000 0
481+E: 1331926701.017000 0003 0039 1
482+E: 1331926701.017001 0003 0030 200
483+E: 1331926701.017002 0003 0031 180
484+E: 1331926701.017002 0003 0034 25
485+E: 1331926701.017003 0003 0035 -1024
486+E: 1331926701.017004 0003 0036 -610
487+E: 1331926701.017004 0000 0002 0
488+E: 1331926701.017005 0003 0039 7
489+E: 1331926701.017006 0003 0030 148
490+E: 1331926701.017006 0003 0031 228
491+E: 1331926701.017007 0003 0034 0
492+E: 1331926701.017007 0003 0035 1334
493+E: 1331926701.017008 0003 0036 -1201
494+E: 1331926701.017009 0000 0002 0
495+E: 1331926701.017009 0003 0039 9
496+E: 1331926701.017010 0003 0030 236
497+E: 1331926701.017011 0003 0031 404
498+E: 1331926701.017011 0003 0034 0
499+E: 1331926701.017012 0003 0035 30
500+E: 1331926701.017013 0003 0036 -1563
501+E: 1331926701.017013 0000 0002 0
502+E: 1331926701.017016 0003 0000 -1024
503+E: 1331926701.017017 0003 0001 -610
504+E: 1331926701.017018 0000 0000 0
505+E: 1331926701.036996 0003 0039 1
506+E: 1331926701.036997 0003 0030 196
507+E: 1331926701.036998 0003 0031 168
508+E: 1331926701.036999 0003 0034 26
509+E: 1331926701.036999 0003 0035 -1013
510+E: 1331926701.037000 0003 0036 -576
511+E: 1331926701.037001 0000 0002 0
512+E: 1331926701.037002 0003 0039 7
513+E: 1331926701.037002 0003 0030 140
514+E: 1331926701.037003 0003 0031 208
515+E: 1331926701.037004 0003 0034 0
516+E: 1331926701.037004 0003 0035 1345
517+E: 1331926701.037005 0003 0036 -1165
518+E: 1331926701.037005 0000 0002 0
519+E: 1331926701.037006 0003 0039 9
520+E: 1331926701.037007 0003 0030 224
521+E: 1331926701.037007 0003 0031 376
522+E: 1331926701.037008 0003 0034 0
523+E: 1331926701.037009 0003 0035 41
524+E: 1331926701.037009 0003 0036 -1531
525+E: 1331926701.037010 0000 0002 0
526+E: 1331926701.037013 0003 0000 -1013
527+E: 1331926701.037014 0003 0001 -576
528+E: 1331926701.037014 0000 0000 0
529+E: 1331926701.039396 0003 0039 1
530+E: 1331926701.039397 0003 0030 204
531+E: 1331926701.039398 0003 0031 184
532+E: 1331926701.039399 0003 0034 27
533+E: 1331926701.039399 0003 0035 -1001
534+E: 1331926701.039400 0003 0036 -544
535+E: 1331926701.039401 0000 0002 0
536+E: 1331926701.039401 0003 0039 7
537+E: 1331926701.039402 0003 0030 148
538+E: 1331926701.039403 0003 0031 212
539+E: 1331926701.039403 0003 0034 0
540+E: 1331926701.039404 0003 0035 1359
541+E: 1331926701.039405 0003 0036 -1116
542+E: 1331926701.039405 0000 0002 0
543+E: 1331926701.039406 0003 0039 9
544+E: 1331926701.039407 0003 0030 228
545+E: 1331926701.039407 0003 0031 380
546+E: 1331926701.039408 0003 0034 0
547+E: 1331926701.039409 0003 0035 52
548+E: 1331926701.039409 0003 0036 -1500
549+E: 1331926701.039410 0000 0002 0
550+E: 1331926701.039413 0003 0000 -1001
551+E: 1331926701.039414 0003 0001 -544
552+E: 1331926701.039414 0000 0000 0
553+E: 1331926701.062001 0003 0039 1
554+E: 1331926701.062002 0003 0030 184
555+E: 1331926701.062002 0003 0031 184
556+E: 1331926701.062003 0003 0034 0
557+E: 1331926701.062003 0003 0035 -991
558+E: 1331926701.062004 0003 0036 -514
559+E: 1331926701.062005 0000 0002 0
560+E: 1331926701.062005 0003 0039 7
561+E: 1331926701.062006 0003 0030 168
562+E: 1331926701.062007 0003 0031 252
563+E: 1331926701.062007 0003 0034 0
564+E: 1331926701.062008 0003 0035 1366
565+E: 1331926701.062009 0003 0036 -1094
566+E: 1331926701.062009 0000 0002 0
567+E: 1331926701.062010 0003 0039 9
568+E: 1331926701.062011 0003 0030 236
569+E: 1331926701.062011 0003 0031 384
570+E: 1331926701.062012 0003 0034 0
571+E: 1331926701.062013 0003 0035 61
572+E: 1331926701.062013 0003 0036 -1469
573+E: 1331926701.062014 0000 0002 0
574+E: 1331926701.062017 0003 0000 -991
575+E: 1331926701.062018 0003 0001 -514
576+E: 1331926701.062018 0000 0000 0
577+E: 1331926701.068119 0003 0039 1
578+E: 1331926701.068120 0003 0030 188
579+E: 1331926701.068121 0003 0031 180
580+E: 1331926701.068121 0003 0034 28
581+E: 1331926701.068122 0003 0035 -981
582+E: 1331926701.068123 0003 0036 -486
583+E: 1331926701.068123 0000 0002 0
584+E: 1331926701.068124 0003 0039 7
585+E: 1331926701.068125 0003 0030 152
586+E: 1331926701.068126 0003 0031 240
587+E: 1331926701.068126 0003 0034 0
588+E: 1331926701.068127 0003 0035 1377
589+E: 1331926701.068127 0003 0036 -1060
590+E: 1331926701.068128 0000 0002 0
591+E: 1331926701.068129 0003 0039 9
592+E: 1331926701.068129 0003 0030 244
593+E: 1331926701.068130 0003 0031 404
594+E: 1331926701.068131 0003 0034 0
595+E: 1331926701.068131 0003 0035 71
596+E: 1331926701.068132 0003 0036 -1440
597+E: 1331926701.068133 0000 0002 0
598+E: 1331926701.068136 0003 0000 -981
599+E: 1331926701.068137 0003 0001 -486
600+E: 1331926701.068137 0000 0000 0
601+E: 1331926701.076995 0003 0039 1
602+E: 1331926701.076996 0003 0030 204
603+E: 1331926701.076997 0003 0031 188
604+E: 1331926701.076997 0003 0034 27
605+E: 1331926701.076998 0003 0035 -971
606+E: 1331926701.076999 0003 0036 -460
607+E: 1331926701.076999 0000 0002 0
608+E: 1331926701.077000 0003 0039 7
609+E: 1331926701.077001 0003 0030 148
610+E: 1331926701.077001 0003 0031 240
611+E: 1331926701.077002 0003 0034 0
612+E: 1331926701.077003 0003 0035 1387
613+E: 1331926701.077003 0003 0036 -1026
614+E: 1331926701.077004 0000 0002 0
615+E: 1331926701.077005 0003 0039 9
616+E: 1331926701.077005 0003 0030 244
617+E: 1331926701.077006 0003 0031 420
618+E: 1331926701.077007 0003 0034 0
619+E: 1331926701.077007 0003 0035 75
620+E: 1331926701.077008 0003 0036 -1423
621+E: 1331926701.077009 0000 0002 0
622+E: 1331926701.077012 0003 0000 -971
623+E: 1331926701.077012 0003 0001 -460
624+E: 1331926701.077013 0000 0000 0
625+E: 1331926701.086976 0003 0039 1
626+E: 1331926701.086976 0003 0030 204
627+E: 1331926701.086977 0003 0031 196
628+E: 1331926701.086977 0003 0034 27
629+E: 1331926701.086978 0003 0035 -967
630+E: 1331926701.086978 0003 0036 -446
631+E: 1331926701.086979 0000 0002 0
632+E: 1331926701.086979 0003 0039 7
633+E: 1331926701.086979 0003 0030 132
634+E: 1331926701.086980 0003 0031 220
635+E: 1331926701.086980 0003 0034 0
636+E: 1331926701.086981 0003 0035 1396
637+E: 1331926701.086981 0003 0036 -995
638+E: 1331926701.086981 0000 0002 0
639+E: 1331926701.086982 0003 0039 9
640+E: 1331926701.086982 0003 0030 244
641+E: 1331926701.086983 0003 0031 424
642+E: 1331926701.086983 0003 0034 0
643+E: 1331926701.086984 0003 0035 85
644+E: 1331926701.086984 0003 0036 -1388
645+E: 1331926701.086984 0000 0002 0
646+E: 1331926701.086986 0003 0000 -969
647+E: 1331926701.086987 0003 0001 -446
648+E: 1331926701.086987 0000 0000 0
649+E: 1331926701.091999 0003 0039 1
650+E: 1331926701.092000 0003 0030 192
651+E: 1331926701.092001 0003 0031 196
652+E: 1331926701.092001 0003 0034 0
653+E: 1331926701.092002 0003 0035 -960
654+E: 1331926701.092003 0003 0036 -425
655+E: 1331926701.092003 0000 0002 0
656+E: 1331926701.092004 0003 0039 7
657+E: 1331926701.092005 0003 0030 132
658+E: 1331926701.092005 0003 0031 220
659+E: 1331926701.092006 0003 0034 0
660+E: 1331926701.092007 0003 0035 1404
661+E: 1331926701.092007 0003 0036 -966
662+E: 1331926701.092008 0000 0002 0
663+E: 1331926701.092009 0003 0039 9
664+E: 1331926701.092009 0003 0030 244
665+E: 1331926701.092010 0003 0031 420
666+E: 1331926701.092010 0003 0034 0
667+E: 1331926701.092011 0003 0035 90
668+E: 1331926701.092012 0003 0036 -1364
669+E: 1331926701.092012 0000 0002 0
670+E: 1331926701.092015 0003 0000 -960
671+E: 1331926701.092016 0003 0001 -425
672+E: 1331926701.092017 0000 0000 0
673+E: 1331926701.099399 0003 0039 1
674+E: 1331926701.099400 0003 0030 200
675+E: 1331926701.099400 0003 0031 208
676+E: 1331926701.099401 0003 0034 12
677+E: 1331926701.099402 0003 0035 -955
678+E: 1331926701.099402 0003 0036 -406
679+E: 1331926701.099403 0000 0002 0
680+E: 1331926701.099404 0003 0039 7
681+E: 1331926701.099404 0003 0030 124
682+E: 1331926701.099405 0003 0031 216
683+E: 1331926701.099406 0003 0034 0
684+E: 1331926701.099406 0003 0035 1408
685+E: 1331926701.099407 0003 0036 -949
686+E: 1331926701.099407 0000 0002 0
687+E: 1331926701.099408 0003 0039 9
688+E: 1331926701.099409 0003 0030 248
689+E: 1331926701.099409 0003 0031 420
690+E: 1331926701.099410 0003 0034 0
691+E: 1331926701.099411 0003 0035 92
692+E: 1331926701.099411 0003 0036 -1351
693+E: 1331926701.099412 0000 0002 0
694+E: 1331926701.099415 0003 0000 -957
695+E: 1331926701.099416 0003 0001 -406
696+E: 1331926701.099416 0000 0000 0
697+E: 1331926701.119371 0003 0039 1
698+E: 1331926701.119372 0003 0030 204
699+E: 1331926701.119373 0003 0031 220
700+E: 1331926701.119374 0003 0034 0
701+E: 1331926701.119374 0003 0035 -950
702+E: 1331926701.119375 0003 0036 -391
703+E: 1331926701.119376 0000 0002 0
704+E: 1331926701.119376 0003 0039 7
705+E: 1331926701.119377 0003 0030 132
706+E: 1331926701.119378 0003 0031 232
707+E: 1331926701.119378 0003 0034 0
708+E: 1331926701.119379 0003 0035 1417
709+E: 1331926701.119380 0003 0036 -914
710+E: 1331926701.119380 0000 0002 0
711+E: 1331926701.119381 0003 0039 9
712+E: 1331926701.119382 0003 0030 264
713+E: 1331926701.119382 0003 0031 416
714+E: 1331926701.119383 0003 0034 0
715+E: 1331926701.119384 0003 0035 97
716+E: 1331926701.119384 0003 0036 -1322
717+E: 1331926701.119385 0000 0002 0
718+E: 1331926701.119388 0003 0000 -953
719+E: 1331926701.119389 0003 0001 -391
720+E: 1331926701.119389 0000 0000 0
721+E: 1331926701.121983 0003 0039 1
722+E: 1331926701.121984 0003 0030 212
723+E: 1331926701.121985 0003 0031 224
724+E: 1331926701.121986 0003 0034 24
725+E: 1331926701.121986 0003 0035 -948
726+E: 1331926701.121987 0003 0036 -378
727+E: 1331926701.121988 0000 0002 0
728+E: 1331926701.121988 0003 0039 7
729+E: 1331926701.121989 0003 0030 140
730+E: 1331926701.121990 0003 0031 244
731+E: 1331926701.121990 0003 0034 0
732+E: 1331926701.121991 0003 0035 1422
733+E: 1331926701.121991 0003 0036 -890
734+E: 1331926701.121992 0000 0002 0
735+E: 1331926701.121993 0003 0039 9
736+E: 1331926701.121994 0003 0030 272
737+E: 1331926701.121994 0003 0031 408
738+E: 1331926701.121995 0003 0034 0
739+E: 1331926701.121995 0003 0035 98
740+E: 1331926701.121996 0003 0036 -1312
741+E: 1331926701.121997 0000 0002 0
742+E: 1331926701.122000 0003 0000 -950
743+E: 1331926701.122000 0003 0001 -378
744+E: 1331926701.122001 0000 0000 0
745+E: 1331926701.129349 0003 0039 1
746+E: 1331926701.129350 0003 0030 216
747+E: 1331926701.129350 0003 0031 232
748+E: 1331926701.129350 0003 0034 0
749+E: 1331926701.129351 0003 0035 -945
750+E: 1331926701.129351 0003 0036 -367
751+E: 1331926701.129352 0000 0002 0
752+E: 1331926701.129352 0003 0039 7
753+E: 1331926701.129353 0003 0030 148
754+E: 1331926701.129353 0003 0031 260
755+E: 1331926701.129353 0003 0034 0
756+E: 1331926701.129354 0003 0035 1426
757+E: 1331926701.129354 0003 0036 -868
758+E: 1331926701.129355 0000 0002 0
759+E: 1331926701.129355 0003 0039 9
760+E: 1331926701.129355 0003 0030 276
761+E: 1331926701.129356 0003 0031 412
762+E: 1331926701.129356 0003 0034 0
763+E: 1331926701.129357 0003 0035 100
764+E: 1331926701.129357 0003 0036 -1287
765+E: 1331926701.129357 0000 0002 0
766+E: 1331926701.129359 0003 0000 -947
767+E: 1331926701.129360 0003 0001 -367
768+E: 1331926701.129360 0000 0000 0
769+E: 1331926701.149391 0003 0039 1
770+E: 1331926701.149392 0003 0030 208
771+E: 1331926701.149392 0003 0031 224
772+E: 1331926701.149393 0003 0034 0
773+E: 1331926701.149394 0003 0035 -941
774+E: 1331926701.149394 0003 0036 -352
775+E: 1331926701.149395 0000 0002 0
776+E: 1331926701.149396 0003 0039 7
777+E: 1331926701.149396 0003 0030 148
778+E: 1331926701.149397 0003 0031 280
779+E: 1331926701.149398 0003 0034 0
780+E: 1331926701.149398 0003 0035 1431
781+E: 1331926701.149399 0003 0036 -846
782+E: 1331926701.149400 0000 0002 0
783+E: 1331926701.149400 0003 0039 9
784+E: 1331926701.149401 0003 0030 272
785+E: 1331926701.149402 0003 0031 404
786+E: 1331926701.149402 0003 0034 0
787+E: 1331926701.149403 0003 0035 101
788+E: 1331926701.149403 0003 0036 -1277
789+E: 1331926701.149404 0000 0002 0
790+E: 1331926701.149407 0003 0000 -944
791+E: 1331926701.149408 0003 0001 -352
792+E: 1331926701.149408 0000 0000 0
793+E: 1331926701.155608 0003 0039 1
794+E: 1331926701.155609 0003 0030 212
795+E: 1331926701.155609 0003 0031 236
796+E: 1331926701.155610 0003 0034 0
797+E: 1331926701.155610 0003 0035 -939
798+E: 1331926701.155611 0003 0036 -339
799+E: 1331926701.155612 0000 0002 0
800+E: 1331926701.155613 0003 0039 7
801+E: 1331926701.155613 0003 0030 168
802+E: 1331926701.155614 0003 0031 296
803+E: 1331926701.155615 0003 0034 0
804+E: 1331926701.155615 0003 0035 1435
805+E: 1331926701.155616 0003 0036 -823
806+E: 1331926701.155616 0000 0002 0
807+E: 1331926701.155617 0003 0039 9
808+E: 1331926701.155618 0003 0030 264
809+E: 1331926701.155618 0003 0031 408
810+E: 1331926701.155619 0003 0034 0
811+E: 1331926701.155620 0003 0035 103
812+E: 1331926701.155620 0003 0036 -1260
813+E: 1331926701.155621 0000 0002 0
814+E: 1331926701.155624 0003 0000 -941
815+E: 1331926701.155625 0003 0001 -339
816+E: 1331926701.155625 0000 0000 0
817+E: 1331926701.163099 0003 0039 1
818+E: 1331926701.163099 0003 0030 208
819+E: 1331926701.163100 0003 0031 228
820+E: 1331926701.163100 0003 0034 0
821+E: 1331926701.163101 0003 0035 -935
822+E: 1331926701.163101 0003 0036 -325
823+E: 1331926701.163102 0000 0002 0
824+E: 1331926701.163102 0003 0039 7
825+E: 1331926701.163102 0003 0030 188
826+E: 1331926701.163103 0003 0031 300
827+E: 1331926701.163103 0003 0034 0
828+E: 1331926701.163104 0003 0035 1438
829+E: 1331926701.163104 0003 0036 -801
830+E: 1331926701.163104 0000 0002 0
831+E: 1331926701.163105 0003 0039 9
832+E: 1331926701.163105 0003 0030 272
833+E: 1331926701.163106 0003 0031 416
834+E: 1331926701.163106 0003 0034 0
835+E: 1331926701.163107 0003 0035 105
836+E: 1331926701.163107 0003 0036 -1245
837+E: 1331926701.163107 0000 0002 0
838+E: 1331926701.163109 0003 0000 -938
839+E: 1331926701.163110 0003 0001 -325
840+E: 1331926701.163110 0000 0000 0
841+E: 1331926701.180585 0003 0039 1
842+E: 1331926701.180585 0003 0030 212
843+E: 1331926701.180586 0003 0031 228
844+E: 1331926701.180586 0003 0034 27
845+E: 1331926701.180587 0003 0035 -930
846+E: 1331926701.180587 0003 0036 -308
847+E: 1331926701.180587 0000 0002 0
848+E: 1331926701.180588 0003 0039 7
849+E: 1331926701.180588 0003 0030 180
850+E: 1331926701.180589 0003 0031 272
851+E: 1331926701.180589 0003 0034 0
852+E: 1331926701.180590 0003 0035 1442
853+E: 1331926701.180590 0003 0036 -780
854+E: 1331926701.180590 0000 0002 0
855+E: 1331926701.180591 0003 0039 8
856+E: 1331926701.180591 0003 0030 92
857+E: 1331926701.180592 0003 0031 120
858+E: 1331926701.180592 0003 0034 19
859+E: 1331926701.180593 0003 0035 -1799
860+E: 1331926701.180593 0003 0036 932
861+E: 1331926701.180593 0000 0002 0
862+E: 1331926701.180594 0003 0039 9
863+E: 1331926701.180594 0003 0030 272
864+E: 1331926701.180595 0003 0031 428
865+E: 1331926701.180595 0003 0034 0
866+E: 1331926701.180595 0003 0035 106
867+E: 1331926701.180596 0003 0036 -1229
868+E: 1331926701.180596 0000 0002 0
869+E: 1331926701.180597 0001 014e 0
870+E: 1331926701.180598 0001 014f 1
871+E: 1331926701.180598 0003 0000 -930
872+E: 1331926701.180599 0003 0001 -308
873+E: 1331926701.180599 0000 0000 0
874+E: 1331926701.183085 0003 0039 1
875+E: 1331926701.183086 0003 0030 224
876+E: 1331926701.183087 0003 0031 264
877+E: 1331926701.183087 0003 0034 0
878+E: 1331926701.183088 0003 0035 -923
879+E: 1331926701.183088 0003 0036 -290
880+E: 1331926701.183089 0000 0002 0
881+E: 1331926701.183090 0003 0039 7
882+E: 1331926701.183090 0003 0030 192
883+E: 1331926701.183091 0003 0031 292
884+E: 1331926701.183091 0003 0034 0
885+E: 1331926701.183092 0003 0035 1448
886+E: 1331926701.183093 0003 0036 -759
887+E: 1331926701.183093 0000 0002 0
888+E: 1331926701.183094 0003 0039 8
889+E: 1331926701.183094 0003 0030 124
890+E: 1331926701.183095 0003 0031 160
891+E: 1331926701.183095 0003 0034 0
892+E: 1331926701.183096 0003 0035 -1758
893+E: 1331926701.183096 0003 0036 905
894+E: 1331926701.183097 0000 0002 0
895+E: 1331926701.183098 0003 0039 9
896+E: 1331926701.183098 0003 0030 304
897+E: 1331926701.183099 0003 0031 456
898+E: 1331926701.183099 0003 0034 0
899+E: 1331926701.183100 0003 0035 110
900+E: 1331926701.183100 0003 0036 -1208
901+E: 1331926701.183101 0000 0002 0
902+E: 1331926701.183103 0003 0000 -926
903+E: 1331926701.183104 0003 0001 -290
904+E: 1331926701.183104 0000 0000 0
905+E: 1331926701.201949 0003 0039 1
906+E: 1331926701.201950 0003 0030 220
907+E: 1331926701.201950 0003 0031 272
908+E: 1331926701.201951 0003 0034 0
909+E: 1331926701.201951 0003 0035 -917
910+E: 1331926701.201952 0003 0036 -277
911+E: 1331926701.201952 0000 0002 0
912+E: 1331926701.201953 0003 0039 7
913+E: 1331926701.201953 0003 0030 204
914+E: 1331926701.201953 0003 0031 300
915+E: 1331926701.201954 0003 0034 0
916+E: 1331926701.201954 0003 0035 1451
917+E: 1331926701.201954 0003 0036 -747
918+E: 1331926701.201955 0000 0002 0
919+E: 1331926701.201955 0003 0039 8
920+E: 1331926701.201955 0003 0030 144
921+E: 1331926701.201956 0003 0031 188
922+E: 1331926701.201956 0003 0034 0
923+E: 1331926701.201956 0003 0035 -1739
924+E: 1331926701.201957 0003 0036 908
925+E: 1331926701.201957 0000 0002 0
926+E: 1331926701.201958 0003 0039 9
927+E: 1331926701.201958 0003 0030 332
928+E: 1331926701.201958 0003 0031 464
929+E: 1331926701.201959 0003 0034 0
930+E: 1331926701.201959 0003 0035 111
931+E: 1331926701.201959 0003 0036 -1197
932+E: 1331926701.201960 0000 0002 0
933+E: 1331926701.201961 0003 0000 -917
934+E: 1331926701.201962 0003 0001 -277
935+E: 1331926701.201962 0000 0000 0
936+E: 1331926701.209355 0003 0039 1
937+E: 1331926701.209356 0003 0030 212
938+E: 1331926701.209356 0003 0031 284
939+E: 1331926701.209357 0003 0034 0
940+E: 1331926701.209357 0003 0035 -908
941+E: 1331926701.209357 0003 0036 -253
942+E: 1331926701.209358 0000 0002 0
943+E: 1331926701.209358 0003 0039 7
944+E: 1331926701.209358 0003 0030 212
945+E: 1331926701.209358 0003 0031 296
946+E: 1331926701.209359 0003 0034 0
947+E: 1331926701.209359 0003 0035 1456
948+E: 1331926701.209359 0003 0036 -728
949+E: 1331926701.209360 0000 0002 0
950+E: 1331926701.209360 0003 0039 8
951+E: 1331926701.209360 0003 0030 156
952+E: 1331926701.209360 0003 0031 196
953+E: 1331926701.209361 0003 0034 0
954+E: 1331926701.209361 0003 0035 -1740
955+E: 1331926701.209361 0003 0036 916
956+E: 1331926701.209362 0000 0002 0
957+E: 1331926701.209362 0003 0039 9
958+E: 1331926701.209362 0003 0030 352
959+E: 1331926701.209363 0003 0031 464
960+E: 1331926701.209363 0003 0034 0
961+E: 1331926701.209363 0003 0035 112
962+E: 1331926701.209364 0003 0036 -1181
963+E: 1331926701.209364 0000 0002 0
964+E: 1331926701.209365 0003 0000 -908
965+E: 1331926701.209365 0003 0001 -253
966+E: 1331926701.209366 0000 0000 0
967+E: 1331926701.214322 0003 0039 1
968+E: 1331926701.214322 0003 0030 228
969+E: 1331926701.214323 0003 0031 272
970+E: 1331926701.214323 0003 0034 0
971+E: 1331926701.214324 0003 0035 -900
972+E: 1331926701.214324 0003 0036 -233
973+E: 1331926701.214324 0000 0002 0
974+E: 1331926701.214325 0003 0039 7
975+E: 1331926701.214325 0003 0030 212
976+E: 1331926701.214325 0003 0031 304
977+E: 1331926701.214326 0003 0034 0
978+E: 1331926701.214326 0003 0035 1461
979+E: 1331926701.214326 0003 0036 -711
980+E: 1331926701.214327 0000 0002 0
981+E: 1331926701.214327 0003 0039 8
982+E: 1331926701.214327 0003 0030 168
983+E: 1331926701.214328 0003 0031 212
984+E: 1331926701.214328 0003 0034 0
985+E: 1331926701.214328 0003 0035 -1738
986+E: 1331926701.214329 0003 0036 921
987+E: 1331926701.214329 0000 0002 0
988+E: 1331926701.214329 0003 0039 9
989+E: 1331926701.214330 0003 0030 344
990+E: 1331926701.214330 0003 0031 464
991+E: 1331926701.214330 0003 0034 0
992+E: 1331926701.214331 0003 0035 114
993+E: 1331926701.214331 0003 0036 -1166
994+E: 1331926701.214331 0000 0002 0
995+E: 1331926701.214333 0003 0000 -900
996+E: 1331926701.214333 0003 0001 -233
997+E: 1331926701.214334 0000 0000 0
998+E: 1331926701.224327 0003 0039 1
999+E: 1331926701.224328 0003 0030 216
1000+E: 1331926701.224328 0003 0031 252
1001+E: 1331926701.224328 0003 0034 0
1002+E: 1331926701.224329 0003 0035 -892
1003+E: 1331926701.224329 0003 0036 -213
1004+E: 1331926701.224330 0000 0002 0
1005+E: 1331926701.224330 0003 0039 7
1006+E: 1331926701.224331 0003 0030 220
1007+E: 1331926701.224331 0003 0031 324
1008+E: 1331926701.224331 0003 0034 0
1009+E: 1331926701.224332 0003 0035 1466
1010+E: 1331926701.224332 0003 0036 -695
1011+E: 1331926701.224332 0000 0002 0
1012+E: 1331926701.224333 0003 0039 8
1013+E: 1331926701.224333 0003 0030 176
1014+E: 1331926701.224334 0003 0031 224
1015+E: 1331926701.224334 0003 0034 0
1016+E: 1331926701.224334 0003 0035 -1737
1017+E: 1331926701.224335 0003 0036 924
1018+E: 1331926701.224335 0000 0002 0
1019+E: 1331926701.224335 0003 0039 9
1020+E: 1331926701.224336 0003 0030 364
1021+E: 1331926701.224336 0003 0031 472
1022+E: 1331926701.224337 0003 0034 0
1023+E: 1331926701.224337 0003 0035 117
1024+E: 1331926701.224337 0003 0036 -1151
1025+E: 1331926701.224338 0000 0002 0
1026+E: 1331926701.224339 0003 0000 -892
1027+E: 1331926701.224340 0003 0001 -213
1028+E: 1331926701.224340 0000 0000 0
1029+E: 1331926701.231953 0003 0039 1
1030+E: 1331926701.231953 0003 0030 208
1031+E: 1331926701.231954 0003 0031 240
1032+E: 1331926701.231954 0003 0034 0
1033+E: 1331926701.231955 0003 0035 -888
1034+E: 1331926701.231955 0003 0036 -202
1035+E: 1331926701.231956 0000 0002 0
1036+E: 1331926701.231956 0003 0039 7
1037+E: 1331926701.231956 0003 0030 236
1038+E: 1331926701.231957 0003 0031 340
1039+E: 1331926701.231957 0003 0034 0
1040+E: 1331926701.231957 0003 0035 1471
1041+E: 1331926701.231958 0003 0036 -679
1042+E: 1331926701.231958 0000 0002 0
1043+E: 1331926701.231959 0003 0039 8
1044+E: 1331926701.231959 0003 0030 184
1045+E: 1331926701.231959 0003 0031 228
1046+E: 1331926701.231960 0003 0034 0
1047+E: 1331926701.231960 0003 0035 -1732
1048+E: 1331926701.231960 0003 0036 927
1049+E: 1331926701.231961 0000 0002 0
1050+E: 1331926701.231961 0003 0039 9
1051+E: 1331926701.231962 0003 0030 368
1052+E: 1331926701.231962 0003 0031 476
1053+E: 1331926701.231962 0003 0034 0
1054+E: 1331926701.231963 0003 0035 121
1055+E: 1331926701.231963 0003 0036 -1136
1056+E: 1331926701.231964 0000 0002 0
1057+E: 1331926701.231965 0003 0000 -890
1058+E: 1331926701.231966 0003 0001 -202
1059+E: 1331926701.231966 0000 0000 0
1060+E: 1331926701.251981 0003 0039 1
1061+E: 1331926701.251982 0003 0030 228
1062+E: 1331926701.251983 0003 0031 236
1063+E: 1331926701.251983 0003 0034 27
1064+E: 1331926701.251983 0003 0035 -882
1065+E: 1331926701.251984 0003 0036 -186
1066+E: 1331926701.251984 0000 0002 0
1067+E: 1331926701.251985 0003 0039 7
1068+E: 1331926701.251985 0003 0030 240
1069+E: 1331926701.251986 0003 0031 360
1070+E: 1331926701.251986 0003 0034 0
1071+E: 1331926701.251987 0003 0035 1476
1072+E: 1331926701.251987 0003 0036 -666
1073+E: 1331926701.251987 0000 0002 0
1074+E: 1331926701.251988 0003 0039 8
1075+E: 1331926701.251988 0003 0030 196
1076+E: 1331926701.251989 0003 0031 228
1077+E: 1331926701.251989 0003 0034 0
1078+E: 1331926701.251989 0003 0035 -1727
1079+E: 1331926701.251990 0003 0036 929
1080+E: 1331926701.251990 0000 0002 0
1081+E: 1331926701.251991 0003 0039 9
1082+E: 1331926701.251991 0003 0030 380
1083+E: 1331926701.251992 0003 0031 476
1084+E: 1331926701.251992 0003 0034 0
1085+E: 1331926701.251992 0003 0035 124
1086+E: 1331926701.251993 0003 0036 -1122
1087+E: 1331926701.251993 0000 0002 0
1088+E: 1331926701.251995 0003 0000 -882
1089+E: 1331926701.251995 0003 0001 -186
1090+E: 1331926701.251996 0000 0000 0
1091+E: 1331926701.254346 0003 0039 1
1092+E: 1331926701.254347 0003 0030 232
1093+E: 1331926701.254347 0003 0031 252
1094+E: 1331926701.254348 0003 0034 0
1095+E: 1331926701.254348 0003 0035 -876
1096+E: 1331926701.254348 0003 0036 -173
1097+E: 1331926701.254349 0000 0002 0
1098+E: 1331926701.254349 0003 0039 7
1099+E: 1331926701.254350 0003 0030 244
1100+E: 1331926701.254350 0003 0031 360
1101+E: 1331926701.254350 0003 0034 0
1102+E: 1331926701.254351 0003 0035 1479
1103+E: 1331926701.254351 0003 0036 -655
1104+E: 1331926701.254352 0000 0002 0
1105+E: 1331926701.254352 0003 0039 8
1106+E: 1331926701.254353 0003 0030 208
1107+E: 1331926701.254353 0003 0031 244
1108+E: 1331926701.254353 0003 0034 0
1109+E: 1331926701.254354 0003 0035 -1723
1110+E: 1331926701.254354 0003 0036 931
1111+E: 1331926701.254355 0000 0002 0
1112+E: 1331926701.254355 0003 0039 9
1113+E: 1331926701.254355 0003 0030 388
1114+E: 1331926701.254356 0003 0031 468
1115+E: 1331926701.254356 0003 0034 0
1116+E: 1331926701.254357 0003 0035 127
1117+E: 1331926701.254357 0003 0036 -1109
1118+E: 1331926701.254357 0000 0002 0
1119+E: 1331926701.254359 0003 0000 -879
1120+E: 1331926701.254360 0003 0001 -173
1121+E: 1331926701.254360 0000 0000 0
1122+E: 1331926701.262010 0003 0039 1
1123+E: 1331926701.262010 0003 0030 232
1124+E: 1331926701.262011 0003 0031 268
1125+E: 1331926701.262011 0003 0034 0
1126+E: 1331926701.262012 0003 0035 -871
1127+E: 1331926701.262012 0003 0036 -162
1128+E: 1331926701.262013 0000 0002 0
1129+E: 1331926701.262013 0003 0039 7
1130+E: 1331926701.262014 0003 0030 240
1131+E: 1331926701.262014 0003 0031 364
1132+E: 1331926701.262014 0003 0034 0
1133+E: 1331926701.262015 0003 0035 1482
1134+E: 1331926701.262015 0003 0036 -645
1135+E: 1331926701.262016 0000 0002 0
1136+E: 1331926701.262016 0003 0039 8
1137+E: 1331926701.262016 0003 0030 228
1138+E: 1331926701.262017 0003 0031 256
1139+E: 1331926701.262017 0003 0034 0
1140+E: 1331926701.262017 0003 0035 -1719
1141+E: 1331926701.262018 0003 0036 933
1142+E: 1331926701.262018 0000 0002 0
1143+E: 1331926701.262019 0003 0039 9
1144+E: 1331926701.262019 0003 0030 412
1145+E: 1331926701.262020 0003 0031 460
1146+E: 1331926701.262020 0003 0034 0
1147+E: 1331926701.262020 0003 0035 131
1148+E: 1331926701.262021 0003 0036 -1098
1149+E: 1331926701.262021 0000 0002 0
1150+E: 1331926701.262023 0003 0000 -871
1151+E: 1331926701.262023 0003 0001 -162
1152+E: 1331926701.262024 0000 0000 0
1153+E: 1331926701.281977 0003 0039 1
1154+E: 1331926701.281978 0003 0030 224
1155+E: 1331926701.281978 0003 0031 272
1156+E: 1331926701.281979 0003 0034 0
1157+E: 1331926701.281979 0003 0035 -866
1158+E: 1331926701.281979 0003 0036 -153
1159+E: 1331926701.281980 0000 0002 0
1160+E: 1331926701.281980 0003 0039 7
1161+E: 1331926701.281981 0003 0030 228
1162+E: 1331926701.281981 0003 0031 356
1163+E: 1331926701.281982 0003 0034 0
1164+E: 1331926701.281982 0003 0035 1484
1165+E: 1331926701.281982 0003 0036 -636
1166+E: 1331926701.281983 0000 0002 0
1167+E: 1331926701.281983 0003 0039 8
1168+E: 1331926701.281984 0003 0030 224
1169+E: 1331926701.281984 0003 0031 260
1170+E: 1331926701.281985 0003 0034 0
1171+E: 1331926701.281985 0003 0035 -1716
1172+E: 1331926701.281985 0003 0036 935
1173+E: 1331926701.281986 0000 0002 0
1174+E: 1331926701.281986 0003 0039 9
1175+E: 1331926701.281987 0003 0030 428
1176+E: 1331926701.281987 0003 0031 456
1177+E: 1331926701.281987 0003 0034 0
1178+E: 1331926701.281988 0003 0035 134
1179+E: 1331926701.281988 0003 0036 -1088
1180+E: 1331926701.281989 0000 0002 0
1181+E: 1331926701.281990 0003 0000 -868
1182+E: 1331926701.281991 0003 0001 -153
1183+E: 1331926701.281991 0000 0000 0
1184+E: 1331926701.284349 0003 0039 1
1185+E: 1331926701.284350 0003 0030 216
1186+E: 1331926701.284351 0003 0031 268
1187+E: 1331926701.284351 0003 0034 0
1188+E: 1331926701.284351 0003 0035 -863
1189+E: 1331926701.284352 0003 0036 -145
1190+E: 1331926701.284352 0000 0002 0
1191+E: 1331926701.284353 0003 0039 7
1192+E: 1331926701.284353 0003 0030 220
1193+E: 1331926701.284353 0003 0031 348
1194+E: 1331926701.284354 0003 0034 0
1195+E: 1331926701.284354 0003 0035 1486
1196+E: 1331926701.284355 0003 0036 -630
1197+E: 1331926701.284355 0000 0002 0
1198+E: 1331926701.284356 0003 0039 8
1199+E: 1331926701.284356 0003 0030 220
1200+E: 1331926701.284356 0003 0031 248
1201+E: 1331926701.284357 0003 0034 0
1202+E: 1331926701.284357 0003 0035 -1713
1203+E: 1331926701.284358 0003 0036 936
1204+E: 1331926701.284358 0000 0002 0
1205+E: 1331926701.284359 0003 0039 9
1206+E: 1331926701.284359 0003 0030 428
1207+E: 1331926701.284359 0003 0031 464
1208+E: 1331926701.284360 0003 0034 0
1209+E: 1331926701.284360 0003 0035 136
1210+E: 1331926701.284361 0003 0036 -1081
1211+E: 1331926701.284361 0000 0002 0
1212+E: 1331926701.284363 0003 0000 -865
1213+E: 1331926701.284363 0003 0001 -145
1214+E: 1331926701.284364 0000 0000 0
1215+E: 1331926701.304349 0003 0039 1
1216+E: 1331926701.304350 0003 0030 216
1217+E: 1331926701.304350 0003 0031 276
1218+E: 1331926701.304351 0003 0034 0
1219+E: 1331926701.304351 0003 0035 -860
1220+E: 1331926701.304352 0003 0036 -138
1221+E: 1331926701.304352 0000 0002 0
1222+E: 1331926701.304353 0003 0039 7
1223+E: 1331926701.304353 0003 0030 228
1224+E: 1331926701.304353 0003 0031 348
1225+E: 1331926701.304354 0003 0034 0
1226+E: 1331926701.304354 0003 0035 1488
1227+E: 1331926701.304355 0003 0036 -624
1228+E: 1331926701.304355 0000 0002 0
1229+E: 1331926701.304356 0003 0039 8
1230+E: 1331926701.304356 0003 0030 232
1231+E: 1331926701.304356 0003 0031 256
1232+E: 1331926701.304357 0003 0034 0
1233+E: 1331926701.304357 0003 0035 -1710
1234+E: 1331926701.304357 0003 0036 938
1235+E: 1331926701.304358 0000 0002 0
1236+E: 1331926701.304358 0003 0039 9
1237+E: 1331926701.304359 0003 0030 436
1238+E: 1331926701.304359 0003 0031 460
1239+E: 1331926701.304359 0003 0034 0
1240+E: 1331926701.304360 0003 0035 139
1241+E: 1331926701.304360 0003 0036 -1074
1242+E: 1331926701.304361 0000 0002 0
1243+E: 1331926701.304362 0003 0000 -862
1244+E: 1331926701.304363 0003 0001 -141
1245+E: 1331926701.304363 0000 0000 0
1246+E: 1331926701.306973 0003 0039 1
1247+E: 1331926701.306974 0003 0030 228
1248+E: 1331926701.306974 0003 0031 284
1249+E: 1331926701.306974 0003 0034 0
1250+E: 1331926701.306975 0003 0035 -857
1251+E: 1331926701.306975 0003 0036 -133
1252+E: 1331926701.306976 0000 0002 0
1253+E: 1331926701.306976 0003 0039 7
1254+E: 1331926701.306977 0003 0030 236
1255+E: 1331926701.306977 0003 0031 360
1256+E: 1331926701.306978 0003 0034 0
1257+E: 1331926701.306978 0003 0035 1489
1258+E: 1331926701.306978 0003 0036 -620
1259+E: 1331926701.306979 0000 0002 0
1260+E: 1331926701.306979 0003 0039 8
1261+E: 1331926701.306980 0003 0030 240
1262+E: 1331926701.306980 0003 0031 256
1263+E: 1331926701.306980 0003 0034 0
1264+E: 1331926701.306981 0003 0035 -1705
1265+E: 1331926701.306981 0003 0036 941
1266+E: 1331926701.306981 0000 0002 0
1267+E: 1331926701.306982 0003 0039 9
1268+E: 1331926701.306982 0003 0030 432
1269+E: 1331926701.306983 0003 0031 460
1270+E: 1331926701.306983 0003 0034 0
1271+E: 1331926701.306983 0003 0035 141
1272+E: 1331926701.306984 0003 0036 -1069
1273+E: 1331926701.306984 0000 0002 0
1274+E: 1331926701.306986 0003 0000 -859
1275+E: 1331926701.306986 0003 0001 -133
1276+E: 1331926701.306987 0000 0000 0
1277+E: 1331926701.314348 0003 0039 1
1278+E: 1331926701.314349 0003 0030 228
1279+E: 1331926701.314349 0003 0031 280
1280+E: 1331926701.314350 0003 0034 0
1281+E: 1331926701.314350 0003 0035 -855
1282+E: 1331926701.314350 0003 0036 -129
1283+E: 1331926701.314351 0000 0002 0
1284+E: 1331926701.314351 0003 0039 7
1285+E: 1331926701.314352 0003 0030 244
1286+E: 1331926701.314352 0003 0031 372
1287+E: 1331926701.314353 0003 0034 0
1288+E: 1331926701.314353 0003 0035 1491
1289+E: 1331926701.314353 0003 0036 -616
1290+E: 1331926701.314354 0000 0002 0
1291+E: 1331926701.314354 0003 0039 8
1292+E: 1331926701.314355 0003 0030 240
1293+E: 1331926701.314355 0003 0031 260
1294+E: 1331926701.314356 0003 0034 0
1295+E: 1331926701.314356 0003 0035 -1700
1296+E: 1331926701.314356 0003 0036 943
1297+E: 1331926701.314357 0000 0002 0
1298+E: 1331926701.314357 0003 0039 9
1299+E: 1331926701.314358 0003 0030 436
1300+E: 1331926701.314358 0003 0031 456
1301+E: 1331926701.314358 0003 0034 0
1302+E: 1331926701.314359 0003 0035 142
1303+E: 1331926701.314359 0003 0036 -1065
1304+E: 1331926701.314360 0000 0002 0
1305+E: 1331926701.314361 0003 0000 -857
1306+E: 1331926701.314362 0003 0001 -131
1307+E: 1331926701.314362 0000 0000 0
1308+E: 1331926701.334325 0003 0039 1
1309+E: 1331926701.334326 0003 0030 216
1310+E: 1331926701.334327 0003 0031 276
1311+E: 1331926701.334327 0003 0034 0
1312+E: 1331926701.334328 0003 0035 -854
1313+E: 1331926701.334329 0003 0036 -126
1314+E: 1331926701.334329 0000 0002 0
1315+E: 1331926701.334330 0003 0039 7
1316+E: 1331926701.334331 0003 0030 236
1317+E: 1331926701.334331 0003 0031 368
1318+E: 1331926701.334332 0003 0034 0
1319+E: 1331926701.334332 0003 0035 1491
1320+E: 1331926701.334333 0003 0036 -613
1321+E: 1331926701.334334 0000 0002 0
1322+E: 1331926701.334334 0003 0039 8
1323+E: 1331926701.334335 0003 0030 240
1324+E: 1331926701.334336 0003 0031 260
1325+E: 1331926701.334336 0003 0034 0
1326+E: 1331926701.334337 0003 0035 -1696
1327+E: 1331926701.334338 0003 0036 944
1328+E: 1331926701.334338 0000 0002 0
1329+E: 1331926701.334339 0003 0039 9
1330+E: 1331926701.334340 0003 0030 428
1331+E: 1331926701.334340 0003 0031 460
1332+E: 1331926701.334341 0003 0034 0
1333+E: 1331926701.334342 0003 0035 144
1334+E: 1331926701.334342 0003 0036 -1061
1335+E: 1331926701.334343 0000 0002 0
1336+E: 1331926701.334345 0003 0000 -856
1337+E: 1331926701.334346 0003 0001 -128
1338+E: 1331926701.334347 0000 0000 0
1339+E: 1331926701.336994 0003 0039 1
1340+E: 1331926701.336995 0003 0030 232
1341+E: 1331926701.336995 0003 0031 276
1342+E: 1331926701.336996 0003 0034 0
1343+E: 1331926701.336997 0003 0035 -853
1344+E: 1331926701.336997 0003 0036 -124
1345+E: 1331926701.336998 0000 0002 0
1346+E: 1331926701.336999 0003 0039 7
1347+E: 1331926701.336999 0003 0030 248
1348+E: 1331926701.337000 0003 0031 380
1349+E: 1331926701.337001 0003 0034 0
1350+E: 1331926701.337001 0003 0035 1492
1351+E: 1331926701.337002 0003 0036 -610
1352+E: 1331926701.337003 0000 0002 0
1353+E: 1331926701.337003 0003 0039 8
1354+E: 1331926701.337004 0003 0030 232
1355+E: 1331926701.337005 0003 0031 264
1356+E: 1331926701.337005 0003 0034 0
1357+E: 1331926701.337006 0003 0035 -1693
1358+E: 1331926701.337006 0003 0036 946
1359+E: 1331926701.337007 0000 0002 0
1360+E: 1331926701.337008 0003 0039 9
1361+E: 1331926701.337008 0003 0030 436
1362+E: 1331926701.337009 0003 0031 472
1363+E: 1331926701.337010 0003 0034 0
1364+E: 1331926701.337010 0003 0035 145
1365+E: 1331926701.337011 0003 0036 -1058
1366+E: 1331926701.337012 0000 0002 0
1367+E: 1331926701.337014 0003 0000 -855
1368+E: 1331926701.337015 0003 0001 -126
1369+E: 1331926701.337016 0000 0000 0
1370+E: 1331926701.344367 0003 0039 1
1371+E: 1331926701.344368 0003 0030 220
1372+E: 1331926701.344369 0003 0031 292
1373+E: 1331926701.344369 0003 0034 0
1374+E: 1331926701.344370 0003 0035 -852
1375+E: 1331926701.344371 0003 0036 -123
1376+E: 1331926701.344371 0000 0002 0
1377+E: 1331926701.344372 0003 0039 7
1378+E: 1331926701.344373 0003 0030 272
1379+E: 1331926701.344373 0003 0031 388
1380+E: 1331926701.344374 0003 0034 0
1381+E: 1331926701.344375 0003 0035 1492
1382+E: 1331926701.344375 0003 0036 -608
1383+E: 1331926701.344376 0000 0002 0
1384+E: 1331926701.344377 0003 0039 8
1385+E: 1331926701.344377 0003 0030 252
1386+E: 1331926701.344378 0003 0031 276
1387+E: 1331926701.344379 0003 0034 0
1388+E: 1331926701.344379 0003 0035 -1691
1389+E: 1331926701.344380 0003 0036 949
1390+E: 1331926701.344380 0000 0002 0
1391+E: 1331926701.344381 0003 0039 9
1392+E: 1331926701.344382 0003 0030 456
1393+E: 1331926701.344382 0003 0031 480
1394+E: 1331926701.344383 0003 0034 0
1395+E: 1331926701.344384 0003 0035 146
1396+E: 1331926701.344384 0003 0036 -1055
1397+E: 1331926701.344385 0000 0002 0
1398+E: 1331926701.344388 0003 0000 -854
1399+E: 1331926701.344388 0003 0001 -125
1400+E: 1331926701.344389 0000 0000 0
1401+E: 1331926701.364365 0003 0039 1
1402+E: 1331926701.364366 0003 0030 232
1403+E: 1331926701.364367 0003 0031 288
1404+E: 1331926701.364368 0003 0034 0
1405+E: 1331926701.364368 0003 0035 -851
1406+E: 1331926701.364369 0003 0036 -122
1407+E: 1331926701.364370 0000 0002 0
1408+E: 1331926701.364370 0003 0039 7
1409+E: 1331926701.364371 0003 0030 276
1410+E: 1331926701.364372 0003 0031 392
1411+E: 1331926701.364372 0003 0034 0
1412+E: 1331926701.364373 0003 0035 1493
1413+E: 1331926701.364374 0003 0036 -606
1414+E: 1331926701.364374 0000 0002 0
1415+E: 1331926701.364375 0003 0039 8
1416+E: 1331926701.364376 0003 0030 260
1417+E: 1331926701.364376 0003 0031 284
1418+E: 1331926701.364377 0003 0034 0
1419+E: 1331926701.364377 0003 0035 -1689
1420+E: 1331926701.364378 0003 0036 951
1421+E: 1331926701.364379 0000 0002 0
1422+E: 1331926701.364379 0003 0039 9
1423+E: 1331926701.364380 0003 0030 452
1424+E: 1331926701.364381 0003 0031 496
1425+E: 1331926701.364381 0003 0034 0
1426+E: 1331926701.364382 0003 0035 146
1427+E: 1331926701.364383 0003 0036 -1053
1428+E: 1331926701.364383 0000 0002 0
1429+E: 1331926701.364386 0003 0000 -853
1430+E: 1331926701.364387 0003 0001 -124
1431+E: 1331926701.364387 0000 0000 0
1432+E: 1331926701.366982 0003 0039 1
1433+E: 1331926701.366983 0003 0030 220
1434+E: 1331926701.366984 0003 0031 276
1435+E: 1331926701.366985 0003 0034 0
1436+E: 1331926701.366985 0003 0035 -851
1437+E: 1331926701.366986 0003 0036 -121
1438+E: 1331926701.366987 0000 0002 0
1439+E: 1331926701.366987 0003 0039 7
1440+E: 1331926701.366988 0003 0030 276
1441+E: 1331926701.366989 0003 0031 384
1442+E: 1331926701.366989 0003 0034 0
1443+E: 1331926701.366990 0003 0035 1493
1444+E: 1331926701.366991 0003 0036 -604
1445+E: 1331926701.366991 0000 0002 0
1446+E: 1331926701.366992 0003 0039 8
1447+E: 1331926701.366993 0003 0030 260
1448+E: 1331926701.366993 0003 0031 288
1449+E: 1331926701.366994 0003 0034 0
1450+E: 1331926701.366994 0003 0035 -1688
1451+E: 1331926701.366995 0003 0036 952
1452+E: 1331926701.366996 0000 0002 0
1453+E: 1331926701.366996 0003 0039 9
1454+E: 1331926701.366997 0003 0030 448
1455+E: 1331926701.366998 0003 0031 496
1456+E: 1331926701.366998 0003 0034 0
1457+E: 1331926701.366999 0003 0035 146
1458+E: 1331926701.367000 0003 0036 -1053
1459+E: 1331926701.367000 0000 0002 0
1460+E: 1331926701.367003 0003 0000 -852
1461+E: 1331926701.367004 0003 0001 -123
1462+E: 1331926701.367004 0000 0000 0
1463+E: 1331926701.374366 0003 0039 1
1464+E: 1331926701.374367 0003 0030 224
1465+E: 1331926701.374368 0003 0031 292
1466+E: 1331926701.374368 0003 0034 0
1467+E: 1331926701.374369 0003 0035 -851
1468+E: 1331926701.374369 0003 0036 -120
1469+E: 1331926701.374370 0000 0002 0
1470+E: 1331926701.374371 0003 0039 7
1471+E: 1331926701.374371 0003 0030 272
1472+E: 1331926701.374372 0003 0031 392
1473+E: 1331926701.374373 0003 0034 0
1474+E: 1331926701.374373 0003 0035 1494
1475+E: 1331926701.374374 0003 0036 -603
1476+E: 1331926701.374375 0000 0002 0
1477+E: 1331926701.374375 0003 0039 8
1478+E: 1331926701.374376 0003 0030 252
1479+E: 1331926701.374377 0003 0031 284
1480+E: 1331926701.374377 0003 0034 0
1481+E: 1331926701.374378 0003 0035 -1688
1482+E: 1331926701.374379 0003 0036 953
1483+E: 1331926701.374379 0000 0002 0
1484+E: 1331926701.374380 0003 0039 9
1485+E: 1331926701.374381 0003 0030 460
1486+E: 1331926701.374381 0003 0031 488
1487+E: 1331926701.374382 0003 0034 0
1488+E: 1331926701.374383 0003 0035 146
1489+E: 1331926701.374383 0003 0036 -1051
1490+E: 1331926701.374384 0000 0002 0
1491+E: 1331926701.374387 0003 0001 -122
1492+E: 1331926701.374388 0000 0000 0
1493+E: 1331926701.396995 0003 0039 1
1494+E: 1331926701.396996 0003 0030 220
1495+E: 1331926701.396996 0003 0031 280
1496+E: 1331926701.396997 0003 0034 0
1497+E: 1331926701.396998 0003 0035 -851
1498+E: 1331926701.396998 0003 0036 -120
1499+E: 1331926701.396999 0000 0002 0
1500+E: 1331926701.397000 0003 0039 7
1501+E: 1331926701.397000 0003 0030 260
1502+E: 1331926701.397001 0003 0031 384
1503+E: 1331926701.397002 0003 0034 0
1504+E: 1331926701.397002 0003 0035 1494
1505+E: 1331926701.397003 0003 0036 -602
1506+E: 1331926701.397003 0000 0002 0
1507+E: 1331926701.397004 0003 0039 8
1508+E: 1331926701.397005 0003 0030 248
1509+E: 1331926701.397005 0003 0031 284
1510+E: 1331926701.397006 0003 0034 0
1511+E: 1331926701.397007 0003 0035 -1688
1512+E: 1331926701.397007 0003 0036 954
1513+E: 1331926701.397008 0000 0002 0
1514+E: 1331926701.397009 0003 0039 9
1515+E: 1331926701.397009 0003 0030 464
1516+E: 1331926701.397010 0003 0031 484
1517+E: 1331926701.397011 0003 0034 0
1518+E: 1331926701.397011 0003 0035 147
1519+E: 1331926701.397012 0003 0036 -1051
1520+E: 1331926701.397012 0000 0002 0
1521+E: 1331926701.397016 0003 0001 -121
1522+E: 1331926701.397016 0000 0000 0
1523+E: 1331926701.399368 0003 0039 1
1524+E: 1331926701.399368 0003 0030 236
1525+E: 1331926701.399369 0003 0031 292
1526+E: 1331926701.399370 0003 0034 0
1527+E: 1331926701.399370 0003 0035 -851
1528+E: 1331926701.399371 0003 0036 -120
1529+E: 1331926701.399372 0000 0002 0
1530+E: 1331926701.399373 0003 0039 7
1531+E: 1331926701.399373 0003 0030 264
1532+E: 1331926701.399374 0003 0031 388
1533+E: 1331926701.399374 0003 0034 0
1534+E: 1331926701.399375 0003 0035 1495
1535+E: 1331926701.399376 0003 0036 -602
1536+E: 1331926701.399376 0000 0002 0
1537+E: 1331926701.399377 0003 0039 8
1538+E: 1331926701.399378 0003 0030 248
1539+E: 1331926701.399378 0003 0031 284
1540+E: 1331926701.399379 0003 0034 0
1541+E: 1331926701.399380 0003 0035 -1689
1542+E: 1331926701.399380 0003 0036 955
1543+E: 1331926701.399381 0000 0002 0
1544+E: 1331926701.399382 0003 0039 9
1545+E: 1331926701.399382 0003 0030 476
1546+E: 1331926701.399383 0003 0031 496
1547+E: 1331926701.399384 0003 0034 0
1548+E: 1331926701.399384 0003 0035 147
1549+E: 1331926701.399385 0003 0036 -1050
1550+E: 1331926701.399385 0000 0002 0
1551+E: 1331926701.399389 0000 0000 0
1552+E: 1331926701.404370 0003 0039 1
1553+E: 1331926701.404371 0003 0030 240
1554+E: 1331926701.404372 0003 0031 304
1555+E: 1331926701.404372 0003 0034 0
1556+E: 1331926701.404373 0003 0035 -850
1557+E: 1331926701.404374 0003 0036 -120
1558+E: 1331926701.404374 0000 0002 0
1559+E: 1331926701.404375 0003 0039 7
1560+E: 1331926701.404376 0003 0030 256
1561+E: 1331926701.404376 0003 0031 376
1562+E: 1331926701.404377 0003 0034 0
1563+E: 1331926701.404378 0003 0035 1495
1564+E: 1331926701.404378 0003 0036 -602
1565+E: 1331926701.404379 0000 0002 0
1566+E: 1331926701.404380 0003 0039 8
1567+E: 1331926701.404380 0003 0030 256
1568+E: 1331926701.404381 0003 0031 292
1569+E: 1331926701.404381 0003 0034 0
1570+E: 1331926701.404382 0003 0035 -1690
1571+E: 1331926701.404383 0003 0036 956
1572+E: 1331926701.404383 0000 0002 0
1573+E: 1331926701.404384 0003 0039 9
1574+E: 1331926701.404385 0003 0030 456
1575+E: 1331926701.404385 0003 0031 488
1576+E: 1331926701.404386 0003 0034 0
1577+E: 1331926701.404387 0003 0035 148
1578+E: 1331926701.404387 0003 0036 -1050
1579+E: 1331926701.404388 0000 0002 0
1580+E: 1331926701.404391 0003 0000 -851
1581+E: 1331926701.404392 0000 0000 0
1582+E: 1331926701.424368 0003 0039 1
1583+E: 1331926701.424369 0003 0030 248
1584+E: 1331926701.424370 0003 0031 300
1585+E: 1331926701.424371 0003 0034 0
1586+E: 1331926701.424371 0003 0035 -850
1587+E: 1331926701.424372 0003 0036 -120
1588+E: 1331926701.424373 0000 0002 0
1589+E: 1331926701.424373 0003 0039 7
1590+E: 1331926701.424374 0003 0030 252
1591+E: 1331926701.424375 0003 0031 376
1592+E: 1331926701.424375 0003 0034 0
1593+E: 1331926701.424376 0003 0035 1496
1594+E: 1331926701.424377 0003 0036 -602
1595+E: 1331926701.424377 0000 0002 0
1596+E: 1331926701.424378 0003 0039 8
1597+E: 1331926701.424379 0003 0030 252
1598+E: 1331926701.424379 0003 0031 284
1599+E: 1331926701.424380 0003 0034 0
1600+E: 1331926701.424381 0003 0035 -1691
1601+E: 1331926701.424381 0003 0036 956
1602+E: 1331926701.424382 0000 0002 0
1603+E: 1331926701.424382 0003 0039 9
1604+E: 1331926701.424383 0003 0030 444
1605+E: 1331926701.424384 0003 0031 480
1606+E: 1331926701.424384 0003 0034 0
1607+E: 1331926701.424385 0003 0035 148
1608+E: 1331926701.424386 0003 0036 -1050
1609+E: 1331926701.424386 0000 0002 0
1610+E: 1331926701.424390 0000 0000 0
1611+E: 1331926701.426992 0003 0039 1
1612+E: 1331926701.426993 0003 0030 244
1613+E: 1331926701.426994 0003 0031 300
1614+E: 1331926701.426994 0003 0034 0
1615+E: 1331926701.426995 0003 0035 -849
1616+E: 1331926701.426996 0003 0036 -121
1617+E: 1331926701.426996 0000 0002 0
1618+E: 1331926701.426997 0003 0039 7
1619+E: 1331926701.426998 0003 0030 252
1620+E: 1331926701.426998 0003 0031 384
1621+E: 1331926701.426999 0003 0034 0
1622+E: 1331926701.427000 0003 0035 1497
1623+E: 1331926701.427000 0003 0036 -602
1624+E: 1331926701.427001 0000 0002 0
1625+E: 1331926701.427002 0003 0039 8
1626+E: 1331926701.427002 0003 0030 256
1627+E: 1331926701.427003 0003 0031 280
1628+E: 1331926701.427003 0003 0034 0
1629+E: 1331926701.427004 0003 0035 -1691
1630+E: 1331926701.427005 0003 0036 956
1631+E: 1331926701.427005 0000 0002 0
1632+E: 1331926701.427006 0003 0039 9
1633+E: 1331926701.427007 0003 0030 444
1634+E: 1331926701.427007 0003 0031 480
1635+E: 1331926701.427008 0003 0034 0
1636+E: 1331926701.427009 0003 0035 149
1637+E: 1331926701.427009 0003 0036 -1050
1638+E: 1331926701.427010 0000 0002 0
1639+E: 1331926701.427013 0003 0000 -850
1640+E: 1331926701.427014 0000 0000 0
1641+E: 1331926701.434374 0003 0039 1
1642+E: 1331926701.434375 0003 0030 240
1643+E: 1331926701.434376 0003 0031 280
1644+E: 1331926701.434377 0003 0034 0
1645+E: 1331926701.434377 0003 0035 -848
1646+E: 1331926701.434378 0003 0036 -121
1647+E: 1331926701.434379 0000 0002 0
1648+E: 1331926701.434379 0003 0039 7
1649+E: 1331926701.434380 0003 0030 248
1650+E: 1331926701.434381 0003 0031 380
1651+E: 1331926701.434381 0003 0034 0
1652+E: 1331926701.434382 0003 0035 1497
1653+E: 1331926701.434383 0003 0036 -602
1654+E: 1331926701.434383 0000 0002 0
1655+E: 1331926701.434384 0003 0039 8
1656+E: 1331926701.434385 0003 0030 240
1657+E: 1331926701.434385 0003 0031 272
1658+E: 1331926701.434386 0003 0034 0
1659+E: 1331926701.434387 0003 0035 -1693
1660+E: 1331926701.434387 0003 0036 956
1661+E: 1331926701.434388 0000 0002 0
1662+E: 1331926701.434389 0003 0039 9
1663+E: 1331926701.434389 0003 0030 448
1664+E: 1331926701.434390 0003 0031 488
1665+E: 1331926701.434390 0003 0034 0
1666+E: 1331926701.434391 0003 0035 150
1667+E: 1331926701.434392 0003 0036 -1051
1668+E: 1331926701.434392 0000 0002 0
1669+E: 1331926701.434395 0003 0000 -849
1670+E: 1331926701.434396 0000 0000 0
1671+E: 1331926701.454350 0003 0039 1
1672+E: 1331926701.454351 0003 0030 236
1673+E: 1331926701.454351 0003 0031 268
1674+E: 1331926701.454351 0003 0034 0
1675+E: 1331926701.454352 0003 0035 -848
1676+E: 1331926701.454352 0003 0036 -122
1677+E: 1331926701.454353 0000 0002 0
1678+E: 1331926701.454353 0003 0039 7
1679+E: 1331926701.454354 0003 0030 244
1680+E: 1331926701.454354 0003 0031 376
1681+E: 1331926701.454354 0003 0034 0
1682+E: 1331926701.454355 0003 0035 1497
1683+E: 1331926701.454355 0003 0036 -603
1684+E: 1331926701.454356 0000 0002 0
1685+E: 1331926701.454356 0003 0039 8
1686+E: 1331926701.454357 0003 0030 236
1687+E: 1331926701.454357 0003 0031 268
1688+E: 1331926701.454357 0003 0034 0
1689+E: 1331926701.454358 0003 0035 -1694
1690+E: 1331926701.454358 0003 0036 955
1691+E: 1331926701.454359 0000 0002 0
1692+E: 1331926701.454359 0003 0039 9
1693+E: 1331926701.454359 0003 0030 440
1694+E: 1331926701.454360 0003 0031 476
1695+E: 1331926701.454360 0003 0034 0
1696+E: 1331926701.454361 0003 0035 150
1697+E: 1331926701.454361 0003 0036 -1051
1698+E: 1331926701.454361 0000 0002 0
1699+E: 1331926701.454364 0000 0000 0
1700+E: 1331926701.456999 0003 0039 1
1701+E: 1331926701.457000 0003 0030 224
1702+E: 1331926701.457001 0003 0031 276
1703+E: 1331926701.457001 0003 0034 0
1704+E: 1331926701.457002 0003 0035 -847
1705+E: 1331926701.457003 0003 0036 -124
1706+E: 1331926701.457003 0000 0002 0
1707+E: 1331926701.457004 0003 0039 7
1708+E: 1331926701.457005 0003 0030 244
1709+E: 1331926701.457005 0003 0031 372
1710+E: 1331926701.457006 0003 0034 0
1711+E: 1331926701.457007 0003 0035 1497
1712+E: 1331926701.457007 0003 0036 -603
1713+E: 1331926701.457008 0000 0002 0
1714+E: 1331926701.457009 0003 0039 8
1715+E: 1331926701.457009 0003 0030 220
1716+E: 1331926701.457010 0003 0031 260
1717+E: 1331926701.457010 0003 0034 0
1718+E: 1331926701.457011 0003 0035 -1695
1719+E: 1331926701.457012 0003 0036 955
1720+E: 1331926701.457012 0000 0002 0
1721+E: 1331926701.457013 0003 0039 9
1722+E: 1331926701.457014 0003 0030 452
1723+E: 1331926701.457014 0003 0031 468
1724+E: 1331926701.457015 0003 0034 0
1725+E: 1331926701.457016 0003 0035 150
1726+E: 1331926701.457016 0003 0036 -1050
1727+E: 1331926701.457017 0000 0002 0
1728+E: 1331926701.457020 0003 0000 -848
1729+E: 1331926701.457021 0000 0000 0
1730+E: 1331926701.466993 0003 0039 1
1731+E: 1331926701.466994 0003 0030 216
1732+E: 1331926701.466994 0003 0031 268
1733+E: 1331926701.466995 0003 0034 0
1734+E: 1331926701.466995 0003 0035 -847
1735+E: 1331926701.466996 0003 0036 -125
1736+E: 1331926701.466997 0000 0002 0
1737+E: 1331926701.466998 0003 0039 7
1738+E: 1331926701.466998 0003 0030 244
1739+E: 1331926701.466999 0003 0031 372
1740+E: 1331926701.466999 0003 0034 0
1741+E: 1331926701.467000 0003 0035 1497
1742+E: 1331926701.467001 0003 0036 -602
1743+E: 1331926701.467001 0000 0002 0
1744+E: 1331926701.467002 0003 0039 8
1745+E: 1331926701.467003 0003 0030 216
1746+E: 1331926701.467003 0003 0031 264
1747+E: 1331926701.467004 0003 0034 0
1748+E: 1331926701.467005 0003 0035 -1695
1749+E: 1331926701.467005 0003 0036 954
1750+E: 1331926701.467006 0000 0002 0
1751+E: 1331926701.467007 0003 0039 9
1752+E: 1331926701.467007 0003 0030 436
1753+E: 1331926701.467008 0003 0031 460
1754+E: 1331926701.467009 0003 0034 0
1755+E: 1331926701.467009 0003 0035 150
1756+E: 1331926701.467010 0003 0036 -1050
1757+E: 1331926701.467011 0000 0002 0
1758+E: 1331926701.467014 0003 0001 -123
1759+E: 1331926701.467015 0000 0000 0
1760+E: 1331926701.486989 0003 0039 1
1761+E: 1331926701.486990 0003 0030 208
1762+E: 1331926701.486991 0003 0031 252
1763+E: 1331926701.486992 0003 0034 0
1764+E: 1331926701.486992 0003 0035 -846
1765+E: 1331926701.486993 0003 0036 -126
1766+E: 1331926701.486994 0000 0002 0
1767+E: 1331926701.486994 0003 0039 7
1768+E: 1331926701.486995 0003 0030 264
1769+E: 1331926701.486996 0003 0031 364
1770+E: 1331926701.486996 0003 0034 0
1771+E: 1331926701.486997 0003 0035 1497
1772+E: 1331926701.486998 0003 0036 -602
1773+E: 1331926701.486998 0000 0002 0
1774+E: 1331926701.486999 0003 0039 8
1775+E: 1331926701.486999 0003 0030 188
1776+E: 1331926701.487000 0003 0031 248
1777+E: 1331926701.487001 0003 0034 0
1778+E: 1331926701.487001 0003 0035 -1695
1779+E: 1331926701.487002 0003 0036 952
1780+E: 1331926701.487003 0000 0002 0
1781+E: 1331926701.487003 0003 0039 9
1782+E: 1331926701.487004 0003 0030 416
1783+E: 1331926701.487005 0003 0031 428
1784+E: 1331926701.487005 0003 0034 0
1785+E: 1331926701.487006 0003 0035 150
1786+E: 1331926701.487007 0003 0036 -1050
1787+E: 1331926701.487007 0000 0002 0
1788+E: 1331926701.487010 0003 0000 -847
1789+E: 1331926701.487011 0000 0000 0
1790+E: 1331926701.489380 0003 0039 1
1791+E: 1331926701.489381 0003 0030 200
1792+E: 1331926701.489382 0003 0031 244
1793+E: 1331926701.489383 0003 0034 0
1794+E: 1331926701.489383 0003 0035 -844
1795+E: 1331926701.489384 0003 0036 -128
1796+E: 1331926701.489385 0000 0002 0
1797+E: 1331926701.489385 0003 0039 7
1798+E: 1331926701.489386 0003 0030 264
1799+E: 1331926701.489387 0003 0031 360
1800+E: 1331926701.489387 0003 0034 0
1801+E: 1331926701.489388 0003 0035 1498
1802+E: 1331926701.489389 0003 0036 -599
1803+E: 1331926701.489389 0000 0002 0
1804+E: 1331926701.489390 0003 0039 8
1805+E: 1331926701.489391 0003 0030 152
1806+E: 1331926701.489391 0003 0031 216
1807+E: 1331926701.489392 0003 0034 0
1808+E: 1331926701.489393 0003 0035 -1693
1809+E: 1331926701.489393 0003 0036 950
1810+E: 1331926701.489394 0000 0002 0
1811+E: 1331926701.489395 0003 0039 9
1812+E: 1331926701.489395 0003 0030 380
1813+E: 1331926701.489396 0003 0031 396
1814+E: 1331926701.489397 0003 0034 0
1815+E: 1331926701.489397 0003 0035 151
1816+E: 1331926701.489398 0003 0036 -1048
1817+E: 1331926701.489398 0000 0002 0
1818+E: 1331926701.489401 0003 0000 -846
1819+E: 1331926701.489402 0003 0001 -125
1820+E: 1331926701.489402 0000 0000 0
1821+E: 1331926701.496999 0003 0039 1
1822+E: 1331926701.497000 0003 0030 188
1823+E: 1331926701.497001 0003 0031 236
1824+E: 1331926701.497002 0003 0034 0
1825+E: 1331926701.497002 0003 0035 -842
1826+E: 1331926701.497003 0003 0036 -129
1827+E: 1331926701.497004 0000 0002 0
1828+E: 1331926701.497005 0003 0039 7
1829+E: 1331926701.497005 0003 0030 240
1830+E: 1331926701.497006 0003 0031 332
1831+E: 1331926701.497006 0003 0034 0
1832+E: 1331926701.497007 0003 0035 1502
1833+E: 1331926701.497008 0003 0036 -592
1834+E: 1331926701.497008 0000 0002 0
1835+E: 1331926701.497009 0003 0039 8
1836+E: 1331926701.497010 0003 0030 124
1837+E: 1331926701.497010 0003 0031 196
1838+E: 1331926701.497011 0003 0034 0
1839+E: 1331926701.497012 0003 0035 -1690
1840+E: 1331926701.497012 0003 0036 949
1841+E: 1331926701.497013 0000 0002 0
1842+E: 1331926701.497014 0003 0039 9
1843+E: 1331926701.497014 0003 0030 340
1844+E: 1331926701.497015 0003 0031 368
1845+E: 1331926701.497015 0003 0034 0
1846+E: 1331926701.497016 0003 0035 155
1847+E: 1331926701.497017 0003 0036 -1041
1848+E: 1331926701.497017 0000 0002 0
1849+E: 1331926701.497020 0003 0000 -844
1850+E: 1331926701.497021 0003 0001 -127
1851+E: 1331926701.497021 0000 0000 0
1852+E: 1331926701.516993 0003 0039 1
1853+E: 1331926701.516994 0003 0030 176
1854+E: 1331926701.516995 0003 0031 216
1855+E: 1331926701.516995 0003 0034 0
1856+E: 1331926701.516996 0003 0035 -838
1857+E: 1331926701.516997 0003 0036 -129
1858+E: 1331926701.516997 0000 0002 0
1859+E: 1331926701.516998 0003 0039 7
1860+E: 1331926701.516999 0003 0030 188
1861+E: 1331926701.516999 0003 0031 292
1862+E: 1331926701.517000 0003 0034 0
1863+E: 1331926701.517001 0003 0035 1511
1864+E: 1331926701.517001 0003 0036 -577
1865+E: 1331926701.517002 0000 0002 0
1866+E: 1331926701.517003 0003 0039 8
1867+E: 1331926701.517003 0003 0030 124
1868+E: 1331926701.517004 0003 0031 168
1869+E: 1331926701.517005 0003 0034 0
1870+E: 1331926701.517005 0003 0035 -1681
1871+E: 1331926701.517006 0003 0036 947
1872+E: 1331926701.517007 0000 0002 0
1873+E: 1331926701.517007 0003 0039 9
1874+E: 1331926701.517008 0003 0030 308
1875+E: 1331926701.517009 0003 0031 328
1876+E: 1331926701.517009 0003 0034 0
1877+E: 1331926701.517010 0003 0035 169
1878+E: 1331926701.517011 0003 0036 -1023
1879+E: 1331926701.517011 0000 0002 0
1880+E: 1331926701.517014 0003 0000 -841
1881+E: 1331926701.517015 0000 0000 0
1882+E: 1331926701.523118 0003 0039 1
1883+E: 1331926701.523119 0003 0030 152
1884+E: 1331926701.523120 0003 0031 192
1885+E: 1331926701.523121 0003 0034 0
1886+E: 1331926701.523121 0003 0035 -815
1887+E: 1331926701.523122 0003 0036 -116
1888+E: 1331926701.523123 0000 0002 0
1889+E: 1331926701.523123 0003 0039 7
1890+E: 1331926701.523124 0003 0030 0
1891+E: 1331926701.523124 0003 0031 0
1892+E: 1331926701.523124 0003 0034 0
1893+E: 1331926701.523125 0003 0035 1511
1894+E: 1331926701.523126 0003 0036 -577
1895+E: 1331926701.523126 0000 0002 0
1896+E: 1331926701.523127 0003 0039 8
1897+E: 1331926701.523128 0003 0030 0
1898+E: 1331926701.523128 0003 0031 0
1899+E: 1331926701.523128 0003 0034 0
1900+E: 1331926701.523129 0003 0035 -1681
1901+E: 1331926701.523129 0003 0036 947
1902+E: 1331926701.523130 0000 0002 0
1903+E: 1331926701.523131 0003 0039 9
1904+E: 1331926701.523131 0003 0030 280
1905+E: 1331926701.523132 0003 0031 348
1906+E: 1331926701.523133 0003 0034 0
1907+E: 1331926701.523133 0003 0035 194
1908+E: 1331926701.523134 0003 0036 -999
1909+E: 1331926701.523135 0000 0002 0
1910+E: 1331926701.523137 0003 0000 -815
1911+E: 1331926701.523138 0003 0001 -116
1912+E: 1331926701.523139 0000 0000 0
1913+E: 1331926701.526983 0003 0039 1
1914+E: 1331926701.526984 0003 0030 132
1915+E: 1331926701.526985 0003 0031 176
1916+E: 1331926701.526985 0003 0034 0
1917+E: 1331926701.526986 0003 0035 -775
1918+E: 1331926701.526987 0003 0036 -93
1919+E: 1331926701.526987 0000 0002 0
1920+E: 1331926701.526988 0003 0039 9
1921+E: 1331926701.526989 0003 0030 0
1922+E: 1331926701.526989 0003 0031 0
1923+E: 1331926701.526989 0003 0034 0
1924+E: 1331926701.526990 0003 0035 194
1925+E: 1331926701.526991 0003 0036 -999
1926+E: 1331926701.526991 0000 0002 0
1927+E: 1331926701.526993 0001 014d 1
1928+E: 1331926701.526994 0001 014f 0
1929+E: 1331926701.526995 0003 0000 -775
1930+E: 1331926701.526996 0003 0001 -93
1931+E: 1331926701.526996 0000 0000 0
1932+E: 1331926701.546994 0003 0039 1
1933+E: 1331926701.546995 0003 0030 0
1934+E: 1331926701.546995 0003 0031 0
1935+E: 1331926701.546995 0003 0034 0
1936+E: 1331926701.546996 0003 0035 -775
1937+E: 1331926701.546997 0003 0036 -93
1938+E: 1331926701.546997 0000 0002 0
1939+E: 1331926701.546999 0001 0145 1
1940+E: 1331926701.546999 0001 014d 0
1941+E: 1331926701.547001 0000 0000 0
1942+E: 1331926701.548990 0001 014a 0
1943+E: 1331926701.548990 0001 0145 0
1944+E: 1331926701.548991 0000 0000 0
1945
1946=== added file 'test/slice-checker.cpp'
1947--- test/slice-checker.cpp 1970-01-01 00:00:00 +0000
1948+++ test/slice-checker.cpp 2012-03-21 20:00:25 +0000
1949@@ -0,0 +1,186 @@
1950+/*****************************************************************************
1951+ *
1952+ * grail - Gesture Recognition And Instantiation Library
1953+ *
1954+ * Copyright (C) 2012 Canonical Ltd.
1955+ *
1956+ * This program is free software: you can redistribute it and/or modify it
1957+ * under the terms of the GNU General Public License as published by the
1958+ * Free Software Foundation, either version 3 of the License, or (at your
1959+ * option) any later version.
1960+ *
1961+ * This program is distributed in the hope that it will be useful, but
1962+ * WITHOUT ANY WARRANTY; without even the implied warranty of
1963+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1964+ * General Public License for more details.
1965+ *
1966+ * You should have received a copy of the GNU General Public License along
1967+ * with this program. If not, see <http://www.gnu.org/licenses/>.
1968+ *
1969+ ****************************************************************************/
1970+
1971+#include "slice-checker.h"
1972+#include <gtest/gtest.h>
1973+
1974+/* Margin of fluctuation on number of expected repetitions
1975+ Between 0.0 (0% error margin) to 1.0 (100% error margin)
1976+ exclusive. */
1977+#define EXPECTED_COUNT_MARGIN 0.3
1978+
1979+using namespace utouch::grail::testing;
1980+
1981+void SliceCheckerState::SetAverageCount(unsigned int average_count)
1982+{
1983+ min_count = (unsigned int)(
1984+ average_count*(1.0 - EXPECTED_COUNT_MARGIN));
1985+
1986+ max_count = (unsigned int)(
1987+ average_count*(1.0 + EXPECTED_COUNT_MARGIN));
1988+}
1989+
1990+void SliceChecker::AppendState(std::unique_ptr<SliceCheckerState> state)
1991+{
1992+ slice_checker_states_.push_back(std::move(state));
1993+}
1994+
1995+void SliceChecker::CheckSlice(UGSlice slice) {
1996+ ASSERT_LT(curr_state_, slice_checker_states_.size()) << "Received too many slices.";
1997+
1998+ /* Map type() to class. */
1999+ switch (slice_checker_states_[curr_state_]->type()) {
2000+ case SliceCheckerState::SlicesType:
2001+ {
2002+ ExpectSlices *state = dynamic_cast<ExpectSlices*>(
2003+ slice_checker_states_[curr_state_].get());
2004+ ASSERT_NE(nullptr, state);
2005+ CheckSlice(slice, state);
2006+ }
2007+ break;
2008+ case SliceCheckerState::ParallelSlicesType:
2009+ {
2010+ ExpectParallelSlices *state = dynamic_cast<ExpectParallelSlices *>(
2011+ slice_checker_states_[curr_state_].get());
2012+ ASSERT_NE(nullptr, state);
2013+ CheckSlice(slice, state);
2014+ }
2015+ break;
2016+ default:
2017+ ASSERT_TRUE(false);
2018+ break;
2019+ };
2020+}
2021+
2022+void SliceChecker::CheckSlice(UGSlice slice, ExpectSlices *state) {
2023+ if (SliceMatches(slice, state->expected_slice)) {
2024+ ++state->actual_count;
2025+ } else {
2026+ /* If there's no match, transition to the next state and try to get a
2027+ match there. */
2028+ CheckAllExpectedSlicesReceived(state);
2029+ ++curr_state_;
2030+ CheckSlice(slice);
2031+ }
2032+}
2033+
2034+void SliceChecker::CheckSlice(UGSlice slice, ExpectParallelSlices *state) {
2035+ if (state->actual_count.size() == 0) {
2036+ /* init the vector */
2037+ state->actual_count.resize(state->expected_slices.size(), 0);
2038+ }
2039+
2040+ bool found_match = false;
2041+ std::size_t i = 0;
2042+ do {
2043+ found_match = SliceMatches(slice, state->expected_slices[i]);
2044+ if (!found_match)
2045+ ++i;
2046+ } while (!found_match && i < state->expected_slices.size());
2047+
2048+ if (found_match) {
2049+ ++state->actual_count[i];
2050+ } else {
2051+ CheckAllExpectedSlicesReceived(state);
2052+ ++curr_state_;
2053+ CheckSlice(slice);
2054+ }
2055+}
2056+
2057+void SliceChecker::CheckAllExpectedSlicesReceived()
2058+{
2059+ ASSERT_EQ(slice_checker_states_.size() - 1, curr_state_)
2060+ << "the last slice checker state must be reached.";
2061+
2062+ /* Map type() to class. */
2063+ switch (slice_checker_states_[curr_state_]->type()) {
2064+ case SliceCheckerState::SlicesType:
2065+ {
2066+ ExpectSlices *state = dynamic_cast<ExpectSlices *>(
2067+ slice_checker_states_[curr_state_].get());
2068+ ASSERT_NE(nullptr, state);
2069+ CheckAllExpectedSlicesReceived(state);
2070+ }
2071+ break;
2072+ case SliceCheckerState::ParallelSlicesType:
2073+ {
2074+ ExpectParallelSlices *state = dynamic_cast<ExpectParallelSlices *>(
2075+ slice_checker_states_[curr_state_].get());
2076+ ASSERT_NE(nullptr, state);
2077+ CheckAllExpectedSlicesReceived(state);
2078+ }
2079+ break;
2080+ default:
2081+ ASSERT_TRUE(false);
2082+ break;
2083+ };
2084+}
2085+
2086+void SliceChecker::CheckAllExpectedSlicesReceived(
2087+ ExpectSlices *state)
2088+{
2089+ ASSERT_GE(state->actual_count, state->min_count) << "for state " << curr_state_;
2090+ ASSERT_LE(state->actual_count, state->max_count) << "for state " << curr_state_;
2091+}
2092+
2093+void SliceChecker::CheckAllExpectedSlicesReceived(
2094+ ExpectParallelSlices *state)
2095+{
2096+ unsigned int min_actual_count = std::numeric_limits<unsigned int>::max();
2097+ unsigned int max_actual_count = 0;
2098+
2099+ for (auto actual_count : state->actual_count) {
2100+ ASSERT_GE(actual_count, state->min_count) << "for state " << curr_state_;
2101+ ASSERT_LE(actual_count, state->max_count) << "for state " << curr_state_;
2102+
2103+ if (actual_count < min_actual_count)
2104+ min_actual_count = actual_count;
2105+
2106+ if (actual_count > max_actual_count)
2107+ max_actual_count = actual_count;
2108+ }
2109+
2110+ unsigned int average_count = (state->max_count + state->min_count) / 2;
2111+ ASSERT_LE(max_actual_count - min_actual_count, average_count*0.1)
2112+ << "Parallel slices must come in roughly same numbers.";
2113+}
2114+
2115+bool SliceChecker::SliceMatches(UGSlice slice,
2116+ const ExpectedSlice &expected_slice)
2117+{
2118+ if (grail_slice_get_state(slice) != expected_slice.state)
2119+ return false;
2120+
2121+ if (grail_slice_get_subscription(slice) != expected_slice.subscription)
2122+ return false;
2123+
2124+ if (grail_slice_get_recognized(slice) != expected_slice.recognized)
2125+ return false;
2126+
2127+ if (grail_slice_get_num_touches(slice) != expected_slice.num_touches)
2128+ return false;
2129+
2130+ if (grail_slice_get_construction_finished(slice) !=
2131+ expected_slice.construction_finished)
2132+ return false;
2133+
2134+ return true;
2135+}
2136
2137=== added file 'test/slice-checker.h'
2138--- test/slice-checker.h 1970-01-01 00:00:00 +0000
2139+++ test/slice-checker.h 2012-03-21 20:00:25 +0000
2140@@ -0,0 +1,203 @@
2141+/*****************************************************************************
2142+ *
2143+ * grail - Gesture Recognition And Instantiation Library
2144+ *
2145+ * Copyright (C) 2012 Canonical Ltd.
2146+ *
2147+ * This program is free software: you can redistribute it and/or modify it
2148+ * under the terms of the GNU General Public License as published by the
2149+ * Free Software Foundation, either version 3 of the License, or (at your
2150+ * option) any later version.
2151+ *
2152+ * This program is distributed in the hope that it will be useful, but
2153+ * WITHOUT ANY WARRANTY; without even the implied warranty of
2154+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2155+ * General Public License for more details.
2156+ *
2157+ * You should have received a copy of the GNU General Public License along
2158+ * with this program. If not, see <http://www.gnu.org/licenses/>.
2159+ *
2160+ ****************************************************************************/
2161+
2162+#ifndef _GRAIL_TEST_SLICE_CHECKER_H_
2163+#define _GRAIL_TEST_SLICE_CHECKER_H_
2164+
2165+#include <utouch/grail.h>
2166+#include <memory>
2167+#include <vector>
2168+
2169+namespace utouch {
2170+namespace grail {
2171+namespace testing {
2172+
2173+/*
2174+ Holds the expected values for some of the properties
2175+ of a UGSlice.
2176+ */
2177+struct ExpectedSlice {
2178+ UGGestureState state;
2179+ UGGestureTypeMask recognized;
2180+ unsigned int num_touches;
2181+ bool construction_finished;
2182+ UGSubscription subscription;
2183+};
2184+
2185+/*
2186+ Abstract base class for states of the slice checker.
2187+ */
2188+class SliceCheckerState {
2189+ public:
2190+ /* Average number of slices that should arrive
2191+ with the values described in the concrete state class.
2192+ This is a convenience function that will set min_count
2193+ and max_count appropriately. */
2194+ void SetAverageCount(unsigned int average_count);
2195+
2196+ /* Minimum and maximum number of slices that should arrive
2197+ with the values described in the concrete state class */
2198+ unsigned int min_count;
2199+ unsigned int max_count;
2200+
2201+ protected:
2202+ enum StateType {
2203+ SlicesType, /* ExpectSlices class */
2204+ ParallelSlicesType, /* ParalellRepeatedSlices class */
2205+ };
2206+
2207+ /*
2208+ Returns the type of the state.
2209+ With that information you're able to cast a SliceCheckerState pointer
2210+ to a pointer of the corresponding concrete state class.
2211+ */
2212+ virtual StateType type() = 0;
2213+
2214+ friend class SliceChecker;
2215+};
2216+
2217+/*
2218+ Tells the slice checker to expect a stream of slices with
2219+ the same characteristics.
2220+ */
2221+class ExpectSlices : public SliceCheckerState {
2222+ public:
2223+ ExpectSlices() : actual_count(0) {}
2224+
2225+ /* Property values of the expected slices. */
2226+ ExpectedSlice expected_slice;
2227+
2228+ protected:
2229+ virtual StateType type() {return SlicesType;}
2230+
2231+ private:
2232+ /* Filled by the slice checker.
2233+ Number of times a slice was successfully matched against
2234+ expected_slice. */
2235+ unsigned int actual_count;
2236+
2237+ friend class SliceChecker;
2238+};
2239+
2240+/*
2241+ Tells the slice checker to check for a single slice.
2242+
2243+ Essentially a convenience class wrapping ExpectedSlices
2244+ */
2245+class ExpectSlice : public ExpectSlices {
2246+ public:
2247+ ExpectSlice() {min_count = 1; max_count = 1;}
2248+};
2249+
2250+/*
2251+ Tells the slice checker to check for multiple streams of repeated slices
2252+ that come interleaved.
2253+
2254+ */
2255+class ExpectParallelSlices : public SliceCheckerState {
2256+ public:
2257+ virtual StateType type() {return ParallelSlicesType;}
2258+
2259+ /* Property values of the expected slices from each
2260+ stream.
2261+
2262+ min_count and max_count are meant for each expected slice. */
2263+ std::vector<ExpectedSlice> expected_slices;
2264+
2265+ private:
2266+ /* Filled by the slice checker.
2267+ Number of times a slice was successfully matched against
2268+ expected_slices[index]. */
2269+ std::vector<unsigned int> actual_count;
2270+
2271+ friend class SliceChecker;
2272+};
2273+
2274+/*
2275+ This class checks if a stream of slices given to it via CheckSlice() have
2276+ the characteristics described in the slice checker states provided.
2277+
2278+ Usage:
2279+
2280+ 1- Describe the stream of slices you expect.
2281+ * Do that by providing a sequence of slice checker states via
2282+ AppendState()
2283+ 2- Provide the stream of slices that will be checked against
2284+ those expectations.
2285+ * Do that by calling CheckSlice(), in order.
2286+ 3- Verify that all expected slices have been received.
2287+ * Call CheckAllExpectedSlicesReceived()
2288+ */
2289+class SliceChecker {
2290+ public:
2291+
2292+ /*
2293+ Appends a state.
2294+ */
2295+ void AppendState(std::unique_ptr<SliceCheckerState> state);
2296+
2297+ /*
2298+ Checks the given slice.
2299+ */
2300+ void CheckSlice(UGSlice slice);
2301+
2302+ /*
2303+ Checks if all the expected slices have been received.
2304+
2305+ Will cause a gtest assertion failure if not.
2306+ */
2307+ void CheckAllExpectedSlicesReceived();
2308+
2309+ private:
2310+
2311+ void CheckSlice(UGSlice slice, ExpectSlices *state);
2312+ void CheckSlice(UGSlice slice, ExpectParallelSlices *state);
2313+ void CheckAllExpectedSlicesReceived(ExpectSlices *state);
2314+ void CheckAllExpectedSlicesReceived(ExpectParallelSlices *state);
2315+
2316+ /*
2317+ Returns true if the given slice matches all values described by
2318+ expected_slice and false otherwise.
2319+ */
2320+ static bool SliceMatches(UGSlice slice, const ExpectedSlice &expected_slice);
2321+
2322+ /*
2323+ When CheckSlice(UGSlice slice) is called, how
2324+ that slice will be checked depends on the current state of
2325+ the slice checker. That current state is defined by
2326+ slice_checker_states_[curr_state_]
2327+
2328+ slice_checker_states_ holds a vector of states and curr_state_
2329+ is the index of the current state.
2330+
2331+ This is a linear state machine, where from "state 0" you can only transition
2332+ to "state 1", from "state 1" you only to "state 2" and so on until the last
2333+ state is reached.
2334+ */
2335+ unsigned int curr_state_;
2336+ std::vector<std::unique_ptr<SliceCheckerState>> slice_checker_states_;
2337+};
2338+
2339+} // namespace testing
2340+} // namespace grail
2341+} // namespace utouch
2342+
2343+#endif // _GRAIL_TEST_SLICE_CHECKER_H_
2344
2345=== added file 'test/x11/parallel-atomic-gestures.cpp'
2346--- test/x11/parallel-atomic-gestures.cpp 1970-01-01 00:00:00 +0000
2347+++ test/x11/parallel-atomic-gestures.cpp 2012-03-21 20:00:25 +0000
2348@@ -0,0 +1,393 @@
2349+/*****************************************************************************
2350+ *
2351+ * grail - Gesture Recognition And Instantiation Library
2352+ *
2353+ * Copyright (C) 2012 Canonical Ltd.
2354+ *
2355+ * This program is free software: you can redistribute it and/or modify it
2356+ * under the terms of the GNU General Public License as published by the
2357+ * Free Software Foundation, either version 3 of the License, or (at your
2358+ * option) any later version.
2359+ *
2360+ * This program is distributed in the hope that it will be useful, but
2361+ * WITHOUT ANY WARRANTY; without even the implied warranty of
2362+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2363+ * General Public License for more details.
2364+ *
2365+ * You should have received a copy of the GNU General Public License along
2366+ * with this program. If not, see <http://www.gnu.org/licenses/>.
2367+ *
2368+ ****************************************************************************/
2369+
2370+/**
2371+ * @internal
2372+ * @file "Parallel Atomic Gestures" Test
2373+ *
2374+ * This test plays a 3 touch points drag followed by the appearance of a 4th
2375+ * touch point and then all 4 touch points are lifted at once.
2376+ *
2377+ * There are three subscriptions:
2378+ * (A) an atomic 3-touches Drag
2379+ * (B) an atomic 3-touches Touch
2380+ * (C) an atomic 3-touches Pinch
2381+ *
2382+ * What must happen is the following:
2383+ * In the beginning, gesture (B) will be accepted. Then after a short while
2384+ * gesture (A) will also be accepted. Gesture (C) will time out and be
2385+ * rejected. Thus there should be no slice coming from (C) at all.
2386+ * The appearance of the fourth touch point will cause the rejection of
2387+ * the accepted gestures (A) and (B).
2388+ */
2389+
2390+#include <future>
2391+#include <gtest/gtest.h>
2392+#include <utouch/frame_x11.h>
2393+
2394+/* evemu wrappers */
2395+#include "device.h"
2396+#include "recording.h"
2397+
2398+#include "slice-checker.h"
2399+
2400+#include "x11/fixture.h"
2401+
2402+using namespace utouch::grail::testing;
2403+
2404+#define DELETE_SUBSCRIPTION(sub) \
2405+ grail_subscription_deactivate(grail_handle(), sub); \
2406+ grail_subscription_delete(sub); \
2407+ sub = nullptr;
2408+
2409+class ParallelAtomicGestures : public utouch::grail::x11::testing::Test {
2410+ public:
2411+ ParallelAtomicGestures();
2412+ protected:
2413+ virtual void ProcessFrameEvents();
2414+ virtual void ProcessGrailEvents();
2415+
2416+ /* Holds the device we are interested in getting input from.
2417+ More specifically, the fake one we will create via evemu. */
2418+ UFDevice device_;
2419+
2420+ SliceChecker slice_checker_;
2421+
2422+ void DeleteSubscriptions();
2423+ private:
2424+ void ProcessFrameEventDeviceAdded(UFEvent event);
2425+ void CreateSubscriptions();
2426+ void ConstructExpectedSlices();
2427+ UGSubscription CreateSubscription(unsigned int num_touches,
2428+ UGGestureTypeMask gesture_mask);
2429+
2430+ UGSubscription drag_sub_;
2431+ UGSubscription touch_sub_;
2432+ UGSubscription pinch_sub_;
2433+
2434+ bool no_slices_checked_;
2435+};
2436+
2437+ParallelAtomicGestures::ParallelAtomicGestures()
2438+ : device_(nullptr),
2439+ drag_sub_(nullptr),
2440+ touch_sub_(nullptr),
2441+ pinch_sub_(nullptr),
2442+ no_slices_checked_(true) {
2443+}
2444+
2445+void ParallelAtomicGestures::ProcessFrameEvents() {
2446+ UFEvent event;
2447+
2448+ UFStatus status;
2449+ while ((status = frame_get_event(frame_handle(), &event)) == UFStatusSuccess) {
2450+ grail_process_frame_event(grail_handle(), event);
2451+
2452+ if (frame_event_get_type(event) == UFEventTypeDeviceAdded) {
2453+ ProcessFrameEventDeviceAdded(event);
2454+ }
2455+
2456+ frame_event_unref(event);
2457+ }
2458+
2459+ EXPECT_EQ(UFStatusErrorNoEvent, status);
2460+}
2461+
2462+void ParallelAtomicGestures::ProcessFrameEventDeviceAdded(UFEvent event)
2463+{
2464+ UFStatus status;
2465+ UFDevice device;
2466+ const char* name;
2467+
2468+ status = frame_event_get_property(event, UFEventPropertyDevice, &device);
2469+ ASSERT_EQ(UFStatusSuccess, status);
2470+
2471+ status = frame_device_get_property(device, UFDevicePropertyName, &name);
2472+ ASSERT_EQ(UFStatusSuccess, status);
2473+
2474+ if (strcmp(name, "Apple Magic Trackpad (Virtual Test Device)") == 0) {
2475+ EXPECT_EQ(nullptr, device_);
2476+ device_ = device;
2477+ CreateSubscriptions();
2478+ ConstructExpectedSlices();
2479+ }
2480+}
2481+
2482+void ParallelAtomicGestures::CreateSubscriptions() {
2483+ drag_sub_ = CreateSubscription(3, UGGestureTypeDrag);
2484+ ASSERT_NE(drag_sub_, nullptr);
2485+
2486+ touch_sub_ = CreateSubscription(3, UGGestureTypeTouch);
2487+ ASSERT_NE(touch_sub_, nullptr);
2488+
2489+ pinch_sub_ = CreateSubscription(3, UGGestureTypePinch);
2490+ ASSERT_NE(pinch_sub_, nullptr);
2491+}
2492+
2493+void ParallelAtomicGestures::DeleteSubscriptions() {
2494+ DELETE_SUBSCRIPTION(drag_sub_);
2495+ DELETE_SUBSCRIPTION(touch_sub_);
2496+ DELETE_SUBSCRIPTION(pinch_sub_);
2497+}
2498+
2499+UGSubscription ParallelAtomicGestures::CreateSubscription(
2500+ unsigned int num_touches,
2501+ UGGestureTypeMask gesture_mask) {
2502+ UGSubscription subscription;
2503+ UGStatus status;
2504+
2505+ status = grail_subscription_new(&subscription);
2506+ EXPECT_EQ(UGStatusSuccess, status);
2507+
2508+ status = grail_subscription_set_property(subscription,
2509+ UGSubscriptionPropertyDevice,
2510+ &device_);
2511+ EXPECT_EQ(UGStatusSuccess, status);
2512+ if (status != UGStatusSuccess) return 0;
2513+
2514+ UFWindowId window_id =
2515+ frame_x11_create_window_id(DefaultRootWindow(Display()));
2516+ status = grail_subscription_set_property(subscription,
2517+ UGSubscriptionPropertyWindow,
2518+ &window_id);
2519+ EXPECT_EQ(UGStatusSuccess, status);
2520+
2521+ status = grail_subscription_set_property(subscription,
2522+ UGSubscriptionPropertyTouchesStart,
2523+ &num_touches);
2524+ EXPECT_EQ(UGStatusSuccess, status);
2525+ if (status != UGStatusSuccess) return 0;
2526+
2527+ status = grail_subscription_set_property(subscription,
2528+ UGSubscriptionPropertyTouchesMaximum,
2529+ &num_touches);
2530+ EXPECT_EQ(UGStatusSuccess, status);
2531+ if (status != UGStatusSuccess) return 0;
2532+
2533+ status = grail_subscription_set_property(subscription,
2534+ UGSubscriptionPropertyTouchesMinimum,
2535+ &num_touches);
2536+ EXPECT_EQ(UGStatusSuccess, status);
2537+ if (status != UGStatusSuccess) return 0;
2538+
2539+ status = grail_subscription_set_property(subscription,
2540+ UGSubscriptionPropertyMask,
2541+ &gesture_mask);
2542+ EXPECT_EQ(UGStatusSuccess, status);
2543+ if (status != UGStatusSuccess) return 0;
2544+
2545+ int use_atomic_gestures = 1;
2546+ status = grail_subscription_set_property(subscription,
2547+ UGSubscriptionPropertyAtomicGestures,
2548+ &use_atomic_gestures);
2549+ EXPECT_EQ(UFStatusSuccess, status);
2550+ if (status != UGStatusSuccess) return 0;
2551+
2552+ status = grail_subscription_activate(grail_handle(), subscription);
2553+ EXPECT_EQ(UGStatusSuccess, status);
2554+ if (status != UGStatusSuccess) return 0;
2555+
2556+ return subscription;
2557+}
2558+
2559+void ParallelAtomicGestures::ProcessGrailEvents() {
2560+ UGEvent event;
2561+
2562+ UGStatus status;
2563+ while ((status = grail_get_event(grail_handle(), &event)) == UGStatusSuccess) {
2564+ ASSERT_EQ(UGEventTypeSlice, grail_event_get_type(event));
2565+
2566+ UGSlice slice;
2567+ status = grail_event_get_property(event, UGEventPropertySlice, &slice);
2568+ ASSERT_EQ(UGStatusSuccess, status);
2569+
2570+ /* Ensure we got a device addition event first */
2571+ if (no_slices_checked_) {
2572+ no_slices_checked_ = false;
2573+ EXPECT_NE(nullptr, device_);
2574+ }
2575+ slice_checker_.CheckSlice(slice);
2576+
2577+ grail_event_unref(event);
2578+ }
2579+
2580+ EXPECT_EQ(UGStatusErrorNoEvent, status);
2581+}
2582+
2583+void ParallelAtomicGestures::ConstructExpectedSlices()
2584+{
2585+ {
2586+ ExpectSlice *state = new ExpectSlice;
2587+ state->expected_slice = {
2588+ UGGestureStateBegin, /* UGSlicePropertyState */
2589+ UGGestureTypeTouch, /* UGSlicePropertyRecognized */
2590+ 3, /* UGSlicePropertyNumTouches */
2591+ false, /* UGSlicePropertyConstructionFinished */
2592+ touch_sub_ /* grail_slice_get_subscription */
2593+ };
2594+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2595+ }
2596+
2597+ {
2598+ ExpectSlices *state = new ExpectSlices;
2599+ state->expected_slice = {
2600+ UGGestureStateUpdate, /* UGSlicePropertyState */
2601+ UGGestureTypeTouch, /* UGSlicePropertyRecognized */
2602+ 3, /* UGSlicePropertyNumTouches */
2603+ false, /* UGSlicePropertyConstructionFinished */
2604+ touch_sub_ /* grail_slice_get_subscription */
2605+ };
2606+ state->SetAverageCount(10);
2607+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2608+ }
2609+
2610+ {
2611+ ExpectSlices *state = new ExpectSlices;
2612+ state->expected_slice = {
2613+ UGGestureStateUpdate, /* UGSlicePropertyState */
2614+ UGGestureTypeTouch, /* UGSlicePropertyRecognized */
2615+ 3, /* UGSlicePropertyNumTouches */
2616+ true, /* UGSlicePropertyConstructionFinished */
2617+ touch_sub_ /* grail_slice_get_subscription */
2618+ };
2619+ state->SetAverageCount(23);
2620+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2621+ }
2622+
2623+ {
2624+ ExpectSlice *state = new ExpectSlice;
2625+ state->expected_slice = {
2626+ UGGestureStateBegin, /* UGSlicePropertyState */
2627+ 0, /* UGSlicePropertyRecognized */
2628+ 3, /* UGSlicePropertyNumTouches */
2629+ false, /* UGSlicePropertyConstructionFinished */
2630+ drag_sub_ /* grail_slice_get_subscription */
2631+ };
2632+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2633+ }
2634+
2635+ {
2636+ ExpectSlices *state = new ExpectSlices;
2637+ state->expected_slice = {
2638+ UGGestureStateUpdate, /* UGSlicePropertyState */
2639+ 0, /* UGSlicePropertyRecognized */
2640+ 3, /* UGSlicePropertyNumTouches */
2641+ false, /* UGSlicePropertyConstructionFinished */
2642+ drag_sub_ /* grail_slice_get_subscription */
2643+ };
2644+ state->SetAverageCount(31);
2645+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2646+ }
2647+
2648+ {
2649+ ExpectSlices *state = new ExpectSlices;
2650+ state->expected_slice = {
2651+ UGGestureStateUpdate, /* UGSlicePropertyState */
2652+ UGGestureTypeDrag, /* UGSlicePropertyRecognized */
2653+ 3, /* UGSlicePropertyNumTouches */
2654+ false, /* UGSlicePropertyConstructionFinished */
2655+ drag_sub_ /* grail_slice_get_subscription */
2656+ };
2657+ state->min_count = 0; /* may or may not happen */
2658+ state->max_count = 1;
2659+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2660+ }
2661+
2662+ {
2663+ ExpectParallelSlices *state = new ExpectParallelSlices;
2664+ ExpectedSlice slice;
2665+
2666+ slice = {
2667+ UGGestureStateUpdate, /* UGSlicePropertyState */
2668+ UGGestureTypeDrag, /* UGSlicePropertyRecognized */
2669+ 3, /* UGSlicePropertyNumTouches */
2670+ true, /* UGSlicePropertyConstructionFinished */
2671+ drag_sub_ /* grail_slice_get_subscription */
2672+ };
2673+ state->expected_slices.push_back(slice);
2674+
2675+ slice = {
2676+ UGGestureStateUpdate, /* UGSlicePropertyState */
2677+ UGGestureTypeTouch, /* UGSlicePropertyRecognized */
2678+ 3, /* UGSlicePropertyNumTouches */
2679+ true, /* UGSlicePropertyConstructionFinished */
2680+ touch_sub_ /* grail_slice_get_subscription */
2681+ };
2682+ state->expected_slices.push_back(slice);
2683+
2684+ state->SetAverageCount(67);
2685+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2686+ }
2687+
2688+ {
2689+ ExpectParallelSlices *state = new ExpectParallelSlices;
2690+ ExpectedSlice slice;
2691+
2692+ slice = {
2693+ UGGestureStateEnd, /* UGSlicePropertyState */
2694+ UGGestureTypeDrag, /* UGSlicePropertyRecognized */
2695+ 3, /* UGSlicePropertyNumTouches */
2696+ true, /* UGSlicePropertyConstructionFinished */
2697+ drag_sub_ /* grail_slice_get_subscription */
2698+ };
2699+ state->expected_slices.push_back(slice);
2700+
2701+ slice = {
2702+ UGGestureStateEnd, /* UGSlicePropertyState */
2703+ UGGestureTypeTouch, /* UGSlicePropertyRecognized */
2704+ 3, /* UGSlicePropertyNumTouches */
2705+ true, /* UGSlicePropertyConstructionFinished */
2706+ touch_sub_ /* grail_slice_get_subscription */
2707+ };
2708+ state->expected_slices.push_back(slice);
2709+
2710+ state->min_count = state->max_count = 1;
2711+
2712+ slice_checker_.AppendState(std::unique_ptr<SliceCheckerState>(state));
2713+ }
2714+}
2715+
2716+TEST_F(ParallelAtomicGestures, Recording) {
2717+ utouch::evemu::Device device("recordings/apple_magic_trackpad/device.prop");
2718+
2719+ /* Pump once to ensure the X server has initialized the device */
2720+ PumpEvents();
2721+ ASSERT_NE(device_, nullptr) << "X server failed to initialize trackpad";
2722+
2723+ utouch::evemu::Recording recording(
2724+ device,
2725+ "recordings/apple_magic_trackpad/3_drag_ended_by_4th_touch.record");
2726+
2727+ /* We use the c++11 future module so any exceptions thrown by the thread can
2728+ * be caught later on. If we used the thread module, exceptions would take the
2729+ * whole thing down. */
2730+ std::future<void> future = std::async(std::launch::async,
2731+ &utouch::evemu::Recording::Play,
2732+ &recording);
2733+
2734+ PumpEvents();
2735+
2736+ future.wait();
2737+
2738+ DeleteSubscriptions();
2739+
2740+ slice_checker_.CheckAllExpectedSlicesReceived();
2741+}

Subscribers

People subscribed via source and target branches