xref: /aosp_15_r20/external/libchrome-gestures/src/split_correcting_filter_interpreter_unittest.cc (revision aed3e5085e770be5b69ce25295ecf6ddf906af95)
1 // Copyright 2011 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <cmath>
6 #include <string>
7 
8 #include <gtest/gtest.h>
9 
10 #include "include/split_correcting_filter_interpreter.h"
11 #include "include/unittest_util.h"
12 #include "include/util.h"
13 
14 using std::string;
15 
16 namespace gestures {
17 
18 class SplitCorrectingFilterInterpreterTest : public ::testing::Test {};
19 
20 class SplitCorrectingFilterInterpreterTestInterpreter :
21       public Interpreter {
22  public:
SplitCorrectingFilterInterpreterTestInterpreter()23   SplitCorrectingFilterInterpreterTestInterpreter()
24       : Interpreter(nullptr, nullptr, false),
25         expect_finger_ids_(true),
26         iteration_(0),
27         expect_warp_on_one_finger_only_(false) {}
28 
SyncInterpret(HardwareState & hwstate,stime_t * timeout)29   virtual void SyncInterpret(HardwareState& hwstate, stime_t* timeout) {
30     if (expect_finger_ids_) {
31       EXPECT_EQ(hwstate.finger_cnt, hwstate.touch_cnt);
32       EXPECT_EQ(hwstate.finger_cnt, expected_ids_.size());
33     }
34     for (size_t i = 0; i < hwstate.finger_cnt; i++) {
35       bool found = SetContainsValue(expected_ids_,
36                                     hwstate.fingers[i].tracking_id);
37       if (expect_finger_ids_)
38         EXPECT_TRUE(found) << iteration_ << ","
39                            << hwstate.fingers[i].tracking_id;
40       if (expect_warp_on_one_finger_only_) {
41         EXPECT_EQ(hwstate.finger_cnt == 1,
42                   (hwstate.fingers[i].flags &
43                    (GESTURES_FINGER_WARP_X | GESTURES_FINGER_WARP_Y)) ==
44                   (GESTURES_FINGER_WARP_X | GESTURES_FINGER_WARP_Y));
45       }
46     }
47     iteration_++;
48   }
49 
HandleTimer(stime_t now,stime_t * timeout)50   virtual void HandleTimer(stime_t now, stime_t* timeout) {}
51 
52   std::set<short> expected_ids_;
53   bool expect_finger_ids_;
54   size_t iteration_;
55   bool expect_warp_on_one_finger_only_;
56 };
57 
58 struct InputEventWithExpectations {
59   FingerState fs[kMaxFingers];
60   short out_ids[kMaxFingers];
61 };
62 
63 namespace {
64 
DoTest(InputEventWithExpectations * events,size_t events_len,bool t5r2)65 void DoTest(InputEventWithExpectations* events, size_t events_len, bool t5r2) {
66   SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
67       = new SplitCorrectingFilterInterpreterTestInterpreter;
68   SplitCorrectingFilterInterpreter interpreter(
69       nullptr, base_interpreter, nullptr);
70   interpreter.Enable();
71 
72   HardwareProperties hwprops = {
73     .right = 100, .bottom = 100,
74     .res_x = 1,
75     .res_y = 1,
76     .orientation_minimum = -1,
77     .orientation_maximum = 2,
78     .max_finger_cnt = 5,
79     .max_touch_cnt = static_cast<unsigned short>(t5r2 ? 2 : 5),
80     .supports_t5r2 = t5r2 ? 1u : 0u,
81     .support_semi_mt = 0,
82     .is_button_pad = 1,
83     .has_wheel = 0,
84     .wheel_is_hi_res = 0,
85     .is_haptic_pad = 0,
86   };
87   TestInterpreterWrapper wrapper(&interpreter, &hwprops);
88 
89   for (size_t i = 0; i < events_len; i++) {
90     InputEventWithExpectations* event = &events[i];
91     // Get finger count
92     unsigned short finger_cnt = 0;
93     for (size_t fidx = 0;
94          fidx < arraysize(event->fs) && event->fs[fidx].tracking_id >= 0;
95          fidx++)
96       finger_cnt += 1;
97     // Set up hardware state
98     HardwareState hs = make_hwstate(0.0, 0, finger_cnt, finger_cnt, event->fs);
99     // Set up expectations
100     base_interpreter->expected_ids_.clear();
101     for (size_t outidx = 0;
102          outidx < arraysize(event->out_ids) && event->out_ids[outidx] >= 0;
103          outidx++)
104       base_interpreter->expected_ids_.insert(event->out_ids[outidx]);
105     stime_t timestamp = -1.0;
106     wrapper.SyncInterpret(hs, &timestamp);
107   }
108 }
109 
110 }  // namespace {}
111 
112 // Test that a full set of FingerStates doesn't cause a hang
TEST(SplitCorrectingFilterInterpreterTest,FullFingerSetTest)113 TEST(SplitCorrectingFilterInterpreterTest, FullFingerSetTest) {
114   InputEventWithExpectations events[2];
115 
116   for (size_t i = 0; i < kMaxFingers; i++) {
117     short id = i + 100;
118     events[0].fs[i].tracking_id = id;
119     events[0].out_ids[i] = id;
120   }
121 
122   // The test requires a second event to validate the finger states
123   events[1] = events[0];
124 
125   DoTest(events, arraysize(events), false);
126 }
127 
128 struct InCoords {
129   short id_;
130   float x_, y_, pressure_;
131 };
132 
133 struct FalseMergeInputs {
134   stime_t timestamp;
135   InCoords in[2];
136 };
137 
138 // Tests that when two fingers are scrolling and it looks like a merge
139 // at the beginning, we break out of merging.
TEST(SplitCorrectingFilterInterpreterTest,FalseMergeTest)140 TEST(SplitCorrectingFilterInterpreterTest, FalseMergeTest) {
141   FalseMergeInputs inputs[] = {
142     { 1324.3365, { { 66, 58.66, 16.60,  5.65 }, { -1,  0.00,  0.00,  0.00 } } },
143     { 1324.3474, { { 66, 61.41, 17.00, 36.70 }, { 67, 53.33, 17.10, 17.30 } } },
144     { 1324.3587, { { 66, 60.83, 17.30, 61.93 }, { 67, 53.00, 17.30, 50.28 } } },
145     { 1324.3699, { { 66, 60.66, 17.40, 65.81 }, { 67, 53.08, 17.50, 58.04 } } },
146     { 1324.3811, { { 66, 60.66, 17.40, 67.75 }, { 67, 53.00, 17.60, 58.04 } } },
147     { 1324.3923, { { 66, 60.58, 17.60, 67.75 }, { 67, 53.00, 17.70, 61.93 } } },
148     { 1324.4036, { { 66, 60.50, 18.00, 71.63 }, { 67, 53.00, 18.20, 65.81 } } },
149     { 1324.4152, { { 66, 60.58, 18.30, 73.57 }, { 67, 53.00, 18.50, 65.81 } } },
150     { 1324.4265, { { 66, 60.58, 19.00, 71.63 }, { 67, 52.91, 19.20, 67.75 } } },
151     { 1324.4377, { { 66, 60.58, 19.50, 71.63 }, { 67, 53.00, 19.70, 65.81 } } },
152     { 1324.4487, { { 66, 60.66, 20.10, 69.69 }, { 67, 52.91, 20.40, 63.87 } } },
153     { 1324.4596, { { 66, 60.58, 20.90, 69.69 }, { 67, 53.00, 21.10, 65.81 } } },
154     { 1324.4705, { { 66, 60.58, 21.50, 71.63 }, { 67, 53.00, 21.80, 65.81 } } },
155     { 1324.4815, { { 66, 60.50, 22.40, 73.57 }, { 67, 53.08, 22.60, 67.75 } } },
156     { 1324.4926, { { 66, 60.75, 23.10, 77.45 }, { 67, 53.00, 23.30, 69.69 } } },
157     { 1324.5039, { { 66, 60.75, 24.00, 77.45 }, { 67, 53.00, 24.10, 69.69 } } },
158     { 1324.5152, { { 66, 60.66, 24.50, 77.45 }, { 67, 53.00, 24.70, 71.63 } } },
159   };
160 
161   SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
162       = new SplitCorrectingFilterInterpreterTestInterpreter;
163   SplitCorrectingFilterInterpreter interpreter(
164       nullptr, base_interpreter, nullptr);
165   interpreter.Enable();
166 
167   HardwareProperties hwprops = {
168     .right = 100, .bottom = 100,
169     .res_x = 1,
170     .res_y = 1,
171     .orientation_minimum = -1,
172     .orientation_maximum = 2,
173     .max_finger_cnt = 5,
174     .max_touch_cnt = 5,
175     .supports_t5r2 = 0,
176     .support_semi_mt = 0,
177     .is_button_pad = 1,
178     .has_wheel = 0,
179     .wheel_is_hi_res = 0,
180     .is_haptic_pad = 0,
181   };
182   TestInterpreterWrapper wrapper(&interpreter, &hwprops);
183 
184   for (size_t i = 0; i < arraysize(inputs); i++) {
185     const FalseMergeInputs& input = inputs[i];
186     const size_t max_finger_cnt = arraysize(input.in);
187     // Get finger count
188     unsigned short finger_cnt = 0;
189     for (size_t fidx = 0;
190          fidx < max_finger_cnt && input.in[fidx].id_ >= 0;
191          fidx++)
192       finger_cnt += 1;
193     // Set up hardware state
194     FingerState fs[max_finger_cnt];
195     for (size_t fidx = 0; fidx < finger_cnt; fidx++) {
196       memset(&fs[fidx], 0, sizeof(fs[fidx]));
197       fs[fidx].position_x  = input.in[fidx].x_;
198       fs[fidx].position_y  = input.in[fidx].y_;
199       fs[fidx].pressure    = input.in[fidx].pressure_;
200       fs[fidx].tracking_id = input.in[fidx].id_;
201     }
202     HardwareState hs =
203         make_hwstate(input.timestamp, 0, finger_cnt, finger_cnt, &fs[0]);
204     // Set up expectations
205     base_interpreter->expect_finger_ids_ = false;
206     if (i == 1) {
207       // if the second iteration, expect merging to occur
208       base_interpreter->expect_finger_ids_ = true;
209       base_interpreter->expected_ids_.clear();
210       base_interpreter->expected_ids_.insert(inputs[0].in[0].id_);
211     } else if (i == (arraysize(inputs) - 1)) {
212       // if the final iteration, expect no merging
213       base_interpreter->expect_finger_ids_ = true;
214       base_interpreter->expected_ids_.clear();
215       base_interpreter->expected_ids_.insert(inputs[i].in[0].id_);
216       base_interpreter->expected_ids_.insert(inputs[i].in[1].id_);
217     }
218     // if the last iteration
219     stime_t timestamp = -1.0;
220 
221     wrapper.SyncInterpret(hs, &timestamp);
222     base_interpreter->expect_warp_on_one_finger_only_ = true;
223   }
224 }
225 
226 namespace {
227 struct DistFromPointToLineRec {
228   // line is (x0, y0) to (x1, y1). Point is (px, py). Expected dist is dist.
229   float x0, y0, x1, y1, px, py, dist;
230 };
231 
WeakFloatEq(float f_a,float f_b)232 bool WeakFloatEq(float f_a, float f_b) {
233   return fabsf(f_a - f_b) < 0.001;
234 }
235 }  // namespace
236 
237 // This test sets up some example inputs to send through the
238 // DistFromPointToLine function. It also transforms these inputs in a variety
239 // of ways to further stress this function.
TEST(SplitCorrectingFilterInterpreterTest,DistFromPointToLineTest)240 TEST(SplitCorrectingFilterInterpreterTest, DistFromPointToLineTest) {
241   // Imagine a 3-4-5 triangle. theta is the angle between 4 and 5.
242   const float theta = acosf(4.0 / 5.0);
243 
244   DistFromPointToLineRec tests[] = {
245     { 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0 },
246     { 1.0, 1.0, 2.0, 1.0, 2.0, 2.0, 1.0 },
247     { 1.0, 1.0, 2.0, 0.0, 2.0, 1.0, sqrtf(0.5) },
248     { 1.0, 1.0, 2.0, 1.0, 4.0, 2.0, 1.0 },
249     { 0.0, 0.0, static_cast<float>(4.0 * cosf(theta)),
250       static_cast<float>(4.0 * sinf(theta)), 5.0, 0.0, 3.0 },
251   };
252 
253   // For each of the input tests, these are a variety of transforms we apply.
254   // There is a for loop for each type of transform. Because they are nested,
255   // this means we test every combination.
256   for (size_t i = 0; i < arraysize(tests); i++) {
257     for (int h_shift = 1; h_shift <= 4; h_shift++) {
258       float horiz_shift = static_cast<float>(h_shift) / 2.0;
259       for (int v_shift = 1; v_shift <= 4; v_shift++) {
260         float vert_shift = static_cast<float>(v_shift) / 2.0;
261         for (size_t h_invert = 0; h_invert < 2; h_invert++) {
262           float horiz_invert = h_invert ? 1.0 : -1.0;
263           for (size_t v_invert = 0; v_invert < 2; v_invert++) {
264             float vert_invert = v_invert ? 1.0 : -1.0;
265             for (size_t swap_inputs = 0; swap_inputs < 2; swap_inputs++) {
266               DistFromPointToLineRec rec = {
267                 (tests[i].x0 + horiz_shift) * horiz_invert,
268                 (tests[i].y0 + vert_shift) * vert_invert,
269                 (tests[i].x1 + horiz_shift) * horiz_invert,
270                 (tests[i].y1 + vert_shift) * vert_invert,
271                 (tests[i].px + horiz_shift) * horiz_invert,
272                 (tests[i].py + vert_shift) * vert_invert,
273                 tests[i].dist,
274               };
275               if (swap_inputs) {
276                 std::swap(rec.x0, rec.x1);
277                 std::swap(rec.y0, rec.y1);
278               }
279               float actual = sqrtf(
280                   SplitCorrectingFilterInterpreter::DistSqFromPointToLine(
281                       rec.x0, rec.y0,
282                       rec.x1, rec.y1,
283                       rec.px, rec.py));
284               EXPECT_TRUE(WeakFloatEq(
285                   rec.dist,
286                   actual)) << "(" << rec.x0 << ", "
287                            << rec.y0 << ") ("
288                            << rec.x1 << ", "
289                            << rec.y1 << ") and ("
290                            << rec.px << ", "
291                            << rec.py << "): got "
292                            << actual << ", expected "
293                            << rec.dist;
294             }
295           }
296         }
297       }
298     }
299   }
300 }
301 
302 struct LumpyThumbSplitTestInputs {
303   stime_t now;
304   unsigned short buttons_down;
305   float x0, y0, pressure0;
306   short id0;
307   float x1, y1, pressure1;
308   short id1;
309 };
310 
311 // Test that a thumbsplit on lumpy doesn't cause two fingers to appear
TEST(SplitCorrectingFilterInterpreterTest,LumpyThumbSplitTest)312 TEST(SplitCorrectingFilterInterpreterTest, LumpyThumbSplitTest) {
313   SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
314       = new SplitCorrectingFilterInterpreterTestInterpreter;
315   SplitCorrectingFilterInterpreter interpreter(
316       nullptr, base_interpreter, nullptr);
317   interpreter.Enable();
318 
319   base_interpreter->expected_ids_.insert(2);
320   base_interpreter->expect_finger_ids_ = true;
321 
322   HardwareProperties hwprops = {
323     .right = 106.666672,
324     .bottom = 68.0,
325     .res_x = 1.0,
326     .res_y = 1.0,
327     .orientation_minimum = -1,
328     .orientation_maximum = 2,
329     .max_finger_cnt = 15,
330     .max_touch_cnt = 5,
331     .supports_t5r2 = 0,
332     .support_semi_mt = 0,
333     .is_button_pad = 1,
334     .has_wheel = 0,
335     .wheel_is_hi_res = 0,
336     .is_haptic_pad = 0,
337   };
338   TestInterpreterWrapper wrapper(&interpreter, &hwprops);
339 
340   LumpyThumbSplitTestInputs inputs[] = {
341     { 8.5812, 0, 52.66, 66.09,  79.39, 2,  0.00,  0.00,  0.00, 0 },
342     { 8.5904, 0, 52.66, 66.09,  81.33, 2,  0.00,  0.00,  0.00, 0 },
343     { 8.6087, 0, 52.66, 66.00,  81.33, 2,  0.00,  0.00,  0.00, 0 },
344     { 8.6179, 0, 52.66, 65.80,  83.27, 2,  0.00,  0.00,  0.00, 0 },
345     { 8.6365, 0, 52.58, 65.80,  85.21, 2,  0.00,  0.00,  0.00, 0 },
346     { 8.6457, 0, 52.41, 65.59,  89.09, 2,  0.00,  0.00,  0.00, 0 },
347     { 8.6550, 0, 52.25, 65.59,  91.03, 2,  0.00,  0.00,  0.00, 0 },
348     { 8.6642, 0, 52.00, 65.59,  92.97, 2,  0.00,  0.00,  0.00, 0 },
349     { 8.6735, 0, 51.91, 65.59,  96.85, 2,  0.00,  0.00,  0.00, 0 },
350     { 8.6828, 0, 51.58, 65.40, 102.67, 2,  0.00,  0.00,  0.00, 0 },
351     { 8.6921, 0, 51.33, 65.30, 104.61, 2,  0.00,  0.00,  0.00, 0 },
352     { 8.7015, 0, 51.25, 65.30, 106.55, 2,  0.00,  0.00,  0.00, 0 },
353     { 8.7110, 0, 51.00, 65.20, 110.43, 2,  0.00,  0.00,  0.00, 0 },
354     { 8.7205, 0, 50.83, 65.20, 116.26, 2,  0.00,  0.00,  0.00, 0 },
355     { 8.7298, 0, 50.41, 65.20, 118.20, 2,  0.00,  0.00,  0.00, 0 },
356     { 8.7393, 0, 50.08, 65.00, 118.20, 2,  0.00,  0.00,  0.00, 0 },
357     { 8.7487, 0, 49.66, 65.00, 118.20, 2,  0.00,  0.00,  0.00, 0 },
358     { 8.7582, 0, 49.25, 64.90, 118.20, 2,  0.00,  0.00,  0.00, 0 },
359     { 8.7678, 0, 48.83, 64.70, 118.20, 2,  0.00,  0.00,  0.00, 0 },
360     { 8.7773, 0, 48.58, 64.50, 118.20, 2,  0.00,  0.00,  0.00, 0 },
361     { 8.7869, 1, 48.33, 64.50, 118.20, 2,  0.00,  0.00,  0.00, 0 },
362     { 8.8088, 1, 49.83, 64.59, 118.20, 2, 39.91, 60.60, 98.79, 4 },
363     { 8.8213, 1, 45.91, 61.90, 191.93, 2,  0.00,  0.00,  0.00, 0 },
364   };
365   for (size_t i = 0; i < arraysize(inputs); i++) {
366     const LumpyThumbSplitTestInputs& input = inputs[i];
367     FingerState fs[2] = {
368       { 0, 0, 0, 0, input.pressure0, 0, input.x0, input.y0, input.id0, 0 },
369       { 0, 0, 0, 0, input.pressure1, 0, input.x1, input.y1, input.id1, 0 },
370     };
371     unsigned short finger_cnt = input.id1 ? 2 : 1;
372     HardwareState hs =
373         make_hwstate(input.now, input.buttons_down, finger_cnt, finger_cnt, fs);
374     stime_t timeout = NO_DEADLINE;
375     wrapper.SyncInterpret(hs, &timeout);
376   }
377   EXPECT_EQ(arraysize(inputs), base_interpreter->iteration_);
378 }
379 
380 // Tests that close fingers that are scrolling don't get incorrectly merged.
TEST(SplitCorrectingFilterInterpreterTest,TwoFingerScrollTest)381 TEST(SplitCorrectingFilterInterpreterTest, TwoFingerScrollTest) {
382   InputEventWithExpectations events[] = {
383     {{{ 0, 0, 0, 0, 7.600345, 0, 56.250000, 61.400002, 3134, 0 },
384       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
385       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
386      { 3134, -1 }},
387     {{{ 0, 0, 0, 0, 17.302191, 0, 56.583336, 61.200001, 3134, 0 },
388       { 0, 0, 0, 0, 5.659976, 0, 42.000000, 64.099998, 3135, 0 },
389       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
390      { 3134, 3135, -1 }},
391     {{{ 0, 0, 0, 0, 23.123301, 0, 56.416668, 61.200001, 3134, 0 },
392       { 0, 0, 0, 0, 15.361822, 0, 42.000000, 64.000000, 3135, 0 },
393       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
394      { 3134, 3135, -1 }},
395     {{{ 0, 0, 0, 0, 28.944407, 0, 56.333336, 61.100002, 3134, 0 },
396       { 0, 0, 0, 0, 27.004038, 0, 41.916668, 63.600002, 3135, 0 },
397       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
398      { 3134, 3135, -1 }},
399     {{{ 0, 0, 0, 0, 30.884779, 0, 56.416668, 60.700001, 3134, 0 },
400       { 0, 0, 0, 0, 34.765518, 0, 41.916668, 62.700001, 3135, 0 },
401       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
402      { 3134, 3135, -1 }},
403     {{{ 0, 0, 0, 0, 34.765518, 0, 56.500000, 59.799999, 3134, 0 },
404       { 0, 0, 0, 0, 38.646255, 0, 42.000000, 61.600002, 3135, 0 },
405       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
406      { 3134, 3135, -1 }},
407     {{{ 0, 0, 0, 0, 32.825150, 0, 56.750000, 58.799999, 3134, 0 },
408       { 0, 0, 0, 0, 40.586628, 0, 42.166668, 60, 3135, 0 },
409       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
410      { 3134, 3135, -1 }},
411     {{{ 0, 0, 0, 0, 28.944407, 0, 56.916668, 57.400002, 3134, 0 },
412       { 0, 0, 0, 0, 40.586628, 0, 42.500000, 57.700001, 3135, 0 },
413       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
414      { 3134, 3135, -1 }},
415     {{{ 0, 0, 0, 0, 34.765518, 0, 57.333336, 55.200001, 3134, 0 },
416       { 0, 0, 0, 0, 36.705887, 0, 43.083336, 54.299999, 3135, 0 },
417       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
418      { 3134, 3135, -1 }},
419     {{{ 0, 0, 0, 0, 32.825150, 0, 57.916668, 52.100002, 3134, 0 },
420       { 0, 0, 0, 0, 34.765518, 0, 43.666668, 49.900002, 3135, 0 },
421       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
422      { 3134, 3135, -1 }},
423     {{{ 0, 0, 0, 0, 30.884779, 0, 58.666668, 47.900002, 3134, 0 },
424       { 0, 0, 0, 0, 34.765518, 0, 44.250000, 44.500000, 3135, 0 },
425       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
426      { 3134, 3135, -1 }},
427     {{{ 0, 0, 0, 0, 23.123301, 0, 59.666668, 42.799999, 3134, 0 },
428       { 0, 0, 0, 0, 44.467365, 0, 45.583336, 38.400002, 3135, 0 },
429       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
430      { 3134, 3135, -1 }},
431     {{{ 0, 0, 0, 0, 28.944407, 0, 61.500000, 34.299999, 3134, 0 },
432       { 0, 0, 0, 0, 27.004038, 0, 46.833336, 30.900000, 3135, 0 },
433       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
434      { 3134, 3135, -1 }},
435     {{{ 0, 0, 0, 0, 28.944407, 0, 63.166668, 28.000000, 3134, 0 },
436       { 0, 0, 0, 0, 32.825150, 0, 48.666668, 23.700001, 3135, 0 },
437       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
438      { 3134, 3135, -1 }},
439     {{{ 0, 0, 0, 0, 28.944407, 0, 65.666672, 20.400000, 3134, 0 },
440       { 0, 0, 0, 0, 34.765518, 0, 50.083336, 18.400000, 3135, 0 },
441       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
442      { 3134, 3135, -1 }},
443     {{{ 0, 0, 0, 0, 21.182930, 0, 67.500000, 15.200000, 3134, 0 },
444       { 0, 0, 0, 0, 17.302191, 0, 52.083336, 12.900001, 3135, 0 },
445       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
446      { 3134, 3135, -1 }},
447     {{{ 0, 0, 0, 0, 1.779237, 0, 55.500000, 4.000000, 3135, 0 },
448       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
449       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
450      { 3135, -1 }}
451   };
452 
453   DoTest(events, arraysize(events), false);
454 }
455 
456 // Tests that a thumb-edge gets correctly merged to a single contact
TEST(SplitCorrectingFilterInterpreterTest,ThumbDragTest)457 TEST(SplitCorrectingFilterInterpreterTest, ThumbDragTest) {
458   InputEventWithExpectations events[] = {
459     {{{ 0, 0, 0, 0, 9.540714, 0, 96.416672, 20.300001, 3087, 0 },
460       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
461       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
462      { 3087, -1 }},
463     {{{ 0, 0, 0, 0, 40.586628, 0, 96.250000, 20.600000, 3087, 0 },
464       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
465       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
466      { 3087, -1 }},
467     {{{ 0, 0, 0, 0, 65.811432, 0, 96.083336, 20.800001, 3087, 0 },
468       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
469       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
470      { 3087, -1 }},
471     {{{ 0, 0, 0, 0, 81.334381, 0, 96.000000, 21.000000, 3087, 0 },
472       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
473       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
474      { 3087, -1 }},
475     {{{ 0, 0, 0, 0, 91.036232, 0, 95.916672, 21.100000, 3087, 0 },
476       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
477       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
478      { 3087, -1 }},
479     {{{ 0, 0, 0, 0, 98.797707, 0, 95.916672, 21.100000, 3087, 0 },
480       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
481       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
482      { 3087, -1 }},
483     {{{ 0, 0, 0, 0, 104.618820, 0, 95.916672, 21.100000, 3087, 0 },
484       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
485       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
486      { 3087, -1 }},
487     {{{ 0, 0, 0, 0, 79.394012, 0, 95.916672, 21.700001, 3087, 0 },
488       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
489       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
490      { 3087, -1 }},
491     {{{ 0, 0, 0, 0, 83.274757, 0, 95.916672, 22.100000, 3087, 0 },
492       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
493       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
494      { 3087, -1 }},
495     {{{ 0, 0, 0, 0, 85.215126, 0, 95.916672, 22.300001, 3087, 0 },
496       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
497       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
498      { 3087, -1 }},
499     {{{ 0, 0, 0, 0, 89.095863, 0, 95.833336, 22.500000, 3087, 0 },
500       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
501       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
502      { 3087, -1 }},
503     {{{ 0, 0, 0, 0, 92.976601, 0, 95.666672, 22.700001, 3087, 0 },
504       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
505       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
506      { 3087, -1 }},
507     {{{ 0, 0, 0, 0, 94.916969, 0, 95.583336, 22.900000, 3087, 0 },
508       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
509       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
510      { 3087, -1 }},
511     {{{ 0, 0, 0, 0, 98.797707, 0, 95.416672, 23.000000, 3087, 0 },
512       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
513       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
514      { 3087, -1 }},
515     {{{ 0, 0, 0, 0, 100.738075, 0, 95.166672, 23.100000, 3087, 0 },
516       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
517       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
518      { 3087, -1 }},
519     {{{ 0, 0, 0, 0, 106.559189, 0, 94.916672, 23.200001, 3087, 0 },
520       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
521       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
522      { 3087, -1 }},
523     {{{ 0, 0, 0, 0, 110.439926, 0, 94.666672, 23.400000, 3087, 0 },
524       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
525       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
526      { 3087, -1 }},
527     {{{ 0, 0, 0, 0, 112.380295, 0, 94.333336, 23.600000, 3087, 0 },
528       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
529       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
530      { 3087, -1 }},
531     {{{ 0, 0, 0, 0, 114.320663, 0, 93.750000, 26.600000, 3087, 0 },
532       { 0, 0, 0, 0, 102.678452, 0, 92.833336, 17.100000, 3088, 0 },
533       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
534      { 3087, -1 }},
535     {{{ 0, 0, 0, 0, 116.261032, 0, 93.583336, 26.600000, 3087, 0 },
536       { 0, 0, 0, 0, 100.738075, 0, 92.666672, 17.200001, 3088, 0 },
537       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
538      { 3087, -1 }},
539     {{{ 0, 0, 0, 0, 96.857338, 0, 92.333336, 20.700001, 3088, 0 },
540       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
541       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
542      { 3087, -1 }},
543     {{{ 0, 0, 0, 0, 96.857338, 0, 92.083336, 20.700001, 3088, 0 },
544       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
545       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
546      { 3087, -1 }},
547     {{{ 0, 0, 0, 0, 98.797707, 0, 91.750000, 20.700001, 3088, 0 },
548       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
549       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
550      { 3087, -1 }},
551     {{{ 0, 0, 0, 0, 118.201401, 0, 91.416672, 21.500000, 3088, 0 },
552       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
553       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
554      { 3087, -1 }},
555     {{{ 0, 0, 0, 0, 118.201401, 0, 90.916672, 22.000000, 3088, 0 },
556       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
557       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
558      { 3087, -1 }},
559     {{{ 0, 0, 0, 0, 116.261032, 0, 90.416672, 22.800001, 3088, 0 },
560       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
561       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
562      { 3087, -1 }},
563     {{{ 0, 0, 0, 0, 118.201401, 0, 89.916672, 23.400000, 3088, 0 },
564       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
565       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
566      { 3087, -1 }},
567     {{{ 0, 0, 0, 0, 178.352859, 0, 89.416672, 23.700001, 3088, 0 },
568       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
569       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
570      { 3087, -1 }},
571     {{{ 0, 0, 0, 0, 178.352859, 0, 88.916672, 23.900000, 3088, 0 },
572       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
573       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
574      { 3087, -1 }},
575     {{{ 0, 0, 0, 0, 118.201401, 0, 87.583336, 27.200001, 3088, 0 },
576       { 0, 0, 0, 0, 91.036232, 0, 86.166672, 18.000000, 3089, 0 },
577       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
578      { 3087, -1 }},
579     {{{ 0, 0, 0, 0, 118.201401, 0, 87.333336, 27.300001, 3088, 0 },
580       { 0, 0, 0, 0, 87.155495, 0, 85.916672, 18.100000, 3089, 0 },
581       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
582      { 3087, -1 }},
583     {{{ 0, 0, 0, 0, 85.215126, 0, 85.583336, 21.600000, 3089, 0 },
584       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
585       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
586      { 3087, -1 }},
587     {{{ 0, 0, 0, 0, 118.201401, 0, 85.416672, 22.700001, 3089, 0 },
588       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
589       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
590      { 3087, -1 }},
591     {{{ 0, 0, 0, 0, 118.201401, 0, 85.083336, 23.400000, 3089, 0 },
592       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
593       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
594      { 3087, -1 }},
595     {{{ 0, 0, 0, 0, 118.201401, 0, 84.583336, 23.900000, 3089, 0 },
596       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
597       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
598      { 3087, -1 }},
599     {{{ 0, 0, 0, 0, 118.201401, 0, 84.000000, 24.700001, 3089, 0 },
600       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
601       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
602      { 3087, -1 }},
603     {{{ 0, 0, 0, 0, 180.293228, 0, 83.500000, 25.200001, 3089, 0 },
604       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
605       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
606      { 3087, -1 }},
607     {{{ 0, 0, 0, 0, 182.233597, 0, 82.916672, 25.500000, 3089, 0 },
608       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
609       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
610      { 3087, -1 }},
611     {{{ 0, 0, 0, 0, 180.293228, 0, 82.333336, 25.800001, 3089, 0 },
612       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
613       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
614      { 3087, -1 }},
615     {{{ 0, 0, 0, 0, 106.559189, 0, 80.916672, 32.200001, 3089, 0 },
616       { 0, 0, 0, 0, 118.201401, 0, 78.916672, 22.500000, 3090, 0 },
617       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
618      { 3087, -1 }},
619     {{{ 0, 0, 0, 0, 110.439926, 0, 80.583336, 32.299999, 3089, 0 },
620       { 0, 0, 0, 0, 116.261032, 0, 78.500000, 22.700001, 3090, 0 },
621       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
622      { 3087, -1 }},
623     {{{ 0, 0, 0, 0, 114.320663, 0, 77.833336, 26.100000, 3090, 0 },
624       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
625       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
626      { 3087, -1 }},
627     {{{ 0, 0, 0, 0, 118.201401, 0, 77.583336, 26.800001, 3090, 0 },
628       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
629       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
630      { 3087, -1 }},
631     {{{ 0, 0, 0, 0, 114.320663, 0, 77.250000, 27.900000, 3090, 0 },
632       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
633       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
634      { 3087, -1 }},
635     {{{ 0, 0, 0, 0, 118.201401, 0, 76.750000, 28.700001, 3090, 0 },
636       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
637       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
638      { 3087, -1 }},
639     {{{ 0, 0, 0, 0, 186.114334, 0, 76.250000, 29.100000, 3090, 0 },
640       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
641       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
642      { 3087, -1 }},
643     {{{ 0, 0, 0, 0, 118.201401, 0, 75.000000, 32.900002, 3090, 0 },
644       { 0, 0, 0, 0, 100.738075, 0, 72.666672, 23.900000, 3091, 0 },
645       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
646      { 3087, -1 }},
647     {{{ 0, 0, 0, 0, 118.201401, 0, 74.666672, 33.000000, 3090, 0 },
648       { 0, 0, 0, 0, 96.857338, 0, 72.250000, 24.100000, 3091, 0 },
649       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
650      { 3087, -1 }},
651     {{{ 0, 0, 0, 0, 118.201401, 0, 72.333336, 29.900000, 3090, 0 },
652       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
653       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
654      { 3087, -1 }},
655     {{{ 0, 0, 0, 0, 118.201401, 0, 71.916672, 29.900000, 3090, 0 },
656       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
657       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
658      { 3087, -1 }},
659     {{{ 0, 0, 0, 0, 118.201401, 0, 71.416672, 30.100000, 3090, 0 },
660       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
661       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
662      { 3087, -1 }},
663     {{{ 0, 0, 0, 0, 118.201401, 0, 70.833336, 30.600000, 3090, 0 },
664       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
665       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
666      { 3087, -1 }},
667     {{{ 0, 0, 0, 0, 184.173965, 0, 70.333336, 30.900000, 3090, 0 },
668       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
669       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
670      { 3087, -1 }},
671     {{{ 0, 0, 0, 0, 188.054703, 0, 69.750000, 31.100000, 3090, 0 },
672       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
673       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
674      { 3087, -1 }},
675     {{{ 0, 0, 0, 0, 188.054703, 0, 69.166672, 31.300001, 3090, 0 },
676       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
677       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
678      { 3087, -1 }},
679     {{{ 0, 0, 0, 0, 118.201401, 0, 65.583336, 28.500000, 3090, 0 },
680       { 0, 0, 0, 0, 104.618820, 0, 68.416672, 37.700001, 3092, 0 },
681       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
682      { 3087, -1 }},
683     {{{ 0, 0, 0, 0, 118.201401, 0, 65.166672, 28.600000, 3090, 0 },
684       { 0, 0, 0, 0, 108.499557, 0, 68.083336, 37.799999, 3092, 0 },
685       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
686      { 3087, -1 }},
687     {{{ 0, 0, 0, 0, 118.201401, 0, 64.666672, 31.900000, 3090, 0 },
688       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
689       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
690      { 3087, -1 }},
691     {{{ 0, 0, 0, 0, 118.201401, 0, 64.416672, 32.400002, 3090, 0 },
692       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
693       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
694      { 3087, -1 }},
695     {{{ 0, 0, 0, 0, 118.201401, 0, 63.916668, 32.900002, 3090, 0 },
696       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
697       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
698      { 3087, -1 }},
699     {{{ 0, 0, 0, 0, 118.201401, 0, 63.500000, 33.799999, 3090, 0 },
700       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
701       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
702      { 3087, -1 }},
703     {{{ 0, 0, 0, 0, 118.201401, 0, 62.833336, 34.400002, 3090, 0 },
704       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
705       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
706      { 3087, -1 }},
707     {{{ 0, 0, 0, 0, 118.201401, 0, 61.833336, 38.600002, 3090, 0 },
708       { 0, 0, 0, 0, 110.439926, 0, 58.666668, 30, 3093, 0 },
709       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
710      { 3087, -1 }},
711     {{{ 0, 0, 0, 0, 118.201401, 0, 61.416668, 38.700001, 3090, 0 },
712       { 0, 0, 0, 0, 106.559189, 0, 58.250000, 30.200001, 3093, 0 },
713       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
714      { 3087, -1 }},
715     {{{ 0, 0, 0, 0, 118.201401, 0, 58.333336, 35.799999, 3090, 0 },
716       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
717       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
718      { 3087, -1 }},
719     {{{ 0, 0, 0, 0, 118.201401, 0, 57.916668, 35.900002, 3090, 0 },
720       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
721       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
722      { 3087, -1 }},
723     {{{ 0, 0, 0, 0, 118.201401, 0, 57.333336, 36.200001, 3090, 0 },
724       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
725       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
726      { 3087, -1 }},
727     {{{ 0, 0, 0, 0, 188.054703, 0, 56.750000, 36.500000, 3090, 0 },
728       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
729       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
730      { 3087, -1 }},
731     {{{ 0, 0, 0, 0, 191.935440, 0, 56.083336, 36.700001, 3090, 0 },
732       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
733       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
734      { 3087, -1 }},
735     {{{ 0, 0, 0, 0, 193.875809, 0, 55.416668, 37.000000, 3090, 0 },
736       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
737       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
738      { 3087, -1 }},
739     {{{ 0, 0, 0, 0, 118.201401, 0, 51.000000, 35.000000, 3090, 0 },
740       { 0, 0, 0, 0, 104.618820, 0, 54.750000, 43.600002, 3094, 0 },
741       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
742      { 3087, -1 }},
743     {{{ 0, 0, 0, 0, 118.201401, 0, 51.166668, 38.200001, 3090, 0 },
744       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
745       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
746      { 3087, -1 }},
747     {{{ 0, 0, 0, 0, 118.201401, 0, 50.916668, 38.700001, 3090, 0 },
748       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
749       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
750      { 3087, -1 }},
751     {{{ 0, 0, 0, 0, 118.201401, 0, 50.416668, 39.200001, 3090, 0 },
752       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
753       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
754      { 3087, -1 }},
755     {{{ 0, 0, 0, 0, 118.201401, 0, 49.750000, 39.600002, 3090, 0 },
756       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
757       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
758      { 3087, -1 }},
759     {{{ 0, 0, 0, 0, 112.380295, 0, 45.500000, 36.400002, 3090, 0 },
760       { 0, 0, 0, 0, 118.201401, 0, 49.500000, 44.500000, 3095, 0 },
761       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
762      { 3087, -1 }},
763     {{{ 0, 0, 0, 0, 110.439926, 0, 45.166668, 36.600002, 3090, 0 },
764       { 0, 0, 0, 0, 118.201401, 0, 49.166668, 44.600002, 3095, 0 },
765       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
766      { 3087, -1 }},
767     {{{ 0, 0, 0, 0, 118.201401, 0, 46.083336, 42.200001, 3095, 0 },
768       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
769       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
770      { 3087, -1 }},
771     {{{ 0, 0, 0, 0, 118.201401, 0, 45.666668, 42.200001, 3095, 0 },
772       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
773       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
774      { 3087, -1 }},
775     {{{ 0, 0, 0, 0, 118.201401, 0, 45.083336, 42.299999, 3095, 0 },
776       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
777       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
778      { 3087, -1 }},
779     {{{ 0, 0, 0, 0, 118.201401, 0, 44.416668, 42.500000, 3095, 0 },
780       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
781       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
782      { 3087, -1 }},
783     {{{ 0, 0, 0, 0, 118.201401, 0, 43.750000, 42.900002, 3095, 0 },
784       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
785       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
786      { 3087, -1 }},
787     {{{ 0, 0, 0, 0, 188.054703, 0, 43.166668, 43.200001, 3095, 0 },
788       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
789       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
790      { 3087, -1 }},
791     {{{ 0, 0, 0, 0, 184.173965, 0, 42.500000, 43.500000, 3095, 0 },
792       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
793       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
794      { 3087, -1 }},
795     {{{ 0, 0, 0, 0, 176.412491, 0, 41.833336, 43.900002, 3095, 0 },
796       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
797       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
798      { 3087, -1 }},
799     {{{ 0, 0, 0, 0, 108.499557, 0, 41.666668, 49.900002, 3095, 0 },
800       { 0, 0, 0, 0, 118.201401, 0, 37.250000, 42.000000, 3096, 0 },
801       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
802      { 3087, -1 }},
803     {{{ 0, 0, 0, 0, 112.380295, 0, 41.333336, 50, 3095, 0 },
804       { 0, 0, 0, 0, 118.201401, 0, 36.916668, 42.200001, 3096, 0 },
805       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
806      { 3087, -1 }},
807     {{{ 0, 0, 0, 0, 118.201401, 0, 37.416668, 46.400002, 3096, 0 },
808       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
809       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
810      { 3087, -1 }},
811     {{{ 0, 0, 0, 0, 118.201401, 0, 37.083336, 46.600002, 3096, 0 },
812       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
813       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
814      { 3087, -1 }},
815     {{{ 0, 0, 0, 0, 118.201401, 0, 36.583336, 46.900002, 3096, 0 },
816       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
817       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
818      { 3087, -1 }},
819     {{{ 0, 0, 0, 0, 118.201401, 0, 36.000000, 47.299999, 3096, 0 },
820       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
821       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
822      { 3087, -1 }},
823     {{{ 0, 0, 0, 0, 176.412491, 0, 35.416668, 47.500000, 3096, 0 },
824       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
825       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
826      { 3087, -1 }},
827     {{{ 0, 0, 0, 0, 186.114334, 0, 34.916668, 47.799999, 3096, 0 },
828       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
829       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
830      { 3087, -1 }},
831     {{{ 0, 0, 0, 0, 186.114334, 0, 34.333336, 48.100002, 3096, 0 },
832       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
833       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
834      { 3087, -1 }},
835     {{{ 0, 0, 0, 0, 184.173965, 0, 33.666668, 48.600002, 3096, 0 },
836       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
837       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
838      { 3087, -1 }},
839     {{{ 0, 0, 0, 0, 184.173965, 0, 33.000000, 49.100002, 3096, 0 },
840       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
841       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
842      { 3087, -1 }},
843     {{{ 0, 0, 0, 0, 186.114334, 0, 32.333336, 49.600002, 3096, 0 },
844       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
845       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
846      { 3087, -1 }},
847     {{{ 0, 0, 0, 0, 184.173965, 0, 31.666668, 50.200001, 3096, 0 },
848       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
849       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
850      { 3087, -1 }},
851     {{{ 0, 0, 0, 0, 184.173965, 0, 31.083334, 50.799999, 3096, 0 },
852       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
853       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
854      { 3087, -1 }},
855     {{{ 0, 0, 0, 0, 182.233597, 0, 30.500000, 51.299999, 3096, 0 },
856       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
857       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
858      { 3087, -1 }},
859     {{{ 0, 0, 0, 0, 184.173965, 0, 29.916668, 51.799999, 3096, 0 },
860       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
861       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
862      { 3087, -1 }},
863     {{{ 0, 0, 0, 0, 186.114334, 0, 29.333334, 52.299999, 3096, 0 },
864       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
865       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
866      { 3087, -1 }},
867     {{{ 0, 0, 0, 0, 178.352859, 0, 28.750000, 52.600002, 3096, 0 },
868       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
869       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
870      { 3087, -1 }},
871     {{{ 0, 0, 0, 0, 178.352859, 0, 28.166668, 52.900002, 3096, 0 },
872       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
873       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
874      { 3087, -1 }},
875     {{{ 0, 0, 0, 0, 178.352859, 0, 27.666668, 53.200001, 3096, 0 },
876       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
877       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
878      { 3087, -1 }},
879     {{{ 0, 0, 0, 0, 118.201401, 0, 27.166668, 53.700001, 3096, 0 },
880       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
881       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
882      { 3087, -1 }},
883     {{{ 0, 0, 0, 0, 118.201401, 0, 26.666668, 54.200001, 3096, 0 },
884       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
885       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
886      { 3087, -1 }},
887     {{{ 0, 0, 0, 0, 118.201401, 0, 26.250000, 54.700001, 3096, 0 },
888       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
889       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
890      { 3087, -1 }},
891     {{{ 0, 0, 0, 0, 118.201401, 0, 25.916668, 55.000000, 3096, 0 },
892       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
893       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
894      { 3087, -1 }},
895     {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 55.200001, 3096, 0 },
896       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
897       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
898      { 3087, -1 }},
899     {{{ 0, 0, 0, 0, 118.201401, 0, 25.416668, 55.400002, 3096, 0 },
900       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
901       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
902      { 3087, -1 }},
903     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 55.500000, 3096, 0 },
904       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
905       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
906      { 3087, -1 }},
907     {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 55.600002, 3096, 0 },
908       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
909       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
910      { 3087, -1 }},
911     {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 55.600002, 3096, 0 },
912       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
913       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
914      { 3087, -1 }},
915     {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 55.700001, 3096, 0 },
916       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
917       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
918      { 3087, -1 }},
919     {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 55.700001, 3096, 0 },
920       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
921       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
922      { 3087, -1 }},
923     {{{ 0, 0, 0, 0, 102.678452, 0, 25.166668, 55.799999, 3096, 0 },
924       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
925       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
926      { 3087, -1 }},
927     {{{ 0, 0, 0, 0, 63.871063, 0, 25.250000, 56.000000, 3096, 0 },
928       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
929       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
930      { 3087, -1 }},
931     {{{ 0, 0, 0, 0, 27.004038, 0, 25.333334, 56.100002, 3096, 0 },
932       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
933       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
934      { 3087, -1 }},
935   };
936 
937   DoTest(events, arraysize(events), false);
938 }
939 
940 // Two thumb-edges as the same time
TEST(SplitCorrectingFilterInterpreterTest,DualThumbsTest)941 TEST(SplitCorrectingFilterInterpreterTest, DualThumbsTest) {
942   InputEventWithExpectations events[] = {
943     {{{ 0, 0, 0, 0, 36.705887, 0, 22.916668, 7.300000, 3111, 0 },
944       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
945       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
946      { 3111, -1 }},
947     {{{ 0, 0, 0, 0, 52.228844, 0, 22.916668, 7.200000, 3111, 0 },
948       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
949       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
950      { 3111, -1 }},
951     {{{ 0, 0, 0, 0, 65.811432, 0, 22.916668, 7.100000, 3111, 0 },
952       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
953       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
954      { 3111, -1 }},
955     {{{ 0, 0, 0, 0, 73.572906, 0, 22.916668, 6.800000, 3111, 0 },
956       { 0, 0, 0, 0, 5.659976, 0, 76.333336, 3.100000, 3112, 0 },
957       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
958      { 3111, 3112, -1 }},
959     {{{ 0, 0, 0, 0, 77.453644, 0, 22.916668, 6.800000, 3111, 0 },
960       { 0, 0, 0, 0, 40.586628, 0, 76.416672, 2.000000, 3112, 0 },
961       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
962      { 3111, 3112, -1 }},
963     {{{ 0, 0, 0, 0, 81.334381, 0, 22.916668, 6.800000, 3111, 0 },
964       { 0, 0, 0, 0, 63.871063, 0, 76.500000, 1.400000, 3112, 0 },
965       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
966      { 3111, 3112, -1 }},
967     {{{ 0, 0, 0, 0, 83.274757, 0, 22.916668, 6.800000, 3111, 0 },
968       { 0, 0, 0, 0, 79.394012, 0, 76.583336, 1.100000, 3112, 0 },
969       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
970      { 3111, 3112, -1 }},
971     {{{ 0, 0, 0, 0, 85.215126, 0, 22.916668, 6.800000, 3111, 0 },
972       { 0, 0, 0, 0, 91.036232, 0, 76.666672, 0.900000, 3112, 0 },
973       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
974      { 3111, 3112, -1 }},
975     {{{ 0, 0, 0, 0, 87.155495, 0, 22.916668, 6.800000, 3111, 0 },
976       { 0, 0, 0, 0, 94.916969, 0, 76.666672, 0.800000, 3112, 0 },
977       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
978      { 3111, 3112, -1 }},
979     {{{ 0, 0, 0, 0, 89.095863, 0, 22.916668, 6.800000, 3111, 0 },
980       { 0, 0, 0, 0, 100.738075, 0, 76.666672, 0.800000, 3112, 0 },
981       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
982      { 3111, 3112, -1 }},
983     {{{ 0, 0, 0, 0, 89.095863, 0, 22.916668, 6.800000, 3111, 0 },
984       { 0, 0, 0, 0, 102.678452, 0, 76.666672, 0.800000, 3112, 0 },
985       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
986      { 3111, 3112, -1 }},
987     {{{ 0, 0, 0, 0, 118.201401, 0, 23.666668, 6.800000, 3111, 0 },
988       { 0, 0, 0, 0, 104.618820, 0, 76.666672, 0.900000, 3112, 0 },
989       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
990      { 3111, 3112, -1 }},
991     {{{ 0, 0, 0, 0, 118.201401, 0, 24.166668, 6.800000, 3111, 0 },
992       { 0, 0, 0, 0, 110.439926, 0, 76.666672, 1.100000, 3112, 0 },
993       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
994      { 3111, 3112, -1 }},
995     {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 6.800000, 3111, 0 },
996       { 0, 0, 0, 0, 131.783997, 0, 77.000000, 2.000000, 3112, 0 },
997       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
998      { 3111, 3112, -1 }},
999     {{{ 0, 0, 0, 0, 118.201401, 0, 24.666668, 6.800000, 3111, 0 },
1000       { 0, 0, 0, 0, 133.724365, 0, 77.333336, 3.000000, 3112, 0 },
1001       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1002      { 3111, 3112, -1 }},
1003     {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 6.900000, 3111, 0 },
1004       { 0, 0, 0, 0, 100.738075, 0, 77.666672, 3.900000, 3112, 0 },
1005       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1006      { 3111, 3112, -1 }},
1007     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 7.000000, 3111, 0 },
1008       { 0, 0, 0, 0, 102.678452, 0, 81.416672, 6.900000, 3112, 0 },
1009       { 0, 0, 0, 0, 77.453644, 0, 73.500000, 3.200000, 3113, 0 },
1010       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1011      { 3111, 3112, -1 }},
1012     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 7.200000, 3111, 0 },
1013       { 0, 0, 0, 0, 104.618820, 0, 81.416672, 7.100000, 3112, 0 },
1014       { 0, 0, 0, 0, 19.242561, 0, 72.833336, 3.200000, 3113, 0 },
1015       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1016      { 3111, 3112, -1 }},
1017     {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 7.600000, 3111, 0 },
1018       { 0, 0, 0, 0, 104.618820, 0, 78.500000, 6.900000, 3112, 0 },
1019       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1020      { 3111, 3112, -1 }},
1021     {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 7.800000, 3111, 0 },
1022       { 0, 0, 0, 0, 108.499557, 0, 78.500000, 7.100000, 3112, 0 },
1023       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1024      { 3111, 3112, -1 }},
1025     {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 8.100000, 3111, 0 },
1026       { 0, 0, 0, 0, 110.439926, 0, 78.500000, 7.400000, 3112, 0 },
1027       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1028      { 3111, 3112, -1 }},
1029     {{{ 0, 0, 0, 0, 118.201401, 0, 25.583334, 8.400001, 3111, 0 },
1030       { 0, 0, 0, 0, 145.366577, 0, 78.333336, 7.700000, 3112, 0 },
1031       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1032      { 3111, 3112, -1 }},
1033     {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 8.900001, 3111, 0 },
1034       { 0, 0, 0, 0, 157.008789, 0, 78.250000, 8.100000, 3112, 0 },
1035       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1036      { 3111, 3112, -1 }},
1037     {{{ 0, 0, 0, 0, 118.201401, 0, 25.833334, 9.500000, 3111, 0 },
1038       { 0, 0, 0, 0, 157.008789, 0, 78.250000, 8.600000, 3112, 0 },
1039       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1040      { 3111, 3112, -1 }},
1041     {{{ 0, 0, 0, 0, 118.201401, 0, 26.000000, 10.100000, 3111, 0 },
1042       { 0, 0, 0, 0, 157.008789, 0, 78.250000, 9.100000, 3112, 0 },
1043       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1044      { 3111, 3112, -1 }},
1045     {{{ 0, 0, 0, 0, 174.472122, 0, 26.083334, 10.600000, 3111, 0 },
1046       { 0, 0, 0, 0, 118.201401, 0, 78.166672, 9.900001, 3112, 0 },
1047       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1048      { 3111, 3112, -1 }},
1049     {{{ 0, 0, 0, 0, 118.201401, 0, 26.166668, 11.400001, 3111, 0 },
1050       { 0, 0, 0, 0, 118.201401, 0, 78.166672, 10.700000, 3112, 0 },
1051       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1052      { 3111, 3112, -1 }},
1053     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 13.100000, 3111, 0 },
1054       { 0, 0, 0, 0, 116.261032, 0, 81.750000, 13.200000, 3112, 0 },
1055       { 0, 0, 0, 0, 91.036232, 0, 73.166672, 11.500000, 3114, 0 },
1056       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1057      { 3111, 3112, -1 }},
1058     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 13.400001, 3111, 0 },
1059       { 0, 0, 0, 0, 116.261032, 0, 81.750000, 13.500000, 3112, 0 },
1060       { 0, 0, 0, 0, 91.036232, 0, 73.083336, 11.800000, 3114, 0 },
1061       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1062      { 3111, 3112, -1 }},
1063     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.200000, 3111, 0 },
1064       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 13.900001, 3112, 0 },
1065       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1066      { 3111, 3112, -1 }},
1067     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.500000, 3111, 0 },
1068       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 14.200000, 3112, 0 },
1069       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1070      { 3111, 3112, -1 }},
1071     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.900001, 3111, 0 },
1072       { 0, 0, 0, 0, 172.531754, 0, 78.750000, 14.500000, 3112, 0 },
1073       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1074      { 3111, 3112, -1 }},
1075     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 15.400001, 3111, 0 },
1076       { 0, 0, 0, 0, 170.591385, 0, 78.666672, 14.800000, 3112, 0 },
1077       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1078      { 3111, 3112, -1 }},
1079     {{{ 0, 0, 0, 0, 118.201401, 0, 26.666668, 15.900001, 3111, 0 },
1080       { 0, 0, 0, 0, 166.710632, 0, 78.666672, 15.200000, 3112, 0 },
1081       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1082      { 3111, 3112, -1 }},
1083     {{{ 0, 0, 0, 0, 118.201401, 0, 26.750000, 16.400000, 3111, 0 },
1084       { 0, 0, 0, 0, 166.710632, 0, 78.583336, 15.600000, 3112, 0 },
1085       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1086      { 3111, 3112, -1 }},
1087     {{{ 0, 0, 0, 0, 118.201401, 0, 26.833334, 16.900000, 3111, 0 },
1088       { 0, 0, 0, 0, 168.651001, 0, 78.583336, 16.100000, 3112, 0 },
1089       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1090      { 3111, 3112, -1 }},
1091     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 17.400000, 3111, 0 },
1092       { 0, 0, 0, 0, 172.531754, 0, 78.583336, 16.600000, 3112, 0 },
1093       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1094      { 3111, 3112, -1 }},
1095     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 18.700001, 3111, 0 },
1096       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.200001, 3112, 0 },
1097       { 0, 0, 0, 0, 96.857338, 0, 73.000000, 17.200001, 3115, 0 },
1098       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1099      { 3111, 3112, -1 }},
1100     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 18.900000, 3111, 0 },
1101       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.400000, 3112, 0 },
1102       { 0, 0, 0, 0, 96.857338, 0, 72.916672, 17.500000, 3115, 0 },
1103       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1104      { 3111, 3112, -1 }},
1105     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 19.300001, 3111, 0 },
1106       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.700001, 3112, 0 },
1107       { 0, 0, 0, 0, 98.797707, 0, 72.833336, 17.800001, 3115, 0 },
1108       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1109      { 3111, 3112, -1 }},
1110     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 20.500000, 3111, 0 },
1111       { 0, 0, 0, 0, 164.770264, 0, 79.833336, 20.100000, 3112, 0 },
1112       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1113      { 3111, 3112, -1 }},
1114     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 20.700001, 3111, 0 },
1115       { 0, 0, 0, 0, 164.770264, 0, 79.416672, 20.100000, 3112, 0 },
1116       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1117      { 3111, 3112, -1 }},
1118     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.000000, 3111, 0 },
1119       { 0, 0, 0, 0, 162.829895, 0, 78.916672, 20.200001, 3112, 0 },
1120       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1121      { 3111, 3112, -1 }},
1122     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.400000, 3111, 0 },
1123       { 0, 0, 0, 0, 170.591385, 0, 78.583336, 20.500000, 3112, 0 },
1124       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1125      { 3111, 3112, -1 }},
1126     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.900000, 3111, 0 },
1127       { 0, 0, 0, 0, 172.531754, 0, 78.416672, 20.900000, 3112, 0 },
1128       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1129      { 3111, 3112, -1 }},
1130     {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 22.500000, 3111, 0 },
1131       { 0, 0, 0, 0, 174.472122, 0, 78.250000, 21.300001, 3112, 0 },
1132       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1133      { 3111, 3112, -1 }},
1134     {{{ 0, 0, 0, 0, 118.201401, 0, 27.083334, 23.000000, 3111, 0 },
1135       { 0, 0, 0, 0, 176.412491, 0, 78.166672, 21.800001, 3112, 0 },
1136       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1137      { 3111, 3112, -1 }},
1138     {{{ 0, 0, 0, 0, 118.201401, 0, 27.166668, 23.500000, 3111, 0 },
1139       { 0, 0, 0, 0, 176.412491, 0, 78.166672, 22.300001, 3112, 0 },
1140       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1141      { 3111, 3112, -1 }},
1142     {{{ 0, 0, 0, 0, 118.201401, 0, 27.083334, 24.000000, 3111, 0 },
1143       { 0, 0, 0, 0, 176.412491, 0, 78.166672, 22.700001, 3112, 0 },
1144       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1145      { 3111, 3112, -1 }},
1146     {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 24.500000, 3111, 0 },
1147       { 0, 0, 0, 0, 100.738075, 0, 77.500000, 23.200001, 3112, 0 },
1148       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1149      { 3111, 3112, -1 }},
1150     {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 25.700001, 3111, 0 },
1151       { 0, 0, 0, 0, 100.738075, 0, 72.750000, 23.700001, 3112, 0 },
1152       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.400000, 3116, 0 },
1153       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1154      { 3111, 3112, -1 }},
1155     {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 25.900000, 3111, 0 },
1156       { 0, 0, 0, 0, 100.738075, 0, 72.750000, 23.900000, 3112, 0 },
1157       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.600000, 3116, 0 },
1158       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1159      { 3111, 3112, -1 }},
1160     {{{ 0, 0, 0, 0, 118.201401, 0, 26.833334, 26.200001, 3111, 0 },
1161       { 0, 0, 0, 0, 102.678452, 0, 72.666672, 24.100000, 3112, 0 },
1162       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.900000, 3116, 0 },
1163       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1164      { 3111, 3112, -1 }},
1165     {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 27.300001, 3111, 0 },
1166       { 0, 0, 0, 0, 118.201401, 0, 79.000000, 26.200001, 3116, 0 },
1167       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1168      { 3111, 3112, -1 }},
1169     {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 27.500000, 3111, 0 },
1170       { 0, 0, 0, 0, 118.201401, 0, 78.916672, 26.400000, 3116, 0 },
1171       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1172      { 3111, 3112, -1 }},
1173     {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 27.800001, 3111, 0 },
1174       { 0, 0, 0, 0, 168.651001, 0, 78.583336, 26.500000, 3116, 0 },
1175       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1176      { 3111, 3112, -1 }},
1177     {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 28.200001, 3111, 0 },
1178       { 0, 0, 0, 0, 168.651001, 0, 78.250000, 26.600000, 3116, 0 },
1179       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1180      { 3111, 3112, -1 }},
1181     {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 28.700001, 3111, 0 },
1182       { 0, 0, 0, 0, 176.412491, 0, 78.083336, 26.800001, 3116, 0 },
1183       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1184      { 3111, 3112, -1 }},
1185     {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.100000, 3111, 0 },
1186       { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.100000, 3116, 0 },
1187       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1188      { 3111, 3112, -1 }},
1189     {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.500000, 3111, 0 },
1190       { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.400000, 3116, 0 },
1191       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1192      { 3111, 3112, -1 }},
1193     {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.900000, 3111, 0 },
1194       { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.800001, 3116, 0 },
1195       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1196      { 3111, 3112, -1 }},
1197     {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 30.400000, 3111, 0 },
1198       { 0, 0, 0, 0, 176.412491, 0, 78.083336, 28.200001, 3116, 0 },
1199       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1200      { 3111, 3112, -1 }},
1201     {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 30.800001, 3111, 0 },
1202       { 0, 0, 0, 0, 178.352859, 0, 78.083336, 28.500000, 3116, 0 },
1203       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1204      { 3111, 3112, -1 }},
1205     {{{ 0, 0, 0, 0, 118.201401, 0, 26.250000, 31.300001, 3111, 0 },
1206       { 0, 0, 0, 0, 174.472122, 0, 78.083336, 28.900000, 3116, 0 },
1207       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1208      { 3111, 3112, -1 }},
1209     {{{ 0, 0, 0, 0, 118.201401, 0, 26.166668, 31.800001, 3111, 0 },
1210       { 0, 0, 0, 0, 178.352859, 0, 78.083336, 29.300001, 3116, 0 },
1211       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1212      { 3111, 3112, -1 }},
1213     {{{ 0, 0, 0, 0, 118.201401, 0, 25.916668, 33.100002, 3111, 0 },
1214       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 31.600000, 3116, 0 },
1215       { 0, 0, 0, 0, 104.618820, 0, 72.750000, 29.800001, 3117, 0 },
1216       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1217      { 3111, 3112, -1 }},
1218     {{{ 0, 0, 0, 0, 118.201401, 0, 25.833334, 33.299999, 3111, 0 },
1219       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 31.800001, 3116, 0 },
1220       { 0, 0, 0, 0, 104.618820, 0, 72.666672, 30, 3117, 0 },
1221       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1222      { 3111, 3112, -1 }},
1223     {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.100002, 3111, 0 },
1224       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 32.000000, 3116, 0 },
1225       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1226      { 3111, 3112, -1 }},
1227     {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 34.299999, 3111, 0 },
1228       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 32.200001, 3116, 0 },
1229       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1230      { 3111, 3112, -1 }},
1231     {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.500000, 3111, 0 },
1232       { 0, 0, 0, 0, 170.591385, 0, 78.583336, 32.299999, 3116, 0 },
1233       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1234      { 3111, 3112, -1 }},
1235     {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.799999, 3111, 0 },
1236       { 0, 0, 0, 0, 172.531754, 0, 78.250000, 32.500000, 3116, 0 },
1237       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1238      { 3111, 3112, -1 }},
1239     {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 35.200001, 3111, 0 },
1240       { 0, 0, 0, 0, 178.352859, 0, 78.083336, 32.799999, 3116, 0 },
1241       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1242      { 3111, 3112, -1 }},
1243     {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 35.600002, 3111, 0 },
1244       { 0, 0, 0, 0, 178.352859, 0, 78.000000, 33.200001, 3116, 0 },
1245       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1246      { 3111, 3112, -1 }},
1247     {{{ 0, 0, 0, 0, 182.233597, 0, 25.750000, 35.900002, 3111, 0 },
1248       { 0, 0, 0, 0, 118.201401, 0, 78.000000, 33.799999, 3116, 0 },
1249       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1250      { 3111, 3112, -1 }},
1251     {{{ 0, 0, 0, 0, 182.233597, 0, 25.750000, 36.200001, 3111, 0 },
1252       { 0, 0, 0, 0, 100.738075, 0, 77.416672, 34.299999, 3116, 0 },
1253       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1254      { 3111, 3112, -1 }},
1255     {{{ 0, 0, 0, 0, 98.797707, 0, 24.750000, 36.799999, 3111, 0 },
1256       { 0, 0, 0, 0, 100.738075, 0, 77.000000, 34.799999, 3116, 0 },
1257       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1258      { 3111, 3112, -1 }},
1259     {{{ 0, 0, 0, 0, 98.797707, 0, 24.083334, 37.299999, 3111, 0 },
1260       { 0, 0, 0, 0, 102.678452, 0, 76.750000, 35.299999, 3116, 0 },
1261       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1262      { 3111, 3112, -1 }},
1263     {{{ 0, 0, 0, 0, 118.201401, 0, 25.333334, 38.299999, 3111, 0 },
1264       { 0, 0, 0, 0, 104.618820, 0, 72.666672, 36.100002, 3116, 0 },
1265       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 37.700001, 3118, 0 },
1266       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1267      { 3111, 3112, -1 }},
1268     {{{ 0, 0, 0, 0, 118.201401, 0, 25.333334, 38.500000, 3111, 0 },
1269       { 0, 0, 0, 0, 104.618820, 0, 72.583336, 36.299999, 3116, 0 },
1270       { 0, 0, 0, 0, 118.201401, 0, 81.833336, 37.900002, 3118, 0 },
1271       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1272      { 3111, 3112, -1 }},
1273     {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 39.200001, 3111, 0 },
1274       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.100002, 3118, 0 },
1275       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1276      { 3111, 3112, -1 }},
1277     {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 39.400002, 3111, 0 },
1278       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.299999, 3118, 0 },
1279       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1280      { 3111, 3112, -1 }},
1281     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 39.700001, 3111, 0 },
1282       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.600002, 3118, 0 },
1283       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1284      { 3111, 3112, -1 }},
1285     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40, 3111, 0 },
1286       { 0, 0, 0, 0, 170.591385, 0, 78.583336, 38.799999, 3118, 0 },
1287       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1288      { 3111, 3112, -1 }},
1289     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40.400002, 3111, 0 },
1290       { 0, 0, 0, 0, 178.352859, 0, 78.416672, 39.100002, 3118, 0 },
1291       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1292      { 3111, 3112, -1 }},
1293     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40.799999, 3111, 0 },
1294       { 0, 0, 0, 0, 178.352859, 0, 78.250000, 39.500000, 3118, 0 },
1295       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1296      { 3111, 3112, -1 }},
1297     {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 41.200001, 3111, 0 },
1298       { 0, 0, 0, 0, 180.293228, 0, 78.166672, 39.900002, 3118, 0 },
1299       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1300      { 3111, 3112, -1 }},
1301     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 41.600002, 3111, 0 },
1302       { 0, 0, 0, 0, 178.352859, 0, 78.166672, 40.400002, 3118, 0 },
1303       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1304      { 3111, 3112, -1 }},
1305     {{{ 0, 0, 0, 0, 118.201401, 0, 25.416668, 41.900002, 3111, 0 },
1306       { 0, 0, 0, 0, 180.293228, 0, 78.166672, 40.799999, 3118, 0 },
1307       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1308      { 3111, 3112, -1 }},
1309     {{{ 0, 0, 0, 0, 186.114334, 0, 25.416668, 42.200001, 3111, 0 },
1310       { 0, 0, 0, 0, 118.201401, 0, 78.083336, 41.400002, 3118, 0 },
1311       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1312      { 3111, 3112, -1 }},
1313     {{{ 0, 0, 0, 0, 186.114334, 0, 25.333334, 42.500000, 3111, 0 },
1314       { 0, 0, 0, 0, 102.678452, 0, 77.416672, 41.700001, 3118, 0 },
1315       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1316      { 3111, 3112, -1 }},
1317     {{{ 0, 0, 0, 0, 102.678452, 0, 22.916668, 43.799999, 3111, 0 },
1318       { 0, 0, 0, 0, 104.618820, 0, 72.666672, 42.299999, 3118, 0 },
1319       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 43.799999, 3119, 0 },
1320       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1321      { 3111, 3112, -1 }},
1322     {{{ 0, 0, 0, 0, 104.618820, 0, 22.833334, 44.000000, 3111, 0 },
1323       { 0, 0, 0, 0, 102.678452, 0, 72.666672, 42.500000, 3118, 0 },
1324       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 44.000000, 3119, 0 },
1325       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1326      { 3111, 3112, -1 }},
1327     {{{ 0, 0, 0, 0, 104.618820, 0, 22.750000, 44.299999, 3111, 0 },
1328       { 0, 0, 0, 0, 104.618820, 0, 72.666672, 42.700001, 3118, 0 },
1329       { 0, 0, 0, 0, 118.201401, 0, 81.916672, 44.200001, 3119, 0 },
1330       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1331      { 3111, 3112, -1 }},
1332     {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 45.100002, 3111, 0 },
1333       { 0, 0, 0, 0, 118.201401, 0, 79.000000, 44.500000, 3119, 0 },
1334       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1335      { 3111, 3112, -1 }},
1336     {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 45.400002, 3111, 0 },
1337       { 0, 0, 0, 0, 118.201401, 0, 79.000000, 44.700001, 3119, 0 },
1338       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1339      { 3111, 3112, -1 }},
1340     {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 45.700001, 3111, 0 },
1341       { 0, 0, 0, 0, 184.173965, 0, 78.833336, 44.900002, 3119, 0 },
1342       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1343      { 3111, 3112, -1 }},
1344     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 46.100002, 3111, 0 },
1345       { 0, 0, 0, 0, 170.591385, 0, 78.583336, 45.000000, 3119, 0 },
1346       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1347      { 3111, 3112, -1 }},
1348     {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 46.500000, 3111, 0 },
1349       { 0, 0, 0, 0, 166.710632, 0, 78.333336, 45.200001, 3119, 0 },
1350       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1351      { 3111, 3112, -1 }},
1352     {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 47.000000, 3111, 0 },
1353       { 0, 0, 0, 0, 182.233597, 0, 78.166672, 45.500000, 3119, 0 },
1354       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1355      { 3111, 3112, -1 }},
1356     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 47.400002, 3111, 0 },
1357       { 0, 0, 0, 0, 184.173965, 0, 78.166672, 45.799999, 3119, 0 },
1358       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1359      { 3111, 3112, -1 }},
1360     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 47.700001, 3111, 0 },
1361       { 0, 0, 0, 0, 184.173965, 0, 78.166672, 46.200001, 3119, 0 },
1362       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1363      { 3111, 3112, -1 }},
1364     {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 48.100002, 3111, 0 },
1365       { 0, 0, 0, 0, 180.293228, 0, 78.166672, 46.600002, 3119, 0 },
1366       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1367      { 3111, 3112, -1 }},
1368     {{{ 0, 0, 0, 0, 186.114334, 0, 25.166668, 48.400002, 3111, 0 },
1369       { 0, 0, 0, 0, 118.201401, 0, 78.166672, 47.000000, 3119, 0 },
1370       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1371      { 3111, 3112, -1 }},
1372     {{{ 0, 0, 0, 0, 186.114334, 0, 25.083334, 48.700001, 3111, 0 },
1373       { 0, 0, 0, 0, 118.201401, 0, 78.166672, 47.400002, 3119, 0 },
1374       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1375      { 3111, 3112, -1 }},
1376     {{{ 0, 0, 0, 0, 102.678452, 0, 24.166668, 49.200001, 3111, 0 },
1377       { 0, 0, 0, 0, 100.738075, 0, 77.500000, 47.700001, 3119, 0 },
1378       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1379      { 3111, 3112, -1 }},
1380     {{{ 0, 0, 0, 0, 102.678452, 0, 23.583334, 49.700001, 3111, 0 },
1381       { 0, 0, 0, 0, 118.201401, 0, 77.666672, 48.100002, 3119, 0 },
1382       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1383      { 3111, 3112, -1 }},
1384     {{{ 0, 0, 0, 0, 104.618820, 0, 22.666668, 50.600002, 3111, 0 },
1385       { 0, 0, 0, 0, 118.201401, 0, 82.000000, 49.900002, 3119, 0 },
1386       { 0, 0, 0, 0, 100.738075, 0, 72.666672, 48.400002, 3120, 0 },
1387       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1388      { 3111, 3112, -1 }},
1389     {{{ 0, 0, 0, 0, 118.201401, 0, 23.333334, 50.799999, 3111, 0 },
1390       { 0, 0, 0, 0, 118.201401, 0, 82.000000, 50.100002, 3119, 0 },
1391       { 0, 0, 0, 0, 100.738075, 0, 72.666672, 48.600002, 3120, 0 },
1392       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1393      { 3111, 3112, -1 }},
1394     {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 51.200001, 3111, 0 },
1395       { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.200001, 3119, 0 },
1396       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1397      { 3111, 3112, -1 }},
1398     {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.400002, 3111, 0 },
1399       { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.299999, 3119, 0 },
1400       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1401      { 3111, 3112, -1 }},
1402     {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.600002, 3111, 0 },
1403       { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.500000, 3119, 0 },
1404       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1405      { 3111, 3112, -1 }},
1406     {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.799999, 3111, 0 },
1407       { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.700001, 3119, 0 },
1408       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1409      { 3111, 3112, -1 }},
1410     {{{ 0, 0, 0, 0, 118.201401, 0, 24.333334, 52.100002, 3111, 0 },
1411       { 0, 0, 0, 0, 184.173965, 0, 79.000000, 50.900002, 3119, 0 },
1412       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1413      { 3111, 3112, -1 }},
1414     {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 52.400002, 3111, 0 },
1415       { 0, 0, 0, 0, 184.173965, 0, 78.833336, 51.100002, 3119, 0 },
1416       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1417      { 3111, 3112, -1 }},
1418     {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 52.700001, 3111, 0 },
1419       { 0, 0, 0, 0, 164.770264, 0, 78.583336, 51.299999, 3119, 0 },
1420       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1421      { 3111, 3112, -1 }},
1422     {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 53.100002, 3111, 0 },
1423       { 0, 0, 0, 0, 164.770264, 0, 78.333336, 51.500000, 3119, 0 },
1424       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1425      { 3111, 3112, -1 }},
1426     {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 53.400002, 3111, 0 },
1427       { 0, 0, 0, 0, 178.352859, 0, 78.250000, 51.900002, 3119, 0 },
1428       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1429      { 3111, 3112, -1 }},
1430     {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 53.700001, 3111, 0 },
1431       { 0, 0, 0, 0, 178.352859, 0, 78.250000, 52.299999, 3119, 0 },
1432       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1433      { 3111, 3112, -1 }},
1434     {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 54.000000, 3111, 0 },
1435       { 0, 0, 0, 0, 178.352859, 0, 78.250000, 52.799999, 3119, 0 },
1436       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1437      { 3111, 3112, -1 }},
1438     {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 54.400002, 3111, 0 },
1439       { 0, 0, 0, 0, 180.293228, 0, 78.250000, 53.299999, 3119, 0 },
1440       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1441      { 3111, 3112, -1 }},
1442     {{{ 0, 0, 0, 0, 186.114334, 0, 25.000000, 54.700001, 3111, 0 },
1443       { 0, 0, 0, 0, 118.201401, 0, 78.166672, 53.900002, 3119, 0 },
1444       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1445      { 3111, 3112, -1 }},
1446     {{{ 0, 0, 0, 0, 178.352859, 0, 24.916668, 55.000000, 3111, 0 },
1447       { 0, 0, 0, 0, 118.201401, 0, 78.416672, 54.500000, 3119, 0 },
1448       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1449      { 3111, 3112, -1 }},
1450     {{{ 0, 0, 0, 0, 102.678452, 0, 24.000000, 55.500000, 3111, 0 },
1451       { 0, 0, 0, 0, 118.201401, 0, 78.583336, 55.100002, 3119, 0 },
1452       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1453      { 3111, 3112, -1 }},
1454     {{{ 0, 0, 0, 0, 102.678452, 0, 23.416668, 56.000000, 3111, 0 },
1455       { 0, 0, 0, 0, 118.201401, 0, 78.750000, 55.799999, 3119, 0 },
1456       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1457      { 3111, 3112, -1 }},
1458     {{{ 0, 0, 0, 0, 104.618820, 0, 23.083334, 56.500000, 3111, 0 },
1459       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 56.400002, 3119, 0 },
1460       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1461      { 3111, 3112, -1 }},
1462     {{{ 0, 0, 0, 0, 102.678452, 0, 22.833334, 57.000000, 3111, 0 },
1463       { 0, 0, 0, 0, 118.201401, 0, 78.916672, 57.100002, 3119, 0 },
1464       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1465      { 3111, 3112, -1 }},
1466     {{{ 0, 0, 0, 0, 102.678452, 0, 22.666668, 57.500000, 3111, 0 },
1467       { 0, 0, 0, 0, 118.201401, 0, 79.000000, 57.900002, 3119, 0 },
1468       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1469      { 3111, 3112, -1 }},
1470     {{{ 0, 0, 0, 0, 118.201401, 0, 23.166668, 58.000000, 3111, 0 },
1471       { 0, 0, 0, 0, 118.201401, 0, 78.833336, 58.799999, 3119, 0 },
1472       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1473      { 3111, 3112, -1 }},
1474     {{{ 0, 0, 0, 0, 118.201401, 0, 23.500000, 58.500000, 3111, 0 },
1475       { 0, 0, 0, 0, 118.201401, 0, 78.666672, 59.600002, 3119, 0 },
1476       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1477      { 3111, 3112, -1 }},
1478     {{{ 0, 0, 0, 0, 118.201401, 0, 23.750000, 59.000000, 3111, 0 },
1479       { 0, 0, 0, 0, 118.201401, 0, 78.500000, 60.400002, 3119, 0 },
1480       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1481      { 3111, 3112, -1 }},
1482     {{{ 0, 0, 0, 0, 118.201401, 0, 23.833334, 59.400002, 3111, 0 },
1483       { 0, 0, 0, 0, 168.651001, 0, 78.333336, 60.900002, 3119, 0 },
1484       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1485      { 3111, 3112, -1 }},
1486     {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 59.700001, 3111, 0 },
1487       { 0, 0, 0, 0, 162.829895, 0, 78.250000, 61.299999, 3119, 0 },
1488       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1489      { 3111, 3112, -1 }},
1490     {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 60.100002, 3111, 0 },
1491       { 0, 0, 0, 0, 157.008789, 0, 78.166672, 61.700001, 3119, 0 },
1492       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1493      { 3111, 3112, -1 }},
1494     {{{ 0, 0, 0, 0, 118.201401, 0, 24.750000, 60.600002, 3111, 0 },
1495       { 0, 0, 0, 0, 151.187683, 0, 78.083336, 62.000000, 3119, 0 },
1496       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1497      { 3111, 3112, -1 }},
1498     {{{ 0, 0, 0, 0, 118.201401, 0, 24.916668, 61.100002, 3111, 0 },
1499       { 0, 0, 0, 0, 141.485840, 0, 78.000000, 62.299999, 3119, 0 },
1500       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1501      { 3111, 3112, -1 }},
1502     {{{ 0, 0, 0, 0, 172.531754, 0, 25.000000, 61.400002, 3111, 0 },
1503       { 0, 0, 0, 0, 91.036232, 0, 78.666672, 64.000000, 3119, 0 },
1504       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1505      { 3111, 3112, -1 }},
1506     {{{ 0, 0, 0, 0, 118.201401, 0, 24.666668, 62.799999, 3111, 0 },
1507       { 0, 0, 0, 0, 106.559189, 0, 78.250000, 65.200005, 3119, 0 },
1508       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1509      { 3111, 3112, -1 }},
1510     {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 63.799999, 3111, 0 },
1511       { 0, 0, 0, 0, 104.618820, 0, 78.000000, 66.000000, 3119, 0 },
1512       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1513      { 3111, 3112, -1 }},
1514     {{{ 0, 0, 0, 0, 118.201401, 0, 24.333334, 64.500000, 3111, 0 },
1515       { 0, 0, 0, 0, 100.738075, 0, 77.833336, 66.500000, 3119, 0 },
1516       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1517      { 3111, 3112, -1 }},
1518     {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 65.000000, 3111, 0 },
1519       { 0, 0, 0, 0, 94.916969, 0, 77.666672, 66.900002, 3119, 0 },
1520       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1521      { 3111, 3112, -1 }},
1522     {{{ 0, 0, 0, 0, 118.201401, 0, 24.166668, 65.500000, 3111, 0 },
1523       { 0, 0, 0, 0, 69.692169, 0, 77.666672, 67.200005, 3119, 0 },
1524       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1525      { 3111, 3112, -1 }},
1526     {{{ 0, 0, 0, 0, 114.320663, 0, 24.083334, 65.800003, 3111, 0 },
1527       { 0, 0, 0, 0, 38.646255, 0, 77.750000, 67.400002, 3119, 0 },
1528       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1529      { 3111, 3112, -1 }},
1530     {{{ 0, 0, 0, 0, 94.916969, 0, 24.000000, 65.800003, 3111, 0 },
1531       { 0, 0, 0, 0, 15.361822, 0, 77.833336, 67.400002, 3119, 0 },
1532       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1533      { 3111, 3112, -1 }},
1534     {{{ 0, 0, 0, 0, 58.049950, 0, 23.916668, 65.599998, 3111, 0 },
1535       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1536       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1537      { 3111, -1 }},
1538     {{{ 0, 0, 0, 0, 30.884779, 0, 23.833334, 65.500000, 3111, 0 },
1539       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1540       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1541      { 3111, -1 }},
1542   };
1543 
1544   DoTest(events, arraysize(events), false);
1545 }
1546 
1547 // Thumb edge dragging, and mid-way through a normal finger is added
TEST(SplitCorrectingFilterInterpreterTest,ThumbEdgePlusFingerTest)1548 TEST(SplitCorrectingFilterInterpreterTest, ThumbEdgePlusFingerTest) {
1549   InputEventWithExpectations events[] = {
1550     {{{ 0, 0, 0, 0, 11.481083, 0, 102.500000, 10.500000, 3351, 0 },
1551       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1552       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1553      { 3351, -1 }},
1554     {{{ 0, 0, 0, 0, 42.526997, 0, 103.083336, 10.800000, 3351, 0 },
1555       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1556       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1557      { 3351, -1 }},
1558     {{{ 0, 0, 0, 0, 59.990318, 0, 104.333336, 11.700000, 3351, 0 },
1559       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1560       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1561      { 3351, -1 }},
1562     {{{ 0, 0, 0, 0, 75.513275, 0, 105.000000, 12.500000, 3351, 0 },
1563       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1564       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1565      { 3351, -1 }},
1566     {{{ 0, 0, 0, 0, 89.095863, 0, 105.000000, 13.200000, 3351, 0 },
1567       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1568       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1569      { 3351, -1 }},
1570     {{{ 0, 0, 0, 0, 91.036232, 0, 103.416672, 13.000000, 3351, 0 },
1571       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1572       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1573      { 3351, -1 }},
1574     {{{ 0, 0, 0, 0, 94.916969, 0, 102.166672, 13.000000, 3351, 0 },
1575       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1576       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1577      { 3351, -1 }},
1578     {{{ 0, 0, 0, 0, 94.916969, 0, 101.000000, 13.100000, 3351, 0 },
1579       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1580       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1581      { 3351, -1 }},
1582     {{{ 0, 0, 0, 0, 94.916969, 0, 100, 13.300000, 3351, 0 },
1583       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1584       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1585      { 3351, -1 }},
1586     {{{ 0, 0, 0, 0, 96.857338, 0, 99.083336, 13.500000, 3351, 0 },
1587       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1588       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1589      { 3351, -1 }},
1590     {{{ 0, 0, 0, 0, 118.201401, 0, 98.333336, 14.300000, 3351, 0 },
1591       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1592       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1593      { 3351, -1 }},
1594     {{{ 0, 0, 0, 0, 118.201401, 0, 97.583336, 14.900001, 3351, 0 },
1595       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1596       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1597      { 3351, -1 }},
1598     {{{ 0, 0, 0, 0, 102.678452, 0, 96.750000, 15.800000, 3351, 0 },
1599       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1600       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1601      { 3351, -1 }},
1602     {{{ 0, 0, 0, 0, 108.499557, 0, 95.166672, 20.200001, 3351, 0 },
1603       { 0, 0, 0, 0, 87.155495, 0, 92.250000, 12.200000, 3352, 0 },
1604       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1605      { 3351, -1 }},
1606     {{{ 0, 0, 0, 0, 118.201401, 0, 92.583336, 17.600000, 3351, 0 },
1607       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1608       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1609      { 3351, -1 }},
1610     {{{ 0, 0, 0, 0, 118.201401, 0, 92.000000, 17.800001, 3351, 0 },
1611       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1612       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1613      { 3351, -1 }},
1614     {{{ 0, 0, 0, 0, 118.201401, 0, 91.166672, 18.300001, 3351, 0 },
1615       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1616       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1617      { 3351, -1 }},
1618     {{{ 0, 0, 0, 0, 160.889526, 0, 90.416672, 18.700001, 3351, 0 },
1619       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1620       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1621      { 3351, -1 }},
1622     {{{ 0, 0, 0, 0, 110.439926, 0, 85.750000, 16.500000, 3351, 0 },
1623       { 0, 0, 0, 0, 91.036232, 0, 89.250000, 25.500000, 3353, 0 },
1624       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1625      { 3351, -1 }},
1626     {{{ 0, 0, 0, 0, 108.499557, 0, 85.250000, 16.700001, 3351, 0 },
1627       { 0, 0, 0, 0, 98.797707, 0, 88.750000, 25.700001, 3353, 0 },
1628       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1629      { 3351, -1 }},
1630     {{{ 0, 0, 0, 0, 104.618820, 0, 84.666672, 20.300001, 3351, 0 },
1631       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1632       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1633      { 3351, -1 }},
1634     {{{ 0, 0, 0, 0, 118.201401, 0, 84.416672, 21.100000, 3351, 0 },
1635       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1636       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1637      { 3351, -1 }},
1638     {{{ 0, 0, 0, 0, 118.201401, 0, 83.916672, 21.700001, 3351, 0 },
1639       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1640       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1641      { 3351, -1 }},
1642     {{{ 0, 0, 0, 0, 118.201401, 0, 83.333336, 22.600000, 3351, 0 },
1643       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1644       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1645      { 3351, -1 }},
1646     {{{ 0, 0, 0, 0, 118.201401, 0, 82.416672, 26.700001, 3351, 0 },
1647       { 0, 0, 0, 0, 91.036232, 0, 78.583336, 18.400000, 3354, 0 },
1648       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1649      { 3351, -1 }},
1650     {{{ 0, 0, 0, 0, 118.201401, 0, 80.083336, 25.100000, 3351, 0 },
1651       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1652       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1653      { 3351, -1 }},
1654     {{{ 0, 0, 0, 0, 118.201401, 0, 77.583336, 22.200001, 3351, 0 },
1655       { 0, 0, 0, 0, 87.155495, 0, 81.500000, 31.200001, 3355, 0 },
1656       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1657      { 3351, -1 }},
1658     {{{ 0, 0, 0, 0, 118.201401, 0, 77.666672, 25.300001, 3351, 0 },
1659       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1660       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1661      { 3351, -1 }},
1662     {{{ 0, 0, 0, 0, 118.201401, 0, 77.083336, 26.600000, 3351, 0 },
1663       { 0, 0, 0, 0, 9.540714, 0, 36.500000, 19.300001, 3356, 0 },
1664       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1665      { 3351, 3356, -1 }},
1666     {{{ 0, 0, 0, 0, 118.201401, 0, 76.750000, 26.800001, 3351, 0 },
1667       { 0, 0, 0, 0, 21.182930, 0, 36.333336, 19.300001, 3356, 0 },
1668       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1669      { 3351, 3356, -1 }},
1670     {{{ 0, 0, 0, 0, 118.201401, 0, 76.166672, 27.100000, 3351, 0 },
1671       { 0, 0, 0, 0, 32.825150, 0, 36.083336, 19.300001, 3356, 0 },
1672       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1673      { 3351, 3356, -1 }},
1674     {{{ 0, 0, 0, 0, 110.439926, 0, 76.250000, 32.299999, 3351, 0 },
1675       { 0, 0, 0, 0, 38.646255, 0, 35.583336, 19.400000, 3356, 0 },
1676       { 0, 0, 0, 0, 102.678452, 0, 71.916672, 23.900000, 3357, 0 },
1677       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1678      { 3351, 3356, -1 }},
1679     {{{ 0, 0, 0, 0, 112.380295, 0, 75.833336, 32.500000, 3351, 0 },
1680       { 0, 0, 0, 0, 44.467365, 0, 35.416668, 19.500000, 3356, 0 },
1681       { 0, 0, 0, 0, 98.797707, 0, 71.500000, 24.100000, 3357, 0 },
1682       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1683      { 3351, 3356, -1 }},
1684     {{{ 0, 0, 0, 0, 118.201401, 0, 72.166672, 29.800001, 3351, 0 },
1685       { 0, 0, 0, 0, 48.348103, 0, 35.000000, 19.700001, 3356, 0 },
1686       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1687      { 3351, 3356, -1 }},
1688     {{{ 0, 0, 0, 0, 118.201401, 0, 71.750000, 30.100000, 3351, 0 },
1689       { 0, 0, 0, 0, 52.228844, 0, 34.750000, 19.800001, 3356, 0 },
1690       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1691      { 3351, 3356, -1 }},
1692     {{{ 0, 0, 0, 0, 118.201401, 0, 71.083336, 30.700001, 3351, 0 },
1693       { 0, 0, 0, 0, 54.169212, 0, 34.500000, 20, 3356, 0 },
1694       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1695      { 3351, 3356, -1 }},
1696     {{{ 0, 0, 0, 0, 118.201401, 0, 70.166672, 31.300001, 3351, 0 },
1697       { 0, 0, 0, 0, 56.109581, 0, 34.250000, 20.200001, 3356, 0 },
1698       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1699      { 3351, 3356, -1 }},
1700     {{{ 0, 0, 0, 0, 112.380295, 0, 69.083336, 31.700001, 3351, 0 },
1701       { 0, 0, 0, 0, 58.049950, 0, 33.916668, 20.500000, 3356, 0 },
1702       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1703      { 3351, 3356, -1 }},
1704     {{{ 0, 0, 0, 0, 108.499557, 0, 64.333336, 29.900000, 3351, 0 },
1705       { 0, 0, 0, 0, 58.049950, 0, 32.666668, 22.000000, 3356, 0 },
1706       { 0, 0, 0, 0, 106.559189, 0, 69.250000, 38.000000, 3358, 0 },
1707       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1708      { 3351, 3356, -1 }},
1709     {{{ 0, 0, 0, 0, 58.049950, 0, 32.250000, 22.400000, 3356, 0 },
1710       { 0, 0, 0, 0, 108.499557, 0, 66.166672, 35.299999, 3358, 0 },
1711       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1712      { 3351, 3356, -1 }},
1713     {{{ 0, 0, 0, 0, 58.049950, 0, 32.000000, 22.600000, 3356, 0 },
1714       { 0, 0, 0, 0, 118.201401, 0, 65.750000, 35.299999, 3358, 0 },
1715       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1716      { 3351, 3356, -1 }},
1717     {{{ 0, 0, 0, 0, 59.990318, 0, 31.750000, 22.700001, 3356, 0 },
1718       { 0, 0, 0, 0, 118.201401, 0, 65.166672, 35.600002, 3358, 0 },
1719       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1720      { 3351, 3356, -1 }},
1721     {{{ 0, 0, 0, 0, 59.990318, 0, 31.500000, 22.900000, 3356, 0 },
1722       { 0, 0, 0, 0, 118.201401, 0, 64.500000, 36.100002, 3358, 0 },
1723       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1724      { 3351, 3356, -1 }},
1725     {{{ 0, 0, 0, 0, 61.930687, 0, 31.250000, 23.200001, 3356, 0 },
1726       { 0, 0, 0, 0, 118.201401, 0, 63.750000, 36.700001, 3358, 0 },
1727       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1728      { 3351, 3356, -1 }},
1729     {{{ 0, 0, 0, 0, 59.990318, 0, 31.000000, 23.400000, 3356, 0 },
1730       { 0, 0, 0, 0, 118.201401, 0, 63.000000, 37.400002, 3358, 0 },
1731       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1732      { 3351, 3356, -1 }},
1733     {{{ 0, 0, 0, 0, 59.990318, 0, 30.750000, 23.700001, 3356, 0 },
1734       { 0, 0, 0, 0, 112.380295, 0, 62.083336, 37.900002, 3358, 0 },
1735       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1736      { 3351, 3356, -1 }},
1737     {{{ 0, 0, 0, 0, 59.990318, 0, 30, 24.200001, 3356, 0 },
1738       { 0, 0, 0, 0, 114.320663, 0, 57.500000, 36.299999, 3358, 0 },
1739       { 0, 0, 0, 0, 106.559189, 0, 63.000000, 43.799999, 3359, 0 },
1740       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1741      { 3351, 3356, -1 }},
1742     {{{ 0, 0, 0, 0, 61.930687, 0, 29.583334, 24.800001, 3356, 0 },
1743       { 0, 0, 0, 0, 112.380295, 0, 59.750000, 41.000000, 3359, 0 },
1744       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1745      { 3351, 3356, -1 }},
1746     {{{ 0, 0, 0, 0, 61.930687, 0, 29.416668, 24.900000, 3356, 0 },
1747       { 0, 0, 0, 0, 114.320663, 0, 59.500000, 41.200001, 3359, 0 },
1748       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1749      { 3351, 3356, -1 }},
1750     {{{ 0, 0, 0, 0, 59.990318, 0, 29.250000, 25.200001, 3356, 0 },
1751       { 0, 0, 0, 0, 118.201401, 0, 59.000000, 41.500000, 3359, 0 },
1752       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1753      { 3351, 3356, -1 }},
1754     {{{ 0, 0, 0, 0, 58.049950, 0, 29.166668, 25.700001, 3356, 0 },
1755       { 0, 0, 0, 0, 118.201401, 0, 58.416668, 41.799999, 3359, 0 },
1756       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1757      { 3351, 3356, -1 }},
1758     {{{ 0, 0, 0, 0, 56.109581, 0, 29.250000, 26.500000, 3356, 0 },
1759       { 0, 0, 0, 0, 118.201401, 0, 57.750000, 42.299999, 3359, 0 },
1760       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1761      { 3351, 3356, -1 }},
1762     {{{ 0, 0, 0, 0, 56.109581, 0, 28.666668, 26.800001, 3356, 0 },
1763       { 0, 0, 0, 0, 112.380295, 0, 55.833336, 41.900002, 3359, 0 },
1764       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1765      { 3351, 3356, -1 }},
1766     {{{ 0, 0, 0, 0, 56.109581, 0, 28.250000, 27.300001, 3356, 0 },
1767       { 0, 0, 0, 0, 114.320663, 0, 54.416668, 41.900002, 3359, 0 },
1768       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1769      { 3351, 3356, -1 }},
1770     {{{ 0, 0, 0, 0, 58.049950, 0, 27.916668, 27.800001, 3356, 0 },
1771       { 0, 0, 0, 0, 116.261032, 0, 53.250000, 42.100002, 3359, 0 },
1772       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1773      { 3351, 3356, -1 }},
1774     {{{ 0, 0, 0, 0, 58.049950, 0, 29.166668, 29.300001, 3356, 0 },
1775       { 0, 0, 0, 0, 118.201401, 0, 53.500000, 43.500000, 3359, 0 },
1776       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1777      { 3351, 3356, -1 }},
1778     {{{ 0, 0, 0, 0, 58.049950, 0, 29.916668, 30.400000, 3356, 0 },
1779       { 0, 0, 0, 0, 118.201401, 0, 53.583336, 44.600002, 3359, 0 },
1780       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1781      { 3351, 3356, -1 }},
1782     {{{ 0, 0, 0, 0, 58.049950, 0, 30.416668, 31.200001, 3356, 0 },
1783       { 0, 0, 0, 0, 116.261032, 0, 53.500000, 45.500000, 3359, 0 },
1784       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1785      { 3351, 3356, -1 }},
1786     {{{ 0, 0, 0, 0, 58.049950, 0, 29.833334, 31.400000, 3356, 0 },
1787       { 0, 0, 0, 0, 118.201401, 0, 53.250000, 46.299999, 3359, 0 },
1788       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1789      { 3351, 3356, -1 }},
1790     {{{ 0, 0, 0, 0, 56.109581, 0, 29.000000, 31.500000, 3356, 0 },
1791       { 0, 0, 0, 0, 118.201401, 0, 52.916668, 47.100002, 3359, 0 },
1792       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1793      { 3351, 3356, -1 }},
1794     {{{ 0, 0, 0, 0, 52.228844, 0, 28.166668, 31.600000, 3356, 0 },
1795       { 0, 0, 0, 0, 118.201401, 0, 52.500000, 48.000000, 3359, 0 },
1796       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1797      { 3351, 3356, -1 }},
1798     {{{ 0, 0, 0, 0, 48.348103, 0, 25.750000, 32.700001, 3356, 0 },
1799       { 0, 0, 0, 0, 118.201401, 0, 54.333336, 52.100002, 3359, 0 },
1800       { 0, 0, 0, 0, 106.559189, 0, 46.083336, 47.400002, 3360, 0 },
1801       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1802      { 3351, 3356, -1 }},
1803     {{{ 0, 0, 0, 0, 50.288475, 0, 25.416668, 33.600002, 3356, 0 },
1804       { 0, 0, 0, 0, 108.499557, 0, 45.666668, 48.100002, 3360, 0 },
1805       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1806      { 3351, 3356, -1 }},
1807     {{{ 0, 0, 0, 0, 50.288475, 0, 26.166668, 34.799999, 3356, 0 },
1808       { 0, 0, 0, 0, 118.201401, 0, 47.166668, 49.400002, 3360, 0 },
1809       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1810      { 3351, 3356, -1 }},
1811     {{{ 0, 0, 0, 0, 50.288475, 0, 26.583334, 35.700001, 3356, 0 },
1812       { 0, 0, 0, 0, 118.201401, 0, 48.000000, 50.400002, 3360, 0 },
1813       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1814      { 3351, 3356, -1 }},
1815     {{{ 0, 0, 0, 0, 54.169212, 0, 26.833334, 36.299999, 3356, 0 },
1816       { 0, 0, 0, 0, 118.201401, 0, 48.333336, 51.200001, 3360, 0 },
1817       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1818      { 3351, 3356, -1 }},
1819     {{{ 0, 0, 0, 0, 54.169212, 0, 26.833334, 36.600002, 3356, 0 },
1820       { 0, 0, 0, 0, 118.201401, 0, 48.416668, 52.000000, 3360, 0 },
1821       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1822      { 3351, 3356, -1 }},
1823     {{{ 0, 0, 0, 0, 54.169212, 0, 26.000000, 36.200001, 3356, 0 },
1824       { 0, 0, 0, 0, 118.201401, 0, 47.000000, 52.299999, 3360, 0 },
1825       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1826      { 3351, 3356, -1 }},
1827     {{{ 0, 0, 0, 0, 54.169212, 0, 25.500000, 36.100002, 3356, 0 },
1828       { 0, 0, 0, 0, 118.201401, 0, 46.000000, 52.799999, 3360, 0 },
1829       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1830      { 3351, 3356, -1 }},
1831     {{{ 0, 0, 0, 0, 54.169212, 0, 25.250000, 36.400002, 3356, 0 },
1832       { 0, 0, 0, 0, 118.201401, 0, 46.333336, 54.200001, 3360, 0 },
1833       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1834      { 3351, 3356, -1 }},
1835     {{{ 0, 0, 0, 0, 54.169212, 0, 24.916668, 36.600002, 3356, 0 },
1836       { 0, 0, 0, 0, 118.201401, 0, 46.500000, 55.400002, 3360, 0 },
1837       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1838      { 3351, 3356, -1 }},
1839     {{{ 0, 0, 0, 0, 52.228844, 0, 25.916668, 38.700001, 3356, 0 },
1840       { 0, 0, 0, 0, 118.201401, 0, 46.500000, 56.400002, 3360, 0 },
1841       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1842      { 3351, 3356, -1 }},
1843     {{{ 0, 0, 0, 0, 52.228844, 0, 26.333334, 40, 3356, 0 },
1844       { 0, 0, 0, 0, 118.201401, 0, 46.333336, 57.200001, 3360, 0 },
1845       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1846      { 3351, 3356, -1 }},
1847     {{{ 0, 0, 0, 0, 52.228844, 0, 25.083334, 39.299999, 3356, 0 },
1848       { 0, 0, 0, 0, 118.201401, 0, 45.416668, 57.600002, 3360, 0 },
1849       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1850      { 3351, 3356, -1 }},
1851     {{{ 0, 0, 0, 0, 52.228844, 0, 24.083334, 39.200001, 3356, 0 },
1852       { 0, 0, 0, 0, 118.201401, 0, 44.833336, 58.100002, 3360, 0 },
1853       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1854      { 3351, 3356, -1 }},
1855     {{{ 0, 0, 0, 0, 50.288475, 0, 23.250000, 39.400002, 3356, 0 },
1856       { 0, 0, 0, 0, 118.201401, 0, 44.416668, 58.799999, 3360, 0 },
1857       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1858      { 3351, 3356, -1 }},
1859     {{{ 0, 0, 0, 0, 50.288475, 0, 21.583334, 40.100002, 3356, 0 },
1860       { 0, 0, 0, 0, 106.559189, 0, 38.333336, 60.200001, 3360, 0 },
1861       { 0, 0, 0, 0, 94.916969, 0, 48.583336, 64.200005, 3361, 0 },
1862       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1863      { 3351, 3356, -1 }},
1864     {{{ 0, 0, 0, 0, 48.348103, 0, 21.750000, 41.700001, 3356, 0 },
1865       { 0, 0, 0, 0, 83.274757, 0, 45.000000, 65.300003, 3361, 0 },
1866       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1867      { 3351, 3356, -1 }},
1868     {{{ 0, 0, 0, 0, 44.467365, 0, 21.416668, 41.799999, 3356, 0 },
1869       { 0, 0, 0, 0, 110.439926, 0, 43.833336, 65.599998, 3361, 0 },
1870       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1871      { 3351, 3356, -1 }},
1872     {{{ 0, 0, 0, 0, 42.526997, 0, 20.916668, 42.000000, 3356, 0 },
1873       { 0, 0, 0, 0, 100.738075, 0, 41.916668, 65.900002, 3361, 0 },
1874       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1875      { 3351, 3356, -1 }},
1876     {{{ 0, 0, 0, 0, 42.526997, 0, 20.500000, 42.200001, 3356, 0 },
1877       { 0, 0, 0, 0, 98.797707, 0, 40.666668, 66.300003, 3361, 0 },
1878       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1879      { 3351, 3356, -1 }},
1880     {{{ 0, 0, 0, 0, 40.586628, 0, 20.166668, 42.400002, 3356, 0 },
1881       { 0, 0, 0, 0, 116.261032, 0, 39.916668, 66.099998, 3361, 0 },
1882       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1883      { 3351, 3356, -1 }},
1884     {{{ 0, 0, 0, 0, 27.004038, 0, 19.916668, 42.600002, 3356, 0 },
1885       { 0, 0, 0, 0, 106.559189, 0, 39.416668, 65.800003, 3361, 0 },
1886       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1887      { 3351, 3356, -1 }},
1888     {{{ 0, 0, 0, 0, 13.421453, 0, 19.750000, 42.700001, 3356, 0 },
1889       { 0, 0, 0, 0, 79.394012, 0, 39.083336, 65.500000, 3361, 0 },
1890       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1891      { 3351, 3356, -1 }},
1892     {{{ 0, 0, 0, 0, 32.825150, 0, 37.833336, 67.599998, 3361, 0 },
1893       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1894       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1895      { 3351, -1 }},
1896     {{{ 0, 0, 0, 0, 11.481083, 0, 37.833336, 67.700005, 3361, 0 },
1897       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1898       { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1899      { 3351, -1 }}
1900   };
1901 
1902   DoTest(events, arraysize(events), false);
1903 }
1904 
1905 }  // namespace gestures
1906