blob: 14a806827ca41b90c0ba634e24fc63558993dd71 [file] [log] [blame]
Yuqian Li3154a532017-09-06 13:33:30 -04001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
Cary Clark4533f3d2018-08-08 09:48:09 -04007#include "PathOpsDebug.h"
Yuqian Li3154a532017-09-06 13:33:30 -04008#include "PathOpsExtendedTest.h"
9#include "PathOpsTestCommon.h"
10
11class PathTest_Private {
12public:
13 PathTest_Private(SkPath* path)
14 : fPath(path) {}
15
16 void setPt(int index, SkScalar x, SkScalar y) {
17 fPath->setPt(index, x, y);
18 }
19
20 SkPath* fPath;
21};
22
23static void path_edit(const SkPoint& from, const SkPoint& to, SkPath* path) {
24 PathTest_Private testPath(path);
25 for (int index = 0; index < path->countPoints(); ++index) {
26 if (SkDPoint::ApproximatelyEqual(path->getPoint(index), from)) {
27 testPath.setPt(index, to.fX, to.fY);
28 return;
29 }
30 }
31}
32
33static void cubicOp1d(skiatest::Reporter* reporter, const char* filename) {
34 SkPath path, pathB;
35 path.setFillType(SkPath::kWinding_FillType);
36 path.moveTo(0,1);
37 path.cubicTo(0,2, 1,0, 1,0);
38 path.close();
39 pathB.setFillType(SkPath::kWinding_FillType);
40 pathB.moveTo(0,1);
41 pathB.cubicTo(0,1, 1,0, 2,0);
42 pathB.close();
43 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
44}
45
46static void cubicOp2d(skiatest::Reporter* reporter, const char* filename) {
47 SkPath path, pathB;
48 path.setFillType(SkPath::kWinding_FillType);
49 path.moveTo(0,2);
50 path.cubicTo(0,1, 1,0, 1,0);
51 path.close();
52 pathB.setFillType(SkPath::kWinding_FillType);
53 pathB.moveTo(0,1);
54 pathB.cubicTo(0,1, 2,0, 1,0);
55 pathB.close();
56 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
57}
58
59static void cubicOp3d(skiatest::Reporter* reporter, const char* filename) {
60 SkPath path, pathB;
61 path.setFillType(SkPath::kWinding_FillType);
62 path.moveTo(0,1);
63 path.cubicTo(2,3, 1,0, 1,0);
64 path.close();
65 pathB.setFillType(SkPath::kWinding_FillType);
66 pathB.moveTo(0,1);
67 pathB.cubicTo(0,1, 1,0, 3,2);
68 pathB.close();
69 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
70}
71
72static void cubicOp5d(skiatest::Reporter* reporter, const char* filename) {
73 SkPath path, pathB;
74 path.setFillType(SkPath::kWinding_FillType);
75 path.moveTo(0,1);
76 path.cubicTo(0,2, 1,0, 2,0);
77 path.close();
78 pathB.setFillType(SkPath::kWinding_FillType);
79 pathB.moveTo(0,1);
80 pathB.cubicTo(0,2, 1,0, 2,0);
81 pathB.close();
82 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
83}
84
85static void cubicOp6d(skiatest::Reporter* reporter, const char* filename) {
86 SkPath path, pathB;
87 path.setFillType(SkPath::kWinding_FillType);
88 path.moveTo(0,1);
89 path.cubicTo(0,6, 1,0, 3,0);
90 path.close();
91 pathB.setFillType(SkPath::kWinding_FillType);
92 pathB.moveTo(0,1);
93 pathB.cubicTo(0,3, 1,0, 6,0);
94 pathB.close();
95 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
96}
97
98static void cubicOp7d(skiatest::Reporter* reporter, const char* filename) {
99 SkPath path, pathB;
100 path.setFillType(SkPath::kWinding_FillType);
101 path.moveTo(0,1);
102 path.cubicTo(3,4, 1,0, 3,0);
103 path.close();
104 pathB.setFillType(SkPath::kWinding_FillType);
105 pathB.moveTo(0,1);
106 pathB.cubicTo(0,3, 1,0, 4,3);
107 pathB.close();
108 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
109}
110
111static void cubicOp8d(skiatest::Reporter* reporter, const char* filename) {
112 SkPath path, pathB;
113 path.setFillType(SkPath::kWinding_FillType);
114 path.moveTo(0,1);
115 path.cubicTo(0,5, 1,0, 4,0);
116 path.close();
117 pathB.setFillType(SkPath::kWinding_FillType);
118 pathB.moveTo(0,1);
119 pathB.cubicTo(0,4, 1,0, 5,0);
120 pathB.close();
121 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
122}
123
124static void cubicOp9d(skiatest::Reporter* reporter, const char* filename) {
125 SkPath path, pathB;
126 path.setFillType(SkPath::kWinding_FillType);
127 path.moveTo(0,1);
128 path.cubicTo(1,6, 1,0, 2,1);
129 path.close();
130 pathB.setFillType(SkPath::kWinding_FillType);
131 pathB.moveTo(0,1);
132 pathB.cubicTo(1,2, 1,0, 6,1);
133 pathB.close();
134 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
135}
136
137static void quadOp9d(skiatest::Reporter* reporter, const char* filename) {
138 SkPath path, pathB;
139 path.setFillType(SkPath::kWinding_FillType);
140 path.moveTo(0,1);
141 path.quadTo(1,6, 1.5f,1);
142 path.quadTo(1.5f,0.5f, 2,1);
143 path.close();
144 pathB.setFillType(SkPath::kWinding_FillType);
145 pathB.moveTo(0,1);
146 pathB.quadTo(1,2, 1.4f,1);
147 pathB.quadTo(3,0.4f, 6,1);
148 pathB.close();
149 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
150}
151
152static void lineOp9d(skiatest::Reporter* reporter, const char* filename) {
153 SkPath path, pathB;
154 path.setFillType(SkPath::kWinding_FillType);
155 path.moveTo(0,1);
156 path.lineTo(1,6);
157 path.lineTo(1.5f,1);
158 path.lineTo(1.8f,0.8f);
159 path.lineTo(2,1);
160 path.close();
161 pathB.setFillType(SkPath::kWinding_FillType);
162 pathB.moveTo(0,1);
163 pathB.lineTo(1,2);
164 pathB.lineTo(1.4f,1);
165 pathB.lineTo(3,0.4f);
166 pathB.lineTo(6,1);
167 pathB.close();
168 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
169}
170
171static void cubicOp1i(skiatest::Reporter* reporter, const char* filename) {
172 SkPath path, pathB;
173 path.setFillType(SkPath::kWinding_FillType);
174 path.moveTo(0,1);
175 path.cubicTo(1,2, 1,0, 2,1);
176 path.close();
177 pathB.setFillType(SkPath::kWinding_FillType);
178 pathB.moveTo(0,1);
179 pathB.cubicTo(1,2, 1,0, 2,1);
180 pathB.close();
181 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
182}
183
184static void cubicOp10d(skiatest::Reporter* reporter, const char* filename) {
185 SkPath path, pathB;
186 path.setFillType(SkPath::kWinding_FillType);
187 path.moveTo(0,1);
188 path.cubicTo(1,3, 1,0, 4,1);
189 path.close();
190 pathB.setFillType(SkPath::kWinding_FillType);
191 pathB.moveTo(0,1);
192 pathB.cubicTo(1,4, 1,0, 3,1);
193 pathB.close();
194 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
195}
196
197static void cubicOp11d(skiatest::Reporter* reporter, const char* filename) {
198 SkPath path, pathB;
199 path.setFillType(SkPath::kWinding_FillType);
200 path.moveTo(0,1);
201 path.cubicTo(3,4, 1,0, 5,1);
202 path.close();
203 pathB.setFillType(SkPath::kWinding_FillType);
204 pathB.moveTo(0,1);
205 pathB.cubicTo(1,5, 1,0, 4,3);
206 pathB.close();
207 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
208}
209
210static void cubicOp12d(skiatest::Reporter* reporter, const char* filename) {
211 SkPath path, pathB;
212 path.setFillType(SkPath::kWinding_FillType);
213 path.moveTo(0,1);
214 path.cubicTo(1,6, 1,0, 1,0);
215 path.close();
216 pathB.setFillType(SkPath::kWinding_FillType);
217 pathB.moveTo(0,1);
218 pathB.cubicTo(0,1, 1,0, 6,1);
219 pathB.close();
220 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
221}
222
223static void cubicOp13d(skiatest::Reporter* reporter, const char* filename) {
224 SkPath path, pathB;
225 path.setFillType(SkPath::kWinding_FillType);
226 path.moveTo(0,1);
227 path.cubicTo(4,5, 1,0, 5,3);
228 path.close();
229 pathB.setFillType(SkPath::kWinding_FillType);
230 pathB.moveTo(0,1);
231 pathB.cubicTo(3,5, 1,0, 5,4);
232 pathB.close();
233 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
234}
235
236static void cubicOp14d(skiatest::Reporter* reporter, const char* filename) {
237 SkPath path, pathB;
238 path.setFillType(SkPath::kWinding_FillType);
239 path.moveTo(0,1);
240 path.cubicTo(0,2, 2,0, 2,1);
241 path.close();
242 pathB.setFillType(SkPath::kWinding_FillType);
243 pathB.moveTo(0,2);
244 pathB.cubicTo(1,2, 1,0, 2,0);
245 pathB.close();
246 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
247}
248
249static void cubicOp15d(skiatest::Reporter* reporter, const char* filename) {
250 SkPath path, pathB;
251 path.setFillType(SkPath::kWinding_FillType);
252 path.moveTo(0,1);
253 path.cubicTo(3,6, 2,0, 2,1);
254 path.close();
255 pathB.setFillType(SkPath::kWinding_FillType);
256 pathB.moveTo(0,2);
257 pathB.cubicTo(1,2, 1,0, 6,3);
258 pathB.close();
259 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
260}
261
262static void cubicOp16d(skiatest::Reporter* reporter, const char* filename) {
263 SkPath path, pathB;
264 path.setFillType(SkPath::kWinding_FillType);
265 path.moveTo(0,2);
266 path.cubicTo(0,1, 3,0, 1,0);
267 path.close();
268 pathB.setFillType(SkPath::kWinding_FillType);
269 pathB.moveTo(0,3);
270 pathB.cubicTo(0,1, 2,0, 1,0);
271 pathB.close();
272 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
273}
274
275static void cubicOp17d(skiatest::Reporter* reporter, const char* filename) {
276 SkPath path, pathB;
277 path.setFillType(SkPath::kWinding_FillType);
278 path.moveTo(0,2);
279 path.cubicTo(0,2, 4,0, 2,1);
280 path.close();
281 pathB.setFillType(SkPath::kWinding_FillType);
282 pathB.moveTo(0,4);
283 pathB.cubicTo(1,2, 2,0, 2,0);
284 pathB.close();
285 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
286}
287
288static void cubicOp18d(skiatest::Reporter* reporter, const char* filename) {
289 SkPath path, pathB;
290 path.setFillType(SkPath::kWinding_FillType);
291 path.moveTo(0,1);
292 path.cubicTo(3,5, 2,0, 2,1);
293 path.close();
294 pathB.setFillType(SkPath::kWinding_FillType);
295 pathB.moveTo(0,2);
296 pathB.cubicTo(1,2, 1,0, 5,3);
297 pathB.close();
298 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
299}
300
301static void cubicOp19i(skiatest::Reporter* reporter, const char* filename) {
302 SkPath path, pathB;
303 path.setFillType(SkPath::kWinding_FillType);
304 path.moveTo(0,2);
305 path.cubicTo(0,1, 2,1, 6,2);
306 path.close();
307 pathB.setFillType(SkPath::kWinding_FillType);
308 pathB.moveTo(1,2);
309 pathB.cubicTo(2,6, 2,0, 1,0);
310 pathB.close();
311 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
312}
313
314static void cubicOp20d(skiatest::Reporter* reporter, const char* filename) {
315 SkPath path, pathB;
316 path.setFillType(SkPath::kWinding_FillType);
317 path.moveTo(0,1);
318 path.cubicTo(0,1, 6,0, 2,1);
319 path.close();
320 pathB.setFillType(SkPath::kWinding_FillType);
321 pathB.moveTo(0,6);
322 pathB.cubicTo(1,2, 1,0, 1,0);
323 pathB.close();
324 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
325}
326
327static void cubicOp21d(skiatest::Reporter* reporter, const char* filename) {
328 SkPath path, pathB;
329 path.setFillType(SkPath::kWinding_FillType);
330 path.moveTo(0,1);
331 path.cubicTo(0,1, 2,1, 6,5);
332 path.close();
333 pathB.setFillType(SkPath::kWinding_FillType);
334 pathB.moveTo(1,2);
335 pathB.cubicTo(5,6, 1,0, 1,0);
336 pathB.close();
337 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
338}
339
340static void cubicOp22d(skiatest::Reporter* reporter, const char* filename) {
341 SkPath path, pathB;
342 path.setFillType(SkPath::kWinding_FillType);
343 path.moveTo(0,1);
344 path.cubicTo(2,3, 3,0, 2,1);
345 path.close();
346 pathB.setFillType(SkPath::kWinding_FillType);
347 pathB.moveTo(0,3);
348 pathB.cubicTo(1,2, 1,0, 3,2);
349 pathB.close();
350 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
351}
352
353static void cubicOp23d(skiatest::Reporter* reporter, const char* filename) {
354 SkPath path, pathB;
355 path.setFillType(SkPath::kWinding_FillType);
356 path.moveTo(0,1);
357 path.cubicTo(1,2, 4,0, 2,1);
358 path.close();
359 pathB.setFillType(SkPath::kWinding_FillType);
360 pathB.moveTo(0,4);
361 pathB.cubicTo(1,2, 1,0, 2,1);
362 pathB.close();
363 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
364}
365
366static void cubicOp24d(skiatest::Reporter* reporter, const char* filename) {
367 SkPath path, pathB;
368 path.setFillType(SkPath::kWinding_FillType);
369 path.moveTo(0,1);
370 path.cubicTo(1,2, 2,0, 3,2);
371 path.close();
372 pathB.setFillType(SkPath::kWinding_FillType);
373 pathB.moveTo(0,2);
374 pathB.cubicTo(2,3, 1,0, 2,1);
375 pathB.close();
376 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
377}
378
379static void testIntersect1(skiatest::Reporter* reporter, const char* filename) {
380 SkPath one, two;
381 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
382 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
383 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
384}
385
386static void testUnion1(skiatest::Reporter* reporter, const char* filename) {
387 SkPath one, two;
388 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
389 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
390 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
391}
392
393static void testDiff1(skiatest::Reporter* reporter, const char* filename) {
394 SkPath one, two;
395 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
396 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
397 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
398}
399
400static void testXor1(skiatest::Reporter* reporter, const char* filename) {
401 SkPath one, two;
402 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
403 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
404 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
405}
406
407static void testIntersect2(skiatest::Reporter* reporter, const char* filename) {
408 SkPath one, two;
409 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
410 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
411 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
412}
413
414static void testUnion2(skiatest::Reporter* reporter, const char* filename) {
415 SkPath one, two;
416 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
417 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
418 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
419}
420
421static void testDiff2(skiatest::Reporter* reporter, const char* filename) {
422 SkPath one, two;
423 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
424 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
425 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
426}
427
428static void testXor2(skiatest::Reporter* reporter, const char* filename) {
429 SkPath one, two;
430 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
431 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
432 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
433}
434
435static void testOp1d(skiatest::Reporter* reporter, const char* filename) {
436 SkPath path, pathB;
437 path.setFillType(SkPath::kWinding_FillType);
438 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
439 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
440 pathB.setFillType(SkPath::kWinding_FillType);
441 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
442 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
443 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
444}
445
446static void testOp2d(skiatest::Reporter* reporter, const char* filename) {
447 SkPath path, pathB;
448 path.setFillType(SkPath::kWinding_FillType);
449 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
450 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
451 pathB.setFillType(SkPath::kEvenOdd_FillType);
452 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
453 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
454 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
455}
456
457static void testOp3d(skiatest::Reporter* reporter, const char* filename) {
458 SkPath path, pathB;
459 path.setFillType(SkPath::kWinding_FillType);
460 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
461 path.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
462 pathB.setFillType(SkPath::kWinding_FillType);
463 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
464 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
465 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
466}
467
468static void testOp1u(skiatest::Reporter* reporter, const char* filename) {
469 SkPath path, pathB;
470 path.setFillType(SkPath::kWinding_FillType);
471 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
472 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
473 pathB.setFillType(SkPath::kWinding_FillType);
474 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
475 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
476 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
477}
478
479static void testOp4d(skiatest::Reporter* reporter, const char* filename) {
480 SkPath path, pathB;
481 path.setFillType(SkPath::kWinding_FillType);
482 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
483 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
484 pathB.setFillType(SkPath::kWinding_FillType);
485 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
486 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
487 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
488}
489
490static void testOp5d(skiatest::Reporter* reporter, const char* filename) {
491 SkPath path, pathB;
492 path.setFillType(SkPath::kEvenOdd_FillType);
493 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
494 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
495 pathB.setFillType(SkPath::kEvenOdd_FillType);
496 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
497 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
498 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
499}
500
501static void testOp6d(skiatest::Reporter* reporter, const char* filename) {
502 SkPath path, pathB;
503 path.setFillType(SkPath::kEvenOdd_FillType);
504 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
505 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
506 pathB.setFillType(SkPath::kWinding_FillType);
507 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
508 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
509 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
510}
511
512static void testOp7d(skiatest::Reporter* reporter, const char* filename) {
513 SkPath path, pathB;
514 path.setFillType(SkPath::kEvenOdd_FillType);
515 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
516 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
517 pathB.setFillType(SkPath::kEvenOdd_FillType);
518 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
519 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
520 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
521}
522
523static void testOp2u(skiatest::Reporter* reporter, const char* filename) {
524 SkPath path, pathB;
525 path.setFillType(SkPath::kEvenOdd_FillType);
526 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
527 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
528 pathB.setFillType(SkPath::kWinding_FillType);
529 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
530 pathB.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
531 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
532}
533
534static void testOp8d(skiatest::Reporter* reporter, const char* filename) {
535 SkPath path, pathB;
536 path.addRect(0, 0, 640, 480);
537 pathB.moveTo(577330, 1971.72f);
538 pathB.cubicTo(10.7082f, -116.596f, 262.057f, 45.6468f, 294.694f, 1.96237f);
539 pathB.close();
540 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
541}
542static void cubicOp25i(skiatest::Reporter* reporter, const char* filename) {
543 SkPath path, pathB;
544 path.setFillType(SkPath::kWinding_FillType);
545 path.moveTo(0,1);
546 path.cubicTo(2,4, 5,0, 3,2);
547 path.close();
548 pathB.setFillType(SkPath::kWinding_FillType);
549 pathB.moveTo(0,5);
550 pathB.cubicTo(2,3, 1,0, 4,2);
551 pathB.close();
552 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
553}
554
555static void cubicOp26d(skiatest::Reporter* reporter, const char* filename) {
556 SkPath path, pathB;
557 path.setFillType(SkPath::kWinding_FillType);
558 path.moveTo(0,1);
559 path.cubicTo(3,4, 4,0, 3,2);
560 path.close();
561 pathB.setFillType(SkPath::kWinding_FillType);
562 pathB.moveTo(0,4);
563 pathB.cubicTo(2,3, 1,0, 4,3);
564 pathB.close();
565 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
566}
567
568static void cubicOp27d(skiatest::Reporter* reporter, const char* filename) {
569 SkPath path, pathB;
570 path.setFillType(SkPath::kWinding_FillType);
571 path.moveTo(0,1);
572 path.cubicTo(3,6, 1,0, 5,2);
573 path.close();
574 pathB.setFillType(SkPath::kWinding_FillType);
575 pathB.moveTo(0,1);
576 pathB.cubicTo(2,5, 1,0, 6,3);
577 pathB.close();
578 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
579}
580
581static void cubicOp28u(skiatest::Reporter* reporter, const char* filename) {
582 SkPath path, pathB;
583 path.setFillType(SkPath::kWinding_FillType);
584 path.moveTo(0,1);
585 path.cubicTo(1,4, 6,0, 3,2);
586 path.close();
587 pathB.setFillType(SkPath::kWinding_FillType);
588 pathB.moveTo(0,6);
589 pathB.cubicTo(2,3, 1,0, 4,1);
590 pathB.close();
591 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
592}
593
594static void cubicOp29d(skiatest::Reporter* reporter, const char* filename) {
595 SkPath path, pathB;
596 path.setFillType(SkPath::kWinding_FillType);
597 path.moveTo(0,1);
598 path.cubicTo(2,5, 6,0, 4,2);
599 path.close();
600 pathB.setFillType(SkPath::kWinding_FillType);
601 pathB.moveTo(0,6);
602 pathB.cubicTo(2,4, 1,0, 5,2);
603 pathB.close();
604 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
605}
606
607static void cubicOp30d(skiatest::Reporter* reporter, const char* filename) {
608 SkPath path, pathB;
609 path.setFillType(SkPath::kWinding_FillType);
610 path.moveTo(0,1);
611 path.cubicTo(2,5, 6,0, 5,3);
612 path.close();
613 pathB.setFillType(SkPath::kWinding_FillType);
614 pathB.moveTo(0,6);
615 pathB.cubicTo(3,5, 1,0, 5,2);
616 pathB.close();
617 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
618}
619
620static void cubicOp31d(skiatest::Reporter* reporter, const char* filename) {
621 SkPath path, pathB;
622 path.setFillType(SkPath::kWinding_FillType);
623 path.moveTo(0,2);
624 path.cubicTo(0,3, 2,1, 4,0);
625 path.close();
626 pathB.setFillType(SkPath::kWinding_FillType);
627 pathB.moveTo(1,2);
628 pathB.cubicTo(0,4, 2,0, 3,0);
629 pathB.close();
630 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
631}
632
633static void cubicOp31u(skiatest::Reporter* reporter, const char* filename) {
634 SkPath path, pathB;
635 path.setFillType(SkPath::kWinding_FillType);
636 path.moveTo(0,2);
637 path.cubicTo(0,3, 2,1, 4,0);
638 path.close();
639 pathB.setFillType(SkPath::kWinding_FillType);
640 pathB.moveTo(1,2);
641 pathB.cubicTo(0,4, 2,0, 3,0);
642 pathB.close();
643 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
644}
645
646static void cubicOp31x(skiatest::Reporter* reporter, const char* filename) {
647 SkPath path, pathB;
648 path.setFillType(SkPath::kWinding_FillType);
649 path.moveTo(0,2);
650 path.cubicTo(0,3, 2,1, 4,0);
651 path.close();
652 pathB.setFillType(SkPath::kWinding_FillType);
653 pathB.moveTo(1,2);
654 pathB.cubicTo(0,4, 2,0, 3,0);
655 pathB.close();
656 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
657}
658
659static void cubicOp32d(skiatest::Reporter* reporter, const char* filename) {
660 SkPath path, pathB;
661 path.setFillType(SkPath::kWinding_FillType);
662 path.moveTo(0,1);
663 path.cubicTo(1,2, 6,0, 3,1);
664 path.close();
665 pathB.setFillType(SkPath::kWinding_FillType);
666 pathB.moveTo(0,6);
667 pathB.cubicTo(1,3, 1,0, 2,1);
668 pathB.close();
669 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
670}
671
672static void cubicOp33i(skiatest::Reporter* reporter, const char* filename) {
673 SkPath path, pathB;
674 path.setFillType(SkPath::kWinding_FillType);
675 path.moveTo(0,1);
676 path.cubicTo(1,2, 6,0, 3,1);
677 path.close();
678 pathB.setFillType(SkPath::kWinding_FillType);
679 pathB.moveTo(0,6);
680 pathB.cubicTo(1,3, 1,0, 2,1);
681 pathB.close();
682 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
683}
684
685static void cubicOp34d(skiatest::Reporter* reporter, const char* filename) {
686 SkPath path, pathB;
687 path.setFillType(SkPath::kWinding_FillType);
688 path.moveTo(0,1);
689 path.cubicTo(3,5, 2,1, 3,1);
690 path.close();
691 pathB.setFillType(SkPath::kWinding_FillType);
692 pathB.moveTo(1,2);
693 pathB.cubicTo(1,3, 1,0, 5,3);
694 pathB.close();
695 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
696}
697
698static void cubicOp35d(skiatest::Reporter* reporter, const char* filename) {
699 SkPath path, pathB;
700 path.setFillType(SkPath::kWinding_FillType);
701 path.moveTo(0,1);
702 path.cubicTo(1,5, 2,1, 4,0);
703 path.close();
704 pathB.setFillType(SkPath::kWinding_FillType);
705 pathB.moveTo(1,2);
706 pathB.cubicTo(0,4, 1,0, 5,1);
707 pathB.close();
708 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
709}
710
711static void cubicOp36u(skiatest::Reporter* reporter, const char* filename) {
712 SkPath path, pathB;
713 path.setFillType(SkPath::kWinding_FillType);
714 path.moveTo(0,1);
715 path.cubicTo(1,6, 2,0, 5,1);
716 path.close();
717 pathB.setFillType(SkPath::kWinding_FillType);
718 pathB.moveTo(0,2);
719 pathB.cubicTo(1,5, 1,0, 6,1);
720 pathB.close();
721 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
722}
723
724static void cubicOp37d(skiatest::Reporter* reporter, const char* filename) {
725 SkPath path, pathB;
726 path.setFillType(SkPath::kWinding_FillType);
727 path.moveTo(0,1);
728 path.cubicTo(2,6, 6,1, 4,3);
729 path.close();
730 pathB.setFillType(SkPath::kWinding_FillType);
731 pathB.moveTo(1,6);
732 pathB.cubicTo(3,4, 1,0, 6,2);
733 pathB.close();
734 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
735}
736
737static void cubicOp38d(skiatest::Reporter* reporter, const char* filename) {
738 SkPath path, pathB;
739 path.setFillType(SkPath::kWinding_FillType);
740 path.moveTo(0,1);
741 path.cubicTo(0,6, 3,2, 4,1);
742 path.close();
743 pathB.setFillType(SkPath::kWinding_FillType);
744 pathB.moveTo(2,3);
745 pathB.cubicTo(1,4, 1,0, 6,0);
746 pathB.close();
747 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
748}
749
750static void cubicOp39d(skiatest::Reporter* reporter, const char* filename) {
751 SkPath path, pathB;
752 path.setFillType(SkPath::kWinding_FillType);
753 path.moveTo(0,1);
754 path.cubicTo(2,3, 5,1, 4,3);
755 path.close();
756 pathB.setFillType(SkPath::kWinding_FillType);
757 pathB.moveTo(1,5);
758 pathB.cubicTo(3,4, 1,0, 3,2);
759 pathB.close();
760 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
761}
762
763static void cubicOp40d(skiatest::Reporter* reporter, const char* filename) {
764 SkPath path, pathB;
765 path.setFillType(SkPath::kWinding_FillType);
766 path.moveTo(0,1);
767 path.cubicTo(1,5, 3,2, 4,2);
768 path.close();
769 pathB.setFillType(SkPath::kWinding_FillType);
770 pathB.moveTo(2,3);
771 pathB.cubicTo(2,4, 1,0, 5,1);
772 pathB.close();
773 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
774}
775
776static void cubicOp41i(skiatest::Reporter* reporter, const char* filename) {
777 SkPath path, pathB;
778 path.setFillType(SkPath::kWinding_FillType);
779 path.moveTo(0,1);
780 path.cubicTo(2,6, 4,3, 6,4);
781 path.close();
782 pathB.setFillType(SkPath::kWinding_FillType);
783 pathB.moveTo(3,4);
784 pathB.cubicTo(4,6, 1,0, 6,2);
785 pathB.close();
786 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
787}
788
789static void cubicOp42d(skiatest::Reporter* reporter, const char* filename) {
790 SkPath path, pathB;
791 path.setFillType(SkPath::kWinding_FillType);
792 path.moveTo(0,1);
793 path.cubicTo(1,2, 6,5, 5,4);
794 path.close();
795 pathB.setFillType(SkPath::kWinding_FillType);
796 pathB.moveTo(5,6);
797 pathB.cubicTo(4,5, 1,0, 2,1);
798 pathB.close();
799 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
800}
801
802static void cubicOp43d(skiatest::Reporter* reporter, const char* filename) {
803 SkPath path, pathB;
804 path.setFillType(SkPath::kWinding_FillType);
805 path.moveTo(0,2);
806 path.cubicTo(1,2, 4,0, 3,1);
807 path.close();
808 pathB.setFillType(SkPath::kWinding_FillType);
809 pathB.moveTo(0,4);
810 pathB.cubicTo(1,3, 2,0, 2,1);
811 pathB.close();
812 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
813}
814
815static void cubicOp44d(skiatest::Reporter* reporter, const char* filename) {
816 SkPath path, pathB;
817 path.setFillType(SkPath::kWinding_FillType);
818 path.moveTo(0,2);
819 path.cubicTo(3,6, 4,0, 3,2);
820 path.close();
821 pathB.setFillType(SkPath::kWinding_FillType);
822 pathB.moveTo(0,4);
823 pathB.cubicTo(2,3, 2,0, 6,3);
824 pathB.close();
825 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
826}
827
828static void cubicOp45d(skiatest::Reporter* reporter, const char* filename) {
829 SkPath path, pathB;
830 path.setFillType(SkPath::kWinding_FillType);
831 path.moveTo(0,2);
832 path.cubicTo(2,4, 4,0, 3,2);
833 path.close();
834 pathB.setFillType(SkPath::kWinding_FillType);
835 pathB.moveTo(0,4);
836 pathB.cubicTo(2,3, 2,0, 4,2);
837 pathB.close();
838 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
839}
840
841static void cubicOp46d(skiatest::Reporter* reporter, const char* filename) {
842 SkPath path, pathB;
843 path.setFillType(SkPath::kWinding_FillType);
844 path.moveTo(0,2);
845 path.cubicTo(3,5, 5,0, 4,2);
846 path.close();
847 pathB.setFillType(SkPath::kWinding_FillType);
848 pathB.moveTo(0,5);
849 pathB.cubicTo(2,4, 2,0, 5,3);
850 pathB.close();
851 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
852}
853
854static void cubicOp47d(skiatest::Reporter* reporter, const char* filename) {
855 SkPath path, pathB;
856 path.setFillType(SkPath::kWinding_FillType);
857 path.moveTo(0,1);
858 path.cubicTo(1,6, 6,2, 5,4);
859 path.close();
860 pathB.setFillType(SkPath::kWinding_FillType);
861 pathB.moveTo(2,6);
862 pathB.cubicTo(4,5, 1,0, 6,1);
863 pathB.close();
864 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
865}
866
867static void cubicOp48d(skiatest::Reporter* reporter, const char* filename) {
868 SkPath path, pathB;
869 path.setFillType(SkPath::kWinding_FillType);
870 path.moveTo(0,2);
871 path.cubicTo(2,3, 5,1, 3,2);
872 path.close();
873 pathB.setFillType(SkPath::kWinding_FillType);
874 pathB.moveTo(1,5);
875 pathB.cubicTo(2,3, 2,0, 3,2);
876 pathB.close();
877 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
878}
879
880static void cubicOp49d(skiatest::Reporter* reporter, const char* filename) {
881 SkPath path, pathB;
882 path.setFillType(SkPath::kWinding_FillType);
883 path.moveTo(0,2);
884 path.cubicTo(1,5, 3,2, 4,1);
885 path.close();
886 pathB.setFillType(SkPath::kWinding_FillType);
887 pathB.moveTo(2,3);
888 pathB.cubicTo(1,4, 2,0, 5,1);
889 pathB.close();
890 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
891}
892
893static void cubicOp50d(skiatest::Reporter* reporter, const char* filename) {
894 SkPath path, pathB;
895 path.setFillType(SkPath::kWinding_FillType);
896 path.moveTo(0,3);
897 path.cubicTo(1,6, 5,0, 5,1);
898 path.close();
899 pathB.setFillType(SkPath::kWinding_FillType);
900 pathB.moveTo(0,5);
901 pathB.cubicTo(1,5, 3,0, 6,1);
902 pathB.close();
903 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
904}
905
906static void cubicOp51d(skiatest::Reporter* reporter, const char* filename) {
907 SkPath path, pathB;
908 path.setFillType(SkPath::kWinding_FillType);
909 path.moveTo(0,3);
910 path.cubicTo(1,2, 4,1, 6,0);
911 path.close();
912 pathB.setFillType(SkPath::kWinding_FillType);
913 pathB.moveTo(1,4);
914 pathB.cubicTo(0,6, 3,0, 2,1);
915 pathB.close();
916 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
917}
918
919static void cubicOp52d(skiatest::Reporter* reporter, const char* filename) {
920 SkPath path, pathB;
921 path.setFillType(SkPath::kWinding_FillType);
922 path.moveTo(0,2);
923 path.cubicTo(1,2, 5,4, 4,3);
924 path.close();
925 pathB.setFillType(SkPath::kWinding_FillType);
926 pathB.moveTo(4,5);
927 pathB.cubicTo(3,4, 2,0, 2,1);
928 pathB.close();
929 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
930}
931
932static void cubicOp53d(skiatest::Reporter* reporter, const char* filename) {
933 SkPath path, pathB;
934 path.setFillType(SkPath::kWinding_FillType);
935 path.moveTo(0,3);
936 path.cubicTo(1,2, 5,3, 2,1);
937 path.close();
938 pathB.setFillType(SkPath::kWinding_FillType);
939 pathB.moveTo(3,5);
940 pathB.cubicTo(1,2, 3,0, 2,1);
941 pathB.close();
942 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
943}
944
945static void cubicOp54d(skiatest::Reporter* reporter, const char* filename) {
946 SkPath path, pathB;
947 path.setFillType(SkPath::kWinding_FillType);
948 path.moveTo(0,4);
949 path.cubicTo(1,3, 5,4, 4,2);
950 path.close();
951 pathB.setFillType(SkPath::kWinding_FillType);
952 pathB.moveTo(4,5);
953 pathB.cubicTo(2,4, 4,0, 3,1);
954 pathB.close();
955 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
956}
957
958static void cubicOp55d(skiatest::Reporter* reporter, const char* filename) {
959 SkPath path, pathB;
960 path.setFillType(SkPath::kWinding_FillType);
961 path.moveTo(0,5);
962 path.cubicTo(1,3, 3,2, 5,0);
963 path.close();
964 pathB.setFillType(SkPath::kWinding_FillType);
965 pathB.moveTo(2,3);
966 pathB.cubicTo(0,5, 5,0, 3,1);
967 pathB.close();
968 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
969}
970
971static void cubicOp56d(skiatest::Reporter* reporter, const char* filename) {
972 SkPath path, pathB;
973 path.setFillType(SkPath::kWinding_FillType);
974 path.moveTo(0,1);
975 path.cubicTo(2,6, 5,0, 2,1);
976 path.close();
977 pathB.setFillType(SkPath::kWinding_FillType);
978 pathB.moveTo(0,5);
979 pathB.cubicTo(1,2, 1,0, 6,2);
980 pathB.close();
981 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
982}
983
984static void cubicOp57d(skiatest::Reporter* reporter, const char* filename) {
985 SkPath path, pathB;
986 path.setFillType(SkPath::kWinding_FillType);
987 path.moveTo(0,5);
988 path.cubicTo(0,5, 5,4, 6,4);
989 path.close();
990 pathB.setFillType(SkPath::kWinding_FillType);
991 pathB.moveTo(4,5);
992 pathB.cubicTo(4,6, 5,0, 5,0);
993 pathB.close();
994 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
995}
996
997static void cubicOp58d(skiatest::Reporter* reporter, const char* filename) {
998 SkPath path, pathB;
999 path.setFillType(SkPath::kWinding_FillType);
1000 path.moveTo(0,5);
1001 path.cubicTo(3,4, 6,5, 5,3);
1002 path.close();
1003 pathB.setFillType(SkPath::kWinding_FillType);
1004 pathB.moveTo(5,6);
1005 pathB.cubicTo(3,5, 5,0, 4,3);
1006 pathB.close();
1007 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1008}
1009
1010static void cubicOp59d(skiatest::Reporter* reporter, const char* filename) {
1011 SkPath path, pathB;
1012 path.setFillType(SkPath::kWinding_FillType);
1013 path.moveTo(0,1);
1014 path.cubicTo(5,6, 4,0, 4,1);
1015 path.close();
1016 pathB.setFillType(SkPath::kWinding_FillType);
1017 pathB.moveTo(0,4);
1018 pathB.cubicTo(1,4, 1,0, 6,5);
1019 pathB.close();
1020 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1021}
1022
1023static void cubicOp60d(skiatest::Reporter* reporter, const char* filename) {
1024 SkPath path, pathB;
1025 path.setFillType(SkPath::kWinding_FillType);
1026 path.moveTo(0,2);
1027 path.cubicTo(4,6, 6,0, 5,2);
1028 path.close();
1029 pathB.setFillType(SkPath::kWinding_FillType);
1030 pathB.moveTo(0,6);
1031 pathB.cubicTo(2,5, 2,0, 6,4);
1032 pathB.close();
1033 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1034}
1035
1036static void cubicOp61d(skiatest::Reporter* reporter, const char* filename) {
1037 SkPath path, pathB;
1038 path.setFillType(SkPath::kWinding_FillType);
1039 path.moveTo(1,2);
1040 path.cubicTo(0,5, 3,2, 6,1);
1041 path.close();
1042 pathB.setFillType(SkPath::kWinding_FillType);
1043 pathB.moveTo(2,3);
1044 pathB.cubicTo(1,6, 2,1, 5,0);
1045 pathB.close();
1046 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1047}
1048
1049static void cubicOp62d(skiatest::Reporter* reporter, const char* filename) {
1050 SkPath path, pathB;
1051 path.setFillType(SkPath::kWinding_FillType);
1052 path.moveTo(1,3);
1053 path.cubicTo(5,6, 5,3, 5,4);
1054 path.close();
1055 pathB.setFillType(SkPath::kWinding_FillType);
1056 pathB.moveTo(3,5);
1057 pathB.cubicTo(4,5, 3,1, 6,5);
1058 pathB.close();
1059 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1060}
1061
1062static void cubicOp63d(skiatest::Reporter* reporter, const char* filename) {
1063 SkPath path, pathB;
1064 path.setFillType(SkPath::kWinding_FillType);
1065 path.moveTo(2,3);
1066 path.cubicTo(0,4, 3,2, 5,3);
1067 path.close();
1068 pathB.setFillType(SkPath::kWinding_FillType);
1069 pathB.moveTo(2,3);
1070 pathB.cubicTo(3,5, 3,2, 4,0);
1071 pathB.close();
1072 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1073}
1074
1075static void cubicOp64d(skiatest::Reporter* reporter, const char* filename) {
1076 SkPath path, pathB;
1077 path.moveTo(0,1);
1078 path.cubicTo(0,1, 1,0, 3,0);
1079 path.lineTo(0,1);
1080 path.close();
1081 pathB.moveTo(0,1);
1082 pathB.cubicTo(0,3, 1,0, 1,0);
1083 pathB.lineTo(0,1);
1084 pathB.close();
1085 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1086}
1087
1088static void cubicOp65d(skiatest::Reporter* reporter, const char* filename) {
1089 SkPath path, pathB;
1090 path.moveTo(0,1);
1091 path.cubicTo(1,5, 1,0, 1,0);
1092 path.lineTo(0,1);
1093 path.close();
1094 pathB.moveTo(0,1);
1095 pathB.cubicTo(0,1, 1,0, 5,1);
1096 pathB.lineTo(0,1);
1097 pathB.close();
1098 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1099}
1100
1101static void rectOp1d(skiatest::Reporter* reporter, const char* filename) {
1102 SkPath path, pathB;
1103 path.moveTo(0,1);
1104 path.cubicTo(0,1, 1,0, 3,0);
1105 path.lineTo(0,1);
1106 path.close();
1107 pathB.moveTo(0,1);
1108 pathB.cubicTo(0,3, 1,0, 1,0);
1109 pathB.lineTo(0,1);
1110 pathB.close();
1111 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1112}
1113
1114static void cubicOp66u(skiatest::Reporter* reporter, const char* filename) {
1115 SkPath path, pathB;
1116 path.setFillType(SkPath::kWinding_FillType);
1117 path.moveTo(0,1);
1118 path.cubicTo(2,6, 4,2, 5,3);
1119 path.close();
1120 pathB.setFillType(SkPath::kWinding_FillType);
1121 pathB.moveTo(2,4);
1122 pathB.cubicTo(3,5, 1,0, 6,2);
1123 pathB.close();
1124 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1125}
1126
1127static void cubicOp67u(skiatest::Reporter* reporter, const char* filename) {
1128 SkPath path, pathB;
1129 path.moveTo(3,5);
1130 path.cubicTo(1,6, 5,0, 3,1);
1131 path.lineTo(3,5);
1132 path.close();
1133 pathB.moveTo(0,5);
1134 pathB.cubicTo(1,3, 5,3, 6,1);
1135 pathB.lineTo(0,5);
1136 pathB.close();
1137 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1138}
1139
1140static void cubicOp68u(skiatest::Reporter* reporter, const char* filename) {
1141 SkPath path, pathB;
1142 path.moveTo(0,5);
1143 path.cubicTo(4,5, 4,1, 5,0);
1144 path.close();
1145 pathB.moveTo(1,4);
1146 pathB.cubicTo(0,5, 5,0, 5,4);
1147 pathB.close();
1148 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1149}
1150
1151static void cubicOp69d(skiatest::Reporter* reporter, const char* filename) {
1152 SkPath path, pathB;
1153 path.moveTo(1,3);
1154 path.cubicTo(0,1, 3,1, 2,0);
1155 path.close();
1156 pathB.moveTo(1,3);
1157 pathB.cubicTo(0,2, 3,1, 1,0);
1158 pathB.close();
1159 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1160}
1161
1162SkPathOp ops[] = {
1163 kUnion_SkPathOp,
1164 kXOR_SkPathOp,
1165 kReverseDifference_SkPathOp,
1166 kXOR_SkPathOp,
1167 kReverseDifference_SkPathOp,
1168};
1169
1170static void rRect1(skiatest::Reporter* reporter, const char* filename) {
1171 SkScalar xA = 0.65f;
1172 SkScalar xB = 10.65f;
1173 SkScalar xC = 20.65f;
1174 SkScalar xD = 30.65f;
1175 SkScalar xE = 40.65f;
1176 SkScalar xF = 50.65f;
1177
1178 SkScalar yA = 0.65f;
1179 SkScalar yB = 10.65f;
1180 SkScalar yC = 20.65f;
1181 SkScalar yD = 30.65f;
1182 SkScalar yE = 40.65f;
1183 SkScalar yF = 50.65f;
1184 SkPath paths[5];
1185 SkRect rects[5];
1186 rects[0].set(xB, yB, xE, yE);
1187 paths[0].addRoundRect(rects[0], SkIntToScalar(5), SkIntToScalar(5)); // red
1188 rects[1].set(xA, yA, xD, yD);
1189 paths[1].addRoundRect(rects[1], SkIntToScalar(5), SkIntToScalar(5)); // green
1190 rects[2].set(xC, yA, xF, yD);
1191 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blue
1192 rects[3].set(xA, yC, xD, yF);
1193 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yellow
1194 rects[4].set(xC, yC, xF, yF);
1195 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cyan
1196 SkPath path;
1197 path.setFillType(SkPath::kInverseEvenOdd_FillType);
1198 for (int index = 0; index < 5; ++index) {
Cary Clark4533f3d2018-08-08 09:48:09 -04001199 SkString uniqueName;
1200 uniqueName.printf("%s%d", filename, index);
1201 testPathOp(reporter, path, paths[index], ops[index], uniqueName.c_str());
Yuqian Li3154a532017-09-06 13:33:30 -04001202 REPORTER_ASSERT(reporter, Op(path, paths[index], ops[index], &path));
1203 }
1204}
1205
1206static void skp1(skiatest::Reporter* reporter, const char* filename) {
1207 SkPath path;
1208 path.setFillType(SkPath::kEvenOdd_FillType);
1209 path.moveTo(189,7);
1210 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4);
1211 path.lineTo(243,4);
1212 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7);
1213 path.lineTo(246,21);
1214 path.cubicTo(246,22.6568546f, 244.65686f,24, 243,24);
1215 path.lineTo(192,24);
1216 path.cubicTo(190.34314f,24, 189,22.6568546f, 189,21);
1217 path.lineTo(189,7);
1218 path.close();
1219 path.moveTo(191,8);
1220 path.cubicTo(191,6.89543009f, 191.895432f,6, 193,6);
1221 path.lineTo(242,6);
1222 path.cubicTo(243.104568f,6, 244,6.89543009f, 244,8);
1223 path.lineTo(244,20);
1224 path.cubicTo(244,21.1045704f, 243.104568f,22, 242,22);
1225 path.lineTo(193,22);
1226 path.cubicTo(191.895432f,22, 191,21.1045704f, 191,20);
1227 path.lineTo(191,8);
1228 path.close();
1229 SkPath pathB;
1230 pathB.setFillType(SkPath::kWinding_FillType);
1231 pathB.moveTo(189,4);
1232 pathB.lineTo(199,14);
1233 pathB.lineTo(236,14);
1234 pathB.lineTo(246,4);
1235 pathB.lineTo(189,4);
1236 pathB.close();
1237 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1238}
1239
1240static void skp2(skiatest::Reporter* reporter, const char* filename) {
1241 SkPath path;
1242 path.setFillType(SkPath::kEvenOdd_FillType);
1243 path.moveTo(253.000000f, 11757.0000f);
1244 path.lineTo(253.000000f, 222.000000f);
1245 path.lineTo(823.000000f, 222.000000f);
1246 path.lineTo(823.000000f, 11757.0000f);
1247 path.lineTo(253.000000f, 11757.0000f);
1248 path.close();
1249 SkPath pathB;
1250 pathB.setFillType(SkPath::kWinding_FillType);
1251 pathB.moveTo(258.000000f, 1028.00000f);
1252 pathB.lineTo(258.000000f, 1027.00000f);
1253 pathB.lineTo(823.000000f, 1027.00000f);
1254 pathB.lineTo(823.000000f, 1028.00000f);
1255 pathB.lineTo(258.000000f, 1028.00000f);
1256 pathB.close();
1257 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1258}
1259
1260static void skp3(skiatest::Reporter* reporter, const char* filename) {
1261 SkPath path;
1262 path.setFillType(SkPath::kEvenOdd_FillType);
1263 path.moveTo(717.000000f, 507.000000f);
1264 path.lineTo(717.000000f, 425.000000f);
1265 path.lineTo(973.000000f, 425.000000f);
1266 path.lineTo(973.000000f, 507.000000f);
1267 path.quadTo(973.000000f, 508.242645f, 972.121582f, 509.121613f);
1268 path.quadTo(971.242615f, 510.000000f, 970.000000f, 510.000000f);
1269 path.lineTo(720.000000f, 510.000000f);
1270 path.quadTo(718.757385f, 510.000000f, 717.878418f, 509.121613f);
1271 path.quadTo(717.000000f, 508.242645f, 717.000000f, 507.000000f);
1272 path.close();
1273 path.moveTo(719.000000f, 426.000000f);
1274 path.lineTo(971.000000f, 426.000000f);
1275 path.lineTo(971.000000f, 506.000000f);
1276 path.cubicTo(971.000000f, 507.104584f, 970.104553f, 508.000000f, 969.000000f, 508.000000f);
1277 path.lineTo(721.000000f, 508.000000f);
1278 path.cubicTo(719.895447f, 508.000000f, 719.000000f, 507.104584f, 719.000000f, 506.000000f);
1279 path.lineTo(719.000000f, 426.000000f);
1280 path.close();
1281 SkPath pathB;
1282 pathB.setFillType(SkPath::kWinding_FillType);
1283 pathB.moveTo(717.000000f, 510.000000f);
1284 pathB.lineTo(760.000000f, 467.000000f);
1285 pathB.lineTo(930.000000f, 467.000000f);
1286 pathB.lineTo(973.000000f, 510.000000f);
1287 pathB.lineTo(717.000000f, 510.000000f);
1288 pathB.close();
1289 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1290}
1291
1292static void skp4(skiatest::Reporter* reporter, const char* filename) {
1293 SkPath path;
1294 path.setFillType(SkPath::kEvenOdd_FillType);
1295 path.moveTo(230.756805f, 591.756775f);
1296 path.quadTo(232.514725f, 590.000000f, 235.000000f, 590.000000f);
1297 path.lineTo(300.000000f, 590.000000f);
1298 path.quadTo(302.485291f, 590.000000f, 304.243195f, 591.756775f);
1299 path.quadTo(306.000000f, 593.514709f, 306.000000f, 596.000000f);
1300 path.lineTo(306.000000f, 617.000000f);
1301 path.lineTo(229.000000f, 617.000000f);
1302 path.lineTo(229.000000f, 596.000000f);
1303 path.quadTo(229.000000f, 593.514709f, 230.756805f, 591.756775f);
1304 path.close();
1305 path.moveTo(231.000000f, 597.000000f);
1306 path.cubicTo(231.000000f, 594.238586f, 233.238571f, 592.000000f, 236.000000f, 592.000000f);
1307 path.lineTo(299.000000f, 592.000000f);
1308 path.cubicTo(301.761414f, 592.000000f, 304.000000f, 594.238586f, 304.000000f, 597.000000f);
1309 path.lineTo(304.000000f, 616.000000f);
1310 path.lineTo(231.000000f, 616.000000f);
1311 path.lineTo(231.000000f, 597.000000f);
1312 path.close();
1313 SkPath pathB;
1314 pathB.setFillType(SkPath::kWinding_FillType);
1315 pathB.moveTo(306.000000f, 590.000000f);
1316 pathB.lineTo(292.000000f, 604.000000f);
1317 pathB.lineTo(305.000000f, 617.000000f);
1318 pathB.lineTo(306.000000f, 617.000000f);
1319 pathB.lineTo(306.000000f, 590.000000f);
1320 pathB.close();
1321 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1322}
1323
1324static void skp5(skiatest::Reporter* reporter, const char* filename) {
1325 SkPath path;
1326 path.setFillType(SkPath::kEvenOdd_FillType);
1327 path.moveTo(18.0000000f, 226.000000f);
1328 path.quadTo(14.6862917f, 226.000000f, 12.3423996f, 228.342407f);
1329 path.quadTo(10.0000000f, 230.686295f, 10.0000000f, 234.000000f);
1330 path.lineTo(10.0000000f, 253.000000f);
1331 path.lineTo(1247.00000f, 253.000000f);
1332 path.lineTo(1247.00000f, 234.000000f);
1333 path.quadTo(1247.00000f, 230.686295f, 1244.65759f, 228.342407f);
1334 path.quadTo(1242.31372f, 226.000000f, 1239.00000f, 226.000000f);
1335 path.lineTo(18.0000000f, 226.000000f);
1336 path.close();
1337 SkPath pathB;
1338 pathB.setFillType(SkPath::kInverseWinding_FillType);
1339 pathB.moveTo(18.0000000f, 226.000000f);
1340 pathB.lineTo(1239.00000f, 226.000000f);
1341 pathB.cubicTo(1243.41833f, 226.000000f, 1247.00000f, 229.581726f, 1247.00000f, 234.000000f);
1342 pathB.lineTo(1247.00000f, 252.000000f);
1343 pathB.lineTo(10.0000000f, 252.000000f);
1344 pathB.lineTo(10.0000000f, 234.000000f);
1345 pathB.cubicTo(10.0000000f, 229.581726f, 13.5817204f, 226.000000f, 18.0000000f, 226.000000f);
1346 pathB.close();
1347 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1348}
1349
1350static void cubicOp70d(skiatest::Reporter* reporter, const char* filename) {
1351 SkPath path, pathB;
1352 path.setFillType(SkPath::kWinding_FillType);
1353 path.moveTo(0,1);
1354 path.cubicTo(0,5, 4,0, 5,0);
1355 path.close();
1356 pathB.setFillType(SkPath::kWinding_FillType);
1357 pathB.moveTo(0,4);
1358 pathB.cubicTo(0,5, 1,0, 5,0);
1359 pathB.close();
1360 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1361}
1362
1363static void cubicOp71d(skiatest::Reporter* reporter, const char* filename) {
1364 SkPath path, pathB;
1365 path.setFillType(SkPath::kWinding_FillType);
1366 path.moveTo(0,1);
1367 path.cubicTo(0,5, 4,1, 6,4);
1368 path.close();
1369 pathB.setFillType(SkPath::kWinding_FillType);
1370 pathB.moveTo(1,4);
1371 pathB.cubicTo(4,6, 1,0, 5,0);
1372 pathB.close();
1373 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1374}
1375
1376static void cubicOp72i(skiatest::Reporter* reporter, const char* filename) {
1377 SkPath path, pathB;
1378 path.setFillType(SkPath::kWinding_FillType);
1379 path.moveTo(0,1);
1380 path.cubicTo(0,5, 5,2, 5,4);
1381 path.close();
1382 pathB.setFillType(SkPath::kWinding_FillType);
1383 pathB.moveTo(2,5);
1384 pathB.cubicTo(4,5, 1,0, 5,0);
1385 pathB.close();
1386 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1387}
1388
1389static void cubicOp73d(skiatest::Reporter* reporter, const char* filename) {
1390 SkPath path, pathB;
1391 path.setFillType(SkPath::kWinding_FillType);
1392 path.moveTo(0,1);
1393 path.cubicTo(3,4, 4,0, 6,4);
1394 path.lineTo(0,1);
1395 path.close();
1396 pathB.setFillType(SkPath::kWinding_FillType);
1397 pathB.moveTo(0,4);
1398 pathB.cubicTo(4,6, 1,0, 4,3);
1399 pathB.lineTo(0,4);
1400 pathB.close();
1401 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1402}
1403
1404static void cubicOp74d(skiatest::Reporter* reporter, const char* filename) {
1405 SkPath path, pathB;
1406 path.setFillType(SkPath::kWinding_FillType);
1407 path.moveTo(0,1);
1408 path.cubicTo(1,5, 5,1, 5,1);
1409 path.lineTo(0,1);
1410 path.close();
1411 pathB.setFillType(SkPath::kWinding_FillType);
1412 pathB.moveTo(1,5);
1413 pathB.cubicTo(1,5, 1,0, 5,1);
1414 pathB.lineTo(1,5);
1415 pathB.close();
1416 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1417}
1418
1419static void cubicOp75d(skiatest::Reporter* reporter, const char* filename) {
1420 SkPath path, pathB;
1421 path.setFillType(SkPath::kWinding_FillType);
1422 path.moveTo(0,1);
1423 path.cubicTo(0,4, 5,1, 6,4);
1424 path.lineTo(0,1);
1425 path.close();
1426 pathB.setFillType(SkPath::kWinding_FillType);
1427 pathB.moveTo(1,5);
1428 pathB.cubicTo(4,6, 1,0, 4,0);
1429 pathB.lineTo(1,5);
1430 pathB.close();
1431 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1432}
1433
1434static void cubicOp76u(skiatest::Reporter* reporter, const char* filename) {
1435 SkPath path, pathB;
1436 path.setFillType(SkPath::kWinding_FillType);
1437 path.moveTo(0,1);
1438 path.cubicTo(0,2, 2,0, 5,3);
1439 path.close();
1440 pathB.setFillType(SkPath::kWinding_FillType);
1441 pathB.moveTo(0,2);
1442 pathB.cubicTo(3,5, 1,0, 2,0);
1443 pathB.close();
1444 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1445}
1446
1447static void cubicOp77i(skiatest::Reporter* reporter, const char* filename) {
1448 SkPath path, pathB;
1449 path.setFillType(SkPath::kEvenOdd_FillType);
1450 path.moveTo(0,1);
1451 path.cubicTo(1,3, 2,0, 3,2);
1452 path.lineTo(0,1);
1453 path.close();
1454 pathB.setFillType(SkPath::kEvenOdd_FillType);
1455 pathB.moveTo(0,2);
1456 pathB.cubicTo(2,3, 1,0, 3,1);
1457 pathB.lineTo(0,2);
1458 pathB.close();
1459 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1460}
1461
1462static void cubicOp78u(skiatest::Reporter* reporter, const char* filename) {
1463 SkPath path, pathB;
1464 path.setFillType(SkPath::kEvenOdd_FillType);
1465 path.moveTo(1,6);
1466 path.cubicTo(1,6, 5,0, 6,1);
1467 path.lineTo(1,6);
1468 path.close();
1469 pathB.setFillType(SkPath::kEvenOdd_FillType);
1470 pathB.moveTo(0,5);
1471 pathB.cubicTo(1,6, 6,1, 6,1);
1472 pathB.lineTo(0,5);
1473 pathB.close();
1474 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1475}
1476
1477static void cubicOp79u(skiatest::Reporter* reporter, const char* filename) {
1478 SkPath path, pathB;
1479 path.setFillType(SkPath::kWinding_FillType);
1480 path.moveTo(0,1);
1481 path.cubicTo(1,3, 1,0, 6,4);
1482 path.close();
1483 pathB.setFillType(SkPath::kWinding_FillType);
1484 pathB.moveTo(0,1);
1485 pathB.cubicTo(4,6, 1,0, 3,1);
1486 pathB.close();
1487 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1488}
1489
1490static void cubicOp80i(skiatest::Reporter* reporter, const char* filename) {
1491 SkPath path, pathB;
1492 path.setFillType(SkPath::kWinding_FillType);
1493 path.moveTo(0,1);
1494 path.cubicTo(2,3, 2,1, 4,3);
1495 path.lineTo(0,1);
1496 path.close();
1497 pathB.setFillType(SkPath::kWinding_FillType);
1498 pathB.moveTo(1,2);
1499 pathB.cubicTo(3,4, 1,0, 3,2);
1500 pathB.lineTo(1,2);
1501 pathB.close();
1502 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1503}
1504
1505static void cubicOp81d(skiatest::Reporter* reporter, const char* filename) {
1506 SkPath path, pathB;
1507 path.setFillType(SkPath::kWinding_FillType);
1508 path.moveTo(0,1);
1509 path.cubicTo(4,6, 4,3, 5,4);
1510 path.close();
1511 pathB.setFillType(SkPath::kWinding_FillType);
1512 pathB.moveTo(3,4);
1513 pathB.cubicTo(4,5, 1,0, 6,4);
1514 pathB.close();
1515 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1516}
1517
1518static void cubicOp82i(skiatest::Reporter* reporter, const char* filename) {
1519 SkPath path, pathB;
1520 path.setFillType(SkPath::kEvenOdd_FillType);
1521 path.moveTo(0,1);
1522 path.cubicTo(2,3, 5,2, 3,0);
1523 path.lineTo(0,1);
1524 path.close();
1525 pathB.setFillType(SkPath::kWinding_FillType);
1526 pathB.moveTo(2,5);
1527 pathB.cubicTo(0,3, 1,0, 3,2);
1528 pathB.lineTo(2,5);
1529 pathB.close();
1530 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1531}
1532
1533static void cubicOp83i(skiatest::Reporter* reporter, const char* filename) {
1534 SkPath path, pathB;
1535 path.setFillType(SkPath::kWinding_FillType);
1536 path.moveTo(0,1);
1537 path.cubicTo(0,3, 2,1, 4,1);
1538 path.lineTo(0,1);
1539 path.close();
1540 pathB.setFillType(SkPath::kWinding_FillType);
1541 pathB.moveTo(1,2);
1542 pathB.cubicTo(1,4, 1,0, 3,0);
1543 pathB.lineTo(1,2);
1544 pathB.close();
1545 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1546}
1547
1548static void cubicOp84d(skiatest::Reporter* reporter, const char* filename) {
1549 SkPath path, pathB;
1550 path.setFillType(SkPath::kWinding_FillType);
1551 path.moveTo(0,4);
1552 path.cubicTo(2,3, 6,3, 3,2);
1553 path.close();
1554 pathB.setFillType(SkPath::kWinding_FillType);
1555 pathB.moveTo(3,6);
1556 pathB.cubicTo(2,3, 4,0, 3,2);
1557 pathB.close();
1558 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1559}
1560
1561static void skpClip1(skiatest::Reporter* reporter, const char* filename) {
1562 SkPath path;
1563 path.setFillType(SkPath::kEvenOdd_FillType);
1564 path.moveTo(1126.17114f, 877.171204f);
1565 path.quadTo(1127.34314f, 876.000000f, 1129.00000f, 876.000000f);
1566 path.lineTo(1243.00000f, 876.000000f);
1567 path.quadTo(1244.65686f, 876.000000f, 1245.82886f, 877.171204f);
1568 path.quadTo(1247.00000f, 878.343140f, 1247.00000f, 880.000000f);
1569 path.lineTo(1247.00000f, 907.000000f);
1570 path.lineTo(1246.00000f, 907.000000f);
1571 path.lineTo(1246.00000f, 880.000000f);
1572 path.cubicTo(1246.00000f, 878.343140f, 1244.65686f, 877.000000f, 1243.00000f, 877.000000f);
1573 path.lineTo(1129.00000f, 877.000000f);
1574 path.cubicTo(1127.34314f, 877.000000f, 1126.00000f, 878.343140f, 1126.00000f, 880.000000f);
1575 path.lineTo(1126.00000f, 907.000000f);
1576 path.lineTo(1125.00000f, 907.000000f);
1577 path.lineTo(1125.00000f, 880.000000f);
1578 path.quadTo(1125.00000f, 878.343140f, 1126.17114f, 877.171204f);
1579 path.close();
1580 SkPath pathB;
1581 pathB.setFillType(SkPath::kWinding_FillType);
1582 pathB.moveTo(1247.00000f, 876.000000f);
1583 pathB.lineTo(1231.00000f, 892.000000f);
1584 pathB.lineTo(1246.00000f, 907.000000f);
1585 pathB.lineTo(1247.00000f, 907.000000f);
1586 pathB.lineTo(1247.00000f, 876.000000f);
1587 pathB.close();
1588 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1589}
1590
1591static void skpClip2(skiatest::Reporter* reporter, const char* filename) {
1592 SkPath path;
1593 path.setFillType(SkPath::kEvenOdd_FillType);
1594 path.moveTo(134.000000f, 11414.0000f);
1595 path.cubicTo(131.990234f, 11414.0000f, 130.326660f, 11415.4824f, 130.042755f, 11417.4131f);
1596 path.cubicTo(130.233124f, 11418.3193f, 131.037079f, 11419.0000f, 132.000000f, 11419.0000f);
1597 path.lineTo(806.000000f, 11419.0000f);
1598 path.cubicTo(806.962891f, 11419.0000f, 807.766907f, 11418.3193f, 807.957275f, 11417.4131f);
1599 path.cubicTo(807.673401f, 11415.4824f, 806.009766f, 11414.0000f, 804.000000f, 11414.0000f);
1600 path.lineTo(134.000000f, 11414.0000f);
1601 path.close();
1602 SkPath pathB;
1603 pathB.setFillType(SkPath::kInverseWinding_FillType);
1604 pathB.moveTo(132.000000f, 11415.0000f);
1605 pathB.lineTo(806.000000f, 11415.0000f);
1606 pathB.cubicTo(807.104553f, 11415.0000f, 808.000000f, 11415.4473f, 808.000000f, 11416.0000f);
1607 pathB.lineTo(808.000000f, 11417.0000f);
1608 pathB.cubicTo(808.000000f, 11418.1045f, 807.104553f, 11419.0000f, 806.000000f, 11419.0000f);
1609 pathB.lineTo(132.000000f, 11419.0000f);
1610 pathB.cubicTo(130.895432f, 11419.0000f, 130.000000f, 11418.1045f, 130.000000f, 11417.0000f);
1611 pathB.lineTo(130.000000f, 11416.0000f);
1612 pathB.cubicTo(130.000000f, 11415.4473f, 130.895432f, 11415.0000f, 132.000000f, 11415.0000f);
1613 pathB.close();
1614 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1615}
1616
1617static void skp96prezzi1(skiatest::Reporter* reporter, const char* filename) {
1618 SkPath path;
1619 path.setFillType(SkPath::kEvenOdd_FillType);
1620 path.moveTo(157.464005f, 670.463989f);
1621 path.quadTo(158.928925f, 669.000000f, 161.000000f, 669.000000f);
1622 path.lineTo(248.000000f, 669.000000f);
1623 path.quadTo(250.071075f, 669.000000f, 251.535995f, 670.463989f);
1624 path.quadTo(253.000000f, 671.928955f, 253.000000f, 674.000000f);
1625 path.lineTo(253.000000f, 706.000000f);
1626 path.lineTo(251.000000f, 706.000000f);
1627 path.lineTo(251.000000f, 675.000000f);
1628 path.cubicTo(251.000000f, 672.790833f, 249.209137f, 671.000000f, 247.000000f, 671.000000f);
1629 path.lineTo(162.000000f, 671.000000f);
1630 path.cubicTo(159.790863f, 671.000000f, 158.000000f, 672.790833f, 158.000000f, 675.000000f);
1631 path.lineTo(158.000000f, 706.000000f);
1632 path.lineTo(156.000000f, 706.000000f);
1633 path.lineTo(156.000000f, 674.000000f);
1634 path.quadTo(156.000000f, 671.928955f, 157.464005f, 670.463989f);
1635 path.close();
1636 SkPath pathB;
1637 pathB.setFillType(SkPath::kWinding_FillType);
1638 pathB.moveTo(156.000000f, 669.000000f);
1639 pathB.lineTo(178.500000f, 691.500000f);
1640 pathB.lineTo(230.500000f, 691.500000f);
1641 pathB.lineTo(253.000000f, 669.000000f);
1642 pathB.lineTo(156.000000f, 669.000000f);
1643 pathB.close();
1644 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1645}
1646
1647static void skpancestry_com1(skiatest::Reporter* reporter, const char* filename) {
1648 SkPath path;
1649 path.setFillType(SkPath::kEvenOdd_FillType);
1650 path.moveTo(161.000000f, 925.000000f);
1651 path.cubicTo(159.874390f, 925.000000f, 158.835663f, 925.371948f, 158.000000f, 925.999634f);
1652 path.lineTo(158.000000f, 926.000000f);
1653 path.lineTo(1108.00000f, 926.000000f);
1654 path.lineTo(1108.00000f, 925.999634f);
1655 path.cubicTo(1107.16443f, 925.371948f, 1106.12561f, 925.000000f, 1105.00000f, 925.000000f);
1656 path.lineTo(161.000000f, 925.000000f);
1657 path.close();
1658 SkPath pathB;
1659 pathB.setFillType(SkPath::kEvenOdd_FillType);
1660 pathB.moveTo(161.000000f, 926.000000f);
1661 pathB.lineTo(1105.00000f, 926.000000f);
1662 pathB.cubicTo(1107.20911f, 926.000000f, 1109.00000f, 927.790833f, 1109.00000f, 930.000000f);
1663 pathB.lineTo(1109.00000f, 956.000000f);
1664 pathB.cubicTo(1109.00000f, 958.209167f, 1107.20911f, 960.000000f, 1105.00000f, 960.000000f);
1665 pathB.lineTo(161.000000f, 960.000000f);
1666 pathB.cubicTo(158.790863f, 960.000000f, 157.000000f, 958.209167f, 157.000000f, 956.000000f);
1667 pathB.lineTo(157.000000f, 930.000000f);
1668 pathB.cubicTo(157.000000f, 927.790833f, 158.790863f, 926.000000f, 161.000000f, 926.000000f);
1669 pathB.close();
1670 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1671}
1672
1673static void skpeldorado_com_ua1(skiatest::Reporter* reporter, const char* filename) {
1674 SkPath path;
1675 path.setFillType(SkPath::kEvenOdd_FillType);
1676 path.moveTo(286.695129f, 291.000000f);
1677 path.lineTo(229.304855f, 561.000000f);
1678 path.lineTo(979.304871f, 561.000000f);
1679 path.lineTo(1036.69507f, 291.000000f);
1680 path.lineTo(286.695129f, 291.000000f);
1681 path.close();
1682 SkPath pathB;
1683 pathB.setFillType(SkPath::kWinding_FillType);
1684 pathB.moveTo(1006.69513f, 291.000000f);
1685 pathB.cubicTo(1023.26367f, 291.000000f, 1033.84021f, 304.431458f, 1030.31836f, 321.000000f);
1686 pathB.lineTo(985.681519f, 531.000000f);
1687 pathB.cubicTo(982.159790f, 547.568542f, 965.873413f, 561.000000f, 949.304871f, 561.000000f);
1688 pathB.lineTo(259.304871f, 561.000000f);
1689 pathB.cubicTo(242.736313f, 561.000000f, 232.159805f, 547.568542f, 235.681549f, 531.000000f);
1690 pathB.lineTo(280.318420f, 321.000000f);
1691 pathB.cubicTo(283.840179f, 304.431458f, 300.126587f, 291.000000f, 316.695129f, 291.000000f);
1692 pathB.lineTo(1006.69513f, 291.000000f);
1693 pathB.close();
1694 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1695}
1696
1697static void skpbyte_com1(skiatest::Reporter* reporter, const char* filename) {
1698 SkPath path;
1699 path.setFillType(SkPath::kEvenOdd_FillType);
1700 path.moveTo(968.000000f, 14.0000000f);
1701 path.cubicTo(965.238586f, 14.0000000f, 963.000000f, 16.2385769f, 963.000000f, 19.0000000f);
1702 path.lineTo(963.000000f, 32.0000000f);
1703 path.cubicTo(963.000000f, 34.7614250f, 965.238586f, 37.0000000f, 968.000000f, 37.0000000f);
1704 path.lineTo(1034.00000f, 37.0000000f);
1705 path.cubicTo(1036.76147f, 37.0000000f, 1039.00000f, 34.7614250f, 1039.00000f, 32.0000000f);
1706 path.lineTo(1039.00000f, 19.0000000f);
1707 path.cubicTo(1039.00000f, 16.2385769f, 1036.76147f, 14.0000000f, 1034.00000f, 14.0000000f);
1708 path.lineTo(968.000000f, 14.0000000f);
1709 path.close();
1710 SkPath pathB;
1711 pathB.setFillType(SkPath::kInverseWinding_FillType);
1712 pathB.moveTo(968.000000f, 14.0000000f);
1713 pathB.lineTo(1034.00000f, 14.0000000f);
1714 pathB.cubicTo(1036.76147f, 14.0000000f, 1039.00000f, 16.2385750f, 1039.00000f, 19.0000000f);
1715 pathB.lineTo(1039.00000f, 32.0000000f);
1716 pathB.cubicTo(1039.00000f, 34.2091408f, 1036.76147f, 36.0000000f, 1034.00000f, 36.0000000f);
1717 pathB.lineTo(968.000000f, 36.0000000f);
1718 pathB.cubicTo(965.238586f, 36.0000000f, 963.000000f, 34.2091408f, 963.000000f, 32.0000000f);
1719 pathB.lineTo(963.000000f, 19.0000000f);
1720 pathB.cubicTo(963.000000f, 16.2385750f, 965.238586f, 14.0000000f, 968.000000f, 14.0000000f);
1721 pathB.close();
1722 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1723}
1724
1725static void skphealth_com76(skiatest::Reporter* reporter, const char* filename) {
1726 SkPath path;
1727 path.setFillType(SkPath::kEvenOdd_FillType);
1728 path.moveTo(708.099182f, 7.09919119f);
1729 path.lineTo(708.099182f, 7.09920025f);
1730 path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
1731 path.lineTo(704.000000f, 33.0000000f);
1732 path.lineTo(705.000000f, 33.0000000f);
1733 path.lineTo(705.000000f, 17.0000000f);
1734 path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
1735 path.lineTo(708.099182f, 7.09919119f);
1736 path.close();
1737 SkPath pathB;
1738 pathB.setFillType(SkPath::kWinding_FillType);
1739 pathB.moveTo(704.000000f, 3.00000000f);
1740 pathB.lineTo(704.000000f, 33.0000000f);
1741 pathB.lineTo(705.000000f, 33.0000000f);
1742 pathB.lineTo(719.500000f, 3.00000000f);
1743 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1744}
1745
1746static void skpahrefs_com88(skiatest::Reporter* reporter, const char* filename) {
1747 SkPath path;
1748 path.setFillType(SkPath::kEvenOdd_FillType);
1749 path.moveTo(1099.82886f, 7.17117119f);
1750 path.lineTo(1099.12134f, 7.87867832f);
1751 path.cubicTo(1099.66418f, 8.42157173f, 1100.00000f, 9.17157173f, 1100.00000f, 10.0000000f);
1752 path.lineTo(1100.00000f, 28.0000000f);
1753 path.cubicTo(1100.00000f, 29.6568546f, 1098.65686f, 31.0000000f, 1097.00000f, 31.0000000f);
1754 path.lineTo(1088.00000f, 31.0000000f);
1755 path.lineTo(1088.00000f, 32.0000000f);
1756 path.lineTo(1097.00000f, 32.0000000f);
1757 path.quadTo(1098.65686f, 32.0000000f, 1099.82886f, 30.8288002f);
1758 path.quadTo(1101.00000f, 29.6568546f, 1101.00000f, 28.0000000f);
1759 path.lineTo(1101.00000f, 10.0000000f);
1760 path.quadTo(1101.00000f, 8.34314537f, 1099.82886f, 7.17119980f);
1761 path.lineTo(1099.82886f, 7.17117119f);
1762 path.close();
1763 SkPath pathB;
1764 pathB.setFillType(SkPath::kWinding_FillType);
1765 pathB.moveTo(1101.00000f, 6.00000000f);
1766 pathB.lineTo(1088.00000f, 6.00000000f);
1767 pathB.lineTo(1088.00000f, 19.0000000f);
1768 pathB.lineTo(1101.00000f, 32.0000000f);
1769 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1770}
1771
1772static void skpahrefs_com29(skiatest::Reporter* reporter, const char* filename) {
1773 SkPath path;
1774 path.setFillType(SkPath::kEvenOdd_FillType);
1775 path.moveTo(1037.17114f, 7.17119980f);
1776 path.quadTo(1038.34314f, 6.00000000f, 1040.00000f, 6.00000000f);
1777 path.lineTo(1074.00000f, 6.00000000f);
1778 path.lineTo(1074.00000f, 32.0000000f);
1779 path.lineTo(1040.00000f, 32.0000000f);
1780 path.quadTo(1038.34314f, 32.0000000f, 1037.17114f, 30.8288002f);
1781 path.quadTo(1036.00000f, 29.6568546f, 1036.00000f, 28.0000000f);
1782 path.lineTo(1036.00000f, 10.0000000f);
1783 path.quadTo(1036.00000f, 8.34314537f, 1037.17114f, 7.17119980f);
1784 path.close();
1785 path.moveTo(1037.00000f, 10.0000000f);
1786 path.cubicTo(1037.00000f, 8.34314537f, 1038.34314f, 7.00000000f, 1040.00000f, 7.00000000f);
1787 path.lineTo(1073.00000f, 7.00000000f);
1788 path.lineTo(1073.00000f, 31.0000000f);
1789 path.lineTo(1040.00000f, 31.0000000f);
1790 path.cubicTo(1038.34314f, 31.0000000f, 1037.00000f, 29.6568546f, 1037.00000f, 28.0000000f);
1791 path.lineTo(1037.00000f, 10.0000000f);
1792 path.close();
1793 SkPath pathB;
1794 pathB.setFillType(SkPath::kWinding_FillType);
1795 pathB.moveTo(1036.00000f, 32.0000000f);
1796 pathB.lineTo(1049.00000f, 19.0000000f);
1797 pathB.lineTo(1073.00000f, 31.0000000f);
1798 pathB.lineTo(1074.00000f, 32.0000000f);
1799 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1800}
1801
1802static void cubicOp85d(skiatest::Reporter* reporter, const char* filename) {
1803 SkPath path;
1804 path.setFillType(SkPath::kWinding_FillType);
1805 path.moveTo(0,1);
1806 path.cubicTo(1,6, 1,0, 6,2);
1807 path.close();
1808 SkPath pathB;
1809 pathB.setFillType(SkPath::kWinding_FillType);
1810 pathB.moveTo(0,1);
1811 pathB.cubicTo(2,6, 1,0, 6,1);
1812 pathB.close();
1813 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1814}
1815
1816static void skpkkiste_to98(skiatest::Reporter* reporter, const char* filename) {
1817 SkPath path;
1818 path.setFillType(SkPath::kEvenOdd_FillType);
1819 path.moveTo(96, 122);
1820 path.cubicTo(94.6192932f, 122, 93.3692932f, 122.559647f, 92.4644699f, 123.46447f);
1821 path.lineTo(94.1715698f, 125.17157f);
1822 path.cubicTo(94.8954315f, 124.447708f, 95.8954315f, 124, 97, 124);
1823 path.lineTo(257, 124);
1824 path.cubicTo(258.104553f, 124, 259.104584f, 124.447708f, 259.82843f, 125.17157f);
1825 path.lineTo(261.535522f, 123.46447f);
1826 path.cubicTo(260.630707f, 122.559647f, 259.380707f, 122, 258, 122);
1827 path.lineTo(96, 122);
1828 path.close();
1829 SkPath pathB;
1830 pathB.setFillType(SkPath::kWinding_FillType);
1831 pathB.moveTo(258, 122);
1832 pathB.cubicTo(260.761414f, 122, 263, 124.238579f, 263, 127);
1833 pathB.lineTo(263, 284);
1834 pathB.cubicTo(263, 286.761414f, 260.761414f, 289, 258, 289);
1835 pathB.lineTo(96, 289);
1836 pathB.cubicTo(93.2385788f, 289, 91, 286.761414f, 91, 284);
1837 pathB.lineTo(91, 127);
1838 pathB.cubicTo(91, 124.238579f, 93.2385788f, 122, 96, 122);
1839 pathB.lineTo(258, 122);
1840 pathB.close();
1841 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1842}
1843
1844static void issue1417(skiatest::Reporter* reporter, const char* filename) {
1845 SkPath path1;
1846 path1.moveTo(122.58908843994140625f, 82.2836456298828125f);
1847 path1.quadTo(129.8215789794921875f, 80, 138, 80);
1848 path1.quadTo(147.15692138671875f, 80, 155.1280364990234375f, 82.86279296875f);
1849 path1.lineTo(161.1764678955078125f, 100);
1850 path1.lineTo(161.1764678955078125f, 100);
1851 path1.lineTo(115.29412078857421875f, 100);
1852 path1.lineTo(115.29412078857421875f, 100);
1853 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1854 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1855 path1.close();
1856 path1.moveTo(98.68194580078125f, 140.343841552734375f);
1857 path1.lineTo(115.29412078857421875f, 100);
1858 path1.lineTo(115.29412078857421875f, 100);
1859 path1.lineTo(97.9337615966796875f, 100);
1860 path1.lineTo(97.9337615966796875f, 100);
1861 path1.quadTo(88, 112.94264984130859375f, 88, 130);
1862 path1.quadTo(88, 131.544830322265625f, 88.08148956298828125f, 133.0560302734375f);
1863 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1864 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1865 path1.close();
1866 path1.moveTo(136.969696044921875f, 166.6666717529296875f);
1867 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1868 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1869 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1870 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1871 path1.quadTo(96.94116973876953125f, 159.65185546875f, 102.64466094970703125f, 165.3553466796875f);
1872 path1.quadTo(110.7924652099609375f, 173.503143310546875f, 120.8179779052734375f, 177.1177825927734375f);
1873 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1874 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1875 path1.close();
1876 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1877 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1878 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1879 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1880 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1881 path1.quadTo(164.392425537109375f, 174.318267822265625f, 173.3553466796875f, 165.3553466796875f);
1882 path1.quadTo(177.805816650390625f, 160.9048614501953125f, 180.90380859375f, 155.8941650390625f);
1883 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1884 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1885 path1.close();
1886 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1887 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1888 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1889 path1.quadTo(188, 131.8880615234375f, 188, 130);
1890 path1.quadTo(188, 112.942657470703125f, 178.0662384033203125f, 100);
1891 path1.lineTo(161.1764678955078125f, 100);
1892 path1.lineTo(161.1764678955078125f, 100);
1893 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1894 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1895 path1.close();
1896
1897 SkPath path2;
1898 path2.moveTo(174.117645263671875f, 100);
1899 path2.lineTo(161.1764678955078125f, 100);
1900 path2.lineTo(161.1764678955078125f, 100);
1901 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1902 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1903 path2.quadTo(153.14971923828125f, 82.15229034423828125f, 151.098419189453125f, 81.618133544921875f);
1904 path2.lineTo(143.5294189453125f, 100);
1905 path2.lineTo(143.5294189453125f, 100);
1906 path2.lineTo(161.1764678955078125f, 100);
1907 path2.lineTo(161.1764678955078125f, 100);
1908 path2.lineTo(168.23529052734375f, 120);
1909 path2.lineTo(168.23529052734375f, 120);
1910 path2.lineTo(181.1764678955078125f, 120);
1911 path2.lineTo(181.1764678955078125f, 120);
1912 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1913 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1914 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1915 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1916 path2.quadTo(188, 131.8880615234375f, 188, 130);
1917 path2.quadTo(188, 124.80947113037109375f, 187.080169677734375f, 120);
1918 path2.lineTo(181.1764678955078125f, 120);
1919 path2.lineTo(181.1764678955078125f, 120);
1920 path2.lineTo(174.117645263671875f, 100);
1921 path2.lineTo(174.117645263671875f, 100);
1922 path2.close();
1923 path2.moveTo(88.91983795166015625f, 120);
1924 path2.lineTo(107.0588226318359375f, 120);
1925 path2.lineTo(107.0588226318359375f, 120);
1926 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1927 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1928 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1929 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1930 path2.quadTo(88, 131.544830322265625f, 88, 130);
1931 path2.quadTo(88, 124.80951690673828125f, 88.91983795166015625f, 120);
1932 path2.close();
1933 path2.moveTo(96.67621612548828125f, 145.21490478515625f);
1934 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1935 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1936 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1937 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1938 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1939 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1940 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1941 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1942 path2.close();
1943 path2.moveTo(113.232177734375f, 173.5789947509765625f);
1944 path2.quadTo(116.8802642822265625f, 175.69805908203125f, 120.8179779052734375f, 177.1177825927734375f);
1945 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1946 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1947 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1948 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1949 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1950 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1951 path2.close();
1952 // FIXME : difficult data, circle back later
1953 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
1954}
1955
1956static void issue1418(skiatest::Reporter* reporter, const char* filename) {
1957 SkPath path1;
1958 path1.moveTo(0, 0);
1959 path1.lineTo(1, 0);
1960 path1.lineTo(1, 0);
1961 path1.lineTo(1, 1);
1962 path1.lineTo(1, 1);
1963 path1.lineTo(0, 1);
1964 path1.lineTo(0, 1);
1965 path1.lineTo(0, 0);
1966 path1.lineTo(0, 0);
1967 path1.close();
1968
1969 SkPath path2;
1970 path2.moveTo(0.64644664525985717773f, -0.35355341434478759766f);
1971 path2.quadTo(0.79289329051971435547f, -0.50000005960464477539f, 1.0000001192092895508f, -0.50000005960464477539f);
1972 path2.quadTo(1.2071068286895751953f, -0.50000005960464477539f, 1.3535535335540771484f, -0.35355341434478759766f);
1973 path2.quadTo(1.5000001192092895508f, -0.20710679888725280762f, 1.5000001192092895508f, 0);
1974 path2.quadTo(1.5000001192092895508f, 0.20710679888725280762f, 1.3535535335540771484f, 0.35355341434478759766f);
1975 path2.quadTo(1.2071068286895751953f, 0.50000005960464477539f, 1.0000001192092895508f, 0.50000005960464477539f);
1976 path2.quadTo(0.79289329051971435547f, 0.50000005960464477539f, 0.64644664525985717773f, 0.35355341434478759766f);
1977 path2.quadTo(0.50000005960464477539f, 0.20710679888725280762f, 0.50000005960464477539f, 0);
1978 path2.quadTo(0.50000005960464477539f, -0.20710679888725280762f, 0.64644664525985717773f, -0.35355341434478759766f);
1979 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
1980}
1981
1982static void cubicOp85i(skiatest::Reporter* reporter, const char* filename) {
1983 SkPath path, pathB;
1984 path.setFillType(SkPath::kWinding_FillType);
1985 path.moveTo(3, 4);
1986 path.cubicTo(1, 5, 4, 3, 6, 4);
1987 path.close();
1988 pathB.setFillType(SkPath::kWinding_FillType);
1989 pathB.moveTo(3, 4);
1990 pathB.cubicTo(4, 6, 4, 3, 5, 1);
1991 pathB.close();
1992 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1993}
1994
1995static void issue1418b(skiatest::Reporter* reporter, const char* filename) {
1996 SkPath path1;
1997 path1.moveTo(0, 0);
1998 path1.lineTo(1, 0);
1999 path1.lineTo(1, 1);
2000 path1.lineTo(0, 1);
2001 path1.lineTo(0, 0);
2002 path1.close();
2003 path1.setFillType(SkPath::kWinding_FillType);
2004 SkPath path2;
2005 path2.moveTo(0.646446645f, -0.353553414f);
2006 path2.quadTo(0.792893291f, -0.50000006f, 1.00000012f, -0.50000006f);
2007 path2.quadTo(1.20710683f, -0.50000006f, 1.35355353f, -0.353553414f);
2008 path2.quadTo(1.50000012f, -0.207106799f, 1.50000012f, 0);
2009 path2.quadTo(1.50000012f, 0.207106799f, 1.35355353f, 0.353553414f);
2010 path2.quadTo(1.20710683f, 0.50000006f, 1.00000012f, 0.50000006f);
2011 path2.quadTo(0.792893291f, 0.50000006f, 0.646446645f, 0.353553414f);
2012 path2.quadTo(0.50000006f, 0.207106799f, 0.50000006f, 0);
2013 path2.quadTo(0.50000006f, -0.207106799f, 0.646446645f, -0.353553414f);
2014 path2.close();
2015 path2.moveTo(1.00000012f, 0.50000006f);
2016 path2.lineTo(1.00000012f, 1.00000012f);
2017 path2.lineTo(0.50000006f, 1.00000012f);
2018 path2.quadTo(0.50000006f, 0.792893291f, 0.646446645f, 0.646446645f);
2019 path2.quadTo(0.792893291f, 0.50000006f, 1.00000012f, 0.50000006f);
2020 path2.close();
2021 path2.setFillType(SkPath::kEvenOdd_FillType);
2022 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2023}
2024
2025static void rectOp1i(skiatest::Reporter* reporter, const char* filename) {
2026 SkPath path, pathB;
2027 path.setFillType(SkPath::kWinding_FillType);
2028 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2029 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
2030 pathB.setFillType(SkPath::kWinding_FillType);
2031 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2032 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2033 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2034}
2035
2036static void rectOp2i(skiatest::Reporter* reporter, const char* filename) {
2037 SkPath path, pathB;
2038 path.setFillType(SkPath::kEvenOdd_FillType);
2039 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2040 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
2041 pathB.setFillType(SkPath::kWinding_FillType);
2042 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2043 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2044 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2045}
2046
2047static void rectOp3x(skiatest::Reporter* reporter, const char* filename) {
2048 SkPath path, pathB;
2049 path.setFillType(SkPath::kEvenOdd_FillType);
2050 path.moveTo(0, 0);
2051 path.lineTo(3, 0);
2052 path.lineTo(3, 3);
2053 path.lineTo(0, 3);
2054 path.close();
2055 path.moveTo(2, 2);
2056 path.lineTo(3, 2);
2057 path.lineTo(3, 3);
2058 path.lineTo(2, 3);
2059 path.close();
2060 pathB.setFillType(SkPath::kWinding_FillType);
2061 pathB.moveTo(1, 1);
2062 pathB.lineTo(3, 1);
2063 pathB.lineTo(3, 3);
2064 pathB.lineTo(1, 3);
2065 pathB.close();
2066 pathB.moveTo(2, 2);
2067 pathB.lineTo(3, 2);
2068 pathB.lineTo(3, 3);
2069 pathB.lineTo(2, 3);
2070 pathB.close();
2071 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
2072}
2073
2074static void issue1435(skiatest::Reporter* reporter, const char* filename) {
2075 SkPath path1;
2076 path1.moveTo(160, 60);
2077 path1.lineTo(220, 230);
2078 path1.lineTo(60, 120);
2079 path1.lineTo(260, 120);
2080 path1.lineTo(90, 230);
2081 path1.lineTo(160, 60);
2082 path1.close();
2083 path1.setFillType(SkPath::kEvenOdd_FillType);
2084
2085 SkPath path2;
2086 path2.moveTo(142.589081f, 102.283646f);
2087 path2.quadTo(149.821579f, 100, 158, 100);
2088 path2.quadTo(167.156921f, 100, 175.128036f, 102.862793f);
2089 path2.lineTo(181.176468f, 120);
2090 path2.lineTo(135.294128f, 120);
2091 path2.lineTo(142.589081f, 102.283646f);
2092 path2.close();
2093 path2.moveTo(118.681946f, 160.343842f);
2094 path2.lineTo(135.294128f, 120);
2095 path2.lineTo(117.933762f, 120);
2096 path2.quadTo(108, 132.942657f, 108, 150);
2097 path2.quadTo(108, 151.54483f, 108.08149f, 153.05603f);
2098 path2.lineTo(118.681946f, 160.343842f);
2099 path2.close();
2100 path2.moveTo(156.969696f, 186.666672f);
2101 path2.lineTo(118.681946f, 160.343842f);
2102 path2.lineTo(113.458946f, 173.028259f);
2103 path2.quadTo(116.94117f, 179.651855f, 122.644661f, 185.355347f);
2104 path2.quadTo(130.792465f, 193.503143f, 140.817978f, 197.117783f);
2105 path2.lineTo(156.969696f, 186.666672f);
2106 path2.close();
2107 path2.moveTo(195.830978f, 161.521133f);
2108 path2.lineTo(156.969696f, 186.666672f);
2109 path2.lineTo(173.157288f, 197.795639f);
2110 path2.quadTo(184.392426f, 194.318268f, 193.355347f, 185.355347f);
2111 path2.quadTo(197.805817f, 180.904861f, 200.903809f, 175.894165f);
2112 path2.lineTo(195.830978f, 161.521133f);
2113 path2.close();
2114 path2.moveTo(195.830978f, 161.521133f);
2115 path2.lineTo(207.878281f, 153.725815f);
2116 path2.quadTo(208, 151.888062f, 208, 150);
2117 path2.quadTo(208, 132.942657f, 198.066238f, 120);
2118 path2.lineTo(181.176468f, 120);
2119 path2.lineTo(195.830978f, 161.521133f);
2120 path2.close();
2121 path2.setFillType(SkPath::kEvenOdd_FillType);
2122 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2123}
2124
2125static void skpkkiste_to716(skiatest::Reporter* reporter, const char* filename) {
2126 SkPath path;
2127 path.setFillType(SkPath::kEvenOdd_FillType);
2128 path.moveTo(1173, 284);
2129 path.cubicTo(1173, 285.125824f, 1173.37207f, 286.164734f, 1174, 287.000488f);
2130 path.lineTo(1174, 123.999496f);
2131 path.cubicTo(1173.37207f, 124.835243f, 1173, 125.874168f, 1173, 127);
2132 path.lineTo(1173, 284);
2133 path.close();
2134 SkPath pathB;
2135 pathB.setFillType(SkPath::kWinding_FillType);
2136 pathB.moveTo(1340, 122);
2137 pathB.cubicTo(1342.76147f, 122, 1345, 124.238579f, 1345, 127);
2138 pathB.lineTo(1345, 284);
2139 pathB.cubicTo(1345, 286.761414f, 1342.76147f, 289, 1340, 289);
2140 pathB.lineTo(1178, 289);
2141 pathB.cubicTo(1175.23853f, 289, 1173, 286.761414f, 1173, 284);
2142 pathB.lineTo(1173, 127);
2143 pathB.cubicTo(1173, 124.238579f, 1175.23853f, 122, 1178, 122);
2144 pathB.lineTo(1340, 122);
2145 pathB.close();
2146 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2147}
2148
2149static void loopEdge1(skiatest::Reporter* reporter, const char* filename) {
2150 SkPath path;
2151 path.setFillType(SkPath::kEvenOdd_FillType);
2152 path.moveTo(0,0);
2153 path.lineTo(3,0);
2154 path.lineTo(3,2);
2155 path.lineTo(1,2);
2156 path.lineTo(1,1);
2157 path.lineTo(2,1);
2158 path.lineTo(2,3);
2159 path.lineTo(0,3);
2160 path.close();
2161 SkPath pathB;
2162 pathB.setFillType(SkPath::kEvenOdd_FillType);
2163 pathB.moveTo(1,2);
2164 pathB.lineTo(2,2);
2165 pathB.lineTo(2,4);
2166 pathB.lineTo(1,4);
2167 pathB.close();
2168 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2169}
2170
2171static void loopEdge2(skiatest::Reporter* reporter, const char* filename) {
2172 SkPath path;
2173 path.setFillType(SkPath::kEvenOdd_FillType);
2174 path.moveTo(0,0);
2175 path.lineTo(3,0);
2176 path.lineTo(3,2);
2177 path.lineTo(1,2);
2178 path.lineTo(1,1);
2179 path.lineTo(2,1);
2180 path.lineTo(2,3);
2181 path.lineTo(0,3);
2182 path.close();
2183 SkPath pathB;
2184 pathB.setFillType(SkPath::kEvenOdd_FillType);
2185 pathB.moveTo(1 - 1e-6f,2);
2186 pathB.lineTo(2 - 1e-6f,2);
2187 pathB.lineTo(2 - 1e-6f,4);
2188 pathB.lineTo(1 - 1e-6f,4);
2189 pathB.close();
2190 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2191}
2192
2193static void cubicOp86i(skiatest::Reporter* reporter, const char* filename) {
2194 SkPath path, pathB;
2195 path.setFillType(SkPath::kWinding_FillType);
2196 path.moveTo(0, 4);
2197 path.cubicTo(3, 4, 6, 2, 5, 2);
2198 path.close();
2199 pathB.setFillType(SkPath::kEvenOdd_FillType);
2200 pathB.moveTo(2, 6);
2201 pathB.cubicTo(2, 5, 4, 0, 4, 3);
2202 pathB.close();
2203 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2204}
2205
2206static void cubicOp87u(skiatest::Reporter* reporter, const char* filename) {
2207 SkPath path, pathB;
2208 path.setFillType(SkPath::kWinding_FillType);
2209 path.moveTo(0,1);
2210 path.cubicTo(0,2, 2,0, 6,4);
2211 path.close();
2212 pathB.setFillType(SkPath::kWinding_FillType);
2213 pathB.moveTo(0,2);
2214 pathB.cubicTo(4,6, 1,0, 2,0);
2215 pathB.close();
2216 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2217}
2218
2219static void cubicOp88u(skiatest::Reporter* reporter, const char* filename) {
2220 SkPath path, pathB;
2221 path.setFillType(SkPath::kWinding_FillType);
2222 path.moveTo(0,1);
2223 path.cubicTo(2,5, 5,0, 6,4);
2224 path.close();
2225 pathB.setFillType(SkPath::kWinding_FillType);
2226 pathB.moveTo(0,5);
2227 pathB.cubicTo(4,6, 1,0, 5,2);
2228 pathB.close();
2229 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2230}
2231
2232static void cubicOp89u(skiatest::Reporter* reporter, const char* filename) {
2233 SkPath path, pathB;
2234 path.setFillType(SkPath::kWinding_FillType);
2235 path.moveTo(0, 3);
2236 path.cubicTo(1, 6, 5, 0, 6, 3);
2237 path.close();
2238 pathB.setFillType(SkPath::kWinding_FillType);
2239 pathB.moveTo(0, 5);
2240 pathB.cubicTo(3, 6, 3, 0, 6, 1);
2241 pathB.close();
2242 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2243}
2244
2245static void cubicOp90u(skiatest::Reporter* reporter, const char* filename) {
2246 SkPath path, pathB;
2247 path.setFillType(SkPath::kEvenOdd_FillType);
2248 path.moveTo(0, 5);
2249 path.cubicTo(1, 2, 5, 2, 4, 1);
2250 path.close();
2251 pathB.setFillType(SkPath::kEvenOdd_FillType);
2252 pathB.moveTo(2, 5);
2253 pathB.cubicTo(1, 4, 5, 0, 2, 1);
2254 pathB.close();
2255 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2256}
2257
2258static void cubicOp91u(skiatest::Reporter* reporter, const char* filename) {
2259 SkPath path, pathB;
2260 path.setFillType(SkPath::kWinding_FillType);
2261 path.moveTo(1, 6);
2262 path.cubicTo(0, 3, 6, 3, 5, 0);
2263 path.close();
2264 pathB.setFillType(SkPath::kWinding_FillType);
2265 pathB.moveTo(3, 6);
2266 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2267 pathB.close();
2268 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2269}
2270
2271static void skpaaalgarve_org53(skiatest::Reporter* reporter, const char* filename) {
2272 SkPath path;
2273 path.setFillType(SkPath::kEvenOdd_FillType);
2274 path.moveTo(-1.24344979e-014f, 348);
2275 path.lineTo(258, 348);
2276 path.lineTo(258, 322);
2277 path.quadTo(258, 317.857849f, 255.072006f, 314.928009f);
2278 path.quadTo(252.142136f, 312, 248, 312);
2279 path.lineTo(1.77635684e-015f, 312);
2280 path.lineTo(-1.24344979e-014f, 348);
2281 path.close();
2282 SkPath pathB;
2283 pathB.setFillType(SkPath::kWinding_FillType);
2284 pathB.moveTo(0, 312);
2285 pathB.lineTo(258, 312);
2286 pathB.lineTo(258, 348);
2287 pathB.lineTo(0, 348);
2288 pathB.close();
2289 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2290}
2291
2292static void skpabcspark_ca103(skiatest::Reporter* reporter, const char* filename) {
2293 SkPath path;
2294 path.setFillType(SkPath::kEvenOdd_FillType);
2295 path.moveTo(1.99840144e-015f, 494);
2296 path.lineTo(97, 494);
2297 path.quadTo(100.313705f, 494, 102.6576f, 491.657593f);
2298 path.quadTo(105, 489.313721f, 105, 486);
2299 path.lineTo(105, 425);
2300 path.quadTo(105, 421.686279f, 102.6576f, 419.342407f);
2301 path.quadTo(100.313705f, 417, 97, 417);
2302 path.lineTo(2.22044605e-016f, 417);
2303 path.lineTo(1.99840144e-015f, 494);
2304 path.close();
2305 SkPath pathB;
2306 pathB.setFillType(SkPath::kWinding_FillType);
2307 pathB.moveTo(0, 417);
2308 pathB.lineTo(105, 417);
2309 pathB.lineTo(105, 494);
2310 pathB.lineTo(0, 494);
2311 pathB.close();
2312 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2313}
2314
2315static void skpacesoftech_com47(skiatest::Reporter* reporter, const char* filename) {
2316 SkPath path;
2317 path.setFillType(SkPath::kEvenOdd_FillType);
2318 path.moveTo(670.537415f, 285);
2319 path.lineTo(670.387451f, 285);
2320 path.lineTo(596.315186f, 314.850708f);
2321 path.lineTo(626.19696f, 389);
2322 path.lineTo(626.346863f, 389);
2323 path.lineTo(700.419189f, 359.149261f);
2324 path.lineTo(670.537415f, 285);
2325 path.close();
2326 SkPath pathB;
2327 pathB.setFillType(SkPath::kWinding_FillType);
2328 pathB.moveTo(663.318542f, 374.100616f);
2329 pathB.quadTo(647.950989f, 380.293671f, 632.705322f, 373.806305f);
2330 pathB.quadTo(617.459595f, 367.318909f, 611.266541f, 351.951355f);
2331 pathB.quadTo(605.073486f, 336.58374f, 611.560913f, 321.338074f);
2332 pathB.quadTo(618.048279f, 306.092407f, 633.415833f, 299.899353f);
2333 pathB.quadTo(648.783447f, 293.706299f, 664.029114f, 300.193665f);
2334 pathB.quadTo(679.27478f, 306.68103f, 685.467834f, 322.048645f);
2335 pathB.quadTo(691.660889f, 337.416199f, 685.173523f, 352.661896f);
2336 pathB.quadTo(678.686157f, 367.907562f, 663.318542f, 374.100616f);
2337 pathB.close();
2338 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2339}
2340
2341static void skpact_com43(skiatest::Reporter* reporter, const char* filename) {
2342 SkPath path;
2343 path.setFillType(SkPath::kEvenOdd_FillType);
2344 path.moveTo(1.45716772e-016f, 924.336121f);
2345 path.lineTo(-1.11022302e-016f, 920);
2346 path.lineTo(6, 920);
2347 path.lineTo(6, 926);
2348 path.lineTo(1.66389287f, 926);
2349 path.quadTo(1.18842196f, 925.674561f, 0.756800175f, 925.243225f);
2350 path.quadTo(0.325406998f, 924.811523f, 1.45716772e-016f, 924.336121f);
2351 path.close();
2352 path.moveTo(1, 921);
2353 path.lineTo(5, 921);
2354 path.lineTo(5, 925);
2355 path.cubicTo(2.79086018f, 925, 1, 923.209167f, 1, 921);
2356 path.close();
2357 SkPath pathB;
2358 pathB.setFillType(SkPath::kWinding_FillType);
2359 pathB.moveTo(-1, 920);
2360 pathB.lineTo(0, 920);
2361 pathB.lineTo(3, 927);
2362 pathB.lineTo(-1, 927);
2363 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2364}
2365
2366static void skpadbox_lt8(skiatest::Reporter* reporter, const char* filename) {
2367 SkPath path;
2368 path.setFillType(SkPath::kEvenOdd_FillType);
2369 path.moveTo(320.097229f, 628.573669f);
2370 path.lineTo(610.227173f, 85.7786865f);
2371 path.lineTo(946.652588f, 265.601807f);
2372 path.lineTo(656.522644f, 808.39679f);
2373 path.lineTo(320.097229f, 628.573669f);
2374 path.close();
2375 SkPath pathB;
2376 pathB.setFillType(SkPath::kInverseWinding_FillType);
2377 pathB.moveTo(333.866608f, 623.496155f);
2378 pathB.lineTo(613.368042f, 100.585754f);
2379 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2380 pathB.lineTo(932.633057f, 269.854553f);
2381 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2382 pathB.lineTo(653.631897f, 794.414307f);
2383 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2384 pathB.lineTo(334.366943f, 625.145508f);
2385 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2386 pathB.close();
2387 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2388}
2389
2390static void skpadindex_de4(skiatest::Reporter* reporter, const char* filename) {
2391 SkPath path;
2392 path.setFillType(SkPath::kEvenOdd_FillType);
2393 path.moveTo(0, 926);
2394 path.lineTo(0, 0);
2395 path.lineTo(1280, 0);
2396 path.lineTo(1280, 926);
2397 path.lineTo(0, 926);
2398 path.close();
2399 SkPath pathB;
2400 pathB.setFillType(SkPath::kWinding_FillType);
2401 pathB.moveTo(0, 312);
2402 pathB.lineTo(8.20486257e-015f, 178);
2403 pathB.lineTo(49, 178);
2404 pathB.lineTo(49, 312);
2405 pathB.close();
2406 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2407}
2408
2409static void skpadithya_putr4_blogspot_com551(skiatest::Reporter* reporter, const char* filename) {
2410 SkPath path;
2411 path.setFillType(SkPath::kEvenOdd_FillType);
2412 path.moveTo(205.605804f, 142.334625f);
2413 path.lineTo(254.665359f, 85.6058044f);
2414 path.lineTo(311.394196f, 134.665359f);
2415 path.lineTo(262.334625f, 191.39418f);
2416 path.lineTo(205.605804f, 142.334625f);
2417 path.close();
2418 SkPath pathB;
2419 pathB.setFillType(SkPath::kWinding_FillType);
2420 pathB.moveTo(283.407959f, 110.462646f);
2421 pathB.cubicTo(298.864319f, 123.829437f, 300.558258f, 147.195221f, 287.191467f, 162.651581f);
2422 pathB.lineTo(286.537354f, 163.407959f);
2423 pathB.cubicTo(273.170563f, 178.864334f, 249.804779f, 180.558258f, 234.348419f, 167.191467f);
2424 pathB.lineTo(233.592026f, 166.537338f);
2425 pathB.cubicTo(218.135666f, 153.170547f, 216.441727f, 129.804779f, 229.808517f, 114.348412f);
2426 pathB.lineTo(230.462646f, 113.592026f);
2427 pathB.cubicTo(243.829437f, 98.1356659f, 267.195221f, 96.4417267f, 282.651581f, 109.808517f);
2428 pathB.lineTo(283.407959f, 110.462646f);
2429 pathB.close();
2430 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2431}
2432
2433static void skpadspert_de11(skiatest::Reporter* reporter, const char* filename) {
2434 SkPath path;
2435 path.setFillType(SkPath::kEvenOdd_FillType);
2436 path.moveTo(-4.4408921e-016f, 682.5f);
2437 path.lineTo(30.5f, 682.5f);
2438 path.cubicTo(32.709137f, 682.5f, 34.5f, 680.709167f, 34.5f, 678.5f);
2439 path.lineTo(34.5f, 486.5f);
2440 path.cubicTo(34.5f, 484.290863f, 32.709137f, 482.5f, 30.5f, 482.5f);
2441 path.lineTo(0, 482.5f);
2442 path.lineTo(-4.4408921e-016f, 682.5f);
2443 path.close();
2444 SkPath pathB;
2445 pathB.setFillType(SkPath::kWinding_FillType);
2446 pathB.moveTo(0, 482);
2447 pathB.lineTo(35, 482);
2448 pathB.lineTo(35, 683);
2449 pathB.lineTo(0, 683);
2450 pathB.close();
2451 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2452}
2453
2454static void skpaiaigames_com870(skiatest::Reporter* reporter, const char* filename) {
2455 SkPath path;
2456 path.setFillType(SkPath::kEvenOdd_FillType);
2457 path.moveTo(324.071075f, 845.071045f);
2458 path.cubicTo(324.405151f, 844.737f, 324.715668f, 844.379395f, 325, 844.000977f);
2459 path.lineTo(325, 842.127197f);
2460 path.cubicTo(324.571411f, 842.956238f, 324.017761f, 843.710144f, 323.363953f, 844.363953f);
2461 path.lineTo(324.071075f, 845.071045f);
2462 path.close();
2463 path.moveTo(323.363953f, 714.636047f);
2464 path.lineTo(324.071075f, 713.928955f);
2465 path.cubicTo(324.405151f, 714.263f, 324.715668f, 714.620605f, 325, 714.999023f);
2466 path.lineTo(325, 716.872803f);
2467 path.cubicTo(324.571411f, 716.043762f, 324.017761f, 715.289856f, 323.363953f, 714.636047f);
2468 path.close();
2469 SkPath pathB;
2470 pathB.setFillType(SkPath::kWinding_FillType);
2471 pathB.moveTo(317, 711);
2472 pathB.cubicTo(322.522858f, 711, 327, 715.477173f, 327, 721);
2473 pathB.lineTo(327, 838);
2474 pathB.cubicTo(327, 843.522827f, 322.522858f, 848, 317, 848);
2475 pathB.lineTo(155, 848);
2476 pathB.cubicTo(149.477158f, 848, 145, 843.522827f, 145, 838);
2477 pathB.lineTo(145, 721);
2478 pathB.cubicTo(145, 715.477173f, 149.477158f, 711, 155, 711);
2479 pathB.lineTo(317, 711);
2480 pathB.close();
2481 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2482}
2483
2484static void cubicOp92i(skiatest::Reporter* reporter, const char* filename) {
2485 SkPath path, pathB;
2486 path.setFillType(SkPath::kWinding_FillType);
2487 path.moveTo(0, 1);
2488 path.cubicTo(2, 6, 4, 1, 5, 4);
2489 path.close();
2490 pathB.setFillType(SkPath::kWinding_FillType);
2491 pathB.moveTo(1, 4);
2492 pathB.cubicTo(4, 5, 1, 0, 6, 2);
2493 pathB.close();
2494 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2495}
2496
2497static void cubicOp93d(skiatest::Reporter* reporter, const char* filename) {
2498 SkPath path, pathB;
2499 path.setFillType(SkPath::kWinding_FillType);
2500 path.moveTo(0, 1);
2501 path.cubicTo(1, 6, 4, 1, 4, 3);
2502 path.close();
2503 pathB.setFillType(SkPath::kWinding_FillType);
2504 pathB.moveTo(1, 4);
2505 pathB.cubicTo(3, 4, 1, 0, 6, 1);
2506 pathB.close();
2507 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
2508}
2509
2510static void cubicOp94u(skiatest::Reporter* reporter, const char* filename) {
2511 SkPath path, pathB;
2512 path.setFillType(SkPath::kEvenOdd_FillType);
2513 path.moveTo(0, 3);
2514 path.cubicTo(2, 3, 5, 0, 5, 3);
2515 path.close();
2516 pathB.setFillType(SkPath::kEvenOdd_FillType);
2517 pathB.moveTo(0, 5);
2518 pathB.cubicTo(3, 5, 3, 0, 3, 2);
2519 pathB.close();
2520 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2521}
2522
2523static void skpadbox_lt15(skiatest::Reporter* reporter, const char* filename) {
2524 SkPath path;
2525 path.setFillType(SkPath::kEvenOdd_FillType);
2526 path.moveTo(333.292084f, 624.570984f);
2527 path.lineTo(614.229797f, 98.9735107f);
2528 path.lineTo(933.457764f, 269.604431f);
2529 path.lineTo(652.52002f, 795.201904f);
2530 path.lineTo(333.292084f, 624.570984f);
2531 path.close();
2532 SkPath pathB;
2533 pathB.setFillType(SkPath::kWinding_FillType);
2534 pathB.moveTo(613.368042f, 100.585754f);
2535 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2536 pathB.lineTo(932.633057f, 269.854553f);
2537 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2538 pathB.lineTo(653.631897f, 794.414307f);
2539 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2540 pathB.lineTo(334.366943f, 625.145508f);
2541 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2542 pathB.lineTo(613.368042f, 100.585754f);
2543 pathB.close();
2544 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2545}
2546
2547static void skpadoption_org196(skiatest::Reporter* reporter, const char* filename) {
2548 SkPath path;
2549 path.setFillType(SkPath::kEvenOdd_FillType);
2550 path.moveTo(802, 367);
2551 path.lineTo(802, 324);
2552 path.lineTo(956, 324);
2553 path.lineTo(956, 371);
2554 path.quadTo(956, 373.071075f, 954.536011f, 374.536011f);
2555 path.quadTo(953.071045f, 376, 951, 376);
2556 path.lineTo(811, 376);
2557 path.cubicTo(806.029419f, 376, 802, 371.970551f, 802, 367);
2558 path.close();
2559 SkPath pathB;
2560 pathB.setFillType(SkPath::kInverseWinding_FillType);
2561 pathB.moveTo(803, 326);
2562 pathB.lineTo(955, 326);
2563 pathB.lineTo(955, 370);
2564 pathB.cubicTo(955, 372.761414f, 952.761414f, 375, 950, 375);
2565 pathB.lineTo(808, 375);
2566 pathB.cubicTo(805.238586f, 375, 803, 372.761414f, 803, 370);
2567 pathB.lineTo(803, 326);
2568 pathB.close();
2569 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2570}
2571
2572static void skpadspert_net23(skiatest::Reporter* reporter, const char* filename) {
2573 SkPath path;
2574 path.setFillType(SkPath::kEvenOdd_FillType);
2575 path.moveTo(-2.220446e-018f, 483.5f);
2576 path.lineTo(0, 482.5f);
2577 path.lineTo(30.5f, 482.5f);
2578 path.cubicTo(32.709137f, 482.5f, 34.5f, 484.290863f, 34.5f, 486.5f);
2579 path.lineTo(34.5f, 678.5f);
2580 path.cubicTo(34.5f, 680.709167f, 32.709137f, 682.5f, 30.5f, 682.5f);
2581 path.lineTo(-4.4408921e-016f, 682.5f);
2582 path.lineTo(-4.41868766e-016f, 681.5f);
2583 path.lineTo(30.5f, 681.5f);
2584 path.cubicTo(32.1568565f, 681.5f, 33.5f, 680.15686f, 33.5f, 678.5f);
2585 path.lineTo(33.5f, 486.5f);
2586 path.cubicTo(33.5f, 484.84314f, 32.1568565f, 483.5f, 30.5f, 483.5f);
2587 path.lineTo(-2.220446e-018f, 483.5f);
2588 path.close();
2589 SkPath pathB;
2590 pathB.setFillType(SkPath::kWinding_FillType);
2591 pathB.moveTo(0, 482);
2592 pathB.lineTo(35, 482);
2593 pathB.lineTo(35, 683);
2594 pathB.lineTo(0, 683);
2595 pathB.close();
2596 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2597}
2598
2599static void skpadventistmission_org572(skiatest::Reporter* reporter, const char* filename) {
2600 SkPath path;
2601 path.setFillType(SkPath::kEvenOdd_FillType);
2602 path.moveTo(1182.00037f, 926);
2603 path.cubicTo(1181.08813f, 924.785583f, 1179.63586f, 924, 1178, 924);
2604 path.lineTo(938, 924);
2605 path.cubicTo(936.364197f, 924, 934.911865f, 924.785583f, 933.999634f, 926);
2606 path.lineTo(1182.00037f, 926);
2607 path.close();
2608 SkPath pathB;
2609 pathB.setFillType(SkPath::kWinding_FillType);
2610 pathB.moveTo(934, 924);
2611 pathB.lineTo(1182, 924);
2612 pathB.lineTo(1182, 926);
2613 pathB.lineTo(934, 926);
2614 pathB.close();
2615 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2616}
2617
2618static void skpagentxsites_com55(skiatest::Reporter* reporter, const char* filename) {
2619 SkPath path;
2620 path.setFillType(SkPath::kEvenOdd_FillType);
2621 path.moveTo(925, 27);
2622 path.cubicTo(924.447693f, 27, 924, 27.4477158f, 924, 28);
2623 path.lineTo(924, 55);
2624 path.cubicTo(924, 55.5522842f, 924.447693f, 56, 925, 56);
2625 path.lineTo(1103, 56);
2626 path.cubicTo(1103.55225f, 56, 1104, 55.5522842f, 1104, 55);
2627 path.lineTo(1104, 28);
2628 path.cubicTo(1104, 27.4477158f, 1103.55225f, 27, 1103, 27);
2629 path.lineTo(925, 27);
2630 path.close();
2631 SkPath pathB;
2632 pathB.setFillType(SkPath::kWinding_FillType);
2633 pathB.moveTo(1103, 27);
2634 pathB.cubicTo(1104.10461f, 27, 1105, 27.8954315f, 1105, 29);
2635 pathB.lineTo(1105, 54);
2636 pathB.cubicTo(1105, 55.1045685f, 1104.10461f, 56, 1103, 56);
2637 pathB.lineTo(926, 56);
2638 pathB.cubicTo(924.895447f, 56, 924, 55.1045685f, 924, 54);
2639 pathB.lineTo(924, 29);
2640 pathB.cubicTo(924, 27.8954315f, 924.895447f, 27, 926, 27);
2641 pathB.lineTo(1103, 27);
2642 pathB.close();
2643 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2644}
2645
2646static void skpbakosoft_com10(skiatest::Reporter* reporter, const char* filename) {
2647 SkPath path;
2648 path.setFillType(SkPath::kEvenOdd_FillType);
2649 path.moveTo(190, 170);
2650 path.cubicTo(178.9543f, 170, 170, 178.9543f, 170, 190);
2651 path.cubicTo(170, 201.0457f, 178.9543f, 210, 190, 210);
2652 path.lineTo(370, 210);
2653 path.cubicTo(381.045685f, 210, 390, 201.0457f, 390, 190);
2654 path.cubicTo(390, 178.9543f, 381.045685f, 170, 370, 170);
2655 path.lineTo(190, 170);
2656 path.close();
2657 SkPath pathB;
2658 pathB.setFillType(SkPath::kWinding_FillType);
2659 pathB.moveTo(210, 190);
2660 pathB.quadTo(210, 198.284271f, 204.142136f, 204.142136f);
2661 pathB.quadTo(198.284271f, 210, 190, 210);
2662 pathB.quadTo(181.715729f, 210, 175.857864f, 204.142136f);
2663 pathB.quadTo(170, 198.284271f, 170, 190);
2664 pathB.quadTo(170, 181.715729f, 175.857864f, 175.857864f);
2665 pathB.quadTo(181.715729f, 170, 190, 170);
2666 pathB.quadTo(198.284271f, 170, 204.142136f, 175.857864f);
2667 pathB.quadTo(210, 181.715729f, 210, 190);
2668 pathB.close();
2669 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2670}
2671
2672static void skpbambootheme_com12(skiatest::Reporter* reporter, const char* filename) {
2673 SkPath path;
2674 path.setFillType(SkPath::kEvenOdd_FillType);
2675 path.moveTo(47.8780937f, 58);
2676 path.lineTo(0, 58);
2677 path.lineTo(-8.65973959e-015f, 96.9914017f);
2678 path.quadTo(20.0654926f, 96.6451874f, 34.3553391f, 82.3553391f);
2679 path.quadTo(44.9466133f, 71.764061f, 47.8780937f, 58);
2680 path.close();
2681 SkPath pathB;
2682 pathB.setFillType(SkPath::kEvenOdd_FillType);
2683 pathB.moveTo(-1, -3);
2684 pathB.lineTo(-1, -3);
2685 pathB.cubicTo(26.6142502f, -3, 49, 19.3857498f, 49, 47);
2686 pathB.lineTo(49, 47);
2687 pathB.cubicTo(49, 74.6142502f, 26.6142502f, 97, -1, 97);
2688 pathB.lineTo(-1, 97);
2689 pathB.cubicTo(-28.6142502f, 97, -51, 74.6142502f, -51, 47);
2690 pathB.lineTo(-51, 47);
2691 pathB.cubicTo(-51, 19.3857498f, -28.6142502f, -3, -1, -3);
2692 pathB.close();
2693 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2694}
2695
2696static void skpakmmos_ru100(skiatest::Reporter* reporter, const char* filename) {
2697 SkPath path;
2698 path.setFillType(SkPath::kEvenOdd_FillType);
2699 path.moveTo(693.000488f, 926);
2700 path.cubicTo(692.164734f, 925.37207f, 691.125793f, 925, 690, 925);
2701 path.lineTo(578, 925);
2702 path.cubicTo(576.874207f, 925, 575.835266f, 925.37207f, 574.999512f, 926);
2703 path.lineTo(693.000488f, 926);
2704 path.close();
2705 SkPath pathB;
2706 pathB.setFillType(SkPath::kWinding_FillType);
2707 pathB.moveTo(575, 925);
2708 pathB.lineTo(693, 925);
2709 pathB.lineTo(693, 926);
2710 pathB.lineTo(575, 926);
2711 pathB.close();
2712 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2713}
2714
2715static void skpcarpetplanet_ru22(skiatest::Reporter* reporter, const char* filename) {
2716 SkPath path;
2717 path.setFillType(SkPath::kEvenOdd_FillType);
2718 path.moveTo(195, 785);
2719 path.cubicTo(124.307556f, 785, 67, 841.859863f, 67, 912);
2720 path.lineTo(67, 913);
2721 path.cubicTo(67, 917.388916f, 67.2243805f, 921.725769f, 67.662384f, 926);
2722 path.lineTo(322, 926);
2723 path.lineTo(322, 896.048035f);
2724 path.cubicTo(314.09201f, 833.437622f, 260.247131f, 785, 195, 785);
2725 path.close();
2726 SkPath pathB;
2727 pathB.setFillType(SkPath::kWinding_FillType);
2728 pathB.moveTo(195, 785);
2729 pathB.cubicTo(265.140167f, 785, 322, 842.307556f, 322, 913);
2730 pathB.cubicTo(322, 983.692444f, 265.140167f, 1041, 195, 1041);
2731 pathB.lineTo(194, 1041);
2732 pathB.cubicTo(123.85984f, 1041, 67, 983.692444f, 67, 913);
2733 pathB.cubicTo(67, 842.307556f, 123.85984f, 785, 194, 785);
2734 pathB.lineTo(195, 785);
2735 pathB.close();
2736 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2737}
2738
2739static void skpcarrot_is24(skiatest::Reporter* reporter, const char* filename) {
2740 SkPath path;
2741 path.setFillType(SkPath::kEvenOdd_FillType);
2742 path.moveTo(945, 597);
2743 path.quadTo(913.93396f, 597, 891.96698f, 618.96698f);
2744 path.quadTo(870, 640.93396f, 870, 672);
2745 path.quadTo(870, 703.06604f, 891.96698f, 725.03302f);
2746 path.quadTo(913.93396f, 747, 945, 747);
2747 path.quadTo(976.06604f, 747, 998.03302f, 725.03302f);
2748 path.quadTo(1020, 703.06604f, 1020, 672);
2749 path.quadTo(1020, 640.93396f, 998.03302f, 618.96698f);
2750 path.quadTo(976.06604f, 597, 945, 597);
2751 path.close();
2752 SkPath pathB;
2753 pathB.setFillType(SkPath::kWinding_FillType);
2754 pathB.moveTo(945.080994f, 597.161987f);
2755 pathB.cubicTo(903.659973f, 597.161987f, 870.080994f, 630.73999f, 870.080994f, 672.161987f);
2756 pathB.cubicTo(870.080994f, 676.096008f, 870.387024f, 679.957031f, 870.971008f, 683.726013f);
2757 pathB.cubicTo(876.53302f, 719.656006f, 907.593994f, 747.161987f, 945.080994f, 747.161987f);
2758 pathB.cubicTo(982.567993f, 747.161987f, 1013.62903f, 719.656006f, 1019.19104f, 683.726013f);
2759 pathB.cubicTo(1019.77502f, 679.955017f, 1020.08099f, 676.094971f, 1020.08099f, 672.161987f);
2760 pathB.cubicTo(1020.08002f, 630.73999f, 986.502014f, 597.161987f, 945.080994f, 597.161987f);
2761 pathB.close();
2762 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2763}
2764
2765static void skpbangalorenest_com4(skiatest::Reporter* reporter, const char* filename) {
2766 SkPath path;
2767 path.setFillType(SkPath::kEvenOdd_FillType);
2768 path.moveTo(0, 926);
2769 path.lineTo(0, 0);
2770 path.lineTo(1265, 0);
2771 path.lineTo(1265, 926);
2772 path.lineTo(0, 926);
2773 path.close();
2774 SkPath pathB;
2775 pathB.setFillType(SkPath::kWinding_FillType);
2776 pathB.moveTo(0, 290);
2777 pathB.lineTo(-2.64514972e-014f, 146);
2778 pathB.lineTo(30, 146);
2779 pathB.lineTo(30, 290);
2780 pathB.close();
2781 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2782}
2783
2784static void skpbenzoteh_ru152(skiatest::Reporter* reporter, const char* filename) {
2785 SkPath path;
2786 path.setFillType(SkPath::kEvenOdd_FillType);
2787 path.moveTo(883, 23);
2788 path.lineTo(883, 0);
2789 path.lineTo(1122.5f, 0);
2790 path.lineTo(1122.5f, 25.2136822f);
2791 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2792 path.quadTo(1120.07104f, 28, 1118, 28);
2793 path.lineTo(888, 28);
2794 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2795 path.quadTo(883, 25.0710678f, 883, 23);
2796 path.close();
2797 SkPath pathB;
2798 pathB.setFillType(SkPath::kWinding_FillType);
2799 pathB.moveTo(883, 0);
2800 pathB.lineTo(1123, 0);
2801 pathB.lineTo(1123, 23);
2802 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2803 pathB.quadTo(1120.07104f, 28, 1118, 28);
2804 pathB.lineTo(888, 28);
2805 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2806 pathB.quadTo(883, 25.0710678f, 883, 23);
2807 pathB.close();
2808 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2809}
2810
2811static void skpbestred_ru37(skiatest::Reporter* reporter, const char* filename) {
2812 SkPath path;
2813 path.setFillType(SkPath::kEvenOdd_FillType);
2814 path.moveTo(883, 23);
2815 path.lineTo(883, 0);
2816 path.lineTo(1122.5f, 0);
2817 path.lineTo(1122.5f, 25.2136822f);
2818 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2819 path.quadTo(1120.07104f, 28, 1118, 28);
2820 path.lineTo(888, 28);
2821 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2822 path.quadTo(883, 25.0710678f, 883, 23);
2823 path.close();
2824 SkPath pathB;
2825 pathB.setFillType(SkPath::kWinding_FillType);
2826 pathB.moveTo(883, 0);
2827 pathB.lineTo(1123, 0);
2828 pathB.lineTo(1123, 23);
2829 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2830 pathB.quadTo(1120.07104f, 28, 1118, 28);
2831 pathB.lineTo(888, 28);
2832 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2833 pathB.quadTo(883, 25.0710678f, 883, 23);
2834 pathB.close();
2835 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2836}
2837
2838static void skpbingoentertainment_net189(skiatest::Reporter* reporter, const char* filename) {
2839 SkPath path;
2840 path.setFillType(SkPath::kEvenOdd_FillType);
2841 path.moveTo(896, 745.38678f);
2842 path.lineTo(896, 873.38678f);
2843 path.lineTo(922.567993f, 876.683716f);
2844 path.lineTo(922.567993f, 748.683716f);
2845 path.lineTo(896, 745.38678f);
2846 path.close();
2847 SkPath pathB;
2848 pathB.setFillType(SkPath::kWinding_FillType);
2849 pathB.moveTo(899.200928f, 745.783997f);
2850 pathB.cubicTo(897.119385f, 745.525696f, 895.432007f, 752.031982f, 895.432007f, 760.316284f);
2851 pathB.lineTo(895.432007f, 858.316284f);
2852 pathB.cubicTo(895.432007f, 866.600586f, 897.119385f, 873.525696f, 899.200928f, 873.783997f);
2853 pathB.lineTo(918.799133f, 876.216003f);
2854 pathB.cubicTo(920.880615f, 876.474304f, 922.567993f, 869.968018f, 922.567993f, 861.683716f);
2855 pathB.lineTo(922.567993f, 763.683716f);
2856 pathB.cubicTo(922.567993f, 755.399414f, 920.880615f, 748.474304f, 918.799133f, 748.216003f);
2857 pathB.lineTo(899.200928f, 745.783997f);
2858 pathB.close();
2859 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2860}
2861
2862static void skpcarrefour_ro62(skiatest::Reporter* reporter, const char* filename) {
2863 SkPath path;
2864 path.setFillType(SkPath::kEvenOdd_FillType);
2865 path.moveTo(1104, 453);
2866 path.lineTo(399, 453);
2867 path.lineTo(399, 657);
2868 path.cubicTo(399, 661.970581f, 403.029449f, 666, 408, 666);
2869 path.lineTo(1095, 666);
2870 path.cubicTo(1099.97058f, 666, 1104, 661.970581f, 1104, 657);
2871 path.lineTo(1104, 453);
2872 path.close();
2873 SkPath pathB;
2874 pathB.setFillType(SkPath::kInverseWinding_FillType);
2875 pathB.moveTo(400, 453);
2876 pathB.lineTo(1103, 453);
2877 pathB.lineTo(1103, 666);
2878 pathB.lineTo(406, 666);
2879 pathB.cubicTo(402.686279f, 666, 400, 663.313721f, 400, 660);
2880 pathB.lineTo(400, 453);
2881 pathB.close();
2882 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2883}
2884
2885static void skpcaffelavazzait_com_ua21(skiatest::Reporter* reporter, const char* filename) {
2886 SkPath path;
2887 path.setFillType(SkPath::kEvenOdd_FillType);
2888 path.moveTo(883, 23);
2889 path.lineTo(883, 0);
2890 path.lineTo(1122.5f, 0);
2891 path.lineTo(1122.5f, 25.2136822f);
2892 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2893 path.quadTo(1120.07104f, 28, 1118, 28);
2894 path.lineTo(888, 28);
2895 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2896 path.quadTo(883, 25.0710678f, 883, 23);
2897 path.close();
2898 SkPath pathB;
2899 pathB.setFillType(SkPath::kWinding_FillType);
2900 pathB.moveTo(883, 0);
2901 pathB.lineTo(1123, 0);
2902 pathB.lineTo(1123, 23);
2903 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2904 pathB.quadTo(1120.07104f, 28, 1118, 28);
2905 pathB.lineTo(888, 28);
2906 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2907 pathB.quadTo(883, 25.0710678f, 883, 23);
2908 pathB.close();
2909 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2910}
2911
2912static void skpcamcorder_kz21(skiatest::Reporter* reporter, const char* filename) {
2913 SkPath path;
2914 path.setFillType(SkPath::kEvenOdd_FillType);
2915 path.moveTo(883, 23);
2916 path.lineTo(883, 0);
2917 path.lineTo(1122.5f, 0);
2918 path.lineTo(1122.5f, 25.2136822f);
2919 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2920 path.quadTo(1120.07104f, 28, 1118, 28);
2921 path.lineTo(888, 28);
2922 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2923 path.quadTo(883, 25.0710678f, 883, 23);
2924 path.close();
2925 SkPath pathB;
2926 pathB.setFillType(SkPath::kWinding_FillType);
2927 pathB.moveTo(883, 0);
2928 pathB.lineTo(1123, 0);
2929 pathB.lineTo(1123, 23);
2930 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2931 pathB.quadTo(1120.07104f, 28, 1118, 28);
2932 pathB.lineTo(888, 28);
2933 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2934 pathB.quadTo(883, 25.0710678f, 883, 23);
2935 pathB.close();
2936 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2937}
2938
2939static void skpcavablar_net563(skiatest::Reporter* reporter, const char* filename) {
2940 SkPath path;
2941 path.setFillType(SkPath::kEvenOdd_FillType);
2942 path.moveTo(160.000488f, 918);
2943 path.cubicTo(159.164749f, 917.37207f, 158.125824f, 917, 157, 917);
2944 path.lineTo(94, 917);
2945 path.cubicTo(92.874176f, 917, 91.8352661f, 917.37207f, 90.9995193f, 918);
2946 path.lineTo(160.000488f, 918);
2947 path.close();
2948 SkPath pathB;
2949 pathB.setFillType(SkPath::kWinding_FillType);
2950 pathB.moveTo(91, 917);
2951 pathB.lineTo(160, 917);
2952 pathB.lineTo(160, 918);
2953 pathB.lineTo(91, 918);
2954 pathB.close();
2955 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2956}
2957
2958static void skpinsomnia_gr72(skiatest::Reporter* reporter, const char* filename) {
2959 SkPath path;
2960 path.setFillType(SkPath::kEvenOdd_FillType);
2961 path.moveTo(1138, 231);
2962 path.lineTo(1137, 243.625748f);
2963 path.lineTo(1137, 926);
2964 path.lineTo(1139, 926);
2965 path.lineTo(1139, 231);
2966 path.lineTo(1138, 231);
2967 path.close();
2968 SkPath pathB;
2969 pathB.setFillType(SkPath::kWinding_FillType);
2970 pathB.moveTo(1139, 231);
2971 pathB.lineTo(1138, 231);
2972 pathB.lineTo(633, 6101);
2973 pathB.lineTo(1139, 6607);
2974 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2975}
2976
2977static void cubicOp95u(skiatest::Reporter* reporter, const char* filename) {
2978 SkPath path, pathB;
2979 path.setFillType(SkPath::kEvenOdd_FillType);
2980 path.moveTo(0, 2);
2981 path.cubicTo(2, 3, 5, 1, 3, 2);
2982 path.close();
2983 pathB.setFillType(SkPath::kEvenOdd_FillType);
2984 pathB.moveTo(1, 5);
2985 pathB.cubicTo(2, 3, 2, 0, 3, 2);
2986 pathB.close();
2987 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2988}
2989
2990static void cubicOp96d(skiatest::Reporter* reporter, const char* filename) {
2991 SkPath path, pathB;
2992 path.setFillType(SkPath::kEvenOdd_FillType);
2993 path.moveTo(1, 6);
2994 path.cubicTo(0, 3, 6, 3, 5, 0);
2995 path.close();
2996 pathB.setFillType(SkPath::kEvenOdd_FillType);
2997 pathB.moveTo(3, 6);
2998 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2999 pathB.close();
3000 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3001}
3002
3003static void cubicOp97x(skiatest::Reporter* reporter, const char* filename) {
3004 SkPath path, pathB;
3005 path.setFillType(SkPath::kEvenOdd_FillType);
3006 path.moveTo(0, 2);
3007 path.cubicTo(0, 6, 2, 1, 2, 1);
3008 path.close();
3009 pathB.setFillType(SkPath::kEvenOdd_FillType);
3010 pathB.moveTo(1, 2);
3011 pathB.cubicTo(1, 2, 2, 0, 6, 0);
3012 pathB.close();
3013 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3014}
3015
3016static void cubicOp98x(skiatest::Reporter* reporter, const char* filename) {
3017 SkPath path, pathB;
3018 path.setFillType(SkPath::kEvenOdd_FillType);
3019 path.moveTo(0, 3);
3020 path.cubicTo(3, 6, 4, 1, 6, 3);
3021 path.close();
3022 pathB.setFillType(SkPath::kEvenOdd_FillType);
3023 pathB.moveTo(1, 4);
3024 pathB.cubicTo(3, 6, 3, 0, 6, 3);
3025 pathB.close();
3026 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3027}
3028
3029static void cubicOp99(skiatest::Reporter* reporter, const char* filename) {
3030 SkPath path, pathB;
3031 path.setFillType(SkPath::kWinding_FillType);
3032 path.moveTo(3,6);
3033 path.cubicTo(0,3, 6,5, 5,4);
3034 path.close();
3035 pathB.setFillType(SkPath::kWinding_FillType);
3036 pathB.moveTo(5,6);
3037 pathB.cubicTo(4,5, 6,3, 3,0);
3038 pathB.close();
3039 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3040}
3041
3042static void cubicOp100(skiatest::Reporter* reporter, const char* filename) {
3043 SkPath path, pathB;
3044 path.setFillType(SkPath::kWinding_FillType);
3045 path.moveTo(0,1);
3046 path.cubicTo(0,2, 2,1, 4,2);
3047 path.close();
3048 pathB.setFillType(SkPath::kWinding_FillType);
3049 pathB.moveTo(1,2);
3050 pathB.cubicTo(2,4, 1,0, 2,0);
3051 pathB.close();
3052 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3053}
3054
3055static void cubicOp101(skiatest::Reporter* reporter, const char* filename) {
3056 SkPath path, pathB;
3057 path.setFillType(SkPath::kWinding_FillType);
3058 path.moveTo(0, 1);
3059 path.cubicTo(2, 3, 2, 1, 5, 3);
3060 path.close();
3061 pathB.setFillType(SkPath::kWinding_FillType);
3062 pathB.moveTo(1, 2);
3063 pathB.cubicTo(3, 5, 1, 0, 3, 2);
3064 pathB.close();
3065 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3066}
3067
3068static void cubicOp102(skiatest::Reporter* reporter, const char* filename) {
3069 SkPath path, pathB;
3070 path.setFillType(SkPath::kWinding_FillType);
3071 path.moveTo(0,1);
3072 path.cubicTo(1,2, 1,0, 3,0);
3073 path.close();
3074 pathB.setFillType(SkPath::kWinding_FillType);
3075 pathB.moveTo(0,1);
3076 pathB.cubicTo(0,3, 1,0, 2,1);
3077 pathB.close();
3078 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3079}
3080
3081static void cubicOp103(skiatest::Reporter* reporter, const char* filename) {
3082 SkPath path, pathB;
3083 path.setFillType(SkPath::kWinding_FillType);
3084 path.moveTo(0,1);
3085 path.cubicTo(1,5, 2,0, 2,1);
3086 path.close();
3087 pathB.setFillType(SkPath::kWinding_FillType);
3088 pathB.moveTo(0,2);
3089 pathB.cubicTo(1,2, 1,0, 5,1);
3090 pathB.close();
3091 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3092}
3093
3094static void cubicOp104(skiatest::Reporter* reporter, const char* filename) {
3095 SkPath path, pathB;
3096 path.setFillType(SkPath::kWinding_FillType);
3097 path.moveTo(0,1);
3098 path.cubicTo(0,6, 4,0, 6,1);
3099 path.close();
3100 pathB.setFillType(SkPath::kWinding_FillType);
3101 pathB.moveTo(0,4);
3102 pathB.cubicTo(1,6, 1,0, 6,0);
3103 pathB.close();
3104 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3105}
3106
3107static void cubicOp105(skiatest::Reporter* reporter, const char* filename) {
3108 SkPath path, pathB;
3109 path.setFillType(SkPath::kWinding_FillType);
3110 path.moveTo(0,1);
3111 path.cubicTo(0,4, 6,5, 2,0);
3112 path.close();
3113 pathB.setFillType(SkPath::kWinding_FillType);
3114 pathB.moveTo(5,6);
3115 pathB.cubicTo(0,2, 1,0, 4,0);
3116 pathB.close();
3117 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3118}
3119
3120static void cubicOp106(skiatest::Reporter* reporter, const char* filename) {
3121 SkPath path, pathB;
3122 path.setFillType(SkPath::kWinding_FillType);
3123 path.moveTo(0, 1);
3124 path.cubicTo(4, 6, 2, 1, 2, 0);
3125 path.close();
3126 pathB.setFillType(SkPath::kWinding_FillType);
3127 pathB.moveTo(1, 2);
3128 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3129 pathB.close();
3130 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3131}
3132
3133static void cubicOp107(skiatest::Reporter* reporter, const char* filename) {
3134 SkPath path, pathB;
3135 path.setFillType(SkPath::kWinding_FillType);
3136 path.moveTo(0, 1);
3137 path.cubicTo(4, 6, 2, 1, 2, 0);
3138 path.close();
3139 pathB.setFillType(SkPath::kWinding_FillType);
3140 pathB.moveTo(1, 2);
3141 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3142 pathB.close();
3143 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3144}
3145
3146static void cubicOp108(skiatest::Reporter* reporter, const char* filename) {
3147 SkPath path, pathB;
3148 path.setFillType(SkPath::kWinding_FillType);
3149 path.moveTo(0, 1);
3150 path.cubicTo(4, 6, 2, 1, 2, 0);
3151 path.close();
3152 pathB.setFillType(SkPath::kWinding_FillType);
3153 pathB.moveTo(1, 2);
3154 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3155 pathB.close();
3156 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3157}
3158
3159static void cubicOp109(skiatest::Reporter* reporter, const char* filename) {
3160 SkPath path, pathB;
3161 path.setFillType(SkPath::kWinding_FillType);
3162 path.moveTo(0,1);
3163 path.cubicTo(4,5, 6,3, 5,4);
3164 path.close();
3165 pathB.setFillType(SkPath::kWinding_FillType);
3166 pathB.moveTo(3,6);
3167 pathB.cubicTo(4,5, 1,0, 5,4);
3168 pathB.close();
3169 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3170}
3171
3172static void cubicOp110(skiatest::Reporter* reporter, const char* filename) {
3173 SkPath path, pathB;
3174 path.setFillType(SkPath::kEvenOdd_FillType);
3175 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3176 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3177 pathB.setFillType(SkPath::kEvenOdd_FillType);
3178 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3179 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3180 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3181}
3182
3183static void cubicOp111(skiatest::Reporter* reporter, const char* filename) {
3184 SkPath path, pathB;
3185 path.setFillType(SkPath::kWinding_FillType);
3186 path.moveTo(1,4);
3187 path.cubicTo(0,5, 4,1, 3,1);
3188 path.close();
3189 pathB.setFillType(SkPath::kWinding_FillType);
3190 pathB.moveTo(1,4);
3191 pathB.cubicTo(1,3, 4,1, 5,0);
3192 pathB.close();
3193 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3194}
3195
3196static void xOp1u(skiatest::Reporter* reporter, const char* filename) {
3197 SkPath path, pathB;
3198 path.setFillType(SkPath::kEvenOdd_FillType);
3199 path.moveTo(1, 4);
3200 path.cubicTo(4, 5, 3, 2, 6, 3);
3201 path.close();
3202 pathB.setFillType(SkPath::kEvenOdd_FillType);
3203 pathB.moveTo(2, 3);
3204 pathB.cubicTo(3, 6, 4, 1, 5, 4);
3205 pathB.close();
3206 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3207}
3208
3209static void xOp1i(skiatest::Reporter* reporter, const char* filename) {
3210 SkPath path, pathB;
3211 path.setFillType(SkPath::kEvenOdd_FillType);
3212 path.moveTo(1, 4);
3213 path.cubicTo(1, 5, 6, 0, 5, 1);
3214 path.close();
3215 pathB.setFillType(SkPath::kEvenOdd_FillType);
3216 pathB.moveTo(0, 6);
3217 pathB.cubicTo(1, 5, 4, 1, 5, 1);
3218 pathB.close();
3219 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3220}
3221
3222static void xOp2i(skiatest::Reporter* reporter, const char* filename) {
3223 SkPath path, pathB;
3224 path.setFillType(SkPath::kEvenOdd_FillType);
3225 path.moveTo(1, 5);
3226 path.cubicTo(0, 4, 3, 2, 6, 1);
3227 path.close();
3228 pathB.setFillType(SkPath::kEvenOdd_FillType);
3229 pathB.moveTo(2, 3);
3230 pathB.cubicTo(1, 6, 5, 1, 4, 0);
3231 pathB.close();
3232 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3233}
3234
3235static void xOp3i(skiatest::Reporter* reporter, const char* filename) {
3236 SkPath path, pathB;
3237 path.setFillType(SkPath::kWinding_FillType);
3238 path.moveTo(1,4);
3239 path.cubicTo(0,5, 4,1, 3,1);
3240 path.close();
3241 pathB.setFillType(SkPath::kWinding_FillType);
3242 pathB.moveTo(1,4);
3243 pathB.cubicTo(1,3, 4,1, 5,0);
3244 pathB.close();
3245 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3246}
3247
3248static void findFirst1(skiatest::Reporter* reporter, const char* filename) {
3249 SkPath path, pathB;
3250 path.setFillType(SkPath::kWinding_FillType);
3251 path.moveTo(0,1);
3252 path.cubicTo(1,6, 5,0, 2,1);
3253 path.close();
3254 pathB.setFillType(SkPath::kWinding_FillType);
3255 pathB.moveTo(0,5);
3256 pathB.cubicTo(1,2, 1,0, 6,1);
3257 pathB.close();
3258 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3259}
3260
3261static void cubicOp112(skiatest::Reporter* reporter, const char* filename) {
3262 SkPath path, pathB;
3263 path.setFillType(SkPath::kWinding_FillType);
3264 path.moveTo(2,4);
3265 path.cubicTo(2,3, 6,4, 1,0);
3266 path.close();
3267 pathB.setFillType(SkPath::kWinding_FillType);
3268 pathB.moveTo(4,6);
3269 pathB.cubicTo(0,1, 4,2, 3,2);
3270 pathB.close();
3271 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3272}
3273
3274static void cubicOp113(skiatest::Reporter* reporter, const char* filename) {
3275 SkPath path, pathB;
3276 path.moveTo(2,4);
3277 path.cubicTo(3,5, 2.33333325f,4.33333349f, 3.83333325f,3.83333349f);
3278 path.close();
3279 pathB.moveTo(3,5);
3280 pathB.cubicTo(2.33333325f,4.33333349f, 3.83333325f,3.83333349f, 2,4);
3281 pathB.close();
3282 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3283}
3284
3285static void cubicOp114(skiatest::Reporter* reporter, const char* filename) {
3286 SkPath path, pathB;
3287 path.setFillType(SkPath::kWinding_FillType);
3288 path.moveTo(0, 1);
3289 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3290 path.close();
3291 pathB.setFillType(SkPath::kWinding_FillType);
3292 pathB.moveTo(1, 3);
3293 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3294 pathB.close();
3295 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3296}
3297
3298static void cubicOp114asQuad(skiatest::Reporter* reporter, const char* filename) {
3299 SkPath path, pathB;
3300 path.setFillType(SkPath::kWinding_FillType);
3301 path.moveTo(0, 1);
3302 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3303 path.close();
3304 pathB.setFillType(SkPath::kWinding_FillType);
3305 pathB.moveTo(1, 3);
3306 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3307 pathB.close();
3308 SkPath qPath, qPathB;
3309 CubicPathToQuads(path, &qPath);
3310 CubicPathToQuads(pathB, &qPathB);
3311 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
3312}
3313
3314static void quadOp10i(skiatest::Reporter* reporter, const char* filename) {
3315 SkPath path, pathB;
3316 path.moveTo(0, 0);
3317 path.quadTo(1, 8, 3, 5);
3318 path.lineTo(8, 1);
3319 path.close();
3320 pathB.moveTo(0, 0);
3321 pathB.quadTo(8, 1, 4, 8);
3322 pathB.close();
3323 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3324}
3325
3326static void kari1(skiatest::Reporter* reporter, const char* filename) {
3327 SkPath path1;
3328 path1.moveTo(39.9375, -5.8359375);
3329 path1.lineTo(40.625, -5.7890625);
3330 path1.lineTo(37.7109375, 1.3515625);
3331 path1.lineTo(37.203125, 0.9609375);
3332 path1.close();
3333
3334 SkPath path2;
3335 path2.moveTo(37.52734375f, -1.44140625f);
3336 path2.cubicTo(37.8736991882324f, -1.69921875f, 38.1640625f, -2.140625f, 38.3984375f, -2.765625f);
3337 path2.lineTo(38.640625f, -2.609375f);
3338 path2.cubicTo(38.53125f, -1.89583337306976f, 38.0664443969727f, -0.154893040657043f, 38.0664443969727f, -0.154893040657043f);
3339 path2.cubicTo(38.0664443969727f, -0.154893040657043f, 37.1809883117676f, -1.18359375f, 37.52734375, -1.44140625f);
3340 path2.close();
3341
3342 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3343}
3344
3345static void issue2504(skiatest::Reporter* reporter, const char* filename) {
3346 SkPath path1;
3347 path1.moveTo(34.2421875, -5.976562976837158203125);
3348 path1.lineTo(35.453121185302734375, 0);
3349 path1.lineTo(31.9375, 0);
3350 path1.close();
3351
3352 SkPath path2;
3353 path2.moveTo(36.71843719482421875, 0.8886508941650390625);
3354 path2.cubicTo(36.71843719482421875, 0.8886508941650390625,
3355 35.123386383056640625, 0.554015457630157470703125,
3356 34.511409759521484375, -0.1152553558349609375);
3357 path2.cubicTo(33.899425506591796875, -0.7845261096954345703125,
3358 34.53484344482421875, -5.6777553558349609375,
3359 34.53484344482421875, -5.6777553558349609375);
3360 path2.close();
3361 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3362}
3363
3364static void issue2540(skiatest::Reporter* reporter, const char* filename) {
3365 SkPath path1;
3366 path1.moveTo(26.5054988861083984375, 85.73960113525390625);
3367 path1.cubicTo(84.19739532470703125, 17.77140045166015625, 16.93920135498046875, 101.86199951171875, 12.631000518798828125, 105.24700164794921875);
3368 path1.cubicTo(11.0819997787475585937500000, 106.46399688720703125, 11.5260000228881835937500000, 104.464996337890625, 11.5260000228881835937500000, 104.464996337890625);
3369 path1.lineTo(23.1654987335205078125, 89.72879791259765625);
3370 path1.cubicTo(23.1654987335205078125, 89.72879791259765625, -10.1713008880615234375, 119.9160003662109375, -17.1620006561279296875, 120.8249969482421875);
3371 path1.cubicTo(-19.1149997711181640625, 121.07900238037109375, -18.0380001068115234375, 119.79299163818359375, -18.0380001068115234375, 119.79299163818359375);
3372 path1.cubicTo(-18.0380001068115234375, 119.79299163818359375, 14.22100067138671875, 90.60700225830078125, 26.5054988861083984375, 85.73960113525390625);
3373 path1.close();
3374
3375 SkPath path2;
3376 path2.moveTo(-25.077999114990234375, 124.9120025634765625);
3377 path2.cubicTo(-25.077999114990234375, 124.9120025634765625, -25.9509983062744140625, 125.95400238037109375, -24.368999481201171875, 125.7480010986328125);
3378 path2.cubicTo(-16.06999969482421875, 124.66899871826171875, 1.2680000066757202148437500, 91.23999786376953125, 37.264003753662109375, 95.35400390625);
3379 path2.cubicTo(37.264003753662109375, 95.35400390625, 11.3710002899169921875, 83.7339935302734375, -25.077999114990234375, 124.9120025634765625);
3380 path2.close();
3381 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3382}
3383
3384static void rects1(skiatest::Reporter* reporter, const char* filename) {
3385 SkPath path, pathB;
3386 path.setFillType(SkPath::kEvenOdd_FillType);
3387 path.moveTo(0, 0);
3388 path.lineTo(1, 0);
3389 path.lineTo(1, 1);
3390 path.lineTo(0, 1);
3391 path.close();
3392 path.moveTo(0, 0);
3393 path.lineTo(6, 0);
3394 path.lineTo(6, 6);
3395 path.lineTo(0, 6);
3396 path.close();
3397 pathB.setFillType(SkPath::kEvenOdd_FillType);
3398 pathB.moveTo(0, 0);
3399 pathB.lineTo(1, 0);
3400 pathB.lineTo(1, 1);
3401 pathB.lineTo(0, 1);
3402 pathB.close();
3403 pathB.moveTo(0, 0);
3404 pathB.lineTo(2, 0);
3405 pathB.lineTo(2, 2);
3406 pathB.lineTo(0, 2);
3407 pathB.close();
3408 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3409}
3410
3411static void rects2(skiatest::Reporter* reporter, const char* filename) {
3412 SkPath path, pathB;
3413 path.setFillType(SkPath::kEvenOdd_FillType);
3414 path.moveTo(0, 0);
3415 path.lineTo(4, 0);
3416 path.lineTo(4, 4);
3417 path.lineTo(0, 4);
3418 path.close();
3419 path.moveTo(3, 3);
3420 path.lineTo(4, 3);
3421 path.lineTo(4, 4);
3422 path.lineTo(3, 4);
3423 path.close();
3424 pathB.setFillType(SkPath::kWinding_FillType);
3425 pathB.moveTo(3, 3);
3426 pathB.lineTo(6, 3);
3427 pathB.lineTo(6, 6);
3428 pathB.lineTo(3, 6);
3429 pathB.close();
3430 pathB.moveTo(3, 3);
3431 pathB.lineTo(4, 3);
3432 pathB.lineTo(4, 4);
3433 pathB.lineTo(3, 4);
3434 pathB.close();
3435 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3436}
3437
3438static void rects3(skiatest::Reporter* reporter, const char* filename) {
3439 SkPath path, pathB;
3440 path.setFillType(SkPath::kEvenOdd_FillType);
3441 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3442 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3443 pathB.setFillType(SkPath::kWinding_FillType);
3444 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3445 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3446 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3447}
3448
3449static void rects4(skiatest::Reporter* reporter, const char* filename) {
3450 SkPath path, pathB;
3451 path.setFillType(SkPath::kEvenOdd_FillType);
3452 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3453 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3454 pathB.setFillType(SkPath::kWinding_FillType);
3455 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3456 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
3457 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3458}
3459
3460static void issue2753(skiatest::Reporter* reporter, const char* filename) {
3461 SkPath path1;
3462 path1.moveTo(142.701f, 110.568f);
3463 path1.lineTo(142.957f, 100);
3464 path1.lineTo(153.835f, 100);
3465 path1.lineTo(154.592f, 108.188f);
3466 path1.cubicTo(154.592f, 108.188f, 153.173f, 108.483f, 152.83f, 109.412f);
3467 path1.cubicTo(152.83f, 109.412f, 142.701f, 110.568f, 142.701f, 110.568f);
3468 path1.close();
3469
3470 SkPath path2;
3471 path2.moveTo(39, 124.001f);
3472 path2.cubicTo(39, 124.001f, 50.6f, 117.001f, 50.6f, 117.001f);
3473 path2.cubicTo(50.6f, 117.001f, 164.601f, 85.2f, 188.201f, 117.601f);
3474 path2.cubicTo(188.201f, 117.601f, 174.801f, 93, 39, 124.001f);
3475 path2.close();
3476
3477 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3478}
3479
3480static void issue2808(skiatest::Reporter* reporter, const char* filename) {
3481 SkPath path1, path2;
3482
3483 path1.moveTo(509.20300293f, 385.601989746f);
3484 path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f);
3485 path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f);
3486 path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f);
3487 path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f);
3488 path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f);
3489 path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f);
3490 path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f);
3491 path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f);
3492 path1.close();
3493
3494 path2.moveTo(449.033996582f, 290.87298584f);
3495 path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f);
3496 path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f);
3497 path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f);
3498 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3499 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3500 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f);
3501 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f);
3502 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f);
3503 path2.close();
3504
3505 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3506}
3507
3508static void cubicOp115(skiatest::Reporter* reporter, const char* filename) {
3509 SkPath path, pathB;
3510 path.setFillType(SkPath::kWinding_FillType);
3511 path.moveTo(0,1);
3512 path.cubicTo(3,4, 2,1, 5,3);
3513 path.close();
3514 pathB.setFillType(SkPath::kWinding_FillType);
3515 pathB.moveTo(1,2);
3516 pathB.cubicTo(3,5, 1,0, 4,3);
3517 pathB.close();
3518 SkPath path2(path);
3519 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3520}
3521
3522static void testRect1(skiatest::Reporter* reporter, const char* filename) {
3523 SkPath path, path2;
3524 path.addRect(0, 0, 60, 60, SkPath::kCCW_Direction);
3525 path.addRect(30, 20, 50, 50, SkPath::kCCW_Direction);
3526 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
3527// path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
3528 testPathOp(reporter, path, path2, kUnion_SkPathOp, filename);
3529}
3530
3531static void testRect2(skiatest::Reporter* reporter, const char* filename) {
3532 SkPath path, pathB;
3533 path.setFillType(SkPath::kWinding_FillType);
3534 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3535 path.addRect(4, 4, 5, 5, SkPath::kCW_Direction);
3536 pathB.setFillType(SkPath::kEvenOdd_FillType);
3537 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3538 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3539 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3540}
3541
3542static void cubicOp116(skiatest::Reporter* reporter, const char* filename) {
3543 SkPath path, pathB;
3544 path.setFillType(SkPath::kWinding_FillType);
3545 path.moveTo(0,1);
3546 path.cubicTo(4,6, 2,0, 2,0);
3547 path.close();
3548 pathB.setFillType(SkPath::kWinding_FillType);
3549 pathB.moveTo(0,2);
3550 pathB.cubicTo(0,2, 1,0, 6,4);
3551 pathB.close();
3552 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3553}
3554
3555static void cubicOp117(skiatest::Reporter* reporter, const char* filename) {
3556 SkPath path, pathB;
3557 path.setFillType(SkPath::kWinding_FillType);
3558 path.moveTo(0,1);
3559 path.cubicTo(4,5, 6,0, 1,0);
3560 path.close();
3561 pathB.setFillType(SkPath::kWinding_FillType);
3562 pathB.moveTo(0,6);
3563 pathB.cubicTo(0,1, 1,0, 5,4);
3564 pathB.close();
3565 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3566}
3567
3568static void cubicOp118(skiatest::Reporter* reporter, const char* filename) {
3569 SkPath path, pathB;
3570 path.setFillType(SkPath::kWinding_FillType);
3571 path.moveTo(0,1);
3572 path.cubicTo(4,6, 5,1, 6,2);
3573 path.close();
3574 pathB.setFillType(SkPath::kWinding_FillType);
3575 pathB.moveTo(1,5);
3576 pathB.cubicTo(2,6, 1,0, 6,4);
3577 pathB.close();
3578 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3579}
3580
3581static void loop1(skiatest::Reporter* reporter, const char* filename) {
3582 SkPath path, pathB;
3583 path.moveTo(0,1);
3584 path.cubicTo(1,5, -5.66666651f,3.33333349f, 8.83333302f,2.33333349f);
3585 path.close();
3586 pathB.moveTo(1,5);
3587 pathB.cubicTo(-5.66666651f,3.33333349f, 8.83333302f,2.33333349f, 0,1);
3588 pathB.close();
3589 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3590}
3591
3592#include "SkPathOpsCubic.h"
3593
3594static void loop1asQuad(skiatest::Reporter* reporter, const char* filename) {
3595 CubicPts cubic1 = {{{0,1}, {1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}}};
3596 CubicPts cubic2 = {{{1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}, {0,1}}};
3597 SkDCubic c1, c2;
3598 c1.debugSet(cubic1.fPts);
3599 c2.debugSet(cubic2.fPts);
3600 double c1InflectionTs[2], c2InflectionTs[2];
3601 SkDEBUGCODE(int c1InfTCount =) c1.findInflections(c1InflectionTs);
3602 SkASSERT(c1InfTCount == 2);
3603 SkDEBUGCODE(int c2InfTCount =) c2.findInflections(c2InflectionTs);
3604 SkASSERT(c2InfTCount == 1);
3605 SkASSERT(c1InflectionTs[0] > c1InflectionTs[1]);
3606 SkDCubicPair c1pair = c1.chopAt(c1InflectionTs[0]);
3607 SkDCubicPair c1apair = c1pair.first().chopAt(c1InflectionTs[1]);
3608 SkDCubicPair c2pair = c2.chopAt(c2InflectionTs[0]);
3609 SkDQuad q1[2] = { c1pair.first().toQuad(), c1pair.second().toQuad() };
3610 SkDQuad q1a[2] = { c1apair.first().toQuad(), c1apair.second().toQuad() };
3611 SkDQuad q2[2] = { c2pair.first().toQuad(), c2pair.second().toQuad() };
3612 SkPath path, pathB;
3613 path.moveTo(q1a[0].fPts[0].asSkPoint());
3614 path.quadTo(q1a[0].fPts[1].asSkPoint(), q1a[0].fPts[2].asSkPoint());
3615 path.quadTo(q1a[1].fPts[1].asSkPoint(), q1a[1].fPts[2].asSkPoint());
3616 path.quadTo(q1[1].fPts[1].asSkPoint(), q1[1].fPts[2].asSkPoint());
3617 path.close();
3618 pathB.moveTo(q2[0].fPts[0].asSkPoint());
3619 pathB.quadTo(q2[0].fPts[1].asSkPoint(), q2[0].fPts[2].asSkPoint());
3620 pathB.quadTo(q2[1].fPts[1].asSkPoint(), q2[1].fPts[2].asSkPoint());
3621 pathB.close();
3622 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3623}
3624
3625static void loop2(skiatest::Reporter* reporter, const char* filename) {
3626 SkPath path, pathB;
3627 path.moveTo(0,1);
3628 path.cubicTo(3,4, 3.f,4.f, 4.5f,1.5f);
3629 path.close();
3630 pathB.moveTo(3,4);
3631 pathB.cubicTo(3.f,4.f, 4.5f,1.5f, 0,1);
3632 pathB.close();
3633 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3634}
3635
3636static void loop3(skiatest::Reporter* reporter, const char* filename) {
3637 SkPath path, pathB;
3638 path.moveTo(0,1);
3639 path.cubicTo(3,5, -3.66666651f,0, 10.5f,-1.66666651f);
3640 path.close();
3641 pathB.moveTo(3,5);
3642 pathB.cubicTo(-3.66666651f,0, 10.5f,-1.66666651f, 0,1);
3643 pathB.close();
3644 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3645}
3646
3647static void loop4(skiatest::Reporter* reporter, const char* filename) {
3648 SkPath path, pathB;
3649 path.moveTo(0,5);
3650 path.cubicTo(1,5, 1,4, 0.833333313f,3);
3651 path.close();
3652 pathB.moveTo(1,5);
3653 pathB.cubicTo(1,4, 0.833333313f,3, 0,5);
3654 pathB.close();
3655 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3656}
3657
3658#include "SkParsePath.h"
3659
3660static void issue3517(skiatest::Reporter* reporter, const char* filename) {
3661 SkPath path, pathB;
3662
3663 const char str[] = "M31.35 57.75L31.35 57.75C31.9 57.7486 32.45 57.7948 33 57.7413C33.55 57.6878 34.1 57.5014 34.65 57.4291C35.2 57.3569 35.75 57.3223 36.3 57.3079C36.85 57.2935 37.4 57.3143 37.95 57.3428C38.5 57.3712 39.05 57.4112 39.6 57.4786C40.15 57.546 40.7 57.7029 41.25 57.7472C41.8 57.7916 42.35 57.7962 42.9 57.7445C43.45 57.6928 44 57.5345 44.55 57.4373C45.1 57.34 45.65 57.2115 46.2 57.1611C46.75 57.1107 47.3 57.1371 47.85 57.1349C48.4 57.1327 48.95 57.144 49.5 57.1478C50.05 57.1516 50.6 57.1553 51.15 57.1579C51.7 57.1605 52.25 57.1601 52.8 57.1634C53.35 57.1667 53.9 57.1731 54.45 57.1776C55 57.182 55.55 57.1916 56.1 57.19C56.65 57.1884 57.2 57.178 57.75 57.168C58.3 57.158 58.85 57.1355 59.4 57.1299C59.95 57.1243 60.5 57.1338 61.05 57.1345C61.6 57.1352 62.15 57.124 62.7 57.134C63.25 57.1441 63.8 57.1731 64.35 57.195C64.9 57.2169 65.45 57.2532 66 57.2655C66.55 57.2778 67.1 57.2647 67.65 57.2687C68.2 57.2728 68.75 57.267 69.3 57.2896C69.85 57.3122 70.4 57.371 70.95 57.4044C71.5 57.4377 72.05 57.4668 72.6 57.4896C73.15 57.5123 73.7 57.545 74.25 57.5408C74.8 57.5365 75.35 57.5068 75.9 57.4641C76.45 57.4213 77 57.3244 77.55 57.2842C78.1 57.244 78.65 57.2163 79.2 57.2228C79.75 57.2293 80.3 57.29 80.85 57.3232C81.4 57.3563 81.95 57.396 82.5 57.4219C83.05 57.4478 83.6 57.4637 84.15 57.4787C84.7 57.4937 85.25 57.5011 85.8 57.5121C86.35 57.523 86.9 57.5411 87.45 57.5444C88 57.5477 88.55 57.5663 89.1 57.5318C89.65 57.4972 90.2 57.3126 90.75 57.337C91.3 57.3613 91.85 57.6088 92.4 57.6776C92.95 57.7465 93.5 57.7379 94.05 57.75C94.6 57.7621 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3664 SkParsePath::FromSVGString(str, &path);
3665
3666 const char strB[] = "M31.35 57.75L31.35 57.75C31.9 57.7514 32.45 57.7052 33 57.7587C33.55 57.8122 34.1 57.9986 34.65 58.0709C35.2 58.1431 35.75 58.1777 36.3 58.1921C36.85 58.2065 37.4 58.1857 37.95 58.1572C38.5 58.1288 39.05 58.0888 39.6 58.0214C40.15 57.954 40.7 57.7971 41.25 57.7528C41.8 57.7084 42.35 57.7038 42.9 57.7555C43.45 57.8072 44 57.9655 44.55 58.0627C45.1 58.16 45.65 58.2885 46.2 58.3389C46.75 58.3893 47.3 58.3629 47.85 58.3651C48.4 58.3673 48.95 58.356 49.5 58.3522C50.05 58.3484 50.6 58.3447 51.15 58.3421C51.7 58.3395 52.25 58.3399 52.8 58.3366C53.35 58.3333 53.9 58.3269 54.45 58.3224C55 58.318 55.55 58.3084 56.1 58.31C56.65 58.3116 57.2 58.322 57.75 58.332C58.3 58.342 58.85 58.3645 59.4 58.3701C59.95 58.3757 60.5 58.3662 61.05 58.3655C61.6 58.3648 62.15 58.376 62.7 58.366C63.25 58.3559 63.8 58.3269 64.35 58.305C64.9 58.2831 65.45 58.2468 66 58.2345C66.55 58.2222 67.1 58.2353 67.65 58.2313C68.2 58.2272 68.75 58.233 69.3 58.2104C69.85 58.1878 70.4 58.129 70.95 58.0956C71.5 58.0623 72.05 58.0332 72.6 58.0104C73.15 57.9877 73.7 57.955 74.25 57.9592C74.8 57.9635 75.35 57.9932 75.9 58.0359C76.45 58.0787 77 58.1756 77.55 58.2158C78.1 58.256 78.65 58.2837 79.2 58.2772C79.75 58.2707 80.3 58.21 80.85 58.1768C81.4 58.1437 81.95 58.104 82.5 58.0781C83.05 58.0522 83.6 58.0363 84.15 58.0213C84.7 58.0063 85.25 57.9989 85.8 57.9879C86.35 57.977 86.9 57.9589 87.45 57.9556C88 57.9523 88.55 57.9337 89.1 57.9682C89.65 58.0028 90.2 58.1874 90.75 58.163C91.3 58.1387 91.85 57.8912 92.4 57.8224C92.95 57.7535 93.5 57.7621 94.05 57.75C94.6 57.7379 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3667 SkParsePath::FromSVGString(strB, &pathB);
3668 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3669}
3670
3671static void cubicOp119(skiatest::Reporter* reporter, const char* filename) {
3672 SkPath path, pathB;
3673 path.setFillType(SkPath::kWinding_FillType);
3674 path.moveTo(0,1);
3675 path.cubicTo(3,5, 2,1, 3,1);
3676 path.close();
3677 pathB.setFillType(SkPath::kWinding_FillType);
3678 pathB.moveTo(1,2);
3679 pathB.cubicTo(1,3, 1,0, 5,3);
3680 pathB.close();
3681 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3682}
3683
3684static void cubicOp120(skiatest::Reporter* reporter, const char* filename) {
3685 SkPath path, pathB;
3686 path.setFillType(SkPath::kWinding_FillType);
3687 path.moveTo(0,1);
3688 path.cubicTo(2,4, 2,1, 4,0);
3689 path.close();
3690 pathB.setFillType(SkPath::kWinding_FillType);
3691 pathB.moveTo(1,2);
3692 pathB.cubicTo(0,4, 1,0, 4,2);
3693 pathB.close();
3694 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3695}
3696
3697static void cubicOp121(skiatest::Reporter* reporter, const char* filename) {
3698 SkPath path, pathB;
3699 path.setFillType(SkPath::kWinding_FillType);
3700 path.moveTo(0,1);
3701 path.cubicTo(3,4, 3,2, 4,3);
3702 path.close();
3703 pathB.setFillType(SkPath::kWinding_FillType);
3704 pathB.moveTo(2,3);
3705 pathB.cubicTo(3,4, 1,0, 4,3);
3706 pathB.close();
3707 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3708}
3709
3710// FIXME : haven't debugged this failure yet
3711static void cubicOp122(skiatest::Reporter* reporter, const char* filename) {
3712 SkPath path, pathB;
3713 path.setFillType(SkPath::kWinding_FillType);
3714 path.moveTo(0,1);
3715 path.cubicTo(3,5, 4,1, 4,0);
3716 path.close();
3717 pathB.setFillType(SkPath::kWinding_FillType);
3718 pathB.moveTo(1,4);
3719 pathB.cubicTo(0,4, 1,0, 5,3);
3720 pathB.close();
3721 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3722}
3723
3724static void cubicOp123(skiatest::Reporter* reporter, const char* filename) {
3725 SkPath path, pathB;
3726 path.setFillType(SkPath::kWinding_FillType);
3727 path.moveTo(0,1);
3728 path.cubicTo(1,5, 2,0, 6,0);
3729 path.close();
3730 pathB.setFillType(SkPath::kWinding_FillType);
3731 pathB.moveTo(0,2);
3732 pathB.cubicTo(0,6, 1,0, 5,1);
3733 pathB.close();
3734 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3735}
3736
3737static void loop5(skiatest::Reporter* reporter, const char* filename) {
3738 SkPath path, pathB;
3739 path.moveTo(0,2);
3740 path.cubicTo(1,2, 1,1.66666663f, 0.833333313f,1.33333325f);
3741 path.close();
3742 pathB.moveTo(1,2);
3743 pathB.cubicTo(1,1.66666663f, 0.833333313f,1.33333325f, 0,2);
3744 pathB.close();
3745 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3746}
3747
3748static void loop6(skiatest::Reporter* reporter, const char* filename) {
3749 SkPath path, pathB;
3750 path.moveTo(0,1);
3751 path.cubicTo(1,3, -1.66666675f,1.66666663f, 4.16666651f,1.00000012f);
3752 path.close();
3753 pathB.moveTo(1,3);
3754 pathB.cubicTo(-1.66666675f,1.66666663f, 4.16666651f,1.00000012f, 0,1);
3755 pathB.close();
3756 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3757}
3758
3759static void cubicOp124(skiatest::Reporter* reporter, const char* filename) {
3760 SkPath path, pathB;
3761 path.setFillType(SkPath::kWinding_FillType);
3762 path.moveTo(0,1);
3763 path.cubicTo(1,5, 6,0, 3,0);
3764 path.close();
3765 pathB.setFillType(SkPath::kWinding_FillType);
3766 pathB.moveTo(0,6);
3767 pathB.cubicTo(0,3, 1,0, 5,1);
3768 pathB.close();
3769 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3770}
3771
3772static void cubicOp125(skiatest::Reporter* reporter, const char* filename) {
3773 SkPath path, pathB;
3774 path.setFillType(SkPath::kWinding_FillType);
3775 path.moveTo(0,1);
3776 path.cubicTo(3,6, 3,1, 6,2);
3777 path.close();
3778 pathB.setFillType(SkPath::kWinding_FillType);
3779 pathB.moveTo(1,3);
3780 pathB.cubicTo(2,6, 1,0, 6,3);
3781 pathB.close();
3782 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3783}
3784
3785static void cubicOp126(skiatest::Reporter* reporter, const char* filename) {
3786 SkPath path, pathB;
3787 path.setFillType(SkPath::kWinding_FillType);
3788 path.moveTo(0,1);
3789 path.cubicTo(0,3, 6,0, 2,1);
3790 path.close();
3791 pathB.setFillType(SkPath::kWinding_FillType);
3792 pathB.moveTo(0,6);
3793 pathB.cubicTo(1,2, 1,0, 3,0);
3794 pathB.close();
3795 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3796}
3797
3798static void cubicOp127(skiatest::Reporter* reporter, const char* filename) {
3799 SkPath path, pathB;
3800 path.setFillType(SkPath::kWinding_FillType);
3801 path.moveTo(0,1);
3802 path.cubicTo(1,5, 6,0, 3,0);
3803 path.close();
3804 pathB.setFillType(SkPath::kWinding_FillType);
3805 pathB.moveTo(0,6);
3806 pathB.cubicTo(0,3, 1,0, 5,1);
3807 pathB.close();
3808 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3809}
3810
3811static void cubicOp128(skiatest::Reporter* reporter, const char* filename) {
3812 SkPath path, pathB;
3813 path.setFillType(SkPath::kWinding_FillType);
3814 path.moveTo(0,1);
3815 path.cubicTo(0,3, 3,2, 5,2);
3816 path.close();
3817 pathB.setFillType(SkPath::kWinding_FillType);
3818 pathB.moveTo(2,3);
3819 pathB.cubicTo(2,5, 1,0, 3,0);
3820 pathB.close();
3821 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3822}
3823
3824static void cubicOp129(skiatest::Reporter* reporter, const char* filename) {
3825 SkPath path, pathB;
3826 path.setFillType(SkPath::kWinding_FillType);
3827 path.moveTo(5,6);
3828 path.cubicTo(3,4, 2,0, 2,1);
3829 path.close();
3830 pathB.setFillType(SkPath::kWinding_FillType);
3831 pathB.moveTo(0,2);
3832 pathB.cubicTo(1,2, 6,5, 4,3);
3833 pathB.close();
3834 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3835}
3836
3837static void cubicOp130(skiatest::Reporter* reporter, const char* filename) {
3838 SkPath path, pathB;
3839 path.setFillType(SkPath::kWinding_FillType);
3840 path.moveTo(5,6);
3841 path.cubicTo(4,6, 3,0, 2,1);
3842 path.close();
3843 pathB.setFillType(SkPath::kWinding_FillType);
3844 pathB.moveTo(0,3);
3845 pathB.cubicTo(1,2, 6,5, 6,4);
3846 pathB.close();
3847 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3848}
3849
3850#include "SkGeometry.h"
3851
3852static void complex_to_quads(const SkPoint pts[], SkPath* path) {
3853 SkScalar loopT[3];
3854 if (SkDCubic::ComplexBreak(pts, loopT)) {
3855 SkPoint cubicPair[7];
3856 SkChopCubicAt(pts, cubicPair, loopT[0]);
3857 SkDCubic c1, c2;
3858 c1.set(cubicPair);
3859 c2.set(&cubicPair[3]);
3860 SkDQuad q1 = c1.toQuad();
3861 SkDQuad q2 = c2.toQuad();
3862 path->quadTo(q1[1].asSkPoint(), q1[2].asSkPoint());
3863 path->quadTo(q2[1].asSkPoint(), q2[2].asSkPoint());
3864 } else {
3865 path->cubicTo(pts[1], pts[2], pts[3]);
3866 }
3867}
3868
3869static void cubicOp130a(skiatest::Reporter* reporter, const char* filename) {
3870 SkPath path, pathB;
3871 path.setFillType(SkPath::kWinding_FillType);
3872 path.moveTo(5,6);
3873 SkPoint pts[] = { {5,6}, {4,6}, {3,0}, {2,1} };
3874 complex_to_quads(pts, &path);
3875 path.close();
3876 pathB.setFillType(SkPath::kWinding_FillType);
3877 pathB.moveTo(0,3);
3878 SkPoint pts2[] = { {0,3}, {1,2}, {6,5}, {6,4} };
3879 complex_to_quads(pts2, &path);
3880 pathB.close();
3881 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3882}
3883
3884static void cubicOp131(skiatest::Reporter* reporter, const char* filename) {
3885 SkPath path, pathB;
3886 path.setFillType(SkPath::kWinding_FillType);
3887 path.moveTo(0,1);
3888 path.cubicTo(3,4, 3,0, 6,2);
3889 path.close();
3890 pathB.setFillType(SkPath::kWinding_FillType);
3891 pathB.moveTo(0,3);
3892 pathB.cubicTo(2,6, 1,0, 4,3);
3893 pathB.close();
3894 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3895}
3896
3897static void circlesOp1(skiatest::Reporter* reporter, const char* filename) {
3898 SkPath path, pathB;
3899 path.setFillType(SkPath::kWinding_FillType);
3900 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
3901 pathB.setFillType(SkPath::kWinding_FillType);
3902 pathB.addCircle(0, 1, 1, SkPath::kCW_Direction);
3903 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3904}
3905
3906static void circlesOp2(skiatest::Reporter* reporter, const char* filename) {
3907 SkPath path, pathB;
3908 path.setFillType(SkPath::kWinding_FillType);
3909 path.addCircle(0, 1, 4, SkPath::kCCW_Direction);
3910 pathB.setFillType(SkPath::kWinding_FillType);
3911 pathB.addCircle(0, 4, 3, SkPath::kCW_Direction);
3912 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3913}
3914
3915static void rRect1x(skiatest::Reporter* reporter, const char* filename) {
3916 SkPath path, pathB;
3917 path.setFillType(SkPath::kEvenOdd_FillType);
3918 path.moveTo(20.65f, 5.65f);
3919 path.conicTo(20.65f, 1.13612f, 25.1404f, 0.65f, 0.888488f);
3920 path.lineTo(25.65f, 0.65f);
3921 path.lineTo(26.1596f, 0.67604f);
3922 path.conicTo(30.65f, 1.13612f, 30.65f, 5.65f, 0.888488f);
3923 path.lineTo(30.65f, 25.65f);
3924 path.conicTo(30.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3925 path.lineTo(20.65f, 20.65f);
3926 path.lineTo(20.65f, 5.65f);
3927 path.close();
3928 path.moveTo(20.65f, 20.65f);
3929 path.lineTo(5.65f, 20.65f);
3930 path.conicTo(0.65f, 20.65f, 0.65f, 25.65f, 0.707107f);
3931 path.lineTo(0.65f, 45.65f);
3932 path.conicTo(0.65f, 50.65f, 5.65f, 50.65f, 0.707107f);
3933 path.lineTo(25.65f, 50.65f);
3934 path.conicTo(30.65f, 50.65f, 30.65f, 45.65f, 0.707107f);
3935 path.lineTo(30.65f, 25.65f);
3936 path.conicTo(30.65f, 30.65f, 25.65f, 30.65f, 0.707107f);
3937 path.conicTo(20.65f, 30.65f, 20.65f, 25.65f, 0.707107f);
3938 path.lineTo(20.65f, 20.65f);
3939 path.close();
3940 SkPath path1(path);
3941
3942 path.reset();
3943 path.setFillType(SkPath::kWinding_FillType);
3944 path.moveTo(20.65f, 45.65f);
3945 path.lineTo(20.65f, 25.65f);
3946 path.conicTo(20.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3947 path.lineTo(45.65f, 20.65f);
3948 path.conicTo(50.65f, 20.65f, 50.65f, 25.65f, 0.707107f);
3949 path.lineTo(50.65f, 45.65f);
3950 path.conicTo(50.65f, 50.65f, 45.65f, 50.65f, 0.707107f);
3951 path.lineTo(25.65f, 50.65f);
3952 path.conicTo(20.65f, 50.65f, 20.65f, 45.65f, 0.707107f);
3953 path.close();
3954 SkPath path2(path);
3955
3956 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3957}
3958
3959static void loop7(skiatest::Reporter* reporter, const char* filename) {
3960 SkPath path, pathB;
3961 path.moveTo(0,1);
3962 path.cubicTo(3,4, -1,0, 8.5f,-2.5f);
3963 path.close();
3964 pathB.moveTo(3,4);
3965 pathB.cubicTo(-1,0, 8.5f,-2.5f, 0,1);
3966 pathB.close();
3967 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3968}
3969
3970static void rects5(skiatest::Reporter* reporter, const char* filename) {
3971 SkPath path, pathB;
3972 path.setFillType(SkPath::kWinding_FillType);
3973 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3974 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3975 pathB.setFillType(SkPath::kEvenOdd_FillType);
3976 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3977 pathB.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3978 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3979}
3980
3981static void loop8(skiatest::Reporter* reporter, const char* filename) {
3982 SkPath path, pathB;
3983 path.moveTo(0,1);
3984 path.cubicTo(1,4, -3.83333325f,0.166666627f, 6,-1);
3985 path.close();
3986 pathB.moveTo(1,4);
3987 pathB.cubicTo(-3.83333325f,0.166666627f, 6,-1, 0,1);
3988 pathB.close();
3989 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3990}
3991
3992static void loop9(skiatest::Reporter* reporter, const char* filename) {
3993 SkPath path, pathB;
3994 path.moveTo(0,1);
3995 path.cubicTo(1,3, -2.5f,0, 3.33333325f,-0.666666627f);
3996 path.close();
3997 pathB.moveTo(1,3);
3998 pathB.cubicTo(-2.5f,0, 3.33333325f,-0.666666627f, 0,1);
3999 pathB.close();
4000 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4001}
4002
4003static void circlesOp3(skiatest::Reporter* reporter, const char* filename) {
4004 SkPath path, pathB;
4005 path.setFillType(SkPath::kWinding_FillType);
4006 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
4007 pathB.setFillType(SkPath::kWinding_FillType);
4008 pathB.addCircle(3, 5, 3, SkPath::kCW_Direction);
4009 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4010}
4011
4012static void loop10(skiatest::Reporter* reporter, const char* filename) {
4013 SkPath path, pathB;
4014 path.moveTo(5,6);
4015 path.cubicTo(1,2, 1,2, -3.66666651f,13.333334f);
4016 path.close();
4017 pathB.moveTo(1,2);
4018 pathB.cubicTo(1,2, -3.66666651f,13.333334f, 5,6);
4019 pathB.close();
4020 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4021}
4022
4023static void loop11(skiatest::Reporter* reporter, const char* filename) {
4024 SkPath path, pathB;
4025 path.moveTo(0,1);
4026 path.cubicTo(1,3, -1.83333349f,1.33333337f, 4,-1);
4027 path.close();
4028 pathB.moveTo(1,3);
4029 pathB.cubicTo(-1.83333349f,1.33333337f, 4,-1, 0,1);
4030 pathB.close();
4031 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4032}
4033
4034static void cubicOp132(skiatest::Reporter* reporter, const char* filename) {
4035 SkPath path, pathB;
4036 path.setFillType(SkPath::kWinding_FillType);
4037 path.moveTo(5,6);
4038 path.cubicTo(3,4, 3,0, 3,2);
4039 path.close();
4040 pathB.setFillType(SkPath::kWinding_FillType);
4041 pathB.moveTo(0,3);
4042 pathB.cubicTo(2,3, 6,5, 4,3);
4043 pathB.close();
4044 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4045}
4046
4047static void loop12(skiatest::Reporter* reporter, const char* filename) {
4048 SkPath path, pathB;
4049 path.moveTo(1,2);
4050 path.cubicTo(0,6, -3.16666675f,3.66666675f, 6.33333349f,3.33333349f);
4051 path.close();
4052 pathB.moveTo(0,6);
4053 pathB.cubicTo(-3.16666675f,3.66666675f, 6.33333349f,3.33333349f, 1,2);
4054 pathB.close();
4055 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4056}
4057
4058static void cubicOp133(skiatest::Reporter* reporter, const char* filename) {
4059 SkPath path, pathB;
4060 path.setFillType(SkPath::kWinding_FillType);
4061 path.moveTo(5,6);
4062 path.cubicTo(5,6, 5,0, 4,1);
4063 path.close();
4064 pathB.setFillType(SkPath::kWinding_FillType);
4065 pathB.moveTo(0,5);
4066 pathB.cubicTo(1,4, 6,5, 6,5);
4067 pathB.close();
4068 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4069}
4070
4071static void cubicOp134(skiatest::Reporter* reporter, const char* filename) {
4072 SkPath path, pathB;
4073 path.setFillType(SkPath::kWinding_FillType);
4074 path.moveTo(5,6);
4075 path.cubicTo(5,6, 6,0, 3,1);
4076 path.close();
4077 pathB.setFillType(SkPath::kWinding_FillType);
4078 pathB.moveTo(0,6);
4079 pathB.cubicTo(1,3, 6,5, 6,5);
4080 pathB.close();
4081 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4082}
4083
4084static void cubicOp135(skiatest::Reporter* reporter, const char* filename) {
4085 SkPath path, pathB;
4086 path.setFillType(SkPath::kWinding_FillType);
4087 path.moveTo(5,6);
4088 path.cubicTo(5,6, 6,0, 4,1);
4089 path.close();
4090 pathB.setFillType(SkPath::kWinding_FillType);
4091 pathB.moveTo(0,6);
4092 pathB.cubicTo(1,4, 6,5, 6,5);
4093 pathB.close();
4094 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4095}
4096
4097static void cubicOp136(skiatest::Reporter* reporter, const char* filename) {
4098 SkPath path, pathB;
4099 path.setFillType(SkPath::kWinding_FillType);
4100 path.moveTo(5,6);
4101 path.cubicTo(5,6, 5,0, 3,1);
4102 path.close();
4103 pathB.setFillType(SkPath::kWinding_FillType);
4104 pathB.moveTo(0,5);
4105 pathB.cubicTo(1,3, 6,5, 6,5);
4106 pathB.close();
4107 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4108}
4109
4110static void cubicOp136a(skiatest::Reporter* reporter, const char* filename) {
4111 SkPath path, pathB;
4112 path.setFillType(SkPath::kWinding_FillType);
4113 path.moveTo(5,6);
4114 path.quadTo(5,0, 3,1);
4115 path.close();
4116 pathB.setFillType(SkPath::kWinding_FillType);
4117 pathB.moveTo(0,5);
4118 pathB.cubicTo(1,3, 6,5, 6,5);
4119 pathB.close();
4120 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4121}
4122
4123static void cubics137(skiatest::Reporter* reporter, const char* filename) {
4124 SkPath path, pathB;
4125 path.setFillType(SkPath::kWinding_FillType);
4126 path.moveTo(0, 5);
4127 path.cubicTo(3, 6, 1, 0, 3, 2);
4128 path.close();
4129 pathB.setFillType(SkPath::kWinding_FillType);
4130 pathB.moveTo(0, 1);
4131 pathB.cubicTo(2, 3, 5, 0, 6, 3);
4132 pathB.close();
4133 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4134}
4135
4136static void cubics138(skiatest::Reporter* reporter, const char* filename) {
4137 SkPath path, pathB;
4138 path.setFillType(SkPath::kWinding_FillType);
4139 path.moveTo(0, 5);
4140 path.cubicTo(3, 6, 1, 0, 4, 2);
4141 path.close();
4142 pathB.setFillType(SkPath::kWinding_FillType);
4143 pathB.moveTo(0, 1);
4144 pathB.cubicTo(2, 4, 5, 0, 6, 3);
4145 pathB.close();
4146 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4147}
4148
4149// three curves intersect successfully nearby -- the angle only gets 2 of the 3 pts
4150static void cubicOp139(skiatest::Reporter* reporter, const char* filename) {
4151 SkPath path, pathB;
4152 path.setFillType(SkPath::kWinding_FillType);
4153 path.moveTo(0,2);
4154 path.cubicTo(0,4, 3,1, 5,1);
4155 path.close();
4156 pathB.setFillType(SkPath::kWinding_FillType);
4157 pathB.moveTo(1,3);
4158 pathB.cubicTo(1,5, 2,0, 4,0);
4159 pathB.close();
4160 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4161}
4162
4163static void cubicOp140(skiatest::Reporter* reporter, const char* filename) {
4164 SkPath path, pathB;
4165 path.setFillType(SkPath::kWinding_FillType);
4166 path.moveTo(0,2);
4167 path.cubicTo(1,2, 5,4, 3,2);
4168 path.close();
4169 pathB.setFillType(SkPath::kWinding_FillType);
4170 pathB.moveTo(4,5);
4171 pathB.cubicTo(2,3, 2,0, 2,1);
4172 pathB.close();
4173 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4174}
4175
4176static void cubicOp141(skiatest::Reporter* reporter, const char* filename) {
4177 SkPath path, pathB;
4178 path.setFillType(SkPath::kWinding_FillType);
4179 path.moveTo(0,2);
4180 path.cubicTo(1,2, 6,4, 3,2);
4181 path.close();
4182 pathB.setFillType(SkPath::kWinding_FillType);
4183 pathB.moveTo(4,6);
4184 pathB.cubicTo(2,3, 2,0, 2,1);
4185 pathB.close();
4186 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4187}
4188
4189static void quadRect1(skiatest::Reporter* reporter, const char* filename) {
4190 SkPath path, pathB;
4191 path.moveTo(6,15);
4192 path.quadTo(16,0, 8,4);
4193 path.quadTo(2,7, 12,12);
4194 path.close();
4195 pathB.addRect(4,11, 13,16);
4196 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4197}
4198
4199static void quadRect2(skiatest::Reporter* reporter, const char* filename) {
4200 SkPath path, pathB;
4201 path.moveTo(5,12);
4202 path.quadTo(15,7, 9,4);
4203 path.quadTo(1,0, 11,15);
4204 path.close();
4205 pathB.addRect(4,11, 13,16);
4206 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4207}
4208
4209static void quadRect3(skiatest::Reporter* reporter, const char* filename) {
4210 SkPath path, pathB;
4211 path.moveTo(12,12);
4212 path.quadTo(2,7, 8,4);
4213 path.quadTo(16,0, 6,15);
4214 path.close();
4215 pathB.addRect(4,11, 13,16);
4216 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4217}
4218
4219static void quadRect4(skiatest::Reporter* reporter, const char* filename) {
4220 SkPath path, pathB;
4221 path.moveTo(11,15);
4222 path.quadTo(1,0, 9,4);
4223 path.quadTo(15,7, 5,12);
4224 path.close();
4225 pathB.addRect(4,11, 13,16);
4226 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4227}
4228
4229static void quadRect5(skiatest::Reporter* reporter, const char* filename) {
4230 SkPath path, pathB;
4231 path.moveTo(11,13);
4232 path.quadTo(4,4, 8,4);
4233 path.quadTo(12,4, 5,13);
4234 path.close();
4235 pathB.addRect(4,11, 13,16);
4236 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4237}
4238
4239static void quadRect6(skiatest::Reporter* reporter, const char* filename) {
4240 SkPath path, pathB;
4241 path.moveTo(5,13);
4242 path.quadTo(12,4, 8,4);
4243 path.quadTo(4,4, 11,13);
4244 path.close();
4245 pathB.addRect(4,11, 13,16);
4246 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4247}
4248
4249static void loops4i(skiatest::Reporter* reporter, const char* filename) {
4250 SkPath path, pathB;
4251 path.setFillType(SkPath::kWinding_FillType);
4252 path.moveTo(0, 3);
4253 path.cubicTo(0, 2, 0, 2, -1.66666663f, 2.16666675f);
4254 path.close();
4255 pathB.setFillType(SkPath::kWinding_FillType);
4256 pathB.moveTo(0, 2);
4257 pathB.cubicTo(0, 2, -1.66666663f, 2.16666675f, 0, 3);
4258 pathB.close();
4259 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4260}
4261
4262static void loops5i(skiatest::Reporter* reporter, const char* filename) {
4263 SkPath path, pathB;
4264 path.setFillType(SkPath::kWinding_FillType);
4265 path.moveTo(1, 2);
4266 path.cubicTo(0, 2, 0, 2, 0.166666672f, 2.66666675f);
4267 path.close();
4268 pathB.setFillType(SkPath::kWinding_FillType);
4269 pathB.moveTo(0, 2);
4270 pathB.cubicTo(0, 2, 0.166666672f, 2.66666675f, 1, 2);
4271 pathB.close();
4272 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4273}
4274
4275static void cubicOp142(skiatest::Reporter* reporter, const char* filename) {
4276 SkPath path, pathB;
4277 path.setFillType(SkPath::kWinding_FillType);
4278 path.moveTo(5,6);
4279 path.cubicTo(2,5, 2,1, 1,0);
4280 path.close();
4281 pathB.setFillType(SkPath::kWinding_FillType);
4282 pathB.moveTo(1,2);
4283 pathB.cubicTo(0,1, 6,5, 5,2);
4284 pathB.close();
4285 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4286}
4287
4288static void cubics6d(skiatest::Reporter* reporter, const char* filename) {
4289 SkPath path, pathB;
4290 path.setFillType(SkPath::kWinding_FillType);
4291 path.moveTo(3, 5);
4292 path.cubicTo(1, 5, 4, 2, 4, 0);
4293 path.close();
4294 pathB.setFillType(SkPath::kWinding_FillType);
4295 pathB.moveTo(2, 4);
4296 pathB.cubicTo(0, 4, 5, 3, 5, 1);
4297 pathB.close();
4298 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4299}
4300
4301static void cubics7d(skiatest::Reporter* reporter, const char* filename) {
4302 SkPath path, pathB;
4303 path.setFillType(SkPath::kWinding_FillType);
4304 path.moveTo(2, 6);
4305 path.cubicTo(2, 4, 5, 1, 3, 1);
4306 path.close();
4307 pathB.setFillType(SkPath::kWinding_FillType);
4308 pathB.moveTo(1, 5);
4309 pathB.cubicTo(1, 3, 6, 2, 4, 2);
4310 pathB.close();
4311 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4312}
4313
4314static void cubics8d(skiatest::Reporter* reporter, const char* filename) {
4315 SkPath path, pathB;
4316 path.setFillType(SkPath::kWinding_FillType);
4317 path.moveTo(2, 5);
4318 path.cubicTo(2, 4, 5, 1, 3, 2);
4319 path.close();
4320 pathB.setFillType(SkPath::kWinding_FillType);
4321 pathB.moveTo(1, 5);
4322 pathB.cubicTo(2, 3, 5, 2, 4, 2);
4323 pathB.close();
4324 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4325}
4326
4327static void cubics9d(skiatest::Reporter* reporter, const char* filename) {
4328 SkPath path, pathB;
4329 path.setFillType(SkPath::kWinding_FillType);
4330 path.moveTo(2, 4);
4331 path.cubicTo(2, 6, 3, 1, 5, 1);
4332 path.close();
4333 pathB.setFillType(SkPath::kWinding_FillType);
4334 pathB.moveTo(1, 3);
4335 pathB.cubicTo(1, 5, 4, 2, 6, 2);
4336 pathB.close();
4337 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4338}
4339
4340static void cubics10u(skiatest::Reporter* reporter, const char* filename) {
4341 SkPath path, pathB;
4342 path.setFillType(SkPath::kWinding_FillType);
4343 path.moveTo(2, 4);
4344 path.cubicTo(1, 6, 4, 1, 5, 1);
4345 path.close();
4346 pathB.setFillType(SkPath::kWinding_FillType);
4347 pathB.moveTo(1, 4);
4348 pathB.cubicTo(1, 5, 4, 2, 6, 1);
4349 pathB.close();
4350 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
4351}
4352
4353static void cubics11i(skiatest::Reporter* reporter, const char* filename) {
4354 SkPath path, pathB;
4355 path.setFillType(SkPath::kWinding_FillType);
4356 path.moveTo(2, 4);
4357 path.cubicTo(2, 5, 3, 2, 5, 1);
4358 path.close();
4359 pathB.setFillType(SkPath::kWinding_FillType);
4360 pathB.moveTo(2, 3);
4361 pathB.cubicTo(1, 5, 4, 2, 5, 2);
4362 pathB.close();
4363 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4364}
4365
4366static void cubics12d(skiatest::Reporter* reporter, const char* filename) {
4367 SkPath path, pathB;
4368 path.setFillType(SkPath::kWinding_FillType);
4369 path.moveTo(2, 4);
4370 path.cubicTo(0, 4, 5, 3, 5, 1);
4371 path.close();
4372 pathB.setFillType(SkPath::kWinding_FillType);
4373 pathB.moveTo(3, 5);
4374 pathB.cubicTo(1, 5, 4, 2, 4, 0);
4375 pathB.close();
4376 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4377}
4378
4379static void cubics13d(skiatest::Reporter* reporter, const char* filename) {
4380 SkPath path, pathB;
4381 path.setFillType(SkPath::kWinding_FillType);
4382 path.moveTo(2, 3);
4383 path.cubicTo(1, 5, 4, 2, 5, 2);
4384 path.close();
4385 pathB.setFillType(SkPath::kWinding_FillType);
4386 pathB.moveTo(2, 4);
4387 pathB.cubicTo(2, 5, 3, 2, 5, 1);
4388 pathB.close();
4389 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4390}
4391
4392static void cubics14d(skiatest::Reporter* reporter, const char* filename) {
4393 SkPath path, pathB;
4394 path.setFillType(SkPath::kWinding_FillType);
4395 path.moveTo(2, 3);
4396 path.cubicTo(0, 4, 3, 1, 3, 0);
4397 path.close();
4398 pathB.setFillType(SkPath::kWinding_FillType);
4399 pathB.moveTo(1, 3);
4400 pathB.cubicTo(0, 3, 3, 2, 4, 0);
4401 pathB.close();
4402 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4403}
4404
4405static void cubics15d(skiatest::Reporter* reporter, const char* filename) {
4406 SkPath path, pathB;
4407 path.setFillType(SkPath::kWinding_FillType);
4408 path.moveTo(1, 5);
4409 path.cubicTo(3, 5, 4, 0, 4, 2);
4410 path.close();
4411 pathB.setFillType(SkPath::kWinding_FillType);
4412 pathB.moveTo(0, 4);
4413 pathB.cubicTo(2, 4, 5, 1, 5, 3);
4414 pathB.close();
4415 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4416}
4417
4418static void cubics16i(skiatest::Reporter* reporter, const char* filename) {
4419 SkPath path, pathB;
4420 path.setFillType(SkPath::kWinding_FillType);
4421 path.moveTo(1, 5);
4422 path.cubicTo(2, 5, 5, 0, 4, 2);
4423 path.close();
4424 pathB.setFillType(SkPath::kWinding_FillType);
4425 pathB.moveTo(0, 5);
4426 pathB.cubicTo(2, 4, 5, 1, 5, 2);
4427 pathB.close();
4428 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4429}
4430
4431static void cubics17d(skiatest::Reporter* reporter, const char* filename) {
4432 SkPath path, pathB;
4433 path.setFillType(SkPath::kWinding_FillType);
4434 path.moveTo(1, 5);
4435 path.cubicTo(3, 4, 4, 1, 4, 2);
4436 path.close();
4437 pathB.setFillType(SkPath::kWinding_FillType);
4438 pathB.moveTo(1, 4);
4439 pathB.cubicTo(2, 4, 5, 1, 4, 3);
4440 pathB.close();
4441 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4442}
4443
4444static void cubics18d(skiatest::Reporter* reporter, const char* filename) {
4445 SkPath path, pathB;
4446 path.setFillType(SkPath::kWinding_FillType);
4447 path.moveTo(1, 5);
4448 path.cubicTo(1, 3, 4, 0, 2, 0);
4449 path.close();
4450 pathB.setFillType(SkPath::kWinding_FillType);
4451 pathB.moveTo(0, 4);
4452 pathB.cubicTo(0, 2, 5, 1, 3, 1);
4453 pathB.close();
4454 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4455}
4456
4457static void cubics19d(skiatest::Reporter* reporter, const char* filename) {
4458 SkPath path, pathB;
4459 path.setFillType(SkPath::kWinding_FillType);
4460 path.moveTo(1, 5);
4461 path.cubicTo(2, 3, 5, 2, 4, 2);
4462 path.close();
4463 pathB.setFillType(SkPath::kWinding_FillType);
4464 pathB.moveTo(2, 5);
4465 pathB.cubicTo(2, 4, 5, 1, 3, 2);
4466 pathB.close();
4467 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4468}
4469
4470static void cubicOp157(skiatest::Reporter* reporter, const char* filename) {
4471 SkPath path, pathB;
4472 path.setFillType(SkPath::kWinding_FillType);
4473 path.moveTo(1,5);
4474 path.cubicTo(1,3, 6,2, 4,2);
4475 path.close();
4476 pathB.setFillType(SkPath::kWinding_FillType);
4477 pathB.moveTo(2,6);
4478 pathB.cubicTo(2,4, 5,1, 3,1);
4479 pathB.close();
4480 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4481}
4482
4483static void cubics20d(skiatest::Reporter* reporter, const char* filename) {
4484 SkPath path, pathB;
4485 path.setFillType(SkPath::kWinding_FillType);
4486 path.moveTo(1, 2);
4487 path.cubicTo(0, 3, 6, 0, 3, 2);
4488 path.close();
4489 pathB.setFillType(SkPath::kWinding_FillType);
4490 pathB.moveTo(0, 6);
4491 pathB.cubicTo(2, 3, 2, 1, 3, 0);
4492 pathB.close();
4493 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4494}
4495
4496static void loops20i(skiatest::Reporter* reporter, const char* filename) {
4497 SkPath path, pathB;
4498 path.setFillType(SkPath::kWinding_FillType);
4499 path.moveTo(1, 2);
4500 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3.66666651f);
4501 path.close();
4502 pathB.setFillType(SkPath::kWinding_FillType);
4503 pathB.moveTo(0, 2);
4504 pathB.cubicTo(0.833333313f, 2, 1, 3.66666651f, 1, 2);
4505 pathB.close();
4506 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4507}
4508
4509static void loops21i(skiatest::Reporter* reporter, const char* filename) {
4510 SkPath path, pathB;
4511 path.setFillType(SkPath::kWinding_FillType);
4512 path.moveTo(1, 2);
4513 path.cubicTo(0, 2, 0.833333313f, 2, 1, 4);
4514 path.close();
4515 pathB.setFillType(SkPath::kWinding_FillType);
4516 pathB.moveTo(0, 2);
4517 pathB.cubicTo(0.833333313f, 2, 1, 4, 1, 2);
4518 pathB.close();
4519 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4520}
4521
4522static void loops22i(skiatest::Reporter* reporter, const char* filename) {
4523 SkPath path, pathB;
4524 path.setFillType(SkPath::kWinding_FillType);
4525 path.moveTo(1, 3);
4526 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.66666651f);
4527 path.close();
4528 pathB.setFillType(SkPath::kWinding_FillType);
4529 pathB.moveTo(0, 3);
4530 pathB.cubicTo(0.833333313f, 3, 1, 4.66666651f, 1, 3);
4531 pathB.close();
4532 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4533}
4534
4535static void loops23i(skiatest::Reporter* reporter, const char* filename) {
4536 SkPath path, pathB;
4537 path.setFillType(SkPath::kWinding_FillType);
4538 path.moveTo(1, 5);
4539 path.cubicTo(0, 1, 6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f);
4540 path.close();
4541 pathB.setFillType(SkPath::kWinding_FillType);
4542 pathB.moveTo(0, 1);
4543 pathB.cubicTo(6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f, 1, 5);
4544 pathB.close();
4545 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4546}
4547
4548static void loops24i(skiatest::Reporter* reporter, const char* filename) {
4549 SkPath path, pathB;
4550 path.setFillType(SkPath::kWinding_FillType);
4551 path.moveTo(1, 2);
4552 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3);
4553 path.close();
4554 pathB.setFillType(SkPath::kWinding_FillType);
4555 pathB.moveTo(0, 2);
4556 pathB.cubicTo(0.833333313f, 2, 1, 3, 1, 2);
4557 pathB.close();
4558 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4559}
4560
4561static void loops25i(skiatest::Reporter* reporter, const char* filename) {
4562 SkPath path, pathB;
4563 path.setFillType(SkPath::kWinding_FillType);
4564 path.moveTo(1, 5);
4565 path.cubicTo(0, 5, 0.833333313f, 5, 1, 7);
4566 path.close();
4567 pathB.setFillType(SkPath::kWinding_FillType);
4568 pathB.moveTo(0, 5);
4569 pathB.cubicTo(0.833333313f, 5, 1, 7, 1, 5);
4570 pathB.close();
4571 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4572}
4573
4574static void loops26i(skiatest::Reporter* reporter, const char* filename) {
4575 SkPath path, pathB;
4576 path.setFillType(SkPath::kWinding_FillType);
4577 path.moveTo(1, 6);
4578 path.cubicTo(0, 2, 6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f);
4579 path.close();
4580 pathB.setFillType(SkPath::kWinding_FillType);
4581 pathB.moveTo(0, 2);
4582 pathB.cubicTo(6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f, 1, 6);
4583 pathB.close();
4584 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4585}
4586
4587static void loops27i(skiatest::Reporter* reporter, const char* filename) {
4588 SkPath path, pathB;
4589 path.setFillType(SkPath::kWinding_FillType);
4590 path.moveTo(1, 3);
4591 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.33333349f);
4592 path.close();
4593 pathB.setFillType(SkPath::kWinding_FillType);
4594 pathB.moveTo(0, 3);
4595 pathB.cubicTo(0.833333313f, 3, 1, 4.33333349f, 1, 3);
4596 pathB.close();
4597 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4598}
4599
4600static void loops28i(skiatest::Reporter* reporter, const char* filename) {
4601 SkPath path, pathB;
4602 path.setFillType(SkPath::kWinding_FillType);
4603 path.moveTo(2, 3);
4604 path.cubicTo(1, 3, 1.83333337f, 3, 2, 4.66666651f);
4605 path.close();
4606 pathB.setFillType(SkPath::kWinding_FillType);
4607 pathB.moveTo(1, 3);
4608 pathB.cubicTo(1.83333337f, 3, 2, 4.66666651f, 2, 3);
4609 pathB.close();
4610 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4611}
4612
4613static void loops29i(skiatest::Reporter* reporter, const char* filename) {
4614 SkPath path, pathB;
4615 path.setFillType(SkPath::kWinding_FillType);
4616 path.moveTo(2, 4);
4617 path.cubicTo(0, 4, 1.66666663f, 4, 2, 7.33333302f);
4618 path.close();
4619 pathB.setFillType(SkPath::kWinding_FillType);
4620 pathB.moveTo(0, 4);
4621 pathB.cubicTo(1.66666663f, 4, 2, 7.33333302f, 2, 4);
4622 pathB.close();
4623 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4624}
4625
4626static void loops30i(skiatest::Reporter* reporter, const char* filename) {
4627 SkPath path, pathB;
4628 path.setFillType(SkPath::kWinding_FillType);
4629 path.moveTo(2, 4);
4630 path.cubicTo(0, 4, 1.66666663f, 4, 2, 8);
4631 path.close();
4632 pathB.setFillType(SkPath::kWinding_FillType);
4633 pathB.moveTo(0, 4);
4634 pathB.cubicTo(1.66666663f, 4, 2, 8, 2, 4);
4635 pathB.close();
4636 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4637}
4638
4639static void loops31i(skiatest::Reporter* reporter, const char* filename) {
4640 SkPath path, pathB;
4641 path.setFillType(SkPath::kWinding_FillType);
4642 path.moveTo(2, 5);
4643 path.cubicTo(1, 5, 1.83333337f, 5, 2, 6.66666651f);
4644 path.close();
4645 pathB.setFillType(SkPath::kWinding_FillType);
4646 pathB.moveTo(1, 5);
4647 pathB.cubicTo(1.83333337f, 5, 2, 6.66666651f, 2, 5);
4648 pathB.close();
4649 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4650}
4651
4652static void loops32i(skiatest::Reporter* reporter, const char* filename) {
4653 SkPath path, pathB;
4654 path.setFillType(SkPath::kWinding_FillType);
4655 path.moveTo(2, 6);
4656 path.cubicTo(1, 6, 1.83333337f, 6, 2, 8);
4657 path.close();
4658 pathB.setFillType(SkPath::kWinding_FillType);
4659 pathB.moveTo(1, 6);
4660 pathB.cubicTo(1.83333337f, 6, 2, 8, 2, 6);
4661 pathB.close();
4662 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4663}
4664
4665static void loops33i(skiatest::Reporter* reporter, const char* filename) {
4666 SkPath path, pathB;
4667 path.setFillType(SkPath::kWinding_FillType);
4668 path.moveTo(2, 6);
4669 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4670 path.close();
4671 pathB.setFillType(SkPath::kWinding_FillType);
4672 pathB.moveTo(1, 2);
4673 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4674 pathB.close();
4675 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4676}
4677
4678static void loops33iMod(skiatest::Reporter* reporter, const char* filename) {
4679 SkPoint pts[] = {{2, 6}, {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f},
4680 {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f}, {2, 6}};
4681 bool up = false;
4682 float offset = 0.0380172729f;
4683 float step = 7.62939453e-006f;
4684 bool lastResult = true;
4685 // for (int i = 0; i < 30; ++i) {
4686 SkString name(filename);
4687 // name.appendS32(i);
4688 // if (i > 0) {
4689 // SkDebugf("\n\n<div id=\"%s\">\n", name.c_str());
4690 // }
4691 pts[5].fY = 6.66666698f + offset;
4692 SkPath path, pathB;
4693 path.setFillType(SkPath::kWinding_FillType);
4694 path.moveTo(pts[0]);
4695 path.cubicTo(pts[1], pts[2], pts[3]);
4696 path.close();
4697 pathB.setFillType(SkPath::kWinding_FillType);
4698 pathB.moveTo(pts[4]);
4699 pathB.cubicTo(pts[5], pts[6], pts[7]);
4700 pathB.close();
4701 bool result = testPathOp(reporter, path, pathB, kIntersect_SkPathOp, name.c_str());
4702 if (lastResult != result) {
4703 up = !up;
4704 }
4705 step /= 2;
4706 offset += up ? step : -step;
4707 lastResult = result;
4708 // }
4709}
4710
4711
4712static void loops33iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4713 SkPath path, pathB;
4714 path.setFillType(SkPath::kWinding_FillType);
4715 path.moveTo(2, 6);
4716 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4717 path.close();
4718 pathB.setFillType(SkPath::kWinding_FillType);
4719 pathB.moveTo(1, 2);
4720 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4721 pathB.close();
4722 SkPath qPath, qPathB;
4723 CubicPathToQuads(path, &qPath);
4724 CubicPathToQuads(pathB, &qPathB);
4725 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4726}
4727
4728static void loops34i(skiatest::Reporter* reporter, const char* filename) {
4729 SkPath path, pathB;
4730 path.setFillType(SkPath::kWinding_FillType);
4731 path.moveTo(3, 4);
4732 path.cubicTo(0, 4, 2.5f, 4, 3, 9);
4733 path.close();
4734 pathB.setFillType(SkPath::kWinding_FillType);
4735 pathB.moveTo(0, 4);
4736 pathB.cubicTo(2.5f, 4, 3, 9, 3, 4);
4737 pathB.close();
4738 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4739}
4740
4741static void loops35i(skiatest::Reporter* reporter, const char* filename) {
4742 SkPath path, pathB;
4743 path.setFillType(SkPath::kWinding_FillType);
4744 path.moveTo(3, 4);
4745 path.cubicTo(0, 4, 2.5f, 4, 3, 10);
4746 path.close();
4747 pathB.setFillType(SkPath::kWinding_FillType);
4748 pathB.moveTo(0, 4);
4749 pathB.cubicTo(2.5f, 4, 3, 10, 3, 4);
4750 pathB.close();
4751 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4752}
4753
4754static void loops36i(skiatest::Reporter* reporter, const char* filename) {
4755 SkPath path, pathB;
4756 path.setFillType(SkPath::kWinding_FillType);
4757 path.moveTo(3, 4);
4758 path.cubicTo(1, 4, 2.66666675f, 4, 3, 8);
4759 path.close();
4760 pathB.setFillType(SkPath::kWinding_FillType);
4761 pathB.moveTo(1, 4);
4762 pathB.cubicTo(2.66666675f, 4, 3, 8, 3, 4);
4763 pathB.close();
4764 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4765}
4766
4767static void loops37i(skiatest::Reporter* reporter, const char* filename) {
4768 SkPath path, pathB;
4769 path.setFillType(SkPath::kWinding_FillType);
4770 path.moveTo(2, 4);
4771 path.cubicTo(1, 4, 1.83333337f, 4, 2, 5.33333349f);
4772 path.close();
4773 pathB.setFillType(SkPath::kWinding_FillType);
4774 pathB.moveTo(1, 4);
4775 pathB.cubicTo(1.83333337f, 4, 2, 5.33333349f, 2, 4);
4776 pathB.close();
4777 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4778}
4779
4780static void loops38i(skiatest::Reporter* reporter, const char* filename) {
4781 SkPath path, pathB;
4782 path.setFillType(SkPath::kWinding_FillType);
4783 path.moveTo(3, 4);
4784 path.cubicTo(2, 4, 2.83333325f, 4, 3, 6);
4785 path.close();
4786 pathB.setFillType(SkPath::kWinding_FillType);
4787 pathB.moveTo(2, 4);
4788 pathB.cubicTo(2.83333325f, 4, 3, 6, 3, 4);
4789 pathB.close();
4790 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4791}
4792
4793static void loops39i(skiatest::Reporter* reporter, const char* filename) {
4794 SkPath path, pathB;
4795 path.setFillType(SkPath::kWinding_FillType);
4796 path.moveTo(3, 5);
4797 path.cubicTo(0, 5, 2.5f, 5, 3, 10);
4798 path.close();
4799 pathB.setFillType(SkPath::kWinding_FillType);
4800 pathB.moveTo(0, 5);
4801 pathB.cubicTo(2.5f, 5, 3, 10, 3, 5);
4802 pathB.close();
4803 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4804}
4805
4806static void loops40i(skiatest::Reporter* reporter, const char* filename) {
4807 SkPath path, pathB;
4808 path.setFillType(SkPath::kWinding_FillType);
4809 path.moveTo(3, 5);
4810 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4811 path.close();
4812 pathB.setFillType(SkPath::kWinding_FillType);
4813 pathB.moveTo(0, 5);
4814 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4815 pathB.close();
4816 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4817}
4818
4819static void loops40iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4820 SkPath path, pathB;
4821 path.setFillType(SkPath::kWinding_FillType);
4822 path.moveTo(3, 5);
4823 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4824 path.close();
4825 pathB.setFillType(SkPath::kWinding_FillType);
4826 pathB.moveTo(0, 5);
4827 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4828 pathB.close();
4829 SkPath qPath, qPathB;
4830 CubicPathToQuads(path, &qPath);
4831 CubicPathToQuads(pathB, &qPathB);
4832 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4833}
4834
4835static void loops44i(skiatest::Reporter* reporter, const char* filename) {
4836 SkPath path, pathB;
4837 path.setFillType(SkPath::kWinding_FillType);
4838 path.moveTo(1, 5);
4839 path.cubicTo(0, 1, 7.33333302f, 5.33333349f, -7, 7);
4840 path.close();
4841 pathB.setFillType(SkPath::kWinding_FillType);
4842 pathB.moveTo(0, 1);
4843 pathB.cubicTo(7.33333302f, 5.33333349f, -7, 7, 1, 5);
4844 pathB.close();
4845 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4846}
4847
4848static void loops45i(skiatest::Reporter* reporter, const char* filename) {
4849 SkPath path, pathB;
4850 path.setFillType(SkPath::kWinding_FillType);
4851 path.moveTo(1, 6);
4852 path.cubicTo(0, 2, 7.33333302f, 6.33333302f, -7, 8);
4853 path.close();
4854 pathB.setFillType(SkPath::kWinding_FillType);
4855 pathB.moveTo(0, 2);
4856 pathB.cubicTo(7.33333302f, 6.33333302f, -7, 8, 1, 6);
4857 pathB.close();
4858 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4859}
4860
4861static void loops46i(skiatest::Reporter* reporter, const char* filename) {
4862 SkPath path, pathB;
4863 path.setFillType(SkPath::kWinding_FillType);
4864 path.moveTo(2, 6);
4865 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8);
4866 path.close();
4867 pathB.setFillType(SkPath::kWinding_FillType);
4868 pathB.moveTo(1, 2);
4869 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6);
4870 pathB.close();
4871 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4872}
4873
4874/*
4875FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346 0 */
4876static void loops47i(skiatest::Reporter* reporter, const char* filename) {
4877 SkPath path, pathB;
4878 path.setFillType(SkPath::kWinding_FillType);
4879 path.moveTo(2, 4);
4880 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8);
4881 path.close();
4882 pathB.setFillType(SkPath::kWinding_FillType);
4883 pathB.moveTo(0, 1);
4884 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4);
4885 pathB.close();
4886 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4887}
4888
4889static void loops48i(skiatest::Reporter* reporter, const char* filename) {
4890 SkPath path, pathB;
4891 path.setFillType(SkPath::kWinding_FillType);
4892 path.moveTo(2, 6);
4893 path.cubicTo(0, 1, 9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f);
4894 path.close();
4895 pathB.setFillType(SkPath::kWinding_FillType);
4896 pathB.moveTo(0, 1);
4897 pathB.cubicTo(9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f, 2, 6);
4898 pathB.close();
4899 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4900}
4901
4902static void loops49i(skiatest::Reporter* reporter, const char* filename) {
4903 SkPath path, pathB;
4904 path.setFillType(SkPath::kWinding_FillType);
4905 path.moveTo(0, 2);
4906 path.cubicTo(1, 4, -0.166666687f, 2.66666675f, 1.66666675f, 2);
4907 path.close();
4908 pathB.setFillType(SkPath::kWinding_FillType);
4909 pathB.moveTo(1, 4);
4910 pathB.cubicTo(-0.166666687f, 2.66666675f, 1.66666675f, 2, 0, 2);
4911 pathB.close();
4912 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4913}
4914
4915static void loops50i(skiatest::Reporter* reporter, const char* filename) {
4916 SkPath path, pathB;
4917 path.setFillType(SkPath::kWinding_FillType);
4918 path.moveTo(0, 3);
4919 path.cubicTo(1, 5, -0.166666687f, 3.66666675f, 1.66666675f, 3);
4920 path.close();
4921 pathB.setFillType(SkPath::kWinding_FillType);
4922 pathB.moveTo(1, 5);
4923 pathB.cubicTo(-0.166666687f, 3.66666675f, 1.66666675f, 3, 0, 3);
4924 pathB.close();
4925 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4926}
4927
4928static void loops51i(skiatest::Reporter* reporter, const char* filename) {
4929 SkPath path, pathB;
4930 path.setFillType(SkPath::kWinding_FillType);
4931 path.moveTo(1, 2);
4932 path.cubicTo(2, 4, 0.833333313f, 2.66666675f, 2.66666675f, 2);
4933 path.close();
4934 pathB.setFillType(SkPath::kWinding_FillType);
4935 pathB.moveTo(2, 4);
4936 pathB.cubicTo(0.833333313f, 2.66666675f, 2.66666675f, 2, 1, 2);
4937 pathB.close();
4938 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4939}
4940
4941static void loops52i(skiatest::Reporter* reporter, const char* filename) {
4942 SkPath path, pathB;
4943 path.setFillType(SkPath::kWinding_FillType);
4944 path.moveTo(1, 3);
4945 path.cubicTo(2, 5, 0.833333313f, 3.66666675f, 2.66666675f, 3);
4946 path.close();
4947 pathB.setFillType(SkPath::kWinding_FillType);
4948 pathB.moveTo(2, 5);
4949 pathB.cubicTo(0.833333313f, 3.66666675f, 2.66666675f, 3, 1, 3);
4950 pathB.close();
4951 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4952}
4953
4954static void loops53i(skiatest::Reporter* reporter, const char* filename) {
4955 SkPath path, pathB;
4956 path.setFillType(SkPath::kWinding_FillType);
4957 path.moveTo(2, 3);
4958 path.cubicTo(3, 5, 1.83333325f, 3.66666675f, 3.66666651f, 3);
4959 path.close();
4960 pathB.setFillType(SkPath::kWinding_FillType);
4961 pathB.moveTo(3, 5);
4962 pathB.cubicTo(1.83333325f, 3.66666675f, 3.66666651f, 3, 2, 3);
4963 pathB.close();
4964 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4965}
4966
4967static void loops54i(skiatest::Reporter* reporter, const char* filename) {
4968 SkPath path, pathB;
4969 path.setFillType(SkPath::kWinding_FillType);
4970 path.moveTo(0, 2);
4971 path.cubicTo(1, 4, 0, 3, 1.66666675f, 2);
4972 path.close();
4973 pathB.setFillType(SkPath::kWinding_FillType);
4974 pathB.moveTo(1, 4);
4975 pathB.cubicTo(0, 3, 1.66666675f, 2, 0, 2);
4976 pathB.close();
4977 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4978}
4979
4980static void loops55i(skiatest::Reporter* reporter, const char* filename) {
4981 SkPath path, pathB;
4982 path.setFillType(SkPath::kWinding_FillType);
4983 path.moveTo(0, 3);
4984 path.cubicTo(1, 5, 0, 4, 1.66666675f, 3);
4985 path.close();
4986 pathB.setFillType(SkPath::kWinding_FillType);
4987 pathB.moveTo(1, 5);
4988 pathB.cubicTo(0, 4, 1.66666675f, 3, 0, 3);
4989 pathB.close();
4990 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4991}
4992
4993static void loops56i(skiatest::Reporter* reporter, const char* filename) {
4994 SkPath path, pathB;
4995 path.setFillType(SkPath::kWinding_FillType);
4996 path.moveTo(1, 2);
4997 path.cubicTo(2, 4, 0.99999994f, 3, 2.66666675f, 2);
4998 path.close();
4999 pathB.setFillType(SkPath::kWinding_FillType);
5000 pathB.moveTo(2, 4);
5001 pathB.cubicTo(0.99999994f, 3, 2.66666675f, 2, 1, 2);
5002 pathB.close();
5003 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5004}
5005
5006static void loops57i(skiatest::Reporter* reporter, const char* filename) {
5007 SkPath path, pathB;
5008 path.setFillType(SkPath::kWinding_FillType);
5009 path.moveTo(1, 3);
5010 path.cubicTo(2, 5, 0.99999994f, 4, 2.66666675f, 3);
5011 path.close();
5012 pathB.setFillType(SkPath::kWinding_FillType);
5013 pathB.moveTo(2, 5);
5014 pathB.cubicTo(0.99999994f, 4, 2.66666675f, 3, 1, 3);
5015 pathB.close();
5016 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5017}
5018
5019static void loops58i(skiatest::Reporter* reporter, const char* filename) {
5020 SkPath path, pathB;
5021 path.setFillType(SkPath::kWinding_FillType);
5022 path.moveTo(2, 3);
5023 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5024 path.close();
5025 pathB.setFillType(SkPath::kWinding_FillType);
5026 pathB.moveTo(3, 5);
5027 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5028 pathB.close();
5029 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5030}
5031
5032static void loops58iAsQuads(skiatest::Reporter* reporter, const char* filename) {
5033 SkPath path, pathB;
5034 path.setFillType(SkPath::kWinding_FillType);
5035 path.moveTo(2, 3);
5036 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5037 path.close();
5038 pathB.setFillType(SkPath::kWinding_FillType);
5039 pathB.moveTo(3, 5);
5040 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5041 pathB.close();
5042 SkPath qPath, qPathB;
5043 CubicPathToQuads(path, &qPath);
5044 CubicPathToQuads(pathB, &qPathB);
5045// SkPoint from = {2.61714339f,1.90228665f};
5046// SkPoint to = {2.617045833359139f,1.9013528935803314f};
5047// path_edit(from, to, &qPathB);
5048 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5049}
5050
5051static void loops59i(skiatest::Reporter* reporter, const char* filename) {
5052 SkPath path, pathB;
5053 path.setFillType(SkPath::kWinding_FillType);
5054 path.moveTo(0, 6);
5055 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5056 path.close();
5057 pathB.setFillType(SkPath::kWinding_FillType);
5058 pathB.moveTo(1, 2);
5059 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5060 pathB.close();
5061 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5062}
5063
5064static void loops59iasQuads(skiatest::Reporter* reporter, const char* filename) {
5065 SkPath path, pathB;
5066 path.setFillType(SkPath::kWinding_FillType);
5067 path.moveTo(0, 6);
5068 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5069 path.close();
5070 pathB.setFillType(SkPath::kWinding_FillType);
5071 pathB.moveTo(1, 2);
5072 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5073 pathB.close();
5074 SkPath qPath, qPathB;
5075 CubicPathToQuads(path, &qPath);
5076 CubicPathToQuads(pathB, &qPathB);
5077 SkPoint from = {2.61714339f,1.90228665f};
5078 SkPoint to = {2.617045833359139f,1.9013528935803314f};
5079 path_edit(from, to, &qPathB);
5080 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5081}
5082
5083static void cubics41d(skiatest::Reporter* reporter, const char* filename) {
5084 SkPath path, pathB;
5085 path.setFillType(SkPath::kWinding_FillType);
5086 path.moveTo(0, 1);
5087 path.cubicTo(1, 4, 3, 0, 3, 1);
5088 path.close();
5089 pathB.setFillType(SkPath::kWinding_FillType);
5090 pathB.moveTo(0, 3);
5091 pathB.cubicTo(1, 3, 1, 0, 4, 1);
5092 pathB.close();
5093 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5094}
5095
5096void loops61i(skiatest::Reporter* reporter, const char* filename) {
5097 SkPath path, pathB;
5098 path.setFillType(SkPath::kWinding_FillType);
5099 path.moveTo(0, 1);
5100 path.cubicTo(1, 5, -6.33333302f, 0.666666627f, 8, -1);
5101 path.close();
5102 pathB.setFillType(SkPath::kWinding_FillType);
5103 pathB.moveTo(1, 5);
5104 pathB.cubicTo(-6.33333302f, 0.666666627f, 8, -1, 0, 1);
5105 pathB.close();
5106 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5107}
5108
5109static void loops62i(skiatest::Reporter* reporter, const char* filename) {
5110 SkPath path, pathB;
5111 path.setFillType(SkPath::kWinding_FillType);
5112 path.moveTo(0, 2);
5113 path.cubicTo(1, 6, -6.33333302f, 1.66666663f, 8, 0);
5114 path.close();
5115 pathB.setFillType(SkPath::kWinding_FillType);
5116 pathB.moveTo(1, 6);
5117 pathB.cubicTo(-6.33333302f, 1.66666663f, 8, 0, 0, 2);
5118 pathB.close();
5119 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5120}
5121
5122static void loops63i(skiatest::Reporter* reporter, const char* filename) {
5123 SkPath path, pathB;
5124 path.setFillType(SkPath::kWinding_FillType);
5125 path.moveTo(0, 1);
5126 path.cubicTo(2, 4, -4, -0.833333254f, 6, -3);
5127 path.close();
5128 pathB.setFillType(SkPath::kWinding_FillType);
5129 pathB.moveTo(2, 4);
5130 pathB.cubicTo(-4, -0.833333254f, 6, -3, 0, 1);
5131 pathB.close();
5132 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5133}
5134
5135static void cubics44d(skiatest::Reporter* reporter, const char* filename) {
5136 SkPath path, pathB;
5137 path.setFillType(SkPath::kWinding_FillType);
5138 path.moveTo(3, 4);
5139 path.cubicTo(2, 5, 3, 1, 6, 2);
5140 path.close();
5141 pathB.setFillType(SkPath::kWinding_FillType);
5142 pathB.moveTo(1, 3);
5143 pathB.cubicTo(2, 6, 4, 3, 5, 2);
5144 pathB.close();
5145 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5146}
5147
5148static void cubics45u(skiatest::Reporter* reporter, const char* filename) {
5149 SkPath path, pathB;
5150 path.setFillType(SkPath::kWinding_FillType);
5151 path.moveTo(1, 3);
5152 path.cubicTo(2, 6, 4, 3, 5, 2);
5153 path.close();
5154 pathB.setFillType(SkPath::kWinding_FillType);
5155 pathB.moveTo(3, 4);
5156 pathB.cubicTo(2, 5, 3, 1, 6, 2);
5157 pathB.close();
5158 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5159}
5160
5161static void fuzz38(skiatest::Reporter* reporter, const char* filename) {
5162 SkPath path, pathB;
5163 path.moveTo(100.34f, 303.312f);
5164 path.lineTo(-1e+08, 303.312f);
5165 path.lineTo(102, 310.156f);
5166 path.lineTo(100.34f, 310.156f);
5167 path.lineTo(100.34f, 303.312f);
5168 path.close();
5169 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
5170}
5171
5172static void crbug_526025(skiatest::Reporter* reporter, const char* filename) {
5173 SkPath path;
5174 path.setFillType((SkPath::FillType) 1);
5175path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
5176path.cubicTo(SkBits2Float(0x4e0d628f), SkBits2Float(0xceffffff), SkBits2Float(0x4e800003), SkBits2Float(0xcec6b143), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffc)); // 5.93012e+08f, -2.14748e+09f, 1.07374e+09f, -1.66675e+09f, 1.07374e+09f, -1.07374e+09f
5177path.cubicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcde53aee), SkBits2Float(0x4e0d6292), SkBits2Float(0xc307820e), SkBits2Float(0x44627d00), SkBits2Float(0x437ffff2)); // 1.07374e+09f, -4.80731e+08f, 5.93012e+08f, -135.508f, 905.953f, 256
5178path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 897.305f
5179path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5180path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5181path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5182path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5183path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5184path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5185
5186 SkPath path1(path);
5187 path.reset();
5188 path.setFillType((SkPath::FillType) 0);
5189path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5190path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
5191path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
5192path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
5193path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5194path.close();
5195
5196 SkPath path2(path);
5197 testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
5198}
5199
5200static void fuzzX_392(skiatest::Reporter* reporter, const char* filename) {
5201 SkPath path;
5202 path.setFillType(SkPath::kEvenOdd_FillType);
5203path.moveTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bde212)); // 29, 379.766f
5204path.lineTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bdc7ef)); // 29, 379.562f
5205path.conicTo(SkBits2Float(0x42a5861e), SkBits2Float(0x43c61f86), SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86), SkBits2Float(0x3f7d23f3)); // 82.7619f, 396.246f, 139.024f, 396.246f, 0.98883f
5206path.conicTo(SkBits2Float(0x42a58e20), SkBits2Float(0x43c61f86), SkBits2Float(0x41e80000), SkBits2Float(0x43bde212), SkBits2Float(0x3f7d2cf5)); // 82.7776f, 396.246f, 29, 379.766f, 0.988967f
5207path.close();
5208
5209 SkPath path1(path);
5210 path.setFillType(SkPath::kWinding_FillType);
5211path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f
5212path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f
5213path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 396.246f
5214path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f
5215
5216 SkPath path2(path);
5217 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5218}
5219
5220static void dean2(skiatest::Reporter* reporter, const char* filename) {
5221 SkPath path;
5222 path.setFillType((SkPath::FillType) 0);
5223path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5224path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5225path.cubicTo(SkBits2Float(0x414a835a), SkBits2Float(0x3ec07ba6), SkBits2Float(0x413fcc0d), SkBits2Float(0x3e193319), SkBits2Float(0x4134a02b), SkBits2Float(0x00000000)); // 12.6571f, 0.375943f, 11.9873f, 0.149609f, 11.2891f, 0
5226path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5227path.close();
5228 SkPath path1(path);
5229
5230 path.reset();
5231 path.setFillType((SkPath::FillType) 0);
5232path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5233path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5234path.lineTo(SkBits2Float(0x417ab74b), SkBits2Float(0x4154a02b)); // 15.6697f, 13.2891f
5235path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5236path.close();
5237 SkPath path2(path);
5238 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5239}
5240
5241static void cubics_d(skiatest::Reporter* reporter, const char* filename) {
5242 SkPath path, pathB;
5243 path.setFillType(SkPath::kWinding_FillType);
5244 path.moveTo(0, 1);
5245 path.cubicTo(3, 5, 1, 0, 3, 0);
5246 path.close();
5247 pathB.setFillType(SkPath::kWinding_FillType);
5248 pathB.moveTo(0, 1);
5249 pathB.cubicTo(0, 3, 1, 0, 5, 3);
5250 pathB.close();
5251 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5252}
5253
5254static void cubics_d2(skiatest::Reporter* reporter, const char* filename) {
5255 SkPath path, pathB;
5256 path.setFillType(SkPath::kWinding_FillType);
5257 path.moveTo(0, 1);
5258 path.cubicTo(2, 5, 2, 0, 2, 1);
5259 path.close();
5260 pathB.setFillType(SkPath::kWinding_FillType);
5261 pathB.moveTo(0, 2);
5262 pathB.cubicTo(1, 2, 1, 0, 5, 2);
5263 pathB.close();
5264 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5265}
5266
5267static void loops_i1(skiatest::Reporter* reporter, const char* filename) {
5268 SkPath path, pathB;
5269 path.setFillType(SkPath::kWinding_FillType);
5270 path.moveTo(2, 3);
5271 path.cubicTo(0, 4, -0.333333343f, 4.66666651f, 3, 5.83333349f);
5272 path.close();
5273 pathB.setFillType(SkPath::kWinding_FillType);
5274 pathB.moveTo(0, 4);
5275 pathB.cubicTo(-0.333333343f, 4.66666651f, 3, 5.83333349f, 2, 3);
5276 pathB.close();
5277 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5278}
5279
5280static void loops_i2(skiatest::Reporter* reporter, const char* filename) {
5281 SkPath path, pathB;
5282 path.setFillType(SkPath::kWinding_FillType);
5283 path.moveTo(2, 4);
5284 path.cubicTo(0, 5, -0.333333343f, 5.66666651f, 3, 6.83333302f);
5285 path.close();
5286 pathB.setFillType(SkPath::kWinding_FillType);
5287 pathB.moveTo(0, 5);
5288 pathB.cubicTo(-0.333333343f, 5.66666651f, 3, 6.83333302f, 2, 4);
5289 pathB.close();
5290 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5291}
5292
5293static void loops_i3(skiatest::Reporter* reporter, const char* filename) {
5294 SkPath path, pathB;
5295 path.setFillType(SkPath::kWinding_FillType);
5296 path.moveTo(2, 5);
5297 path.cubicTo(0, 6, -0.333333343f, 6.66666651f, 3, 7.83333302f);
5298 path.close();
5299 pathB.setFillType(SkPath::kWinding_FillType);
5300 pathB.moveTo(0, 6);
5301 pathB.cubicTo(-0.333333343f, 6.66666651f, 3, 7.83333302f, 2, 5);
5302 pathB.close();
5303 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5304}
5305
5306static void loops_i4(skiatest::Reporter* reporter, const char* filename) {
5307 SkPath path, pathB;
5308 path.setFillType(SkPath::kWinding_FillType);
5309 path.moveTo(3, 4);
5310 path.cubicTo(1, 5, 0.666666627f, 5.66666651f, 4, 6.83333302f);
5311 path.close();
5312 pathB.setFillType(SkPath::kWinding_FillType);
5313 pathB.moveTo(1, 5);
5314 pathB.cubicTo(0.666666627f, 5.66666651f, 4, 6.83333302f, 3, 4);
5315 pathB.close();
5316 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5317}
5318
5319static void loops_i5(skiatest::Reporter* reporter, const char* filename) {
5320 SkPath path, pathB;
5321 path.setFillType(SkPath::kWinding_FillType);
5322 path.moveTo(3, 5);
5323 path.cubicTo(1, 6, 0.666666627f, 6.66666651f, 4, 7.83333302f);
5324 path.close();
5325 pathB.setFillType(SkPath::kWinding_FillType);
5326 pathB.moveTo(1, 6);
5327 pathB.cubicTo(0.666666627f, 6.66666651f, 4, 7.83333302f, 3, 5);
5328 pathB.close();
5329 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5330}
5331
5332static void loops_i6(skiatest::Reporter* reporter, const char* filename) {
5333 SkPath path, pathB;
5334 path.setFillType(SkPath::kWinding_FillType);
5335 path.moveTo(4, 5);
5336 path.cubicTo(2, 6, 1.66666663f, 6.66666651f, 5, 7.83333302f);
5337 path.close();
5338 pathB.setFillType(SkPath::kWinding_FillType);
5339 pathB.moveTo(2, 6);
5340 pathB.cubicTo(1.66666663f, 6.66666651f, 5, 7.83333302f, 4, 5);
5341 pathB.close();
5342 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5343}
5344
5345static void cubics_d3(skiatest::Reporter* reporter, const char* filename) {
5346 SkPath path, pathB;
5347 path.setFillType(SkPath::kWinding_FillType);
5348 path.moveTo(3, 4);
5349 path.cubicTo(0, 6, 6, 1, 4, 2);
5350 path.close();
5351 pathB.setFillType(SkPath::kWinding_FillType);
5352 pathB.moveTo(1, 6);
5353 pathB.cubicTo(2, 4, 4, 3, 6, 0);
5354 pathB.close();
5355 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5356}
5357
5358static void cubics_o(skiatest::Reporter* reporter, const char* filename) {
5359 SkPath path, pathB;
5360 path.setFillType(SkPath::kWinding_FillType);
5361 path.moveTo(1, 4);
5362 path.cubicTo(2, 6, 5, 0, 5, 3);
5363 path.close();
5364 pathB.setFillType(SkPath::kWinding_FillType);
5365 pathB.moveTo(0, 5);
5366 pathB.cubicTo(3, 5, 4, 1, 6, 2);
5367 pathB.close();
5368 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
5369}
5370
5371static void cubicOp158(skiatest::Reporter* reporter, const char* filename) {
5372 SkPath path, pathB;
5373 path.setFillType(SkPath::kWinding_FillType);
5374 path.moveTo(0,1);
5375 path.cubicTo(2,4, 2,0, 2,0);
5376 path.close();
5377 pathB.setFillType(SkPath::kWinding_FillType);
5378 pathB.moveTo(0,2);
5379 pathB.cubicTo(0,2, 1,0, 4,2);
5380 pathB.close();
5381 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5382}
5383
5384static void loop17(skiatest::Reporter* reporter, const char* filename) {
5385 SkPath path, pathB;
5386 path.moveTo(1, 2);
5387 path.cubicTo(0, 3, -0.333333343f, 3.33333325f, 0.833333373f, 3.5f);
5388 path.close();
5389 pathB.moveTo(0, 3);
5390 pathB.cubicTo(-0.333333343f, 3.33333325f, 0.833333373f, 3.5f, 1, 2);
5391 pathB.close();
5392 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5393}
5394
5395static void circlesOp4(skiatest::Reporter* reporter, const char* filename) {
5396 SkPath path, pathB;
5397 path.setFillType(SkPath::kWinding_FillType);
5398 path.addCircle(0, 1, 5, SkPath::kCW_Direction);
5399 pathB.setFillType(SkPath::kWinding_FillType);
5400 pathB.addCircle(0, 1, 0, SkPath::kCW_Direction);
5401 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5402}
5403
5404static void bug5240(skiatest::Reporter* reporter, const char* filename) {
5405 SkPath path;
5406path.moveTo(815, 82);
5407path.cubicTo(814.4794311523438f, 82.7868881225586f, 814.5330810546875f,
540882.6266555786133f, 814.5291137695312f, 82.6252212524414f);
5409path.cubicTo(814.5229492187500f, 82.6230010986328f, 814.3790283203125f,
541083.0008087158203f, 813.8533935546875f, 82.7072601318359f);
5411path.close();
5412 testPathOp(reporter, path, path, kUnion_SkPathOp, filename);
5413}
5414
5415static void android1(skiatest::Reporter* reporter, const char* filename) {
5416 SkPath path, pathB;
5417path.moveTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5418path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x00000000)); // 1075, 0
5419path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x43720000)); // 1075, 242
5420path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x43720000)); // -5, 242
5421path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5422path.close();
5423pathB.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5424pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x00000000)); // 1080, 0
5425pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x43720000)); // 1080, 242
5426pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x43720000)); // 0, 242
5427pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5428pathB.close();
5429 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5430}
5431
Cary Clark22582502017-12-13 14:56:53 -05005432static void seanbug(skiatest::Reporter* reporter, const char* filename) {
5433 SkPath path;
5434 path.setFillType(SkPath::kEvenOdd_FillType);
5435 path.moveTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5436 path.lineTo(SkBits2Float(0x45b55f0a), SkBits2Float(0x45bc9fc0)); // 5803.88f, 6035.97f
5437 path.lineTo(SkBits2Float(0x45b55e15), SkBits2Float(0x45bc9f7b)); // 5803.76f, 6035.94f
5438 path.lineTo(SkBits2Float(0x45b55d1f), SkBits2Float(0x45bc9f32)); // 5803.64f, 6035.9f
5439 path.lineTo(SkBits2Float(0x45b55c29), SkBits2Float(0x45bc9ee3)); // 5803.52f, 6035.86f
5440 path.lineTo(SkBits2Float(0x45b55b34), SkBits2Float(0x45bc9e90)); // 5803.4f, 6035.82f
5441 path.lineTo(SkBits2Float(0x45b55a3f), SkBits2Float(0x45bc9e38)); // 5803.28f, 6035.78f
5442 path.lineTo(SkBits2Float(0x45b5594a), SkBits2Float(0x45bc9ddc)); // 5803.16f, 6035.73f
5443 path.lineTo(SkBits2Float(0x45b55856), SkBits2Float(0x45bc9d7a)); // 5803.04f, 6035.68f
5444 path.lineTo(SkBits2Float(0x45b55762), SkBits2Float(0x45bc9d14)); // 5802.92f, 6035.63f
5445 path.lineTo(SkBits2Float(0x45b5566f), SkBits2Float(0x45bc9caa)); // 5802.8f, 6035.58f
5446 path.lineTo(SkBits2Float(0x45b5557c), SkBits2Float(0x45bc9c3b)); // 5802.69f, 6035.53f
5447 path.lineTo(SkBits2Float(0x45b55489), SkBits2Float(0x45bc9bc7)); // 5802.57f, 6035.47f
5448 path.lineTo(SkBits2Float(0x45b55397), SkBits2Float(0x45bc9b4f)); // 5802.45f, 6035.41f
5449 path.lineTo(SkBits2Float(0x45b552a6), SkBits2Float(0x45bc9ad3)); // 5802.33f, 6035.35f
5450 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45bc9a52)); // 5802.21f, 6035.29f
5451 path.lineTo(SkBits2Float(0x45b550c5), SkBits2Float(0x45bc99cd)); // 5802.1f, 6035.23f
5452 path.lineTo(SkBits2Float(0x45b54fd6), SkBits2Float(0x45bc9943)); // 5801.98f, 6035.16f
5453 path.lineTo(SkBits2Float(0x45b54ee8), SkBits2Float(0x45bc98b6)); // 5801.86f, 6035.09f
5454 path.lineTo(SkBits2Float(0x45b54dfb), SkBits2Float(0x45bc9824)); // 5801.75f, 6035.02f
5455 path.lineTo(SkBits2Float(0x45b54d0e), SkBits2Float(0x45bc978d)); // 5801.63f, 6034.94f
5456 path.lineTo(SkBits2Float(0x45b54c23), SkBits2Float(0x45bc96f3)); // 5801.52f, 6034.87f
5457 path.lineTo(SkBits2Float(0x45b54b39), SkBits2Float(0x45bc9654)); // 5801.4f, 6034.79f
5458 path.lineTo(SkBits2Float(0x45b54a4f), SkBits2Float(0x45bc95b2)); // 5801.29f, 6034.71f
5459 path.lineTo(SkBits2Float(0x45b54967), SkBits2Float(0x45bc950b)); // 5801.18f, 6034.63f
5460 path.lineTo(SkBits2Float(0x45b54880), SkBits2Float(0x45bc9460)); // 5801.06f, 6034.55f
5461 path.lineTo(SkBits2Float(0x45b5479a), SkBits2Float(0x45bc93b1)); // 5800.95f, 6034.46f
5462 path.lineTo(SkBits2Float(0x45b546b6), SkBits2Float(0x45bc92fe)); // 5800.84f, 6034.37f
5463 path.lineTo(SkBits2Float(0x45b545d3), SkBits2Float(0x45bc9248)); // 5800.73f, 6034.29f
5464 path.lineTo(SkBits2Float(0x45b544f1), SkBits2Float(0x45bc918d)); // 5800.62f, 6034.19f
5465 path.lineTo(SkBits2Float(0x45b54410), SkBits2Float(0x45bc90cf)); // 5800.51f, 6034.1f
5466 path.lineTo(SkBits2Float(0x45b54331), SkBits2Float(0x45bc900d)); // 5800.4f, 6034.01f
5467 path.lineTo(SkBits2Float(0x45b54254), SkBits2Float(0x45bc8f47)); // 5800.29f, 6033.91f
5468 path.lineTo(SkBits2Float(0x45b54178), SkBits2Float(0x45bc8e7d)); // 5800.18f, 6033.81f
5469 path.lineTo(SkBits2Float(0x45b5409e), SkBits2Float(0x45bc8db0)); // 5800.08f, 6033.71f
5470 path.lineTo(SkBits2Float(0x45b53fc6), SkBits2Float(0x45bc8cde)); // 5799.97f, 6033.61f
5471 path.lineTo(SkBits2Float(0x45b53eef), SkBits2Float(0x45bc8c0a)); // 5799.87f, 6033.5f
5472 path.lineTo(SkBits2Float(0x45b53e1a), SkBits2Float(0x45bc8b31)); // 5799.76f, 6033.4f
5473 path.lineTo(SkBits2Float(0x45b53d47), SkBits2Float(0x45bc8a56)); // 5799.66f, 6033.29f
5474 path.lineTo(SkBits2Float(0x45b53c75), SkBits2Float(0x45bc8976)); // 5799.56f, 6033.18f
5475 path.lineTo(SkBits2Float(0x45b53ba6), SkBits2Float(0x45bc8893)); // 5799.46f, 6033.07f
5476 path.lineTo(SkBits2Float(0x45b53ad8), SkBits2Float(0x45bc87ad)); // 5799.36f, 6032.96f
5477 path.lineTo(SkBits2Float(0x45b53a0d), SkBits2Float(0x45bc86c4)); // 5799.26f, 6032.85f
5478 path.lineTo(SkBits2Float(0x45b53944), SkBits2Float(0x45bc85d6)); // 5799.16f, 6032.73f
5479 path.lineTo(SkBits2Float(0x45b5387c), SkBits2Float(0x45bc84e6)); // 5799.06f, 6032.61f
5480 path.lineTo(SkBits2Float(0x45b537b7), SkBits2Float(0x45bc83f2)); // 5798.96f, 6032.49f
5481 path.lineTo(SkBits2Float(0x45b536f4), SkBits2Float(0x45bc82fc)); // 5798.87f, 6032.37f
5482 path.lineTo(SkBits2Float(0x45b53634), SkBits2Float(0x45bc8201)); // 5798.78f, 6032.25f
5483 path.lineTo(SkBits2Float(0x45b53575), SkBits2Float(0x45bc8104)); // 5798.68f, 6032.13f
5484 path.lineTo(SkBits2Float(0x45b534ba), SkBits2Float(0x45bc8004)); // 5798.59f, 6032
5485 path.lineTo(SkBits2Float(0x45b53400), SkBits2Float(0x45bc7f00)); // 5798.5f, 6031.88f
5486 path.lineTo(SkBits2Float(0x45b53349), SkBits2Float(0x45bc7df9)); // 5798.41f, 6031.75f
5487 path.lineTo(SkBits2Float(0x45b53294), SkBits2Float(0x45bc7cf0)); // 5798.32f, 6031.62f
5488 path.lineTo(SkBits2Float(0x45b531e2), SkBits2Float(0x45bc7be3)); // 5798.24f, 6031.49f
5489 path.lineTo(SkBits2Float(0x45b53133), SkBits2Float(0x45bc7ad3)); // 5798.15f, 6031.35f
5490 path.lineTo(SkBits2Float(0x45b53086), SkBits2Float(0x45bc79c1)); // 5798.07f, 6031.22f
5491 path.lineTo(SkBits2Float(0x45b52fdc), SkBits2Float(0x45bc78ab)); // 5797.98f, 6031.08f
5492 path.lineTo(SkBits2Float(0x45b52f35), SkBits2Float(0x45bc7793)); // 5797.9f, 6030.95f
5493 path.lineTo(SkBits2Float(0x45b52e90), SkBits2Float(0x45bc7678)); // 5797.82f, 6030.81f
5494 path.lineTo(SkBits2Float(0x45b52def), SkBits2Float(0x45bc755a)); // 5797.74f, 6030.67f
5495 path.lineTo(SkBits2Float(0x45b52d50), SkBits2Float(0x45bc7439)); // 5797.66f, 6030.53f
5496 path.lineTo(SkBits2Float(0x45b52cb4), SkBits2Float(0x45bc7316)); // 5797.59f, 6030.39f
5497 path.lineTo(SkBits2Float(0x45b52c1b), SkBits2Float(0x45bc71f0)); // 5797.51f, 6030.24f
5498 path.lineTo(SkBits2Float(0x45b52b86), SkBits2Float(0x45bc70c7)); // 5797.44f, 6030.1f
5499 path.lineTo(SkBits2Float(0x45b52af3), SkBits2Float(0x45bc6f9c)); // 5797.37f, 6029.95f
5500 path.lineTo(SkBits2Float(0x45b52a63), SkBits2Float(0x45bc6e6e)); // 5797.3f, 6029.8f
5501 path.lineTo(SkBits2Float(0x45b529d7), SkBits2Float(0x45bc6d3e)); // 5797.23f, 6029.66f
5502 path.lineTo(SkBits2Float(0x45b5294e), SkBits2Float(0x45bc6c0b)); // 5797.16f, 6029.51f
5503 path.lineTo(SkBits2Float(0x45b528c8), SkBits2Float(0x45bc6ad6)); // 5797.1f, 6029.35f
5504 path.lineTo(SkBits2Float(0x45b52846), SkBits2Float(0x45bc699e)); // 5797.03f, 6029.2f
5505 path.lineTo(SkBits2Float(0x45b527c7), SkBits2Float(0x45bc6864)); // 5796.97f, 6029.05f
5506 path.lineTo(SkBits2Float(0x45b5274b), SkBits2Float(0x45bc6728)); // 5796.91f, 6028.89f
5507 path.lineTo(SkBits2Float(0x45b526d3), SkBits2Float(0x45bc65e9)); // 5796.85f, 6028.74f
5508 path.lineTo(SkBits2Float(0x45b5265e), SkBits2Float(0x45bc64a8)); // 5796.8f, 6028.58f
5509 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bc639b)); // 5796.75f, 6028.45f
5510 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bab032)); // 5796.75f, 5974.02f
5511 path.lineTo(SkBits2Float(0x45b52611), SkBits2Float(0x45baaffd)); // 5796.76f, 5974
5512 path.lineTo(SkBits2Float(0x45b52687), SkBits2Float(0x45baae9d)); // 5796.82f, 5973.83f
5513 path.lineTo(SkBits2Float(0x45b52700), SkBits2Float(0x45baad40)); // 5796.88f, 5973.66f
5514 path.lineTo(SkBits2Float(0x45b5277d), SkBits2Float(0x45baabe7)); // 5796.94f, 5973.49f
5515 path.lineTo(SkBits2Float(0x45b527fe), SkBits2Float(0x45baaa91)); // 5797, 5973.32f
5516 path.lineTo(SkBits2Float(0x45b52883), SkBits2Float(0x45baa93f)); // 5797.06f, 5973.16f
5517 path.lineTo(SkBits2Float(0x45b5290b), SkBits2Float(0x45baa7f1)); // 5797.13f, 5972.99f
5518 path.lineTo(SkBits2Float(0x45b52998), SkBits2Float(0x45baa6a6)); // 5797.2f, 5972.83f
5519 path.lineTo(SkBits2Float(0x45b52a28), SkBits2Float(0x45baa55f)); // 5797.27f, 5972.67f
5520 path.lineTo(SkBits2Float(0x45b52abb), SkBits2Float(0x45baa41c)); // 5797.34f, 5972.51f
5521 path.lineTo(SkBits2Float(0x45b52b52), SkBits2Float(0x45baa2dc)); // 5797.42f, 5972.36f
5522 path.lineTo(SkBits2Float(0x45b52bed), SkBits2Float(0x45baa1a0)); // 5797.49f, 5972.2f
5523 path.lineTo(SkBits2Float(0x45b52c8c), SkBits2Float(0x45baa068)); // 5797.57f, 5972.05f
5524 path.lineTo(SkBits2Float(0x45b52d2e), SkBits2Float(0x45ba9f34)); // 5797.65f, 5971.9f
5525 path.lineTo(SkBits2Float(0x45b52dd3), SkBits2Float(0x45ba9e04)); // 5797.73f, 5971.75f
5526 path.lineTo(SkBits2Float(0x45b52e7c), SkBits2Float(0x45ba9cd8)); // 5797.81f, 5971.61f
5527 path.lineTo(SkBits2Float(0x45b52f28), SkBits2Float(0x45ba9baf)); // 5797.89f, 5971.46f
5528 path.lineTo(SkBits2Float(0x45b52fd8), SkBits2Float(0x45ba9a8b)); // 5797.98f, 5971.32f
5529 path.lineTo(SkBits2Float(0x45b5308b), SkBits2Float(0x45ba996b)); // 5798.07f, 5971.18f
5530 path.lineTo(SkBits2Float(0x45b53141), SkBits2Float(0x45ba984f)); // 5798.16f, 5971.04f
5531 path.lineTo(SkBits2Float(0x45b531fa), SkBits2Float(0x45ba9736)); // 5798.25f, 5970.9f
5532 path.lineTo(SkBits2Float(0x45b532b7), SkBits2Float(0x45ba9623)); // 5798.34f, 5970.77f
5533 path.lineTo(SkBits2Float(0x45b53377), SkBits2Float(0x45ba9513)); // 5798.43f, 5970.63f
5534 path.lineTo(SkBits2Float(0x45b5343a), SkBits2Float(0x45ba9407)); // 5798.53f, 5970.5f
5535 path.lineTo(SkBits2Float(0x45b53500), SkBits2Float(0x45ba9300)); // 5798.63f, 5970.38f
5536 path.lineTo(SkBits2Float(0x45b535c9), SkBits2Float(0x45ba91fd)); // 5798.72f, 5970.25f
5537 path.lineTo(SkBits2Float(0x45b53695), SkBits2Float(0x45ba90fe)); // 5798.82f, 5970.12f
5538 path.lineTo(SkBits2Float(0x45b53765), SkBits2Float(0x45ba9004)); // 5798.92f, 5970
5539 path.lineTo(SkBits2Float(0x45b53837), SkBits2Float(0x45ba8f0e)); // 5799.03f, 5969.88f
5540 path.lineTo(SkBits2Float(0x45b5390c), SkBits2Float(0x45ba8e1d)); // 5799.13f, 5969.76f
5541 path.lineTo(SkBits2Float(0x45b539e4), SkBits2Float(0x45ba8d30)); // 5799.24f, 5969.65f
5542 path.lineTo(SkBits2Float(0x45b53abf), SkBits2Float(0x45ba8c48)); // 5799.34f, 5969.54f
5543 path.lineTo(SkBits2Float(0x45b53b9d), SkBits2Float(0x45ba8b64)); // 5799.45f, 5969.42f
5544 path.lineTo(SkBits2Float(0x45b53c7d), SkBits2Float(0x45ba8a85)); // 5799.56f, 5969.31f
5545 path.lineTo(SkBits2Float(0x45b53d60), SkBits2Float(0x45ba89aa)); // 5799.67f, 5969.21f
5546 path.lineTo(SkBits2Float(0x45b53e46), SkBits2Float(0x45ba88d4)); // 5799.78f, 5969.1f
5547 path.lineTo(SkBits2Float(0x45b53f2f), SkBits2Float(0x45ba8803)); // 5799.9f, 5969
5548 path.lineTo(SkBits2Float(0x45b5401a), SkBits2Float(0x45ba8736)); // 5800.01f, 5968.9f
5549 path.lineTo(SkBits2Float(0x45b54108), SkBits2Float(0x45ba866f)); // 5800.13f, 5968.8f
5550 path.lineTo(SkBits2Float(0x45b541f8), SkBits2Float(0x45ba85ac)); // 5800.25f, 5968.71f
5551 path.lineTo(SkBits2Float(0x45b542eb), SkBits2Float(0x45ba84ee)); // 5800.36f, 5968.62f
5552 path.lineTo(SkBits2Float(0x45b543e0), SkBits2Float(0x45ba8435)); // 5800.48f, 5968.53f
5553 path.lineTo(SkBits2Float(0x45b544d8), SkBits2Float(0x45ba8380)); // 5800.61f, 5968.44f
5554 path.lineTo(SkBits2Float(0x45b545d2), SkBits2Float(0x45ba82d1)); // 5800.73f, 5968.35f
5555 path.lineTo(SkBits2Float(0x45b546cf), SkBits2Float(0x45ba8227)); // 5800.85f, 5968.27f
5556 path.lineTo(SkBits2Float(0x45b547ce), SkBits2Float(0x45ba8182)); // 5800.98f, 5968.19f
5557 path.lineTo(SkBits2Float(0x45b548cf), SkBits2Float(0x45ba80e2)); // 5801.1f, 5968.11f
5558 path.lineTo(SkBits2Float(0x45b549d2), SkBits2Float(0x45ba8047)); // 5801.23f, 5968.03f
5559 path.lineTo(SkBits2Float(0x45b54ad8), SkBits2Float(0x45ba7fb1)); // 5801.36f, 5967.96f
5560 path.lineTo(SkBits2Float(0x45b54be0), SkBits2Float(0x45ba7f20)); // 5801.48f, 5967.89f
5561 path.lineTo(SkBits2Float(0x45b54cea), SkBits2Float(0x45ba7e95)); // 5801.61f, 5967.82f
5562 path.lineTo(SkBits2Float(0x45b54df6), SkBits2Float(0x45ba7e0e)); // 5801.75f, 5967.76f
5563 path.lineTo(SkBits2Float(0x45b54f04), SkBits2Float(0x45ba7d8d)); // 5801.88f, 5967.69f
5564 path.lineTo(SkBits2Float(0x45b55015), SkBits2Float(0x45ba7d12)); // 5802.01f, 5967.63f
5565 path.lineTo(SkBits2Float(0x45b55127), SkBits2Float(0x45ba7c9c)); // 5802.14f, 5967.58f
5566 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45ba7c62)); // 5802.21f, 5967.55f
5567 path.lineTo(SkBits2Float(0x45c7b29a), SkBits2Float(0x45ba7c62)); // 6390.33f, 5967.55f
5568 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45ba7c8b)); // 6390.37f, 5967.57f
5569 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45ba7cff)); // 6390.48f, 5967.62f
5570 path.lineTo(SkBits2Float(0x45c7b4c7), SkBits2Float(0x45ba7d78)); // 6390.6f, 5967.68f
5571 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45ba7df5)); // 6390.71f, 5967.74f
5572 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45ba7e78)); // 6390.82f, 5967.81f
5573 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45ba7f00)); // 6390.94f, 5967.88f
5574 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45ba7f8d)); // 6391.05f, 5967.94f
5575 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45ba801e)); // 6391.16f, 5968.01f
5576 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45ba80b5)); // 6391.27f, 5968.09f
5577 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45ba8150)); // 6391.38f, 5968.16f
5578 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45ba81f0)); // 6391.49f, 5968.24f
5579 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45ba8294)); // 6391.6f, 5968.32f
5580 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45ba833d)); // 6391.71f, 5968.4f
5581 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45ba83eb)); // 6391.82f, 5968.49f
5582 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45ba849d)); // 6391.92f, 5968.58f
5583 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45ba8554)); // 6392.03f, 5968.67f
5584 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45ba860f)); // 6392.13f, 5968.76f
5585 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45ba86cf)); // 6392.24f, 5968.85f
5586 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45ba8792)); // 6392.34f, 5968.95f
5587 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45ba885b)); // 6392.44f, 5969.04f
5588 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45ba8927)); // 6392.54f, 5969.14f
5589 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45ba89f7)); // 6392.64f, 5969.25f
5590 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45ba8acc)); // 6392.74f, 5969.35f
5591 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45ba8ba5)); // 6392.84f, 5969.46f
5592 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45ba8c82)); // 6392.94f, 5969.56f
5593 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45ba8d62)); // 6393.04f, 5969.67f
5594 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45ba8e47)); // 6393.13f, 5969.78f
5595 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45ba8f30)); // 6393.22f, 5969.9f
5596 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45ba901c)); // 6393.32f, 5970.01f
5597 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45ba910c)); // 6393.41f, 5970.13f
5598 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45ba9200)); // 6393.5f, 5970.25f
5599 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45ba92f8)); // 6393.59f, 5970.37f
5600 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45ba93f3)); // 6393.68f, 5970.49f
5601 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45ba94f2)); // 6393.76f, 5970.62f
5602 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45ba95f4)); // 6393.85f, 5970.74f
5603 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45ba96fa)); // 6393.93f, 5970.87f
5604 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45ba9803)); // 6394.02f, 5971
5605 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45ba9910)); // 6394.1f, 5971.13f
5606 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45ba9a20)); // 6394.18f, 5971.27f
5607 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45ba9b33)); // 6394.26f, 5971.4f
5608 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45ba9c4a)); // 6394.34f, 5971.54f
5609 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45ba9d63)); // 6394.41f, 5971.67f
5610 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45ba9e80)); // 6394.49f, 5971.81f
5611 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45ba9fa0)); // 6394.56f, 5971.95f
5612 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45baa0c3)); // 6394.63f, 5972.1f
5613 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45baa1e9)); // 6394.7f, 5972.24f
5614 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45baa312)); // 6394.77f, 5972.38f
5615 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45baa43e)); // 6394.84f, 5972.53f
5616 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45baa56d)); // 6394.9f, 5972.68f
5617 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45baa69f)); // 6394.97f, 5972.83f
5618 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45baa7d3)); // 6395.03f, 5972.98f
5619 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45baa90a)); // 6395.09f, 5973.13f
5620 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45baaa44)); // 6395.15f, 5973.28f
5621 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45baab80)); // 6395.2f, 5973.44f
5622 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45baacbf)); // 6395.26f, 5973.59f
5623 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45baae00)); // 6395.31f, 5973.75f
5624 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45baaf44)); // 6395.36f, 5973.91f
5625 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bab08a)); // 6395.41f, 5974.07f
5626 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bab1d3)); // 6395.46f, 5974.23f
5627 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bab31d)); // 6395.51f, 5974.39f
5628 path.lineTo(SkBits2Float(0x45c7dc6a), SkBits2Float(0x45bab46a)); // 6395.55f, 5974.55f
5629 path.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bc5fbe)); // 6395.55f, 6027.97f
5630 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bc60e7)); // 6395.51f, 6028.11f
5631 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bc620f)); // 6395.46f, 6028.26f
5632 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bc6336)); // 6395.41f, 6028.4f
5633 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45bc645c)); // 6395.36f, 6028.54f
5634 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45bc6580)); // 6395.31f, 6028.69f
5635 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45bc66a3)); // 6395.26f, 6028.83f
5636 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45bc67c5)); // 6395.2f, 6028.97f
5637 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45bc68e6)); // 6395.15f, 6029.11f
5638 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45bc6a05)); // 6395.09f, 6029.25f
5639 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45bc6b23)); // 6395.03f, 6029.39f
5640 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45bc6c3f)); // 6394.97f, 6029.53f
5641 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45bc6d5a)); // 6394.9f, 6029.67f
5642 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45bc6e73)); // 6394.84f, 6029.81f
5643 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45bc6f8b)); // 6394.77f, 6029.94f
5644 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45bc70a1)); // 6394.7f, 6030.08f
5645 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45bc71b5)); // 6394.63f, 6030.21f
5646 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45bc72c7)); // 6394.56f, 6030.35f
5647 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45bc73d8)); // 6394.49f, 6030.48f
5648 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45bc74e7)); // 6394.41f, 6030.61f
5649 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45bc75f4)); // 6394.34f, 6030.74f
5650 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45bc76ff)); // 6394.26f, 6030.87f
5651 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45bc7807)); // 6394.18f, 6031
5652 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45bc790e)); // 6394.1f, 6031.13f
5653 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45bc7a13)); // 6394.02f, 6031.26f
5654 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45bc7b16)); // 6393.93f, 6031.39f
5655 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45bc7c16)); // 6393.85f, 6031.51f
5656 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45bc7d14)); // 6393.76f, 6031.63f
5657 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45bc7e10)); // 6393.68f, 6031.76f
5658 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45bc7f09)); // 6393.59f, 6031.88f
5659 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45bc8000)); // 6393.5f, 6032
5660 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45bc80f5)); // 6393.41f, 6032.12f
5661 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45bc81e7)); // 6393.32f, 6032.24f
5662 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45bc82d6)); // 6393.22f, 6032.35f
5663 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45bc83c3)); // 6393.13f, 6032.47f
5664 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45bc84ad)); // 6393.04f, 6032.58f
5665 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45bc8595)); // 6392.94f, 6032.7f
5666 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45bc8679)); // 6392.84f, 6032.81f
5667 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45bc875b)); // 6392.74f, 6032.92f
5668 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45bc883a)); // 6392.64f, 6033.03f
5669 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45bc8917)); // 6392.54f, 6033.14f
5670 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45bc89f0)); // 6392.44f, 6033.24f
5671 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45bc8ac6)); // 6392.34f, 6033.35f
5672 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45bc8b99)); // 6392.24f, 6033.45f
5673 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45bc8c69)); // 6392.13f, 6033.55f
5674 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45bc8d36)); // 6392.03f, 6033.65f
5675 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45bc8e00)); // 6391.92f, 6033.75f
5676 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45bc8ec7)); // 6391.82f, 6033.85f
5677 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45bc8f8a)); // 6391.71f, 6033.94f
5678 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45bc904a)); // 6391.6f, 6034.04f
5679 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45bc9106)); // 6391.49f, 6034.13f
5680 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45bc91bf)); // 6391.38f, 6034.22f
5681 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45bc9275)); // 6391.27f, 6034.31f
5682 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45bc9327)); // 6391.16f, 6034.39f
5683 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45bc93d5)); // 6391.05f, 6034.48f
5684 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45bc9480)); // 6390.94f, 6034.56f
5685 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45bc9527)); // 6390.82f, 6034.64f
5686 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45bc95ca)); // 6390.71f, 6034.72f
5687 path.lineTo(SkBits2Float(0x45c7b4c8), SkBits2Float(0x45bc966a)); // 6390.6f, 6034.8f
5688 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45bc9706)); // 6390.48f, 6034.88f
5689 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45bc979e)); // 6390.37f, 6034.95f
5690 path.lineTo(SkBits2Float(0x45c7b205), SkBits2Float(0x45bc9832)); // 6390.25f, 6035.02f
5691 path.lineTo(SkBits2Float(0x45c7b118), SkBits2Float(0x45bc98c2)); // 6390.14f, 6035.09f
5692 path.lineTo(SkBits2Float(0x45c7b02a), SkBits2Float(0x45bc994e)); // 6390.02f, 6035.16f
5693 path.lineTo(SkBits2Float(0x45c7af3b), SkBits2Float(0x45bc99d5)); // 6389.9f, 6035.23f
5694 path.lineTo(SkBits2Float(0x45c7ae4b), SkBits2Float(0x45bc9a59)); // 6389.79f, 6035.29f
5695 path.lineTo(SkBits2Float(0x45c7ad5a), SkBits2Float(0x45bc9ad9)); // 6389.67f, 6035.36f
5696 path.lineTo(SkBits2Float(0x45c7ac69), SkBits2Float(0x45bc9b54)); // 6389.55f, 6035.42f
5697 path.lineTo(SkBits2Float(0x45c7ab77), SkBits2Float(0x45bc9bcb)); // 6389.43f, 6035.47f
5698 path.lineTo(SkBits2Float(0x45c7aa84), SkBits2Float(0x45bc9c3e)); // 6389.31f, 6035.53f
5699 path.lineTo(SkBits2Float(0x45c7a991), SkBits2Float(0x45bc9cac)); // 6389.2f, 6035.58f
5700 path.lineTo(SkBits2Float(0x45c7a89e), SkBits2Float(0x45bc9d16)); // 6389.08f, 6035.64f
5701 path.lineTo(SkBits2Float(0x45c7a7aa), SkBits2Float(0x45bc9d7b)); // 6388.96f, 6035.69f
5702 path.lineTo(SkBits2Float(0x45c7a6b6), SkBits2Float(0x45bc9ddc)); // 6388.84f, 6035.73f
5703 path.lineTo(SkBits2Float(0x45c7a5c1), SkBits2Float(0x45bc9e39)); // 6388.72f, 6035.78f
5704 path.lineTo(SkBits2Float(0x45c7a4cc), SkBits2Float(0x45bc9e90)); // 6388.6f, 6035.82f
5705 path.lineTo(SkBits2Float(0x45c7a3d7), SkBits2Float(0x45bc9ee3)); // 6388.48f, 6035.86f
5706 path.lineTo(SkBits2Float(0x45c7a2e1), SkBits2Float(0x45bc9f32)); // 6388.36f, 6035.9f
5707 path.lineTo(SkBits2Float(0x45c7a1eb), SkBits2Float(0x45bc9f7b)); // 6388.24f, 6035.94f
5708 path.lineTo(SkBits2Float(0x45c7a0f6), SkBits2Float(0x45bc9fc0)); // 6388.12f, 6035.97f
5709 path.lineTo(SkBits2Float(0x45c7a000), SkBits2Float(0x45bca000)); // 6388, 6036
5710 path.lineTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5711 path.close();
5712
5713 SkPath path2;
5714 path2.setFillType(SkPath::kWinding_FillType);
5715 path2.moveTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5716 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45ba7c62)); // 6395.55f, 5967.55f
5717 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bca239)); // 6395.55f, 6036.28f
5718 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bca239)); // 5796.75f, 6036.28f
5719 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5720 path2.close();
5721
5722 SkPath result_path;
5723 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5724}
Yuqian Li3154a532017-09-06 13:33:30 -04005725
Cary Clark3a4a3212018-06-06 15:22:08 -04005726static void halbug(skiatest::Reporter* reporter, const char* filename) {
5727 SkPath path, path2;
5728 path.setFillType(SkPath::kEvenOdd_FillType);
5729 path.addRect(SkRect{278.653992f, 155.747406f, 580.15918f, 593.602051f});
5730 path2.setFillType(SkPath::kWinding_FillType);
5731 path2.addRect(SkRect{278.657715f, 155.747314f, 580.238281f, 594.114014f});
5732 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5733}
5734
Cary Clark1bb47df2018-06-18 08:53:00 -04005735static void testRect1_u(skiatest::Reporter* reporter, const char* filename) {
5736 SkPath path, pathB;
5737 path.setFillType(SkPath::kWinding_FillType);
5738 path.moveTo(0, 0);
5739 path.lineTo(0, 60);
5740 path.lineTo(60, 60);
5741 path.lineTo(60, 0);
5742 path.close();
5743 path.moveTo(30, 20);
5744 path.lineTo(30, 50);
5745 path.lineTo(50, 50);
5746 path.lineTo(50, 20);
5747 path.close();
5748 path.moveTo(24, 20);
5749 path.lineTo(24, 30);
5750 path.lineTo(36, 30);
5751 path.lineTo(36, 20);
5752 path.close();
5753 pathB.setFillType(SkPath::kWinding_FillType);
5754 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5755}
5756
Cary Clark1d314432018-07-10 10:57:54 -04005757static void filinmangust14(skiatest::Reporter* reporter, const char* filename) {
Cary Clark1d314432018-07-10 10:57:54 -04005758SkPath path, path1;
5759path.setFillType(SkPath::kWinding_FillType);
5760 path.moveTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5761 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x440e8000)); // 559.003f, 570
5762 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x440e8000)); // 558.998f, 570
5763 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x4409c000)); // 558.998f, 551
5764 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5765 path.close();
5766path1 = path;
5767path.reset();
5768 path.setFillType(SkPath::kWinding_FillType);
5769 path.moveTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5770 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be9805)); // 3403.4f, 6099
5771 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be97fb)); // 3403.4f, 6099
5772 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be97fb)); // 3458, 6099
5773 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5774 path.close();
5775 path.moveTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5776 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443dffd7)); // 3403.4f, 759.997f
5777 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443e0029)); // 3403.4f, 760.003f
5778 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443e0029)); // 364, 760.003f
5779 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5780 path.close();
5781 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5782 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5783 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5784 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5785 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5786 path.close();
5787 path.moveTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5788 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43bdffae)); // 3403.4f, 379.997f
5789 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43be0052)); // 3403.4f, 380.003f
5790 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43be0052)); // 1274, 380.003f
5791 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5792 path.close();
5793 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5794 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x43be0000)); // 3403.4f, 380
5795 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x43be0000)); // 3403.4f, 380
5796 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5797 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5798 path.close();
5799 testPathOp(reporter, path1, path, kUnion_SkPathOp, filename);
5800}
5801
Cary Clark2587f412018-07-24 12:40:10 -04005802static void grshapearcs1(skiatest::Reporter* reporter, const char* filename) {
5803SkPath path, path1;
5804path.setFillType(SkPath::kWinding_FillType);
5805path.moveTo(25.0098f, 23.1973f);
5806path.lineTo(25.5689f, 22.3682f);
5807path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
5808path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
5809path.lineTo(26.6678f, 24.3156f);
5810path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
5811path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
5812path.close();
5813path.moveTo(26.6873f, 20.7101f);
5814path.lineTo(27.2465f, 19.8811f);
5815path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
5816path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
5817path.lineTo(28.3454f, 21.8285f);
5818path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
5819path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
5820path.close();
5821path.moveTo(28.3649f, 18.223f);
5822path.lineTo(28.9241f, 17.394f);
5823path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
5824path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
5825path.lineTo(30.023f, 19.3414f);
5826path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
5827path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
5828path.close();
5829path.moveTo(30.0425f, 15.7359f);
5830path.lineTo(30.6017f, 14.9069f);
5831path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
5832path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
5833path.lineTo(31.7006f, 16.8543f);
5834path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
5835path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
5836path.close();
5837path.moveTo(31.7201f, 13.2488f);
5838path.lineTo(32.2793f, 12.4198f);
5839path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
5840path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
5841path.lineTo(33.3781f, 14.3672f);
5842path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
5843path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
5844path.close();
5845path.moveTo(33.3976f, 10.7617f);
5846path.lineTo(33.9568f, 9.93265f);
5847path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
5848path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
5849path.lineTo(35.0557f, 11.8801f);
5850path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
5851path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
5852path.close();
5853path.moveTo(35.0752f, 8.27457f);
5854path.lineTo(35.6344f, 7.44554f);
5855path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
5856path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
5857path.lineTo(36.7333f, 9.39296f);
5858path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
5859path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
5860path.close();
5861path.moveTo(36.7528f, 5.78746f);
5862path.lineTo(37.312f, 4.95842f);
5863path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
5864path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
5865path.lineTo(38.4109f, 6.90585f);
5866path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
5867path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
5868path.close();
5869path.moveTo(39.9447f, 3.72429f);
5870path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
5871path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
5872path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
5873path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
5874path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
5875path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
5876path.close();
5877path.moveTo(42.3194f, 5.60826f);
5878path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
5879path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
5880path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
5881path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
5882path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
5883path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
5884path.close();
5885path.moveTo(44.5406f, 7.84871f);
5886path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
5887path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
5888path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
5889path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
5890path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
5891path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
5892path.close();
5893path.moveTo(46.528f, 10.4211f);
5894path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
5895path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
5896path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
5897path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
5898path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
5899path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
5900path.close();
5901path.moveTo(48.1056f, 13.0782f);
5902path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
5903path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
5904path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
5905path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
5906path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
5907path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
5908path.close();
5909path.moveTo(49.3755f, 15.9538f);
5910path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
5911path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
5912path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
5913path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
5914path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
5915path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
5916path.close();
5917path.moveTo(50.2964f, 18.9923f);
5918path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
5919path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
5920path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
5921path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
5922path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
5923path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
5924path.close();
5925path.moveTo(50.8373f, 22.0956f);
5926path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
5927path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
5928path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
5929path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
5930path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
5931path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
5932path.close();
5933path.moveTo(50.9992f, 25.2099f);
5934path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
5935path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
5936path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
5937path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
5938path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
5939path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
5940path.close();
5941path.moveTo(50.7839f, 28.3454f);
5942path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
5943path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
5944path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
5945path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
5946path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
5947path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
5948path.close();
5949path.moveTo(50.1906f, 31.437f);
5950path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
5951path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
5952path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
5953path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
5954path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
5955path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
5956path.close();
5957path.moveTo(49.1978f, 34.5114f);
5958path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
5959path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
5960path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
5961path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
5962path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
5963path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
5964path.close();
5965path.moveTo(47.8852f, 37.3397f);
5966path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
5967path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
5968path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
5969path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
5970path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
5971path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
5972path.close();
5973path.moveTo(46.3154f, 39.8881f);
5974path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
5975path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
5976path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
5977path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
5978path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
5979path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
5980path.close();
5981path.moveTo(44.4398f, 42.2654f);
5982path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
5983path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
5984path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
5985path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
5986path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
5987path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
5988path.close();
5989path.moveTo(42.2075f, 44.4911f);
5990path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
5991path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
5992path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
5993path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
5994path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
5995path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
5996path.close();
5997path.moveTo(39.6379f, 46.488f);
5998path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
5999path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
6000path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
6001path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
6002path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
6003path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
6004path.close();
6005path.moveTo(36.9864f, 48.0722f);
6006path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
6007path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
6008path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
6009path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
6010path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
6011path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
6012path.close();
6013path.moveTo(34.1153f, 49.3498f);
6014path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
6015path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
6016path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
6017path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
6018path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
6019path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
6020path.close();
6021path.moveTo(31.08f, 50.2791f);
6022path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
6023path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
6024path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
6025path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
6026path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
6027path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
6028path.close();
6029path.moveTo(27.9769f, 50.829f);
6030path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
6031path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
6032path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
6033path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
6034path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
6035path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
6036path.close();
6037path.moveTo(24.8625f, 50.9996f);
6038path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
6039path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
6040path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
6041path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
6042path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
6043path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
6044path.close();
6045path.moveTo(21.7268f, 50.7931f);
6046path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
6047path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
6048path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
6049path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
6050path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
6051path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
6052path.close();
6053path.moveTo(18.6372f, 50.2094f);
6054path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
6055path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
6056path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
6057path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
6058path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
6059path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
6060path.close();
6061path.moveTo(15.5577f, 49.2248f);
6062path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
6063path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
6064path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
6065path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
6066path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
6067path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
6068path.close();
6069path.moveTo(12.7231f, 47.9189f);
6070path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
6071path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
6072path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
6073path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
6074path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
6075path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
6076path.close();
6077path.moveTo(10.1686f, 46.3548f);
6078path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
6079path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
6080path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
6081path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
6082path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
6083path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
6084path.close();
6085path.moveTo(7.78853f, 44.4876f);
6086path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
6087path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
6088path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
6089path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
6090path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
6091path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
6092path.close();
6093path.moveTo(5.55855f, 42.2635f);
6094path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
6095path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
6096path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
6097path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
6098path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
6099path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
6100path.close();
6101path.moveTo(3.55261f, 39.6973f);
6102path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
6103path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
6104path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
6105path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
6106path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
6107path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
6108path.close();
6109path.moveTo(1.96145f, 37.0509f);
6110path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
6111path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
6112path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
6113path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
6114path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
6115path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
6116path.close();
6117path.moveTo(0.676191f, 34.1844f);
6118path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
6119path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
6120path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
6121path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
6122path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
6123path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
6124path.close();
6125path.moveTo(-0.261658f, 31.1521f);
6126path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
6127path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
6128path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
6129path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
6130path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
6131path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
6132path.close();
6133path.moveTo(-0.820549f, 28.0495f);
6134path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
6135path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
6136path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
6137path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
6138path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
6139path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
6140path.close();
6141path.moveTo(-0.999918f, 24.9349f);
6142path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
6143path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
6144path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
6145path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
6146path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
6147path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
6148path.close();
6149path.moveTo(-0.802212f, 21.7991f);
6150path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
6151path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
6152path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
6153path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
6154path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
6155path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
6156path.close();
6157path.moveTo(-0.228066f, 18.7115f);
6158path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
6159path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
6160path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
6161path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
6162path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
6163path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
6164path.close();
6165path.moveTo(0.74831f, 15.6269f);
6166path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
6167path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
6168path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
6169path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
6170path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
6171path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
6172path.close();
6173path.moveTo(2.04744f, 12.7861f);
6174path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
6175path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
6176path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
6177path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
6178path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
6179path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
6180path.close();
6181path.moveTo(3.60589f, 10.2253f);
6182path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
6183path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
6184path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
6185path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
6186path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
6187path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
6188path.close();
6189path.moveTo(5.46482f, 7.84259f);
6190path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
6191path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
6192path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
6193path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
6194path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
6195path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
6196path.close();
6197path.moveTo(7.68062f, 5.60827f);
6198path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
6199path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
6200path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
6201path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
6202path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
6203path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
6204path.close();
6205path.moveTo(10.2392f, 3.59627f);
6206path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
6207path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
6208path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
6209path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
6210path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
6211path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
6212path.close();
6213path.moveTo(12.8847f, 1.99524f);
6214path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
6215path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
6216path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
6217path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
6218path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
6219path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
6220path.close();
6221path.moveTo(15.7467f, 0.702339f);
6222path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
6223path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
6224path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
6225path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
6226path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
6227path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
6228path.close();
6229path.moveTo(18.7758f, -0.24399f);
6230path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
6231path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
6232path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
6233path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
6234path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
6235path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
6236path.close();
6237path.moveTo(21.878f, -0.811882f);
6238path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
6239path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
6240path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
6241path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
6242path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
6243path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
6244path.close();
6245path.moveTo(24.9926f, -0.999999f);
6246path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
6247path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
6248path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
6249path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
6250path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
6251path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
6252path.close();
6253path.moveTo(28.1286f, -0.811081f);
6254path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
6255path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
6256path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
6257path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
6258path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
6259path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
6260path.close();
6261path.moveTo(31.214f, -0.246499f);
6262path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
6263path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
6264path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
6265path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
6266path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
6267path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
6268path.close();
6269path.moveTo(34.3038f, 0.721629f);
6270path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
6271path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
6272path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
6273path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
6274path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
6275path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
6276path.close();
6277path.moveTo(37.1508f, 2.01396f);
6278path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
6279path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
6280path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
6281path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
6282path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
6283path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
6284path.close();
6285path.moveTo(39.718f, 3.56681f);
6286path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
6287path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
6288path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
6289path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
6290path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
6291path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
6292path.close();
6293path.moveTo(42.1033f, 5.41741f);
6294path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
6295path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
6296path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
6297path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
6298path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
6299path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
6300path.close();
6301path.moveTo(44.3419f, 7.62498f);
6302path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
6303path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
6304path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
6305path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
6306path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
6307path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
6308path.close();
6309path.moveTo(46.3599f, 10.1759f);
6310path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
6311path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
6312path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
6313path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
6314path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
6315path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
6316path.close();
6317path.moveTo(47.9708f, 12.8204f);
6318path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
6319path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
6320path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
6321path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
6322path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
6323path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
6324path.close();
6325path.moveTo(49.2713f, 15.6778f);
6326path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
6327path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
6328path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
6329path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
6330path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
6331path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
6332path.close();
6333path.moveTo(50.2261f, 18.7037f);
6334path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
6335path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
6336path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
6337path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
6338path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
6339path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
6340path.close();
6341path.moveTo(50.803f, 21.8055f);
6342path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
6343path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
6344path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
6345path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
6346path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
6347path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
6348path.close();
6349path.moveTo(50.9999f, 24.9202f);
6350path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
6351path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
6352path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
6353path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
6354path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
6355path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
6356path.close();
6357path.moveTo(50.8198f, 28.0562f);
6358path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
6359path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
6360path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
6361path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
6362path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
6363path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
6364path.close();
6365path.moveTo(50.2647f, 31.1395f);
6366path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
6367path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
6368path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
6369path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
6370path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
6371path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
6372path.close();
6373path.moveTo(49.3049f, 34.2343f);
6374path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
6375path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
6376path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
6377path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
6378path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
6379path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
6380path.close();
6381path.moveTo(48.0194f, 37.0875f);
6382path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
6383path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
6384path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
6385path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
6386path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
6387path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
6388path.close();
6389path.moveTo(46.4721f, 39.6612f);
6390path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
6391path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
6392path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
6393path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
6394path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
6395path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
6396path.close();
6397path.moveTo(44.6298f, 42.0491f);
6398path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
6399path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
6400path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
6401path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
6402path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
6403path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
6404path.close();
6405path.moveTo(42.4305f, 44.2919f);
6406path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
6407path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
6408path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
6409path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
6410path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
6411path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
6412path.close();
6413path.moveTo(39.8873f, 46.3159f);
6414path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
6415path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
6416path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
6417path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
6418path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
6419path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
6420path.close();
6421path.moveTo(37.2437f, 47.9367f);
6422path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
6423path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
6424path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
6425path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
6426path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
6427path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
6428path.close();
6429path.moveTo(34.3909f, 49.2448f);
6430path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
6431path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
6432path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
6433path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
6434path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
6435path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
6436path.close();
6437path.moveTo(31.3682f, 50.208f);
6438path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
6439path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
6440path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
6441path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
6442path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
6443path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
6444path.close();
6445path.moveTo(28.2669f, 50.7939f);
6446path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
6447path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
6448path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
6449path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
6450path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
6451path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
6452path.close();
6453path.moveTo(25.1523f, 50.9996f);
6454path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
6455path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
6456path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
6457path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
6458path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
6459path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
6460path.close();
6461path.moveTo(22.0162f, 50.8282f);
6462path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
6463path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
6464path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
6465path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
6466path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
6467path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
6468path.close();
6469path.moveTo(18.9351f, 50.2827f);
6470path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
6471path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
6472path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
6473path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
6474path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
6475path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
6476path.close();
6477path.moveTo(15.8352f, 49.3312f);
6478path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
6479path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
6480path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
6481path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
6482path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
6483path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
6484path.close();
6485path.moveTo(12.9759f, 48.0526f);
6486path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
6487path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
6488path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
6489path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
6490path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
6491path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
6492path.close();
6493path.moveTo(10.3957f, 46.5108f);
6494path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
6495path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
6496path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
6497path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
6498path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
6499path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
6500path.close();
6501path.moveTo(8.00525f, 44.6769f);
6502path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
6503path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
6504path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
6505path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
6506path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
6507path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
6508path.close();
6509path.moveTo(5.75818f, 42.4858f);
6510path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
6511path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
6512path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
6513path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
6514path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
6515path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
6516path.close();
6517path.moveTo(3.72821f, 39.9503f);
6518path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
6519path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
6520path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
6521path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
6522path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
6523path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
6524path.close();
6525path.moveTo(2.09762f, 37.3078f);
6526path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
6527path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
6528path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
6529path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
6530path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
6531path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
6532path.close();
6533path.moveTo(0.781912f, 34.4596f);
6534path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
6535path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
6536path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
6537path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
6538path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
6539path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
6540path.close();
6541path.moveTo(-0.189761f, 31.4402f);
6542path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
6543path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
6544path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
6545path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
6546path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
6547path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
6548path.close();
6549path.moveTo(-0.784658f, 28.3394f);
6550path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
6551path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
6552path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
6553path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
6554path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
6555path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
6556path.close();
6557path.moveTo(-0.999031f, 25.2248f);
6558path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
6559path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
6560path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
6561path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
6562path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
6563path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
6564path.close();
6565path.moveTo(-0.836492f, 22.0887f);
6566path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
6567path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
6568path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
6569path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
6570path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
6571path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
6572path.close();
6573path.moveTo(-0.300548f, 19.0098f);
6574path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
6575path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
6576path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
6577path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
6578path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
6579path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
6580path.close();
6581path.moveTo(0.642658f, 15.9049f);
6582path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
6583path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
6584path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
6585path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
6586path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
6587path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
6588path.close();
6589path.moveTo(1.91434f, 13.0395f);
6590path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
6591path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
6592path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
6593path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
6594path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
6595path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
6596path.close();
6597path.moveTo(3.45073f, 10.4525f);
6598path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
6599path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
6600path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
6601path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
6602path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
6603path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
6604path.close();
6605path.moveTo(5.2763f, 8.05964f);
6606path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
6607path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
6608path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
6609path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
6610path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
6611path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
6612path.close();
6613path.moveTo(7.45913f, 5.80839f);
6614path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
6615path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
6616path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
6617path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
6618path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
6619path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
6620path.close();
6621path.moveTo(9.98688f, 3.77251f);
6622path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
6623path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
6624path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
6625path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
6626path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
6627path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
6628path.close();
6629path.moveTo(12.6283f, 2.13208f);
6630path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
6631path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
6632path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
6633path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
6634path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
6635path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
6636path.close();
6637path.moveTo(15.4718f, 0.808815f);
6638path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
6639path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
6640path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
6641path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
6642path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
6643path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
6644path.close();
6645path.moveTo(18.4879f, -0.171272f);
6646path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
6647path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
6648path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
6649path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
6650path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
6651path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
6652path.close();
6653path.moveTo(21.5882f, -0.77517f);
6654path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
6655path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
6656path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
6657path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
6658path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
6659path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
6660path.close();
6661path.moveTo(24.7026f, -0.998301f);
6662path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
6663path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
6664path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
6665path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
6666path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
6667path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
6668path.close();
6669path.moveTo(27.8388f, -0.844563f);
6670path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
6671path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
6672path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
6673path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
6674path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
6675path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
6676path.close();
6677path.moveTo(30.9153f, -0.318153f);
6678path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
6679path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
6680path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
6681path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
6682path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
6683path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
6684path.close();
6685path.moveTo(34.0252f, 0.616677f);
6686path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
6687path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
6688path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
6689path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
6690path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
6691path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
6692path.close();
6693path.moveTo(36.8967f, 1.88141f);
6694path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
6695path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
6696path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
6697path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
6698path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
6699path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
6700path.close();
6701path.moveTo(39.4914f, 3.413f);
6702path.lineTo(39.5381f, 3.44439f);
6703path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
6704path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
6705path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
6706path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
6707path.lineTo(38.3749f, 5.07232f);
6708path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
6709path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
6710path.close();
6711path.moveTo(41.8859f, 5.22965f);
6712path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
6713path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
6714path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
6715path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
6716path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
6717path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
6718path.close();
6719path.moveTo(44.1413f, 7.40421f);
6720path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
6721path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
6722path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
6723path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
6724path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
6725path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
6726path.close();
6727path.moveTo(46.183f, 9.9242f);
6728path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
6729path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
6730path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
6731path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
6732path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
6733path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
6734path.close();
6735path.moveTo(47.8333f, 12.5645f);
6736path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
6737path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
6738path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
6739path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
6740path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
6741path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
6742path.close();
6743path.moveTo(49.1641f, 15.4033f);
6744path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
6745path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
6746path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
6747path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
6748path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
6749path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
6750path.close();
6751path.moveTo(50.1526f, 18.4161f);
6752path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
6753path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
6754path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
6755path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
6756path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
6757path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
6758path.close();
6759path.moveTo(50.7655f, 21.5157f);
6760path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
6761path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
6762path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
6763path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
6764path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
6765path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
6766path.close();
6767path.moveTo(50.9974f, 24.6301f);
6768path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
6769path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
6770path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
6771path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
6772path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
6773path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
6774path.close();
6775path.moveTo(50.8524f, 27.7662f);
6776path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
6777path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
6778path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
6779path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
6780path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
6781path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
6782path.close();
6783path.moveTo(50.3355f, 30.8404f);
6784path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
6785path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
6786path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
6787path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
6788path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
6789path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
6790path.close();
6791path.moveTo(49.4091f, 33.9552f);
6792path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
6793path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
6794path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
6795path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
6796path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
6797path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
6798path.close();
6799path.moveTo(48.1514f, 36.8328f);
6800path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
6801path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
6802path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
6803path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
6804path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
6805path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
6806path.close();
6807path.moveTo(46.6245f, 39.4354f);
6808path.lineTo(46.5563f, 39.537f);
6809path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
6810path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
6811path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
6812path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
6813path.lineTo(44.9637f, 38.3211f);
6814path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
6815path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
6816path.close();
6817path.moveTo(44.8168f, 41.8314f);
6818path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
6819path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
6820path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
6821path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
6822path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
6823path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
6824path.close();
6825path.moveTo(42.6505f, 44.0908f);
6826path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
6827path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
6828path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
6829path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
6830path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
6831path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
6832path.close();
6833path.moveTo(40.1383f, 46.1384f);
6834path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
6835path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
6836path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
6837path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
6838path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
6839path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
6840path.close();
6841path.moveTo(37.4991f, 47.7985f);
6842path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
6843path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
6844path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
6845path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
6846path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
6847path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
6848path.close();
6849path.moveTo(34.6651f, 49.1368f);
6850path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
6851path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
6852path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
6853path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
6854path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
6855path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
6856path.close();
6857path.moveTo(31.6557f, 50.1337f);
6858path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
6859path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
6860path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
6861path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
6862path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
6863path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
6864path.close();
6865path.moveTo(28.5567f, 50.7556f);
6866path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
6867path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
6868path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
6869path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
6870path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
6871path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
6872path.close();
6873path.moveTo(25.4424f, 50.9962f);
6874path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
6875path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
6876path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
6877path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
6878path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
6879path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
6880path.close();
6881path.moveTo(22.3065f, 50.8601f);
6882path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
6883path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
6884path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
6885path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
6886path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
6887path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
6888path.close();
6889path.moveTo(19.2346f, 50.3527f);
6890path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
6891path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
6892path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
6893path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
6894path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
6895path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
6896path.close();
6897path.moveTo(16.1149f, 49.4347f);
6898path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
6899path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
6900path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
6901path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
6902path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
6903path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
6904path.close();
6905path.moveTo(13.2313f, 48.184f);
6906path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
6907path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
6908path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
6909path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
6910path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
6911path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
6912path.close();
6913path.moveTo(10.6208f, 46.6619f);
6914path.lineTo(10.4641f, 46.5571f);
6915path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
6916path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
6917path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
6918path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
6919path.lineTo(11.7329f, 44.9996f);
6920path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
6921path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
6922path.close();
6923path.moveTo(8.22326f, 44.8631f);
6924path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
6925path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
6926path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
6927path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
6928path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
6929path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
6930path.close();
6931path.moveTo(5.95972f, 42.705f);
6932path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
6933path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
6934path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
6935path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
6936path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
6937path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
6938path.close();
6939path.moveTo(3.90635f, 40.2006f);
6940path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
6941path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
6942path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
6943path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
6944path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
6945path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
6946path.close();
6947path.moveTo(2.23643f, 37.5626f);
6948path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
6949path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
6950path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
6951path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
6952path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
6953path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
6954path.close();
6955path.moveTo(0.890647f, 34.7334f);
6956path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
6957path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
6958path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
6959path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
6960path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
6961path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
6962path.close();
6963path.moveTo(-0.114587f, 31.7274f);
6964path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
6965path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
6966path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
6967path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
6968path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
6969path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
6970path.close();
6971path.moveTo(-0.745485f, 28.6291f);
6972path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
6973path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
6974path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
6975path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
6976path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
6977path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
6978path.close();
6979path.moveTo(-0.994901f, 25.515f);
6980path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
6981path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
6982path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
6983path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
6984path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
6985path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
6986path.close();
6987path.moveTo(-0.867571f, 22.3792f);
6988path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
6989path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
6990path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
6991path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
6992path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
6993path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
6994path.close();
6995path.moveTo(-0.369678f, 19.3097f);
6996path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
6997path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
6998path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
6999path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
7000path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
7001path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
7002path.close();
7003path.moveTo(0.539863f, 16.1851f);
7004path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
7005path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
7006path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
7007path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
7008path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
7009path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
7010path.close();
7011path.moveTo(1.78353f, 13.2955f);
7012path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
7013path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
7014path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
7015path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
7016path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
7017path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
7018path.close();
7019path.moveTo(3.30083f, 10.6771f);
7020path.lineTo(3.44218f, 10.4652f);
7021path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
7022path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
7023path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
7024path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
7025path.lineTo(4.96457f, 11.787f);
7026path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
7027path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
7028path.close();
7029path.moveTo(5.0909f, 8.27793f);
7030path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
7031path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
7032path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
7033path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
7034path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
7035path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
7036path.close();
7037path.moveTo(7.24064f, 6.0104f);
7038path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
7039path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
7040path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
7041path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
7042path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
7043path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
7044path.close();
7045path.moveTo(9.73726f, 3.95128f);
7046path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
7047path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
7048path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
7049path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
7050path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
7051path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
7052path.close();
7053path.moveTo(12.374f, 2.27153f);
7054path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
7055path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
7056path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
7057path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
7058path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
7059path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
7060path.close();
7061path.moveTo(15.1984f, 0.918296f);
7062path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
7063path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
7064path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
7065path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
7066path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
7067path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
7068path.close();
7069path.moveTo(18.201f, -0.0952874f);
7070path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
7071path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
7072path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
7073path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
7074path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
7075path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
7076path.close();
7077path.moveTo(21.2986f, -0.73518f);
7078path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
7079path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
7080path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
7081path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
7082path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
7083path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
7084path.close();
7085path.moveTo(24.4124f, -0.993361f);
7086path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
7087path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
7088path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
7089path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
7090path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
7091path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
7092path.close();
7093path.moveTo(27.5481f, -0.87484f);
7094path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
7095path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
7096path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
7097path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
7098path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
7099path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
7100path.close();
7101path.moveTo(30.6151f, -0.386432f);
7102path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
7103path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
7104path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
7105path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
7106path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
7107path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
7108path.close();
7109path.moveTo(33.7445f, 0.514616f);
7110path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
7111path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
7112path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
7113path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
7114path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
7115path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
7116path.close();
7117path.moveTo(36.6402f, 1.7512f);
7118path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
7119path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
7120path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
7121path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
7122path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
7123path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
7124path.close();
7125path.moveTo(39.2611f, 3.26012f);
7126path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
7127path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
7128path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
7129path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
7130path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
7131path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
7132path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
7133path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
7134path.close();
7135path.moveTo(41.6673f, 5.04503f);
7136path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
7137path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
7138path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
7139path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
7140path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
7141path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
7142path.close();
7143path.moveTo(43.9388f, 7.1865f);
7144path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
7145path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
7146path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
7147path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
7148path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
7149path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
7150path.close();
7151path.moveTo(46.0036f, 9.6753f);
7152path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
7153path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
7154path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
7155path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
7156path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
7157path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
7158path.close();
7159path.moveTo(47.6932f, 12.3107f);
7160path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
7161path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
7162path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
7163path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
7164path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
7165path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
7166path.close();
7167path.moveTo(49.0539f, 15.1303f);
7168path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
7169path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
7170path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
7171path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
7172path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
7173path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
7174path.close();
7175path.moveTo(50.0758f, 18.1294f);
7176path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
7177path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
7178path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
7179path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
7180path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
7181path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
7182path.close();
7183path.moveTo(50.7247f, 21.2262f);
7184path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
7185path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
7186path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
7187path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
7188path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
7189path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
7190path.close();
7191path.moveTo(50.9916f, 24.3398f);
7192path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
7193path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
7194path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
7195path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
7196path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
7197path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
7198path.close();
7199path.moveTo(50.8819f, 27.4753f);
7200path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
7201path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
7202path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
7203path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
7204path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
7205path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
7206path.close();
7207path.moveTo(50.4023f, 30.5429f);
7208path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
7209path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
7210path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
7211path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
7212path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
7213path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
7214path.close();
7215path.moveTo(49.5104f, 33.674f);
7216path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
7217path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
7218path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
7219path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
7220path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
7221path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
7222path.close();
7223path.moveTo(48.281f, 36.5756f);
7224path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
7225path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
7226path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
7227path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
7228path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
7229path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
7230path.close();
7231path.moveTo(46.7777f, 39.2033f);
7232path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
7233path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
7234path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
7235path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
7236path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
7237path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
7238path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
7239path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
7240path.close();
7241path.moveTo(44.9527f, 41.6701f);
7242path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
7243path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
7244path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
7245path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
7246path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
7247path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
7248path.close();
7249path.moveTo(42.7884f, 43.9624f);
7250path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
7251path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
7252path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
7253path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
7254path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
7255path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
7256path.close();
7257path.moveTo(40.3892f, 45.9564f);
7258path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
7259path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
7260path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
7261path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
7262path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
7263path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
7264path.close();
7265path.moveTo(37.7543f, 47.6568f);
7266path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
7267path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
7268path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
7269path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
7270path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
7271path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
7272path.close();
7273path.moveTo(34.9311f, 49.0286f);
7274path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
7275path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
7276path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
7277path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
7278path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
7279path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
7280path.close();
7281path.moveTo(31.9824f, 50.0449f);
7282path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
7283path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
7284path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
7285path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
7286path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
7287path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
7288path.close();
7289path.moveTo(28.899f, 50.706f);
7290path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
7291path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
7292path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
7293path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
7294path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
7295path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
7296path.close();
7297path.moveTo(25.8106f, 50.9874f);
7298path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
7299path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
7300path.lineTo(24.4251f, 49.3638f);
7301path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
7302path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
7303path.lineTo(26.4361f, 49.9787f);
7304path.lineTo(25.4363f, 49.9962f);
7305path.lineTo(25.4189f, 48.9963f);
7306path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
7307path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
7308path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
7309path.close();
7310path.moveTo(24.3902f, 47.3641f);
7311path.lineTo(24.3728f, 46.3643f);
7312path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
7313path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
7314path.lineTo(26.3899f, 47.3292f);
7315path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
7316path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
7317path.close();
7318path.moveTo(24.3378f, 44.3646f);
7319path.lineTo(24.3204f, 43.3648f);
7320path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
7321path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
7322path.lineTo(26.3375f, 44.3297f);
7323path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
7324path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
7325path.close();
7326path.moveTo(24.2855f, 41.3651f);
7327path.lineTo(24.268f, 40.3652f);
7328path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
7329path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
7330path.lineTo(26.2852f, 41.3302f);
7331path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
7332path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
7333path.close();
7334path.moveTo(24.2331f, 38.3655f);
7335path.lineTo(24.2157f, 37.3657f);
7336path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
7337path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
7338path.lineTo(26.2328f, 38.3306f);
7339path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
7340path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
7341path.close();
7342path.moveTo(24.1808f, 35.366f);
7343path.lineTo(24.1633f, 34.3661f);
7344path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
7345path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
7346path.lineTo(26.1805f, 35.3311f);
7347path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
7348path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
7349path.close();
7350path.moveTo(24.1284f, 32.3664f);
7351path.lineTo(24.111f, 31.3666f);
7352path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
7353path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
7354path.lineTo(26.1281f, 32.3315f);
7355path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
7356path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
7357path.close();
7358path.moveTo(24.0761f, 29.3669f);
7359path.lineTo(24.0586f, 28.367f);
7360path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
7361path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
7362path.lineTo(26.0758f, 29.332f);
7363path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
7364path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
7365path.close();
7366path.moveTo(24.0237f, 26.3673f);
7367path.lineTo(24.0063f, 25.3675f);
7368path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
7369path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
7370path.lineTo(26.0234f, 26.3324f);
7371path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
7372path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
7373path.close();
7374path1 = path;
7375path.reset();
7376path.setFillType(SkPath::kWinding_FillType);
7377path.moveTo(25.0098f, 23.1973f);
7378path.lineTo(25.5689f, 22.3682f);
7379path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
7380path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
7381path.lineTo(26.6678f, 24.3156f);
7382path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
7383path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
7384path.close();
7385path.moveTo(26.6873f, 20.7101f);
7386path.lineTo(27.2465f, 19.8811f);
7387path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
7388path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
7389path.lineTo(28.3454f, 21.8285f);
7390path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
7391path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
7392path.close();
7393path.moveTo(28.3649f, 18.223f);
7394path.lineTo(28.9241f, 17.394f);
7395path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
7396path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
7397path.lineTo(30.023f, 19.3414f);
7398path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
7399path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
7400path.close();
7401path.moveTo(30.0425f, 15.7359f);
7402path.lineTo(30.6017f, 14.9069f);
7403path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
7404path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
7405path.lineTo(31.7006f, 16.8543f);
7406path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
7407path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
7408path.close();
7409path.moveTo(31.7201f, 13.2488f);
7410path.lineTo(32.2793f, 12.4198f);
7411path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
7412path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
7413path.lineTo(33.3781f, 14.3672f);
7414path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
7415path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
7416path.close();
7417path.moveTo(33.3976f, 10.7617f);
7418path.lineTo(33.9568f, 9.93265f);
7419path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
7420path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
7421path.lineTo(35.0557f, 11.8801f);
7422path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
7423path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
7424path.close();
7425path.moveTo(35.0752f, 8.27457f);
7426path.lineTo(35.6344f, 7.44554f);
7427path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
7428path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
7429path.lineTo(36.7333f, 9.39296f);
7430path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
7431path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
7432path.close();
7433path.moveTo(36.7528f, 5.78746f);
7434path.lineTo(37.312f, 4.95842f);
7435path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
7436path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
7437path.lineTo(38.4109f, 6.90585f);
7438path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
7439path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
7440path.close();
7441path.moveTo(39.9447f, 3.72429f);
7442path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
7443path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
7444path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
7445path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
7446path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
7447path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
7448path.close();
7449path.moveTo(42.3194f, 5.60826f);
7450path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
7451path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
7452path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
7453path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
7454path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
7455path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
7456path.close();
7457path.moveTo(44.5406f, 7.84871f);
7458path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
7459path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
7460path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
7461path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
7462path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
7463path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
7464path.close();
7465path.moveTo(46.528f, 10.4211f);
7466path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
7467path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
7468path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
7469path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
7470path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
7471path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
7472path.close();
7473path.moveTo(48.1056f, 13.0782f);
7474path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
7475path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
7476path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
7477path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
7478path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
7479path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
7480path.close();
7481path.moveTo(49.3755f, 15.9538f);
7482path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
7483path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
7484path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
7485path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
7486path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
7487path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
7488path.close();
7489path.moveTo(50.2964f, 18.9923f);
7490path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
7491path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
7492path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
7493path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
7494path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
7495path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
7496path.close();
7497path.moveTo(50.8373f, 22.0956f);
7498path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
7499path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
7500path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
7501path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
7502path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
7503path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
7504path.close();
7505path.moveTo(50.9992f, 25.2099f);
7506path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
7507path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
7508path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
7509path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
7510path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
7511path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
7512path.close();
7513path.moveTo(50.7839f, 28.3454f);
7514path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
7515path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
7516path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
7517path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
7518path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
7519path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
7520path.close();
7521path.moveTo(50.1906f, 31.437f);
7522path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
7523path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
7524path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
7525path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
7526path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
7527path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
7528path.close();
7529path.moveTo(49.1978f, 34.5114f);
7530path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
7531path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
7532path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
7533path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
7534path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
7535path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
7536path.close();
7537path.moveTo(47.8852f, 37.3397f);
7538path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
7539path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
7540path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
7541path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
7542path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
7543path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
7544path.close();
7545path.moveTo(46.3154f, 39.8881f);
7546path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
7547path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
7548path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
7549path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
7550path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
7551path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
7552path.close();
7553path.moveTo(44.4398f, 42.2654f);
7554path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
7555path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
7556path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
7557path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
7558path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
7559path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
7560path.close();
7561path.moveTo(42.2075f, 44.4911f);
7562path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
7563path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
7564path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
7565path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
7566path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
7567path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
7568path.close();
7569path.moveTo(39.6379f, 46.488f);
7570path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
7571path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
7572path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
7573path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
7574path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
7575path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
7576path.close();
7577path.moveTo(36.9864f, 48.0722f);
7578path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
7579path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
7580path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
7581path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
7582path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
7583path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
7584path.close();
7585path.moveTo(34.1153f, 49.3498f);
7586path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
7587path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
7588path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
7589path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
7590path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
7591path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
7592path.close();
7593path.moveTo(31.08f, 50.2791f);
7594path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
7595path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
7596path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
7597path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
7598path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
7599path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
7600path.close();
7601path.moveTo(27.9769f, 50.829f);
7602path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
7603path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
7604path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
7605path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
7606path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
7607path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
7608path.close();
7609path.moveTo(24.8625f, 50.9996f);
7610path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
7611path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
7612path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
7613path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
7614path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
7615path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
7616path.close();
7617path.moveTo(21.7268f, 50.7931f);
7618path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
7619path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
7620path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
7621path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
7622path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
7623path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
7624path.close();
7625path.moveTo(18.6372f, 50.2094f);
7626path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
7627path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
7628path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
7629path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
7630path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
7631path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
7632path.close();
7633path.moveTo(15.5577f, 49.2248f);
7634path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
7635path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
7636path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
7637path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
7638path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
7639path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
7640path.close();
7641path.moveTo(12.7231f, 47.9189f);
7642path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
7643path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
7644path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
7645path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
7646path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
7647path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
7648path.close();
7649path.moveTo(10.1686f, 46.3548f);
7650path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
7651path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
7652path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
7653path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
7654path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
7655path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
7656path.close();
7657path.moveTo(7.78853f, 44.4876f);
7658path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
7659path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
7660path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
7661path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
7662path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
7663path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
7664path.close();
7665path.moveTo(5.55855f, 42.2635f);
7666path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
7667path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
7668path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
7669path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
7670path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
7671path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
7672path.close();
7673path.moveTo(3.55261f, 39.6973f);
7674path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
7675path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
7676path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
7677path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
7678path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
7679path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
7680path.close();
7681path.moveTo(1.96145f, 37.0509f);
7682path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
7683path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
7684path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
7685path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
7686path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
7687path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
7688path.close();
7689path.moveTo(0.676191f, 34.1844f);
7690path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
7691path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
7692path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
7693path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
7694path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
7695path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
7696path.close();
7697path.moveTo(-0.261658f, 31.1521f);
7698path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
7699path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
7700path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
7701path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
7702path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
7703path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
7704path.close();
7705path.moveTo(-0.820549f, 28.0495f);
7706path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
7707path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
7708path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
7709path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
7710path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
7711path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
7712path.close();
7713path.moveTo(-0.999918f, 24.9349f);
7714path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
7715path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
7716path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
7717path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
7718path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
7719path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
7720path.close();
7721path.moveTo(-0.802212f, 21.7991f);
7722path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
7723path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
7724path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
7725path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
7726path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
7727path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
7728path.close();
7729path.moveTo(-0.228066f, 18.7115f);
7730path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
7731path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
7732path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
7733path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
7734path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
7735path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
7736path.close();
7737path.moveTo(0.74831f, 15.6269f);
7738path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
7739path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
7740path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
7741path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
7742path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
7743path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
7744path.close();
7745path.moveTo(2.04744f, 12.7861f);
7746path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
7747path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
7748path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
7749path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
7750path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
7751path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
7752path.close();
7753path.moveTo(3.60589f, 10.2253f);
7754path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
7755path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
7756path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
7757path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
7758path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
7759path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
7760path.close();
7761path.moveTo(5.46482f, 7.84259f);
7762path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
7763path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
7764path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
7765path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
7766path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
7767path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
7768path.close();
7769path.moveTo(7.68062f, 5.60827f);
7770path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
7771path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
7772path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
7773path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
7774path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
7775path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
7776path.close();
7777path.moveTo(10.2392f, 3.59627f);
7778path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
7779path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
7780path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
7781path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
7782path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
7783path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
7784path.close();
7785path.moveTo(12.8847f, 1.99524f);
7786path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
7787path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
7788path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
7789path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
7790path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
7791path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
7792path.close();
7793path.moveTo(15.7467f, 0.702339f);
7794path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
7795path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
7796path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
7797path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
7798path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
7799path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
7800path.close();
7801path.moveTo(18.7758f, -0.24399f);
7802path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
7803path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
7804path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
7805path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
7806path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
7807path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
7808path.close();
7809path.moveTo(21.878f, -0.811882f);
7810path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
7811path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
7812path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
7813path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
7814path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
7815path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
7816path.close();
7817path.moveTo(24.9926f, -0.999999f);
7818path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
7819path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
7820path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
7821path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
7822path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
7823path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
7824path.close();
7825path.moveTo(28.1286f, -0.811081f);
7826path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
7827path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
7828path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
7829path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
7830path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
7831path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
7832path.close();
7833path.moveTo(31.214f, -0.246499f);
7834path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
7835path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
7836path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
7837path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
7838path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
7839path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
7840path.close();
7841path.moveTo(34.3038f, 0.721629f);
7842path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
7843path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
7844path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
7845path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
7846path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
7847path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
7848path.close();
7849path.moveTo(37.1508f, 2.01396f);
7850path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
7851path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
7852path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
7853path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
7854path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
7855path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
7856path.close();
7857path.moveTo(39.718f, 3.56681f);
7858path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
7859path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
7860path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
7861path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
7862path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
7863path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
7864path.close();
7865path.moveTo(42.1033f, 5.41741f);
7866path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
7867path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
7868path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
7869path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
7870path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
7871path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
7872path.close();
7873path.moveTo(44.3419f, 7.62498f);
7874path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
7875path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
7876path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
7877path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
7878path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
7879path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
7880path.close();
7881path.moveTo(46.3599f, 10.1759f);
7882path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
7883path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
7884path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
7885path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
7886path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
7887path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
7888path.close();
7889path.moveTo(47.9708f, 12.8204f);
7890path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
7891path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
7892path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
7893path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
7894path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
7895path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
7896path.close();
7897path.moveTo(49.2713f, 15.6778f);
7898path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
7899path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
7900path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
7901path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
7902path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
7903path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
7904path.close();
7905path.moveTo(50.2261f, 18.7037f);
7906path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
7907path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
7908path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
7909path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
7910path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
7911path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
7912path.close();
7913path.moveTo(50.803f, 21.8055f);
7914path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
7915path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
7916path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
7917path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
7918path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
7919path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
7920path.close();
7921path.moveTo(50.9999f, 24.9202f);
7922path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
7923path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
7924path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
7925path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
7926path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
7927path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
7928path.close();
7929path.moveTo(50.8198f, 28.0562f);
7930path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
7931path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
7932path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
7933path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
7934path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
7935path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
7936path.close();
7937path.moveTo(50.2647f, 31.1395f);
7938path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
7939path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
7940path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
7941path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
7942path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
7943path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
7944path.close();
7945path.moveTo(49.3049f, 34.2343f);
7946path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
7947path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
7948path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
7949path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
7950path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
7951path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
7952path.close();
7953path.moveTo(48.0194f, 37.0875f);
7954path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
7955path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
7956path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
7957path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
7958path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
7959path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
7960path.close();
7961path.moveTo(46.4721f, 39.6612f);
7962path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
7963path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
7964path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
7965path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
7966path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
7967path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
7968path.close();
7969path.moveTo(44.6298f, 42.0491f);
7970path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
7971path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
7972path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
7973path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
7974path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
7975path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
7976path.close();
7977path.moveTo(42.4305f, 44.2919f);
7978path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
7979path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
7980path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
7981path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
7982path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
7983path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
7984path.close();
7985path.moveTo(39.8873f, 46.3159f);
7986path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
7987path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
7988path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
7989path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
7990path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
7991path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
7992path.close();
7993path.moveTo(37.2437f, 47.9367f);
7994path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
7995path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
7996path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
7997path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
7998path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
7999path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
8000path.close();
8001path.moveTo(34.3909f, 49.2448f);
8002path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
8003path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
8004path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
8005path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
8006path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
8007path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
8008path.close();
8009path.moveTo(31.3682f, 50.208f);
8010path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
8011path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
8012path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
8013path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
8014path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
8015path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
8016path.close();
8017path.moveTo(28.2669f, 50.7939f);
8018path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
8019path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
8020path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
8021path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
8022path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
8023path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
8024path.close();
8025path.moveTo(25.1523f, 50.9996f);
8026path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
8027path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
8028path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
8029path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
8030path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
8031path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
8032path.close();
8033path.moveTo(22.0162f, 50.8282f);
8034path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
8035path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
8036path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
8037path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
8038path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
8039path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
8040path.close();
8041path.moveTo(18.9351f, 50.2827f);
8042path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
8043path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
8044path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
8045path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
8046path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
8047path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
8048path.close();
8049path.moveTo(15.8352f, 49.3312f);
8050path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
8051path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
8052path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
8053path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
8054path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
8055path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
8056path.close();
8057path.moveTo(12.9759f, 48.0526f);
8058path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
8059path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
8060path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
8061path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
8062path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
8063path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
8064path.close();
8065path.moveTo(10.3957f, 46.5108f);
8066path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
8067path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
8068path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
8069path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
8070path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
8071path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
8072path.close();
8073path.moveTo(8.00525f, 44.6769f);
8074path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
8075path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
8076path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
8077path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
8078path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
8079path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
8080path.close();
8081path.moveTo(5.75818f, 42.4858f);
8082path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
8083path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
8084path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
8085path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
8086path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
8087path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
8088path.close();
8089path.moveTo(3.72821f, 39.9503f);
8090path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
8091path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
8092path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
8093path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
8094path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
8095path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
8096path.close();
8097path.moveTo(2.09762f, 37.3078f);
8098path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
8099path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
8100path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
8101path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
8102path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
8103path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
8104path.close();
8105path.moveTo(0.781912f, 34.4596f);
8106path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
8107path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
8108path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
8109path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
8110path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
8111path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
8112path.close();
8113path.moveTo(-0.189761f, 31.4402f);
8114path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
8115path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
8116path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
8117path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
8118path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
8119path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
8120path.close();
8121path.moveTo(-0.784658f, 28.3394f);
8122path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
8123path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
8124path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
8125path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
8126path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
8127path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
8128path.close();
8129path.moveTo(-0.999031f, 25.2248f);
8130path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
8131path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
8132path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
8133path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
8134path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
8135path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
8136path.close();
8137path.moveTo(-0.836492f, 22.0887f);
8138path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
8139path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
8140path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
8141path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
8142path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
8143path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
8144path.close();
8145path.moveTo(-0.300548f, 19.0098f);
8146path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
8147path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
8148path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
8149path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
8150path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
8151path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
8152path.close();
8153path.moveTo(0.642658f, 15.9049f);
8154path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
8155path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
8156path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
8157path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
8158path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
8159path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
8160path.close();
8161path.moveTo(1.91434f, 13.0395f);
8162path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
8163path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
8164path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
8165path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
8166path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
8167path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
8168path.close();
8169path.moveTo(3.45073f, 10.4525f);
8170path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
8171path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
8172path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
8173path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
8174path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
8175path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
8176path.close();
8177path.moveTo(5.2763f, 8.05964f);
8178path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
8179path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
8180path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
8181path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
8182path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
8183path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
8184path.close();
8185path.moveTo(7.45913f, 5.80839f);
8186path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
8187path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
8188path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
8189path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
8190path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
8191path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
8192path.close();
8193path.moveTo(9.98688f, 3.77251f);
8194path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
8195path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
8196path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
8197path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
8198path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
8199path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
8200path.close();
8201path.moveTo(12.6283f, 2.13208f);
8202path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
8203path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
8204path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
8205path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
8206path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
8207path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
8208path.close();
8209path.moveTo(15.4718f, 0.808815f);
8210path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
8211path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
8212path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
8213path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
8214path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
8215path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
8216path.close();
8217path.moveTo(18.4879f, -0.171272f);
8218path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
8219path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
8220path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
8221path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
8222path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
8223path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
8224path.close();
8225path.moveTo(21.5882f, -0.77517f);
8226path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
8227path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
8228path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
8229path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
8230path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
8231path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
8232path.close();
8233path.moveTo(24.7026f, -0.998301f);
8234path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
8235path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
8236path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
8237path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
8238path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
8239path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
8240path.close();
8241path.moveTo(27.8388f, -0.844563f);
8242path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
8243path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
8244path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
8245path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
8246path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
8247path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
8248path.close();
8249path.moveTo(30.9153f, -0.318153f);
8250path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
8251path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
8252path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
8253path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
8254path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
8255path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
8256path.close();
8257path.moveTo(34.0252f, 0.616677f);
8258path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
8259path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
8260path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
8261path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
8262path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
8263path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
8264path.close();
8265path.moveTo(36.8967f, 1.88141f);
8266path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
8267path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
8268path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
8269path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
8270path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
8271path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
8272path.close();
8273path.moveTo(39.4914f, 3.413f);
8274path.lineTo(39.5381f, 3.44439f);
8275path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
8276path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
8277path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
8278path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
8279path.lineTo(38.3749f, 5.07232f);
8280path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
8281path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
8282path.close();
8283path.moveTo(41.8859f, 5.22965f);
8284path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
8285path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
8286path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
8287path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
8288path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
8289path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
8290path.close();
8291path.moveTo(44.1413f, 7.40421f);
8292path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
8293path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
8294path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
8295path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
8296path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
8297path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
8298path.close();
8299path.moveTo(46.183f, 9.9242f);
8300path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
8301path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
8302path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
8303path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
8304path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
8305path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
8306path.close();
8307path.moveTo(47.8333f, 12.5645f);
8308path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
8309path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
8310path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
8311path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
8312path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
8313path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
8314path.close();
8315path.moveTo(49.1641f, 15.4033f);
8316path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
8317path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
8318path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
8319path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
8320path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
8321path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
8322path.close();
8323path.moveTo(50.1526f, 18.4161f);
8324path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
8325path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
8326path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
8327path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
8328path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
8329path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
8330path.close();
8331path.moveTo(50.7655f, 21.5157f);
8332path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
8333path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
8334path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
8335path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
8336path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
8337path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
8338path.close();
8339path.moveTo(50.9974f, 24.6301f);
8340path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
8341path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
8342path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
8343path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
8344path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
8345path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
8346path.close();
8347path.moveTo(50.8524f, 27.7662f);
8348path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
8349path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
8350path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
8351path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
8352path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
8353path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
8354path.close();
8355path.moveTo(50.3355f, 30.8404f);
8356path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
8357path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
8358path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
8359path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
8360path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
8361path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
8362path.close();
8363path.moveTo(49.4091f, 33.9552f);
8364path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
8365path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
8366path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
8367path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
8368path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
8369path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
8370path.close();
8371path.moveTo(48.1514f, 36.8328f);
8372path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
8373path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
8374path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
8375path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
8376path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
8377path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
8378path.close();
8379path.moveTo(46.6245f, 39.4354f);
8380path.lineTo(46.5563f, 39.537f);
8381path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
8382path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
8383path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
8384path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
8385path.lineTo(44.9637f, 38.3211f);
8386path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
8387path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
8388path.close();
8389path.moveTo(44.8168f, 41.8314f);
8390path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
8391path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
8392path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
8393path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
8394path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
8395path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
8396path.close();
8397path.moveTo(42.6505f, 44.0908f);
8398path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
8399path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
8400path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
8401path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
8402path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
8403path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
8404path.close();
8405path.moveTo(40.1383f, 46.1384f);
8406path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
8407path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
8408path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
8409path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
8410path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
8411path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
8412path.close();
8413path.moveTo(37.4991f, 47.7985f);
8414path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
8415path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
8416path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
8417path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
8418path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
8419path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
8420path.close();
8421path.moveTo(34.6651f, 49.1368f);
8422path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
8423path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
8424path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
8425path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
8426path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
8427path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
8428path.close();
8429path.moveTo(31.6557f, 50.1337f);
8430path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
8431path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
8432path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
8433path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
8434path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
8435path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
8436path.close();
8437path.moveTo(28.5567f, 50.7556f);
8438path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
8439path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
8440path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
8441path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
8442path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
8443path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
8444path.close();
8445path.moveTo(25.4424f, 50.9962f);
8446path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
8447path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
8448path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
8449path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
8450path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
8451path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
8452path.close();
8453path.moveTo(22.3065f, 50.8601f);
8454path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
8455path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
8456path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
8457path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
8458path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
8459path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
8460path.close();
8461path.moveTo(19.2346f, 50.3527f);
8462path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
8463path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
8464path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
8465path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
8466path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
8467path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
8468path.close();
8469path.moveTo(16.1149f, 49.4347f);
8470path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
8471path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
8472path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
8473path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
8474path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
8475path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
8476path.close();
8477path.moveTo(13.2313f, 48.184f);
8478path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
8479path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
8480path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
8481path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
8482path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
8483path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
8484path.close();
8485path.moveTo(10.6208f, 46.6619f);
8486path.lineTo(10.4641f, 46.5571f);
8487path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
8488path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
8489path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
8490path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
8491path.lineTo(11.7329f, 44.9996f);
8492path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
8493path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
8494path.close();
8495path.moveTo(8.22326f, 44.8631f);
8496path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
8497path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
8498path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
8499path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
8500path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
8501path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
8502path.close();
8503path.moveTo(5.95972f, 42.705f);
8504path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
8505path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
8506path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
8507path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
8508path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
8509path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
8510path.close();
8511path.moveTo(3.90635f, 40.2006f);
8512path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
8513path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
8514path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
8515path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
8516path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
8517path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
8518path.close();
8519path.moveTo(2.23643f, 37.5626f);
8520path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
8521path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
8522path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
8523path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
8524path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
8525path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
8526path.close();
8527path.moveTo(0.890647f, 34.7334f);
8528path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
8529path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
8530path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
8531path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
8532path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
8533path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
8534path.close();
8535path.moveTo(-0.114587f, 31.7274f);
8536path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
8537path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
8538path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
8539path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
8540path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
8541path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
8542path.close();
8543path.moveTo(-0.745485f, 28.6291f);
8544path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
8545path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
8546path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
8547path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
8548path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
8549path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
8550path.close();
8551path.moveTo(-0.994901f, 25.515f);
8552path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
8553path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
8554path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
8555path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
8556path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
8557path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
8558path.close();
8559path.moveTo(-0.867571f, 22.3792f);
8560path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
8561path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
8562path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
8563path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
8564path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
8565path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
8566path.close();
8567path.moveTo(-0.369678f, 19.3097f);
8568path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
8569path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
8570path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
8571path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
8572path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
8573path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
8574path.close();
8575path.moveTo(0.539863f, 16.1851f);
8576path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
8577path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
8578path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
8579path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
8580path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
8581path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
8582path.close();
8583path.moveTo(1.78353f, 13.2955f);
8584path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
8585path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
8586path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
8587path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
8588path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
8589path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
8590path.close();
8591path.moveTo(3.30083f, 10.6771f);
8592path.lineTo(3.44218f, 10.4652f);
8593path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
8594path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
8595path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
8596path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
8597path.lineTo(4.96457f, 11.787f);
8598path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
8599path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
8600path.close();
8601path.moveTo(5.0909f, 8.27793f);
8602path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
8603path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
8604path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
8605path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
8606path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
8607path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
8608path.close();
8609path.moveTo(7.24064f, 6.0104f);
8610path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
8611path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
8612path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
8613path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
8614path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
8615path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
8616path.close();
8617path.moveTo(9.73726f, 3.95128f);
8618path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
8619path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
8620path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
8621path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
8622path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
8623path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
8624path.close();
8625path.moveTo(12.374f, 2.27153f);
8626path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
8627path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
8628path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
8629path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
8630path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
8631path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
8632path.close();
8633path.moveTo(15.1984f, 0.918296f);
8634path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
8635path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
8636path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
8637path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
8638path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
8639path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
8640path.close();
8641path.moveTo(18.201f, -0.0952874f);
8642path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
8643path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
8644path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
8645path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
8646path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
8647path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
8648path.close();
8649path.moveTo(21.2986f, -0.73518f);
8650path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
8651path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
8652path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
8653path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
8654path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
8655path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
8656path.close();
8657path.moveTo(24.4124f, -0.993361f);
8658path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
8659path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
8660path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
8661path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
8662path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
8663path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
8664path.close();
8665path.moveTo(27.5481f, -0.87484f);
8666path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
8667path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
8668path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
8669path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
8670path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
8671path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
8672path.close();
8673path.moveTo(30.6151f, -0.386432f);
8674path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
8675path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
8676path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
8677path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
8678path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
8679path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
8680path.close();
8681path.moveTo(33.7445f, 0.514616f);
8682path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
8683path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
8684path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
8685path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
8686path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
8687path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
8688path.close();
8689path.moveTo(36.6402f, 1.7512f);
8690path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
8691path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
8692path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
8693path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
8694path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
8695path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
8696path.close();
8697path.moveTo(39.2611f, 3.26012f);
8698path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
8699path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
8700path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
8701path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
8702path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
8703path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
8704path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
8705path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
8706path.close();
8707path.moveTo(41.6673f, 5.04503f);
8708path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
8709path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
8710path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
8711path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
8712path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
8713path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
8714path.close();
8715path.moveTo(43.9388f, 7.1865f);
8716path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
8717path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
8718path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
8719path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
8720path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
8721path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
8722path.close();
8723path.moveTo(46.0036f, 9.6753f);
8724path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
8725path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
8726path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
8727path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
8728path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
8729path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
8730path.close();
8731path.moveTo(47.6932f, 12.3107f);
8732path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
8733path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
8734path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
8735path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
8736path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
8737path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
8738path.close();
8739path.moveTo(49.0539f, 15.1303f);
8740path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
8741path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
8742path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
8743path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
8744path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
8745path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
8746path.close();
8747path.moveTo(50.0758f, 18.1294f);
8748path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
8749path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
8750path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
8751path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
8752path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
8753path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
8754path.close();
8755path.moveTo(50.7247f, 21.2262f);
8756path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
8757path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
8758path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
8759path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
8760path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
8761path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
8762path.close();
8763path.moveTo(50.9916f, 24.3398f);
8764path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
8765path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
8766path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
8767path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
8768path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
8769path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
8770path.close();
8771path.moveTo(50.8819f, 27.4753f);
8772path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
8773path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
8774path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
8775path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
8776path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
8777path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
8778path.close();
8779path.moveTo(50.4023f, 30.5429f);
8780path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
8781path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
8782path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
8783path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
8784path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
8785path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
8786path.close();
8787path.moveTo(49.5104f, 33.674f);
8788path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
8789path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
8790path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
8791path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
8792path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
8793path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
8794path.close();
8795path.moveTo(48.281f, 36.5756f);
8796path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
8797path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
8798path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
8799path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
8800path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
8801path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
8802path.close();
8803path.moveTo(46.7777f, 39.2033f);
8804path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
8805path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
8806path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
8807path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
8808path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
8809path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
8810path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
8811path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
8812path.close();
8813path.moveTo(44.9527f, 41.6701f);
8814path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
8815path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
8816path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
8817path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
8818path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
8819path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
8820path.close();
8821path.moveTo(42.7884f, 43.9624f);
8822path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
8823path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
8824path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
8825path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
8826path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
8827path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
8828path.close();
8829path.moveTo(40.3892f, 45.9564f);
8830path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
8831path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
8832path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
8833path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
8834path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
8835path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
8836path.close();
8837path.moveTo(37.7543f, 47.6568f);
8838path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
8839path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
8840path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
8841path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
8842path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
8843path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
8844path.close();
8845path.moveTo(34.9311f, 49.0286f);
8846path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
8847path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
8848path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
8849path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
8850path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
8851path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
8852path.close();
8853path.moveTo(31.9824f, 50.0449f);
8854path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
8855path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
8856path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
8857path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
8858path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
8859path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
8860path.close();
8861path.moveTo(28.899f, 50.706f);
8862path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
8863path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
8864path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
8865path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
8866path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
8867path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
8868path.close();
8869path.moveTo(25.8106f, 50.9874f);
8870path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
8871path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
8872path.lineTo(24.4251f, 49.3638f);
8873path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
8874path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
8875path.lineTo(26.4361f, 49.9787f);
8876path.lineTo(25.4363f, 49.9962f);
8877path.lineTo(25.4189f, 48.9963f);
8878path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
8879path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
8880path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
8881path.close();
8882path.moveTo(24.3902f, 47.3641f);
8883path.lineTo(24.3728f, 46.3643f);
8884path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
8885path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
8886path.lineTo(26.3899f, 47.3292f);
8887path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
8888path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
8889path.close();
8890path.moveTo(24.3378f, 44.3646f);
8891path.lineTo(24.3204f, 43.3648f);
8892path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
8893path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
8894path.lineTo(26.3375f, 44.3297f);
8895path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
8896path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
8897path.close();
8898path.moveTo(24.2855f, 41.3651f);
8899path.lineTo(24.268f, 40.3652f);
8900path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
8901path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
8902path.lineTo(26.2852f, 41.3302f);
8903path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
8904path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
8905path.close();
8906path.moveTo(24.2331f, 38.3655f);
8907path.lineTo(24.2157f, 37.3657f);
8908path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
8909path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
8910path.lineTo(26.2328f, 38.3306f);
8911path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
8912path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
8913path.close();
8914path.moveTo(24.1808f, 35.366f);
8915path.lineTo(24.1633f, 34.3661f);
8916path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
8917path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
8918path.lineTo(26.1805f, 35.3311f);
8919path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
8920path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
8921path.close();
8922path.moveTo(24.1284f, 32.3664f);
8923path.lineTo(24.111f, 31.3666f);
8924path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
8925path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
8926path.lineTo(26.1281f, 32.3315f);
8927path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
8928path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
8929path.close();
8930path.moveTo(24.0761f, 29.3669f);
8931path.lineTo(24.0586f, 28.367f);
8932path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
8933path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
8934path.lineTo(26.0758f, 29.332f);
8935path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
8936path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
8937path.close();
8938path.moveTo(24.0237f, 26.3673f);
8939path.lineTo(24.0063f, 25.3675f);
8940path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
8941path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
8942path.lineTo(26.0234f, 26.3324f);
8943path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
8944path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
8945path.close();
8946 testPathOpFail(reporter, path, path1, kXOR_SkPathOp, filename);
8947}
8948
Cary Clarkcadc5062018-08-06 17:24:04 -04008949static void op_1(skiatest::Reporter* reporter, const char* filename) {
8950 SkPath path;
8951 path.setFillType((SkPath::FillType) 0);
8952path.setFillType(SkPath::kWinding_FillType);
8953path.moveTo(SkBits2Float(0x15e80300), SkBits2Float(0x400004dc)); // 9.37088e-26f, 2.0003f
8954path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0xb4bc576c)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, -3.50813e-07f
8955
8956 SkPath path1(path);
8957 path.reset();
8958 path.setFillType((SkPath::FillType) 0);
8959path.setFillType(SkPath::kWinding_FillType);
8960path.moveTo(SkBits2Float(0x1b000010), SkBits2Float(0x6e5a5a1b)); // 1.05879e-22f, 1.68942e+28f
8961path.quadTo(SkBits2Float(0xef646464), SkBits2Float(0xefefefef), SkBits2Float(0x000000ef), SkBits2Float(0x1bb4bc00)); // -7.06839e+28f, -1.48514e+29f, 3.3491e-43f, 2.99e-22f
8962
8963 SkPath path2(path);
8964 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8965}
8966
8967
8968static void op_2(skiatest::Reporter* reporter, const char* filename) {
8969 SkPath path;
8970 path.setFillType((SkPath::FillType) 1);
8971path.setFillType(SkPath::kEvenOdd_FillType);
8972path.moveTo(SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.52712e+28f, -7.02543e+28f
8973path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // -3.69233e+28f, -6.95103e+28f, 0, 1.68942e+28f
8974path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8975path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, 0
8976path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8977path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.37607e+28f, -7.09345e+28f, -3.52712e+28f, -7.02543e+28f
8978path.close();
8979
8980 SkPath path1(path);
8981 path.reset();
8982 path.setFillType((SkPath::FillType) 0);
8983path.setFillType(SkPath::kWinding_FillType);
8984path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8985path.lineTo(SkBits2Float(0x1b1b1b00), SkBits2Float(0x1b5a5a1b)); // 1.283e-22f, 1.80617e-22f
8986
8987 SkPath path2(path);
8988 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
8989}
8990
8991
8992static void op_3(skiatest::Reporter* reporter, const char* filename) {
8993 SkPath path;
8994 path.setFillType((SkPath::FillType) 1);
8995path.setFillType(SkPath::kEvenOdd_FillType);
8996path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
8997path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.69233e+28f, -6.95103e+28f, -3.52712e+28f, -7.02543e+28f
8998path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -3.37607e+28f, -7.09345e+28f, 0, 0
8999path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
9000path.close();
9001path.moveTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
9002path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 0, 0
9003path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9004path.lineTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
9005path.close();
9006
9007 SkPath path1(path);
9008 path.reset();
9009 path.setFillType((SkPath::FillType) 0);
9010path.setFillType(SkPath::kWinding_FillType);
9011
9012 SkPath path2(path);
9013 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
9014}
9015
9016static void op_4(skiatest::Reporter* reporter, const char* filename) {
9017 SkPath patha, pathb;
9018
9019 patha.setFillType(SkPath::kEvenOdd_FillType);
9020 patha.moveTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9021 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3fa58930)); // 5.41377f, 1.29325f
9022 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3edba819)); // 5.41377f, 0.429017f
9023 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3edba819)); // 7.88304f, 0.429017f
9024 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3f3b7c94)); // 7.88304f, 0.73237f
9025 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3f3b7c94)); // 6.74738f, 0.73237f
9026 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9027 patha.close();
9028
9029 pathb.setFillType(SkPath::kEvenOdd_FillType);
9030 pathb.moveTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9031 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x409a721d)); // 9.66344f, 4.82643f
9032 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x3f3b7c9a)); // 9.66344f, 0.73237f
9033 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x3f3b7c9a)); // 6.74738f, 0.73237f
9034 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9035 pathb.close();
9036 testPathOp(reporter, patha, pathb, kDifference_SkPathOp, filename);
9037}
9038
Yuqian Li3154a532017-09-06 13:33:30 -04009039static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0;
9040static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
9041static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
9042
9043#define TEST(name) { name, #name }
9044
9045static struct TestDesc tests[] = {
Cary Clarkcadc5062018-08-06 17:24:04 -04009046 TEST(op_4),
9047 TEST(op_1),
9048 TEST(op_2),
9049 TEST(op_3),
Cary Clark2587f412018-07-24 12:40:10 -04009050 TEST(grshapearcs1),
Cary Clark1d314432018-07-10 10:57:54 -04009051 TEST(filinmangust14),
Cary Clark1bb47df2018-06-18 08:53:00 -04009052 TEST(testRect1_u),
Cary Clark3a4a3212018-06-06 15:22:08 -04009053 TEST(halbug),
Cary Clark22582502017-12-13 14:56:53 -05009054 TEST(seanbug),
Yuqian Li3154a532017-09-06 13:33:30 -04009055 TEST(android1),
9056 TEST(bug5240),
9057 TEST(circlesOp4),
9058 TEST(loop17),
9059 TEST(cubicOp158),
9060 TEST(loops_i1),
9061 TEST(loops_i2),
9062 TEST(loops_i3),
9063 TEST(loops_i4),
9064 TEST(loops_i5),
9065 TEST(loops_i6),
9066 TEST(cubics_d3),
9067 TEST(cubics_o),
9068 TEST(cubics_d2),
9069 TEST(cubics_d),
9070 TEST(dean2),
9071 TEST(fuzzX_392),
9072 TEST(crbug_526025),
9073 TEST(fuzz38),
9074 TEST(cubics44d),
9075 TEST(cubics45u),
9076 TEST(loops61i),
9077 TEST(loops62i),
9078 TEST(loops63i),
9079 TEST(loops58iAsQuads),
9080 TEST(cubics41d),
9081 TEST(loops59iasQuads),
9082 TEST(loops59i),
9083 TEST(loops44i),
9084 TEST(loops45i),
9085 TEST(loops46i),
9086 TEST(loops47i),
9087 TEST(loops48i),
9088 TEST(loops49i),
9089 TEST(loops50i),
9090 TEST(loops51i),
9091 TEST(loops52i),
9092 TEST(loops53i),
9093 TEST(loops54i),
9094 TEST(loops55i),
9095 TEST(loops56i),
9096 TEST(loops57i),
9097 TEST(loops58i),
9098 TEST(loops33iMod),
9099 TEST(loops33iAsQuads),
9100 TEST(loops33i),
9101 TEST(loops40i),
9102 TEST(loops40iAsQuads),
9103 TEST(loops39i),
9104 TEST(loops38i),
9105 TEST(loops37i),
9106 TEST(loops36i),
9107 TEST(loops35i),
9108 TEST(loops34i),
9109 TEST(loops32i),
9110 TEST(loops31i),
9111 TEST(loops30i),
9112 TEST(loops29i),
9113 TEST(loops28i),
9114 TEST(loops27i),
9115 TEST(loops26i),
9116 TEST(loops25i),
9117 TEST(loops24i),
9118 TEST(loops23i),
9119 TEST(loops22i),
9120 TEST(loops21i),
9121 TEST(loops20i),
9122 TEST(cubics20d),
9123 TEST(cubics6d),
9124 TEST(cubics7d),
9125 TEST(cubics8d),
9126 TEST(cubics9d),
9127 TEST(cubics10u),
9128 TEST(cubics11i),
9129 TEST(cubics12d),
9130 TEST(cubics13d),
9131 TEST(cubics14d),
9132 TEST(cubics15d),
9133 TEST(cubics16i),
9134 TEST(cubics17d),
9135 TEST(cubics18d),
9136 TEST(cubics19d),
9137 TEST(cubicOp157),
9138 TEST(cubicOp142),
9139 TEST(loops4i),
9140 TEST(quadRect1),
9141 TEST(quadRect2),
9142 TEST(quadRect3),
9143 TEST(quadRect4),
9144 TEST(quadRect5),
9145 TEST(quadRect6),
9146 TEST(cubicOp141),
9147 TEST(cubicOp58d),
9148 TEST(loops5i),
9149 TEST(cubicOp140),
9150 TEST(cubicOp139),
9151 TEST(cubics138),
9152 TEST(cubics137),
9153 TEST(cubicOp136a),
9154 TEST(cubicOp136),
9155 TEST(cubicOp135),
9156 TEST(cubicOp134),
9157 TEST(cubicOp133),
9158 TEST(loop12),
9159 TEST(cubicOp132),
9160 TEST(loop11),
9161 TEST(loop10),
9162 TEST(circlesOp3),
9163 TEST(loop9),
9164 TEST(loop8),
9165 TEST(rects5),
9166 TEST(loop7),
9167 TEST(cubicOp130a),
9168 TEST(rRect1x),
9169 TEST(circlesOp2),
9170 TEST(circlesOp1),
9171 TEST(cubicOp131),
9172 TEST(cubicOp130),
9173 TEST(cubicOp129),
9174 TEST(cubicOp128),
9175 TEST(cubicOp127),
9176 TEST(cubicOp126),
9177 TEST(cubicOp125),
9178 TEST(cubicOp124),
9179 TEST(loop6),
9180 TEST(loop5),
9181 TEST(cubicOp123),
9182 TEST(cubicOp122),
9183 TEST(cubicOp121),
9184 TEST(cubicOp120),
9185 TEST(cubicOp119),
9186 TEST(loop4),
9187 TEST(loop3),
9188 TEST(loop2),
9189 TEST(loop1asQuad),
9190 TEST(loop1),
9191 TEST(issue3517),
9192 TEST(cubicOp118),
9193 TEST(cubicOp117),
9194 TEST(cubicOp116),
9195 TEST(testRect2),
9196 TEST(testRect1),
9197 TEST(cubicOp115),
9198 TEST(issue2753),
9199 TEST(cubicOp114),
9200 TEST(issue2808),
9201 TEST(cubicOp114asQuad),
9202 TEST(rects4),
9203 TEST(rects3),
9204 TEST(rects2),
9205 TEST(rects1),
9206 TEST(issue2540),
9207 TEST(issue2504),
9208 TEST(kari1),
9209 TEST(quadOp10i),
9210 TEST(cubicOp113),
9211 TEST(skpcarrot_is24),
9212 TEST(issue1417),
9213 TEST(cubicOp112),
9214 TEST(skpadspert_net23),
9215 TEST(skpadspert_de11),
9216 TEST(findFirst1),
9217 TEST(xOp2i),
9218 TEST(xOp3i),
9219 TEST(xOp1u),
9220 TEST(xOp1i),
9221 TEST(cubicOp111),
9222 TEST(cubicOp110),
9223 TEST(cubicOp109),
9224 TEST(cubicOp108),
9225 TEST(cubicOp107),
9226 TEST(cubicOp106),
9227 TEST(cubicOp105),
9228 TEST(cubicOp104),
9229 TEST(cubicOp103),
9230 TEST(cubicOp102),
9231 TEST(cubicOp101),
9232 TEST(cubicOp100),
9233 TEST(cubicOp99),
9234 TEST(issue1435),
9235 TEST(cubicOp98x),
9236 TEST(cubicOp97x),
9237 TEST(skpcarpetplanet_ru22),
9238 TEST(cubicOp96d),
9239 TEST(cubicOp95u),
9240 TEST(skpadbox_lt15),
9241 TEST(skpagentxsites_com55),
9242 TEST(skpadventistmission_org572),
9243 TEST(skpadoption_org196),
9244 TEST(skpbambootheme_com12),
9245 TEST(skpbakosoft_com10),
9246 TEST(skpakmmos_ru100),
9247 TEST(skpbangalorenest_com4),
9248 TEST(skpbingoentertainment_net189),
9249 TEST(skpbestred_ru37),
9250 TEST(skpbenzoteh_ru152),
9251 TEST(skpcamcorder_kz21),
9252 TEST(skpcaffelavazzait_com_ua21),
9253 TEST(skpcarrefour_ro62),
9254 TEST(skpcavablar_net563),
9255 TEST(skpinsomnia_gr72),
9256 TEST(skpadbox_lt8),
9257 TEST(skpact_com43),
9258 TEST(skpacesoftech_com47),
9259 TEST(skpabcspark_ca103),
9260 TEST(cubicOp94u),
9261 TEST(cubicOp93d),
9262 TEST(cubicOp92i),
9263 TEST(skpadithya_putr4_blogspot_com551),
9264 TEST(skpadindex_de4),
9265 TEST(skpaiaigames_com870),
9266 TEST(skpaaalgarve_org53),
9267 TEST(skpkkiste_to716),
9268 TEST(cubicOp91u),
9269 TEST(cubicOp90u),
9270 TEST(cubicOp89u),
9271 TEST(cubicOp88u),
9272 TEST(cubicOp87u),
9273 TEST(cubicOp86i),
9274 TEST(loopEdge2),
9275 TEST(loopEdge1),
9276 TEST(rectOp3x),
9277 TEST(rectOp2i),
9278 TEST(rectOp1i),
9279 TEST(issue1418b),
9280 TEST(cubicOp85i),
9281 TEST(issue1418),
9282 TEST(skpkkiste_to98),
9283 TEST(skpahrefs_com29),
9284 TEST(cubicOp85d),
9285 TEST(skpahrefs_com88),
9286 TEST(skphealth_com76),
9287 TEST(skpancestry_com1),
9288 TEST(skpbyte_com1),
9289 TEST(skpeldorado_com_ua1),
9290 TEST(skp96prezzi1),
9291 TEST(skpClip2),
9292 TEST(skpClip1),
9293 TEST(cubicOp84d),
9294 TEST(cubicOp83i),
9295 TEST(cubicOp82i),
9296 TEST(cubicOp81d),
9297 TEST(cubicOp80i),
9298 TEST(cubicOp79u),
9299 TEST(cubicOp78u),
9300 TEST(cubicOp77i),
9301 TEST(cubicOp76u),
9302 TEST(cubicOp75d),
9303 TEST(cubicOp74d),
9304 TEST(cubicOp73d),
9305 TEST(cubicOp72i),
9306 TEST(cubicOp71d),
9307 TEST(skp5),
9308 TEST(skp4),
9309 TEST(skp3),
9310 TEST(skp2),
9311 TEST(skp1),
9312 TEST(rRect1),
9313 TEST(cubicOp70d),
9314 TEST(cubicOp69d),
9315 TEST(cubicOp68u),
9316 TEST(cubicOp67u),
9317 TEST(cubicOp66u),
9318 TEST(rectOp1d),
9319 TEST(cubicOp65d),
9320 TEST(cubicOp64d),
9321 TEST(cubicOp63d),
9322 TEST(cubicOp62d),
9323 TEST(cubicOp61d),
9324 TEST(cubicOp60d),
9325 TEST(cubicOp59d),
9326 TEST(cubicOp57d),
9327 TEST(cubicOp56d),
9328 TEST(cubicOp55d),
9329 TEST(cubicOp54d),
9330 TEST(cubicOp53d),
9331 TEST(cubicOp52d),
9332 TEST(cubicOp51d),
9333 TEST(cubicOp50d),
9334 TEST(cubicOp49d),
9335 TEST(cubicOp48d),
9336 TEST(cubicOp47d),
9337 TEST(cubicOp46d),
9338 TEST(cubicOp45d),
9339 TEST(cubicOp44d),
9340 TEST(cubicOp43d),
9341 TEST(cubicOp42d),
9342 TEST(cubicOp41i),
9343 TEST(cubicOp40d),
9344 TEST(cubicOp39d),
9345 TEST(cubicOp38d),
9346 TEST(cubicOp37d),
9347 TEST(cubicOp36u),
9348 TEST(cubicOp35d),
9349 TEST(cubicOp34d),
9350 TEST(cubicOp33i),
9351 TEST(cubicOp32d),
9352 TEST(cubicOp31d),
9353 TEST(cubicOp31x),
9354 TEST(cubicOp31u),
9355 TEST(cubicOp30d),
9356 TEST(cubicOp29d),
9357 TEST(cubicOp28u),
9358 TEST(cubicOp27d),
9359 TEST(cubicOp26d),
9360 TEST(cubicOp25i),
9361 TEST(testOp8d),
9362 TEST(testDiff1),
9363 TEST(testIntersect1),
9364 TEST(testUnion1),
9365 TEST(testXor1),
9366 TEST(testDiff2),
9367 TEST(testIntersect2),
9368 TEST(testUnion2),
9369 TEST(testXor2),
9370 TEST(testOp1d),
9371 TEST(testOp2d),
9372 TEST(testOp3d),
9373 TEST(testOp1u),
9374 TEST(testOp4d),
9375 TEST(testOp5d),
9376 TEST(testOp6d),
9377 TEST(testOp7d),
9378 TEST(testOp2u),
9379
9380 TEST(cubicOp24d),
9381 TEST(cubicOp23d),
9382 TEST(cubicOp22d),
9383 TEST(cubicOp21d),
9384 TEST(cubicOp20d),
9385 TEST(cubicOp19i),
9386 TEST(cubicOp18d),
9387 TEST(cubicOp17d),
9388 TEST(cubicOp16d),
9389 TEST(cubicOp15d),
9390 TEST(cubicOp14d),
9391 TEST(cubicOp13d),
9392 TEST(cubicOp12d),
9393 TEST(cubicOp11d),
9394 TEST(cubicOp10d),
9395 TEST(cubicOp1i),
9396 TEST(cubicOp9d),
9397 TEST(quadOp9d),
9398 TEST(lineOp9d),
9399 TEST(cubicOp8d),
9400 TEST(cubicOp7d),
9401 TEST(cubicOp6d),
9402 TEST(cubicOp5d),
9403 TEST(cubicOp3d),
9404 TEST(cubicOp2d),
9405 TEST(cubicOp1d),
9406};
9407
9408static const size_t testCount = SK_ARRAY_COUNT(tests);
9409
9410static struct TestDesc subTests[] = {
9411 TEST(loops47i),
9412 TEST(loops61i),
9413 TEST(loops62i),
9414 TEST(issue3517),
9415};
9416
9417static const size_t subTestCount = SK_ARRAY_COUNT(subTests);
9418
9419static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = nullptr;
9420
9421static bool runSubTests = false;
9422static bool runSubTestsFirst = true;
9423static bool runReverse = false;
9424
9425DEF_TEST(PathOpsOp, reporter) {
9426#if DEBUG_SHOW_TEST_NAME
9427 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
9428#endif
9429 if (runSubTests && runSubTestsFirst) {
9430 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9431 }
9432 RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
9433 if (runSubTests && !runSubTestsFirst) {
9434 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9435 }
9436}
9437
Cary Clarkafca4d62017-12-01 15:23:00 -05009438static void fuzz767834(skiatest::Reporter* reporter, const char* filename) {
9439 SkPath one;
9440 SkPath two;
9441one.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9442
9443one.conicTo(SkBits2Float(0x02807252), SkBits2Float(0xee23000a), SkBits2Float(0x00000000), SkBits2Float(0x0fe00008), SkBits2Float(0x52526831)); // 1.88735e-37f, -1.26115e+28f, 0, 2.20881e-29f, 2.25923e+11f
9444
9445one.cubicTo(SkBits2Float(0x474d475a), SkBits2Float(0x72727252), SkBits2Float(0x72267272), SkBits2Float(0x535202ff), SkBits2Float(0x53535353), SkBits2Float(0x58943353)); // 52551.4f, 4.80215e+30f, 3.29682e+30f, 9.01993e+11f, 9.07636e+11f, 1.30359e+15f
9446
9447one.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x52595252), SkBits2Float(0x8e460900), SkBits2Float(0x7272db72)); // 2.60326e+11f, 2.33347e+11f, -2.44097e-30f, 4.81028e+30f
9448
9449one.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9450
9451one.close();
9452
9453one.moveTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9454
9455one.quadTo(SkBits2Float(0x60727272), SkBits2Float(0x72727272), SkBits2Float(0x2a527272), SkBits2Float(0x72525252)); // 6.98806e+19f, 4.80216e+30f, 1.86915e-13f, 4.16585e+30f
9456
9457one.cubicTo(SkBits2Float(0x72727251), SkBits2Float(0x52617272), SkBits2Float(0x46032352), SkBits2Float(0x7272728e), SkBits2Float(0x5c527272), SkBits2Float(0x72726552)); // 4.80215e+30f, 2.42072e+11f, 8392.83f, 4.80217e+30f, 2.36942e+17f, 4.80114e+30f
9458
9459one.cubicTo(SkBits2Float(0x2b7280ff), SkBits2Float(0x7240ffff), SkBits2Float(0x72724960), SkBits2Float(0x52008072), SkBits2Float(0x72725230), SkBits2Float(0x5f727272)); // 8.61547e-13f, 3.82276e+30f, 4.79898e+30f, 1.37978e+11f, 4.79966e+30f, 1.74702e+19f
9460
9461one.lineTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9462
9463one.close();
9464
9465one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9466
9467one.close();
9468
9469one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9470
9471one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9472
9473one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9474
9475one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9476
9477one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9478
9479one.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x58943303), SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x00090052), SkBits2Float(0x72000000)); // -1.29345e+20f, 1.30357e+15f, 4.80216e+30f, 3.70002e+15f, 8.26634e-40f, 2.5353e+30f
9480
9481one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9482
9483one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9484
9485one.close();
9486
9487one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9488
9489one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9490
9491one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x46090052), SkBits2Float(0x72db728e)); // 4.80216e+30f, 3.70002e+15f, 8768.08f, 8.69321e+30f
9492
9493one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9494
9495one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9496
9497one.close();
9498
9499one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9500
9501one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9502
9503one.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460323), SkBits2Float(0x72727272), SkBits2Float(0x525c5272)); // 2.25894e+11f, -2.44069e-30f, 4.80216e+30f, 2.36569e+11f
9504
9505one.conicTo(SkBits2Float(0xff727272), SkBits2Float(0xff2b549b), SkBits2Float(0x607240ff), SkBits2Float(0x72727249), SkBits2Float(0x30520080)); // -3.22267e+38f, -2.27737e+38f, 6.98249e+19f, 4.80215e+30f, 7.63983e-10f
9506
9507one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9508
9509one.close();
9510
9511one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9512
9513one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x0052525f), SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // 4.80216e+30f, 7.56006e-39f, -2.59182e-30f, 4.80216e+30f
9514
9515one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9516
9517one.close();
9518
9519one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9520
9521one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9522
9523one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9524
9525one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9526
9527one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9528
9529one.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x58943303), SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x46090052), SkBits2Float(0x72db728e)); // -1.29345e+20f, 1.30357e+15f, 4.80216e+30f, 3.70002e+15f, 8768.08f, 8.69321e+30f
9530
9531one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9532
9533one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9534
9535one.close();
9536
9537one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9538
9539one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9540
9541 testPathOpFuzz(reporter, two, one, kIntersect_SkPathOp, filename);
9542}
9543
Yuqian Li3154a532017-09-06 13:33:30 -04009544static void fuzz535151(skiatest::Reporter* reporter, const char* filename) {
9545 SkPath one;
9546 one.setFillType(SkPath::kWinding_FillType);
9547 SkPath two;
9548 two.setFillType(SkPath::kWinding_FillType);
9549 two.moveTo(0, 0);
9550 two.lineTo(0, 50);
9551 two.lineTo(4.29497e+09f, 50);
9552 SkPath dummy;
9553 testPathOpFuzz(reporter, one, two, kIntersect_SkPathOp, filename);
9554}
9555
9556static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
9557 SkPath path;
9558 path.addRect(0,0, 300,170141183460469231731687303715884105728.f);
9559 SkPath pathB;
9560 pathB.addRect(0,0, 300,16);
9561 testPathOpFuzz(reporter, path, pathB, kUnion_SkPathOp, filename);
9562}
9563
9564// m 100,0 60,170 -160,-110 200,0 -170,11000000000 z
9565static void fuzz433(skiatest::Reporter* reporter, const char* filename) {
9566 SkPath path1, path2;
9567 path1.moveTo(100,0);
9568 path1.lineTo(60,170);
9569 path1.lineTo(-160,-110);
9570 path1.lineTo(200,0);
9571 path1.lineTo(-170,11000000000.0f);
9572 path1.close();
9573
9574 path2.moveTo(100 + 20,0 + 20);
9575 path2.lineTo(60 + 20,170 + 20);
9576 path2.lineTo(-160 + 20,-110 + 20);
9577 path2.lineTo(200 + 20,0 + 20);
9578 path2.lineTo(-170 + 20,11000000000.0f + 20);
9579 path2.close();
9580
9581 testPathOpFuzz(reporter, path1, path2, kIntersect_SkPathOp, filename);
9582}
9583
9584static void fuzz433b(skiatest::Reporter* reporter, const char* filename) {
9585 SkPath path1, path2;
9586 path1.setFillType(SkPath::kEvenOdd_FillType);
9587 path1.moveTo(140, 40);
9588 path1.lineTo(200, 210);
9589 path1.lineTo(40, 100);
9590 path1.lineTo(240, 100);
9591 path1.lineTo(70, 1.1e+10f);
9592 path1.lineTo(140, 40);
9593 path1.close();
9594
9595 path1.setFillType(SkPath::kWinding_FillType);
9596 path2.moveTo(190, 60);
9597 path2.lineTo(250, 230);
9598 path2.lineTo(90, 120);
9599 path2.lineTo(290, 120);
9600 path2.lineTo(120, 1.1e+10f);
9601 path2.lineTo(190, 60);
9602 path2.close();
9603
9604 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9605}
9606
9607static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
9608 SkPath path;
9609 path.setFillType((SkPath::FillType) 0);
9610path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9611path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9612path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9613path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9614path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9615path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9616path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9617path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9618path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9619path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9620path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9621path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9622path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9623path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9624path.close();
9625
9626 SkPath path1(path);
9627 path.reset();
9628 path.setFillType((SkPath::FillType) 0);
9629path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9630path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9631path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9632path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9633path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9634path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9635path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9636path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9637path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9638path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9639path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9640path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9641path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9642path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9643path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9644path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9645path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9646path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9647path.close();
9648
9649 SkPath path2(path);
9650 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9651}
9652
9653static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
9654 SkPath path;
9655 path.setFillType((SkPath::FillType) 0);
9656path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9657path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9658path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9659path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9660path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9661path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9662path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9663path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9664path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9665path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9666path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9667path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9668path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9669path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9670path.close();
9671
9672 SkPath path1(path);
9673 path.reset();
9674 path.setFillType((SkPath::FillType) 0);
9675path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9676path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9677path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9678path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9679path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9680path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9681path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9682path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9683path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9684path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9685path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9686path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9687path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9688path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9689path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9690path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9691path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9692path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9693path.close();
9694
9695 SkPath path2(path);
9696 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9697}
9698
9699static void fuzz714(skiatest::Reporter* reporter, const char* filename) {
9700 SkPath path;
9701 path.setFillType((SkPath::FillType) 1);
9702path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9703path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000));
9704path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000));
9705path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+022f
9706path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+022f
9707path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9708path.close();
9709
9710 SkPath path1(path);
9711 path.reset();
9712 path.setFillType((SkPath::FillType) 0);
9713path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9714path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000));
9715path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000));
9716path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+022f
9717path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+022f
9718path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9719path.close();
9720
9721 SkPath path2(path);
9722 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9723}
9724
9725static void fuzz1(skiatest::Reporter* reporter, const char* filename) {
9726 SkPath path;
9727 path.setFillType((SkPath::FillType) 0);
9728path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9729path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9730path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9731path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000));
9732path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000));
9733path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000));
9734path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001));
9735path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000));
9736path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9737path.close();
9738
9739 SkPath path1(path);
9740 path.reset();
9741 path.setFillType((SkPath::FillType) 0);
9742
9743 SkPath path2(path);
9744 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9745}
9746
9747
9748static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) {
9749 SkPath path;
9750 path.setFillType((SkPath::FillType) 0);
9751path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0
9752path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0
9753path.cubicTo(SkBits2Float(0x42166668), SkBits2Float(0xc1966668), SkBits2Float(0x41c66668), SkBits2Float(0xc20a6666), SkBits2Float(0x40f00010), SkBits2Float(0xc21ccccd)); // 37.6f, -18.8f, 24.8f, -34.6f, 7.50001f, -39.2f
9754path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72.9f
9755path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99.6f
9756path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272.1f
9757
9758 SkPath path1(path);
9759 path.reset();
9760 path.setFillType((SkPath::FillType) 0);
9761path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, -2.72189e+09f
9762path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, -2.72189e+09f
9763path.cubicTo(SkBits2Float(0x4220d9fc), SkBits2Float(0xcf223cc0), SkBits2Float(0x420ee118), SkBits2Float(0xcf223cc0), SkBits2Float(0x41cef2f8), SkBits2Float(0xcf223cc0)); // 40.2129f, -2.72189e+09f, 35.7198f, -2.72189e+09f, 25.8686f, -2.72189e+09f
9764path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, -2.72189e+09f
9765path.cubicTo(SkBits2Float(0x42266e32), SkBits2Float(0xcf223cc0), SkBits2Float(0x41f0fa20), SkBits2Float(0xcf223cc0), SkBits2Float(0x41872ed4), SkBits2Float(0xcf223cc0)); // 41.6076f, -2.72189e+09f, 30.1221f, -2.72189e+09f, 16.8979f, -2.72189e+09f
9766path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, -2.72189e+09f
9767
9768 SkPath path2(path);
9769 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9770}
9771
9772static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
9773SkPath path;
9774path.setFillType((SkPath::FillType) 0);
9775path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
9776path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
9777path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44aa2000)); // 280, 1213, 456, 980, 8, 1361
9778path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
9779path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15f, -3.32567e+15f
9780path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0xd888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1.20234e+15f, -5.69712e+15f, 0.368542f
9781path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x448ca000)); // 384, 746, 46, 647, 52, 1125
9782path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x43880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
9783SkPath path1(path);
9784path.reset();
9785path.setFillType((SkPath::FillType) 0);
9786path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
9787path.cubicTo(SkBits2Float(0xc51d1dbd), SkBits2Float(0xc49d7a3f), SkBits2Float(0xc51c524a), SkBits2Float(0xc49d1610), SkBits2Float(0xc51d1a96), SkBits2Float(0xc49d86a6)); // -2513.86f, -1259.82f, -2501.14f, -1256.69f, -2513.66f, -1260.21f
9788path.cubicTo(SkBits2Float(0xc51cd471), SkBits2Float(0xc49d54d0), SkBits2Float(0xc51c2e51), SkBits2Float(0xc49d0081), SkBits2Float(0xc51d197b), SkBits2Float(0xc49d7927)); // -2509.28f, -1258.65f, -2498.89f, -1256.02f, -2513.59f, -1259.79f
9789path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.81f
9790path.cubicTo(SkBits2Float(0xc51bac0d), SkBits2Float(0xc49cc50e), SkBits2Float(0xc51c29eb), SkBits2Float(0xc49cfb01), SkBits2Float(0xc51c5bca), SkBits2Float(0xc49d1fa6)); // -2490.75f, -1254.16f, -2498.62f, -1255.84f, -2501.74f, -1256.99f
9791SkPath path2(path);
9792testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9793}
9794
9795static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) {
9796SkPath path;
9797path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
9798path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 1.07374e+09f, -1.07374e+09f, 0.707107f
9799path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 180.5f, 256, 0.707107f
9800SkPath path1(path);
9801path.reset();
9802path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9803path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9804path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9805path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9806path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9807path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9808path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9809path.close();
9810SkPath path2(path);
9811testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9812}
9813
9814static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) {
9815SkPath path;
9816path.setFillType(SkPath::kEvenOdd_FillType);
9817path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09f, -1.07374e+09f
9818path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 360, -2.14748e+09f, 0.707107f
9819path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9820path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9821path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9822path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9823path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9824path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9825path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9826path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9827path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9828path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9829path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 1.07374e+09f, -1.07374e+09f, 0.707107f
9830path.close();
9831SkPath path1(path);
9832path.reset();
9833path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9834path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
9835path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
9836path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
9837path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9838path.close();
9839SkPath path2(path);
9840testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9841}
9842
9843static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) {
9844 SkPath path;
9845 path.setFillType((SkPath::FillType) 1);
9846
9847 SkPath path1(path);
9848 path.reset();
9849 path.setFillType((SkPath::FillType) 0);
9850path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9851path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b), SkBits2Float(0x1f212a8c)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, -4.84373e+27f, 3.41283e-20f
9852path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36f, -4.84373e+27f
9853path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
9854path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9855path.close();
9856path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9857path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21f, 5.54035e+21f
9858path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14f, 3.13044e-13f
9859path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, -8.43217e-33f
9860path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15f, 2.8457e+15f
9861path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, 0.00105459f
9862path.cubicTo(SkBits2Float(0x373b3ac5), SkBits2Float(0x201fc422), SkBits2Float(0x523a702a), SkBits2Float(0x27576c51), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70)); // 1.11598e-05f, 1.35327e-19f, 2.00186e+11f, 2.9896e-15f, 2.8457e+15f, 5.64327e+10f
9863path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-08f, 0.000712428f
9864path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7.82294e-14f
9865
9866 SkPath path2(path);
9867 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9868}
9869
9870
9871static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) {
9872 SkPath path;
9873 path.setFillType((SkPath::FillType) 1);
9874
9875 SkPath path1(path);
9876 path.reset();
9877 path.setFillType((SkPath::FillType) 0);
9878path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9879path.lineTo(SkBits2Float(0x555b3a2d), SkBits2Float(0x2a212a8c)); // 1.50652e+13f, 1.43144e-13f
9880path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
9881path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac2b33a)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148544f
9882path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x295b2d2a), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c275b)); // 2.25206e-21f, 5.54035e+21f, 4.86669e-14f, 3.19905e+24f, 9.6297e-12f, 2.48963e-13f
9883path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9884path.close();
9885path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9886path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x2a21081f)); // 1.43144e-13f, 1.43025e-13f
9887path.conicTo(SkBits2Float(0xde6a4b7b), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // -4.22068e+18f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
9888path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9889path.close();
9890path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9891path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9892path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14f, 1.63506e-12f
9893path.conicTo(SkBits2Float(0x2a812a63), SkBits2Float(0x2d292a27), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x552d6829)); // 2.29444e-13f, 9.6159e-12f, 1.5954e+13f, 4.87407e+16f, 1.19164e+13f
9894path.conicTo(SkBits2Float(0x395b2d5b), SkBits2Float(0x68552768), SkBits2Float(0x555b2df0), SkBits2Float(0x1f722a8c), SkBits2Float(0x082a212a)); // 0.000209024f, 4.02636e+24f, 1.50619e+13f, 5.12807e-20f, 5.11965e-34f
9895path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9896path.close();
9897path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9898path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x21df212a), SkBits2Float(0x033a8a3a)); // 6.14991e+25f, 6.77381e-19f, 9.33503e-15f, 1.51198e-18f, 5.48192e-37f
9899
9900 SkPath path2(path);
9901 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9902}
9903
9904static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) {
9905 SkPath path;
9906 path.setFillType((SkPath::FillType) 1);
9907
9908 SkPath path1(path);
9909 path.reset();
9910 path.setFillType((SkPath::FillType) 0);
9911path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9912path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
9913path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x295b2d1f), SkBits2Float(0x29685568)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.86669e-14f, 5.15884e-14f
9914path.conicTo(SkBits2Float(0x8c28295b), SkBits2Float(0x1f21212a), SkBits2Float(0xc0032a08), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced)); // -1.29547e-31f, 3.41205e-20f, -2.04944f, 3.04132e+35f, 5.77848e-19f
9915path.moveTo(SkBits2Float(0x25682929), SkBits2Float(0x212a8c5b)); // 2.01367e-16f, 5.7784e-19f
9916path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4a7bc0)); // 4.7323e-37f, 6.11969e+25f
9917path.conicTo(SkBits2Float(0x032108ed), SkBits2Float(0x283a7bc0), SkBits2Float(0x47ed7a6a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21ff28)); // 4.73239e-37f, 1.03519e-14f, 121589, 9.4495e-15f, 0.000617968f
9918path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.00148185f, 1.50241e-13f, -1.38859e-25f
9919path.lineTo(SkBits2Float(0x295b2d2a), SkBits2Float(0x2d296868)); // 4.86669e-14f, 9.62972e-12f
9920path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9921path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x898ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, -3.39271e-33f, 4.61198e-19f, 0.00096035f, 121589
9922path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9923path.close();
9924path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9925path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0xb38a281a), SkBits2Float(0x29283ac2)); // -1.2117e+19f, 0.00105459f, -6.43342e-08f, 3.73545e-14f
9926path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-25f, 170.161f
9927path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
9928path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51503a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.58959e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
9929path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f, 5.21181e+16f
9930path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723f, 3.59558e-14f
9931path.cubicTo(SkBits2Float(0x5e215d3b), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x50783be8), SkBits2Float(0x9e0b8a3a), SkBits2Float(0x555b2d68)); // 2.90688e+18f, 1.37053e+34f, -2.07925e-30f, 1.66587e+10f, -7.38718e-21f, 1.50618e+13f
9932path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19f, -9.01663e-20f
9933path.cubicTo(SkBits2Float(0x3a293a2a), SkBits2Float(0x0e3bf0c5), SkBits2Float(0x3b29d42a), SkBits2Float(0x0f217265), SkBits2Float(0x2d5d2921), SkBits2Float(0x5568295b)); // 0.000645551f, 2.31655e-30f, 0.00259138f, 7.95994e-30f, 1.25715e-11f, 1.5954e+13f
9934
9935 SkPath path2(path);
9936 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9937}
9938
9939static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) {
9940 SkPath path;
9941 path.setFillType((SkPath::FillType) 1);
9942
9943 SkPath path1(path);
9944 path.reset();
9945 path.setFillType((SkPath::FillType) 0);
9946path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9947path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b79), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
9948path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9949path.cubicTo(SkBits2Float(0xe62a2928), SkBits2Float(0x2a63962b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x001f2a21)); // -2.0089e+23f, 2.02138e-13f, 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 2.86201e-39f
9950path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9951path.close();
9952path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9953path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
9954path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9955path.close();
9956path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9957path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x28ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f, 3.19671e+24f
9958path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16f, 4.88495e+16f
9959
9960 SkPath path2(path);
9961 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
9962}
9963
9964static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) {
9965 SkPath path;
9966 path.setFillType((SkPath::FillType) 1);
9967
9968 SkPath path1(path);
9969 path.reset();
9970 path.setFillType((SkPath::FillType) 0);
9971path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9972path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
9973path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
9974path.lineTo(SkBits2Float(0x081f2ad7), SkBits2Float(0x7bc00321)); // 4.78977e-34f, 1.99397e+36f
9975path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9976path.quadTo(SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28), SkBits2Float(0x29283ac2), SkBits2Float(0x962be62a)); // 2.58753e+09f, 0.00136978f, 3.73545e-14f, -1.38859e-25f
9977path.cubicTo(SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42237)); // 2.36623e-15f, 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
9978path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.64327e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
9979path.lineTo(SkBits2Float(0x29292727), SkBits2Float(0x21475b3b)); // 3.75595e-14f, 6.75446e-19f
9980path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9981path.cubicTo(SkBits2Float(0x682d2928), SkBits2Float(0x555b6829), SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 3.27091e+24f, 1.50775e+13f, 1.50606e+13f, 1.43144e-13f, 4.7323e-37f, 6.14991e+25f
9982path.conicTo(SkBits2Float(0x295b2ded), SkBits2Float(0x29685568), SkBits2Float(0x8c555b2d), SkBits2Float(0xe61d2a2a), SkBits2Float(0x2a63962b)); // 4.86676e-14f, 5.15884e-14f, -1.64364e-31f, -1.85547e+23f, 2.02138e-13f
9983path.conicTo(SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x4b7bc003)); // 1.5954e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 1.64987e+07f
9984path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
9985path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x8a3a21df), SkBits2Float(0x27b42a3a)); // 5.63611e+25f, 6.77381e-19f, 9.33503e-15f, -8.96194e-33f, 5.00058e-15f
9986path.conicTo(SkBits2Float(0x2921217d), SkBits2Float(0x5e3a3b35), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x783be82a)); // 3.57782e-14f, 3.35484e+18f, 1.37053e+34f, -2.07925e-30f, 1.52448e+34f
9987path.conicTo(SkBits2Float(0x8e0b8a3a), SkBits2Float(0x279fd4e6), SkBits2Float(0x7a293a2a), SkBits2Float(0x2a0ef0c5), SkBits2Float(0x653b29d4)); // -1.71996e-30f, 4.43622e-15f, 2.19669e+35f, 1.26957e-13f, 5.52409e+22f
9988path.quadTo(SkBits2Float(0x29210f21), SkBits2Float(0x282a085d), SkBits2Float(0xc2ab2127), SkBits2Float(0xa6800028)); // 3.57623e-14f, 9.43871e-15f, -85.5648f, -8.88183e-16f
9989path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9990path.close();
9991path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9992path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07f, 1.04004e-14f
9993path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9994path.close();
9995path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9996path.conicTo(SkBits2Float(0xf86d273b), SkBits2Float(0x27e523e3), SkBits2Float(0x2927e0f5), SkBits2Float(0x2ac0e729), SkBits2Float(0x6b492128)); // -1.92402e+34f, 6.35992e-15f, 3.72766e-14f, 3.42665e-13f, 2.43151e+26f
9997path.cubicTo(SkBits2Float(0x2f273927), SkBits2Float(0xa83a2c21), SkBits2Float(0xd7122121), SkBits2Float(0x21212921), SkBits2Float(0x3be3db3a), SkBits2Float(0xa9deb63b)); // 1.52089e-10f, -1.03346e-14f, -1.60671e+14f, 5.46034e-19f, 0.00695362f, -9.89039e-14f
9998
9999 SkPath path2(path);
10000 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10001}
10002
10003// crbug.com/626164
10004static void fuzz763_1c(skiatest::Reporter* reporter, const char* filename) {
10005 SkPath path;
10006 path.setFillType((SkPath::FillType) 0);
10007
10008 SkPath path1(path);
10009 path.reset();
10010 path.setFillType((SkPath::FillType) 0);
10011 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10012 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
10013 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10014 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
10015 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.31432e+06f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
10016
10017 SkPath path2(path);
10018 SkPath dummy;
10019 testPathOpFuzz(reporter, path1, path2, (SkPathOp)4, filename);
10020}
10021
10022// crbug.com/626186
10023static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
10024 SkPath path;
10025 path.setFillType((SkPath::FillType) 0);
10026 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10027 path.cubicTo(SkBits2Float(0x0000ff07), SkBits2Float(0xf9f9ff00), SkBits2Float(0xfe0ef9f4), SkBits2Float(0xd9b105fb), SkBits2Float(0x000000f9), SkBits2Float(0xfe11f901)); // 9.14866e-41f, -1.62257e+35f, -4.75121e+37f, -6.22846e+15f, 3.48923e-43f, -4.85077e+37f
10028 path.lineTo(SkBits2Float(0xda1905ed), SkBits2Float(0x3c05fbfb)); // -1.0768e+16f, 0.00817775f
10029 path.cubicTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0x3c3c3c3c), SkBits2Float(0x253c7f00), SkBits2Float(0xfa00d3fa), SkBits2Float(0x250025fe), SkBits2Float(0x00000006)); // 0.011489f, 0.011489f, 1.63494e-16f, -1.67228e+35f, 1.11151e-16f, 8.40779e-45f
10030
10031 SkPath path1(path);
10032 path.reset();
10033 path.setFillType((SkPath::FillType) 0);
10034 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10035 path.quadTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0xfa253c3c), SkBits2Float(0xfefa00d3), SkBits2Float(0x25fad9df)); // 0.011489f, -2.14488e+35f, -1.66156e+38f, 4.35157e-16f
10036 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10037 path.close();
10038 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10039 path.lineTo(SkBits2Float(0x8dfefa00), SkBits2Float(0xf0f9fad9)); // -1.57141e-30f, -6.1892e+29f
10040 path.cubicTo(SkBits2Float(0x20fe58f9), SkBits2Float(0x0525fbed), SkBits2Float(0x1905ffff), SkBits2Float(0x01f9f9f9), SkBits2Float(0xfbfe0ef9), SkBits2Float(0xfb212fff)); // 4.30882e-19f, 7.80453e-36f, 6.92764e-24f, 9.18268e-38f, -2.63829e+36f, -8.36933e+35f
10041
10042 SkPath path2(path);
10043 testPathOpFuzz(reporter, path1, path2, (SkPathOp)2, filename);
10044}
10045
10046static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
10047 SkPath path;
10048 path.setFillType((SkPath::FillType) 0);
10049 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10050 path.cubicTo(SkBits2Float(0x154be880), SkBits2Float(0x80000640), SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0x80045959), SkBits2Float(0x40154be8)); // 4.11789e-26f, -2.24208e-42f, 1.49562e+13f, 7.50652e+15f, -3.99394e-40f, 2.33276f
10051
10052 SkPath path1(path);
10053 path.reset();
10054 path.setFillType((SkPath::FillType) 0);
10055 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10056 path.quadTo(SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0xbd595959), SkBits2Float(0x3f3f3f09)); // 1.49562e+13f, 7.50652e+15f, -0.0530637f, 0.747056f
10057 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0x3f3f3f3f)); // 0.747059f, 0.747059f
10058 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10059 path.lineTo(SkBits2Float(0x09090909), SkBits2Float(0x3038d509)); // 1.6495e-33f, 6.72416e-10f
10060 path.conicTo(SkBits2Float(0x5947ffff), SkBits2Float(0x40e88004), SkBits2Float(0x00002059), SkBits2Float(0x28555900), SkBits2Float(0x5959d559)); // 3.51844e+15f, 7.26563f, 1.16042e-41f, 1.18432e-14f, 3.83217e+15f
10061 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10062 path.close();
10063 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10064 path.lineTo(SkBits2Float(0x38d57f4b), SkBits2Float(0x59597f4b)); // 0.000101803f, 3.82625e+15f
10065 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10066 path.close();
10067 path.moveTo(SkBits2Float(0x384700ff), SkBits2Float(0x0108804b)); // 4.74462e-05f, 2.50713e-38f
10068
10069 SkPath path2(path);
10070 testPathOpFuzz(reporter, path1, path2, (SkPathOp)0, filename);
10071}
10072
10073// crbug.com/627780
10074static void fuzz763_3a(skiatest::Reporter* reporter, const char* filename) {
10075 SkPath path;
10076 path.setFillType((SkPath::FillType) 1);
10077
10078 SkPath path1(path);
10079 path.reset();
10080 path.setFillType((SkPath::FillType) 0);
10081path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10082path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
10083path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
10084path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10085path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x2a685568), SkBits2Float(0x68295b2d)); // 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 2.06354e-13f, 3.19905e+24f
10086path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0x7a6a4b77), SkBits2Float(0x3a214726)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, 3.04132e+35f, 0.000615226f
10087path.moveTo(SkBits2Float(0x8adf2028), SkBits2Float(0x3a219a3a)); // -2.14862e-32f, 0.000616464f
10088path.quadTo(SkBits2Float(0x3ab38e28), SkBits2Float(0x29283ac2), SkBits2Float(0x2be61d2a), SkBits2Float(0x812a4396)); // 0.0013699f, 3.73545e-14f, 1.63506e-12f, -3.12726e-38f
10089
10090 SkPath path2(path);
10091 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10092}
10093
10094// crbug.com/627689
10095static void fuzz763_5a(skiatest::Reporter* reporter, const char* filename) {
10096 SkPath path;
10097 path.setFillType((SkPath::FillType) 1);
10098path.moveTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10099path.conicTo(SkBits2Float(0x4183d871), SkBits2Float(0x41fea321), SkBits2Float(0xb700ff00), SkBits2Float(0x4240b8b8), SkBits2Float(0x3b058283)); // 16.4807f, 31.8297f, -7.68877e-06f, 48.1804f, 0.0020372f
10100path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10101path.conicTo(SkBits2Float(0x3a455ec8), SkBits2Float(0xb8b8b8b3), SkBits2Float(0x38b2418d), SkBits2Float(0xb730d014), SkBits2Float(0x3f7ffff3)); // 0.000752908f, -8.80821e-05f, 8.49991e-05f, -1.05389e-05f, 0.999999f
10102path.quadTo(SkBits2Float(0x3a51246a), SkBits2Float(0xb6da45a3), SkBits2Float(0x38bc5c3c), SkBits2Float(0x00000000)); // 0.000797814f, -6.50501e-06f, 8.98172e-05f, 0
10103path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10104path.quadTo(SkBits2Float(0x39a32d2d), SkBits2Float(0x00000000), SkBits2Float(0xb8a13a00), SkBits2Float(0x00000000)); // 0.000311234f, 0, -7.68788e-05f, 0
10105path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10106path.quadTo(SkBits2Float(0x39ba814c), SkBits2Float(0xb838fed2), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0.00035573f, -4.41063e-05f, 0, 0
10107path.lineTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10108path.close();
10109
10110 SkPath path1(path);
10111 path.reset();
10112 path.setFillType((SkPath::FillType) 0);
10113
10114 SkPath path2(path);
10115 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10116}
10117
10118// crbug.com/627401
10119static void fuzz763_2a(skiatest::Reporter* reporter, const char* filename) {
10120 SkPath path;
10121 path.setFillType((SkPath::FillType) 1);
10122
10123 SkPath path1(path);
10124 path.reset();
10125 path.setFillType((SkPath::FillType) 0);
10126path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10127path.quadTo(SkBits2Float(0x3e484500), SkBits2Float(0x164f3a30), SkBits2Float(0x49484801), SkBits2Float(0x7d0100c8)); // 0.195576f, 1.67397e-25f, 820352, 1.07172e+37f
10128path.conicTo(SkBits2Float(0xff7f36fd), SkBits2Float(0x3e647d01), SkBits2Float(0x0c00f430), SkBits2Float(0x486b6448), SkBits2Float(0x00484848)); // -3.39239e+38f, 0.223133f, 9.93424e-32f, 241041, 6.63809e-39f
10129path.lineTo(SkBits2Float(0x4f4f557d), SkBits2Float(0x48480112)); // 3.47849e+09f, 204804
10130path.lineTo(SkBits2Float(0xf40c01ff), SkBits2Float(0x45008000)); // -4.43702e+31f, 2056
10131path.moveTo(SkBits2Float(0x4bfffa00), SkBits2Float(0x7d4ac859)); // 3.35514e+07f, 1.68465e+37f
10132path.conicTo(SkBits2Float(0x7d014f3e), SkBits2Float(0x00f4ff01), SkBits2Float(0x6b64480c), SkBits2Float(0x48484848), SkBits2Float(0x557d0100)); // 1.07426e+37f, 2.24993e-38f, 2.75975e+26f, 205089, 1.73863e+13f
10133
10134 SkPath path2(path);
10135 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10136}
10137
10138// crbug.com/627761
10139static void fuzz763_2b(skiatest::Reporter* reporter, const char* filename) {
10140 SkPath path;
10141 path.setFillType((SkPath::FillType) 1);
10142
10143 SkPath path1(path);
10144 path.reset();
10145 path.setFillType((SkPath::FillType) 0);
10146path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10147path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10148path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
10149path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x4721ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f9a3a8a)); // 5.63611e+25f, 41453.5f, 9.4495e-15f, 0.000617492f, 5.17506e+09f
10150path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10151path.close();
10152path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10153path.cubicTo(SkBits2Float(0x273ac23a), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x29685568)); // 2.5918e-15f, 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 5.15884e-14f
10154path.lineTo(SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 4.78968e-34f, 1.99397e+36f
10155path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
10156path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10157path.close();
10158path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10159path.quadTo(SkBits2Float(0x8a4fc29a), SkBits2Float(0x3ab3283a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6)); // -1.00033e-32f, 0.00136686f, 2.25206e-21f, 300.343f
10160path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10161path.conicTo(SkBits2Float(0x1e2ab03a), SkBits2Float(0x2920213b), SkBits2Float(0x3b3ac527), SkBits2Float(0xc422333b), SkBits2Float(0x6c2a9f1f)); // 9.03617e-21f, 3.5556e-14f, 0.00284989f, -648.8f, 8.25075e+26f
10162path.quadTo(SkBits2Float(0xc25d2757), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152), SkBits2Float(0x28d91210)); // -55.2884f, 0.000916855f, 1.2818e-13f, 2.40997e-14f
10163path.quadTo(SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10164path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10165path.close();
10166path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10167path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0xcb7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, -1.64987e+07f, 121589
10168path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10169path.close();
10170path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10171path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x2d8a3a21), SkBits2Float(0x5b682b68), SkBits2Float(0x5b292d55)); // -1.2117e+19f, 1.57146e-11f, 6.53499e+16f, 4.76191e+16f
10172path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f)); // 1.43144e-13f, 4.7323e-37f
10173path.conicTo(SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x3a21477a)); // 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 0.000615231f
10174path.moveTo(SkBits2Float(0x21df2828), SkBits2Float(0x9a3a8a3a)); // 1.51217e-18f, -3.85756e-23f
10175path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x28273ac2), SkBits2Float(0xe61d2a29), SkBits2Float(0x2a63962b)); // 0.00136978f, 9.2831e-15f, -1.85547e+23f, 2.02138e-13f
10176path.conicTo(SkBits2Float(0x2d29272a), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 9.61523e-12f, 1.5954e+13f, 4.87407e+16f, 4.88097e+16f, 5.7784e-19f
10177path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10178path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10179path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10180path.close();
10181
10182 SkPath path2(path);
10183 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10184}
10185
10186static void fuzz763_2c(skiatest::Reporter* reporter, const char* filename) {
10187 SkPath path;
10188 path.setFillType((SkPath::FillType) 1);
10189
10190path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 0, 2.68653e-06f
10191path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x364a4a4a), SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0, 3.01436e-06f, 3.01436e-06f, 0, 0
10192path.lineTo(SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000)); // 3.01436e-06f, 0
10193path.cubicTo(SkBits2Float(0x364a30f0), SkBits2Float(0x344ac7fb), SkBits2Float(0x3656d432), SkBits2Float(0x34cabb48), SkBits2Float(0x367031a9), SkBits2Float(0x351802f1)); // 3.01288e-06f, 1.88855e-07f, 3.2012e-06f, 3.77617e-07f, 3.57917e-06f, 5.66287e-07f
10194path.cubicTo(SkBits2Float(0x36a7b150), SkBits2Float(0x35ab09db), SkBits2Float(0x371874ed), SkBits2Float(0x3604f2c7), SkBits2Float(0x3784e0c7), SkBits2Float(0x36344a51)); // 4.99763e-06f, 1.27434e-06f, 9.08713e-06f, 1.98108e-06f, 1.58403e-05f, 2.68653e-06f
10195path.cubicTo(SkBits2Float(0x3743dc9a), SkBits2Float(0x36344a4f), SkBits2Float(0x36fbef33), SkBits2Float(0x36344a4e), SkBits2Float(0x36604a35), SkBits2Float(0x36344a4c)); // 1.16743e-05f, 2.68653e-06f, 7.50823e-06f, 2.68653e-06f, 3.34218e-06f, 2.68653e-06f
10196path.cubicTo(SkBits2Float(0x36531715), SkBits2Float(0x36344a4c), SkBits2Float(0x3645e3f5), SkBits2Float(0x36344a4b), SkBits2Float(0x3638b0d4), SkBits2Float(0x36344a4b)); // 3.14549e-06f, 2.68653e-06f, 2.9488e-06f, 2.68653e-06f, 2.75211e-06f, 2.68653e-06f
10197path.cubicTo(SkBits2Float(0x35f64120), SkBits2Float(0x36344a4b), SkBits2Float(0x35764124), SkBits2Float(0x36344a4a), SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 1.83474e-06f, 2.68653e-06f, 9.17369e-07f, 2.68653e-06f, 0, 2.68653e-06f
10198path.close();
10199 SkPath path1(path);
10200 path.reset();
10201 path.setFillType((SkPath::FillType) 0);
10202path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10203path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
10204path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10205path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
10206path.cubicTo(SkBits2Float(0x544a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.47532e+12f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
10207 SkPath path2(path);
10208 testPathOpFuzz(reporter, path1, path2, kReverseDifference_SkPathOp, filename);
10209}
10210
10211static void fuzz763_6(skiatest::Reporter* reporter, const char* filename) {
10212 SkPath path;
10213 path.setFillType((SkPath::FillType) 1);
10214path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10215path.cubicTo(SkBits2Float(0x68295b2d), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 3.19905e+24f, 0, 0, 0, 0, 4.03114e+24f
10216path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10217path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
10218path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
10219path.cubicTo(SkBits2Float(0x679174f7), SkBits2Float(0x63199132), SkBits2Float(0x6756c79f), SkBits2Float(0x606478de), SkBits2Float(0x65682bcf), SkBits2Float(0x00000000)); // 1.3738e+24f, 2.83281e+21f, 1.01427e+24f, 6.58526e+19f, 6.85248e+22f, 0
10220path.conicTo(SkBits2Float(0x68295b02), SkBits2Float(0x60f7f28b), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f), SkBits2Float(0x42784f5a)); // 3.19903e+24f, 1.42932e+20f, 0, 5.14279e+25f, 62.0775f
10221path.close();
10222path.moveTo(SkBits2Float(0x654d6d10), SkBits2Float(0x00000000)); // 6.06311e+22f, 0
10223path.lineTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000)); // 6.14991e+25f, 0
10224path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc0)); // 0, 6.14991e+25f
10225path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10226
10227 SkPath path1(path);
10228 path.reset();
10229 path.setFillType((SkPath::FillType) 0);
10230path.moveTo(SkBits2Float(0x3ac23a55), SkBits2Float(0x2a292827)); // 0.00148184f, 1.50241e-13f
10231path.lineTo(SkBits2Float(0x63962be6), SkBits2Float(0x272a812a)); // 5.54035e+21f, 2.36623e-15f
10232
10233 SkPath path2(path);
10234 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10235}
10236
10237static void fuzz763_7(skiatest::Reporter* reporter, const char* filename) {
10238 SkPath path;
10239 path.setFillType((SkPath::FillType) 0);
10240
10241 SkPath path1(path);
10242 path.reset();
10243 path.setFillType((SkPath::FillType) 0);
10244path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10245path.moveTo(SkBits2Float(0x0f2a312a), SkBits2Float(0xc0032108)); // 8.39112e-30f, -2.04889f
10246path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
10247path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10248path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10249path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
10250path.lineTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10251path.close();
10252path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10253path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10254path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10255path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10256path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
10257path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10258path.conicTo(SkBits2Float(0xba1f203a), SkBits2Float(0xc422c538), SkBits2Float(0x215d5927), SkBits2Float(0x70ec2ac2), SkBits2Float(0x2a51523a)); // -0.000607017f, -651.082f, 7.49957e-19f, 5.84721e+29f, 1.85915e-13f
10259path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
10260path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10261path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
10262path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
10263path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10264path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10265path.close();
10266path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10267path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55), SkBits2Float(0xed7aba1f), SkBits2Float(0x2a212a8c)); // 6.14991e+25f, 4.88097e+16f, 5.7784e-19f, -4.84977e+27f, 1.43144e-13f
10268path.moveTo(SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b)); // 9.16179e-12f, 1.5954e+13f
10269path.moveTo(SkBits2Float(0x5529685b), SkBits2Float(0x11295b68)); // 1.16416e+13f, 1.33599e-28f
10270path.conicTo(SkBits2Float(0x5b782968), SkBits2Float(0x3a292d55), SkBits2Float(0x2a8c555b), SkBits2Float(0x68295a2d), SkBits2Float(0x2d296855)); // 6.98513e+16f, 0.000645359f, 2.49282e-13f, 3.19897e+24f, 9.6297e-12f
10271path.moveTo(SkBits2Float(0x555b8c55), SkBits2Float(0x21682929)); // 1.50872e+13f, 7.86591e-19f
10272path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10273path.conicTo(SkBits2Float(0xac2d8ced), SkBits2Float(0x5b682968), SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55), SkBits2Float(0x081f282a)); // -2.4663e-12f, 6.53477e+16f, 4.76191e+16f, 5.7784e-19f, 4.78945e-34f
10274path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10275path.close();
10276path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10277path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x03081f21), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.00025e-37f, 5.63611e+25f, 6.77381e-19f
10278path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10279path.close();
10280path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10281path.quadTo(SkBits2Float(0x2d28282a), SkBits2Float(0x5568295b), SkBits2Float(0x3a21df68), SkBits2Float(0x4f9a3a8a)); // 9.55861e-12f, 1.5954e+13f, 0.000617495f, 5.17506e+09f
10282path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10283path.close();
10284path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10285path.cubicTo(SkBits2Float(0x5568c23a), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x3a7bc003), SkBits2Float(0x294b2827)); // 1.59951e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 0.00096035f, 4.51099e-14f
10286
10287 SkPath path2(path);
10288 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10289}
10290
10291static void kfuzz2(skiatest::Reporter* reporter, const char* filename) {
10292 SkPath path1;
10293 SkPath path;
10294path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10295path.close();
10296path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10297path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0x60600100), SkBits2Float(0x0100ff60)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, 6.45647e+19f, 2.36931e-38f
10298path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10299path.close();
10300path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10301path.lineTo(SkBits2Float(0x60601a1d), SkBits2Float(0x60606060)); // 6.4593e+19f, 6.46721e+19f
10302path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10303path.close();
10304path.moveTo(SkBits2Float(0xe5e2f300), SkBits2Float(0xee244a40)); // -1.33967e+23f, -1.27113e+28f
10305path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10306path.close();
10307path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10308path.lineTo(SkBits2Float(0xfafafafa), SkBits2Float(0xe30000fa)); // -6.51582e+35f, -2.36125e+21f
10309path.conicTo(SkBits2Float(0x92e592e5), SkBits2Float(0xfafafafb), SkBits2Float(0xc4fa0000), SkBits2Float(0x6060fafa), SkBits2Float(0x60606060)); // -1.44881e-27f, -6.51582e+35f, -2000, 6.48462e+19f, 6.46721e+19f
10310path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10311path.close();
10312path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10313path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xfafafa00), SkBits2Float(0xfafafafa)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, -6.51572e+35f, -6.51582e+35f
10314path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10315path.close();
10316path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10317path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xe39e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xeed0ee9a), SkBits2Float(0x9a98ffca)); // -2.36118e+21f, -5.85032e+21f, -1.26726e+30f, -3.40177e+38f, -3.23307e+28f, -6.3279e-23f
10318path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10319path.close();
10320SkPath path2(path);
10321 testPathOpFuzz(reporter, path1, path2, kXOR_SkPathOp, filename);
10322}
10323
10324static void fuzz763_10(skiatest::Reporter* reporter, const char* filename) {
10325 SkPath path;
10326 path.setFillType((SkPath::FillType) 1);
10327path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10328path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10329path.quadTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 6.14991e+25f, 0, 0, 6.14991e+25f
10330path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10331path.close();
10332
10333 SkPath path1(path);
10334 path.reset();
10335 path.setFillType((SkPath::FillType) 0);
10336path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10337path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 4.87407e+16f, 2.49685e-13f
10338path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10339path.close();
10340path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10341path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10342path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10343path.close();
10344path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10345path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a29)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121588
10346path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10347path.close();
10348path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10349path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 3.20001e+24f, 3.84878e-14f, 2.49282e-13f, 4.78969e-34f
10350path.conicTo(SkBits2Float(0x6a497b19), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.08939e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10351path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10352path.close();
10353path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10354path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a2129)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96181e-33f
10355path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10356path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10357path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10358path.close();
10359path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10360path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10361path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10362
10363 SkPath path2(path);
10364 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10365}
10366
10367static void fuzz763_11(skiatest::Reporter* reporter, const char* filename) {
10368 SkPath path;
10369 path.setFillType((SkPath::FillType) 0);
10370
10371 SkPath path1(path);
10372 path.reset();
10373 path.setFillType((SkPath::FillType) 0);
10374path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10375path.moveTo(SkBits2Float(0x2a0f312a), SkBits2Float(0xc0032108)); // 1.2718e-13f, -2.04889f
10376path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
10377path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7b21), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14984e+25f, 9.43289e-15f, 1.21279e-11f
10378path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10379path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
10380path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10381path.close();
10382path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10383path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10384path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10385path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10386path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x2a812a3b), SkBits2Float(0x2a552927)); // 2.25206e-21f, 300.343f, 2.29443e-13f, 1.89325e-13f
10387path.quadTo(SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x203a3b27), SkBits2Float(0x22c5381f)); // 0.00241343f, 3.71093e-14f, 1.57744e-19f, 5.34564e-18f
10388path.moveTo(SkBits2Float(0x5d27ec2a), SkBits2Float(0x705921c2)); // 7.56256e+17f, 2.68796e+29f
10389path.quadTo(SkBits2Float(0x102a5152), SkBits2Float(0x5b2dd912), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 3.35892e-29f, 4.89338e+16f, 4.03114e+24f, 1.50617e+13f
10390path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032127)); // 3.60396e-20f, -2.0489f
10391path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0x2a8c684b), SkBits2Float(0xf05b272d), SkBits2Float(0x2a1f1555), SkBits2Float(0x21082a21), SkBits2Float(0x6a4b7b03)); // 3.4979e+24f, 2.49414e-13f, -2.71298e+29f, 1.41294e-13f, 4.61343e-19f, 6.14982e+25f
10392path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10393path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10394path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10395path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10396path.close();
10397path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10398path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a21211f)); // 4.85282e+16f, 1.43112e-13f
10399path.lineTo(SkBits2Float(0x03552a8c), SkBits2Float(0x6a4f7b28)); // 6.26439e-37f, 6.27073e+25f
10400path.conicTo(SkBits2Float(0x2347ed93), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.08381e-17f, 9.4495e-15f, 0.00170234f, 2.58753e+09f, 0.00136978f
10401path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10402path.close();
10403path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10404path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x262a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 5.91556e-16f, 0.000649768f
10405path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10406path.conicTo(SkBits2Float(0x371f203a), SkBits2Float(0xc52a22c4), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x5210513a)); // 9.48464e-06f, -2722.17f, -55.289f, 0.000916855f, 1.5496e+11f
10407path.cubicTo(SkBits2Float(0x63102ad9), SkBits2Float(0x29c80927), SkBits2Float(0x633a27b0), SkBits2Float(0x2909c827), SkBits2Float(0x272927b1), SkBits2Float(0x3a685b2d)); // 2.65942e+21f, 8.88337e-14f, 3.43395e+21f, 3.05937e-14f, 2.3475e-15f, 0.000886368f
10408path.moveTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10409path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x5b2d2729)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 4.87382e+16f
10410path.quadTo(SkBits2Float(0x2d685568), SkBits2Float(0x5568295b), SkBits2Float(0x2a552d29), SkBits2Float(0x295b2d27)); // 1.32066e-11f, 1.5954e+13f, 1.89339e-13f, 4.86669e-14f
10411path.lineTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10412path.close();
10413
10414 SkPath path2(path);
10415 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10416}
10417
10418static void fuzz763_12(skiatest::Reporter* reporter, const char* filename) {
10419 SkPath path;
10420 path.setFillType((SkPath::FillType) 1);
10421path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10422path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a29082a)); // 0, 5.10868e+25f
10423path.conicTo(SkBits2Float(0x6a295ac3), SkBits2Float(0x61bb988e), SkBits2Float(0x6829682d), SkBits2Float(0x5f3ba76a), SkBits2Float(0x42730a87)); // 5.11843e+25f, 4.32567e+20f, 3.20001e+24f, 1.35219e+19f, 60.7603f
10424path.conicTo(SkBits2Float(0x67aedf99), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f801112)); // 1.65163e+24f, 0, 0, 0, 1.00052f
10425path.close();
10426path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10427path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 6.14991e+25f, 0, 0, 4.03114e+24f, 1.50617e+13f
10428path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10429path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
10430path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
10431path.cubicTo(SkBits2Float(0x679158b0), SkBits2Float(0x00000000), SkBits2Float(0x67531e34), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.37276e+24f, 0, 9.96976e+23f, 0, 0, 0
10432path.close();
10433
10434 SkPath path1(path);
10435 path.reset();
10436 path.setFillType((SkPath::FillType) 0);
10437path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10438path.conicTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0xed237a6a), SkBits2Float(0x2d682967), SkBits2Float(0x2a8c555b)); // 4.61198e-19f, 1.64987e+07f, -3.16213e+27f, 1.31969e-11f, 2.49282e-13f
10439path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10440path.close();
10441path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10442path.lineTo(SkBits2Float(0x3a6821df), SkBits2Float(0x2a8c3a8a)); // 0.000885514f, 2.49096e-13f
10443path.moveTo(SkBits2Float(0x29272a1d), SkBits2Float(0xb03a2a55)); // 3.7118e-14f, -6.77266e-10f
10444path.moveTo(SkBits2Float(0x20213b1e), SkBits2Float(0xc5272927)); // 1.36568e-19f, -2674.57f
10445path.quadTo(SkBits2Float(0xc422373b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27), SkBits2Float(0x523a7059)); // -648.863f, -8.22676e+26f, 1.31706e-18f, 2.00187e+11f
10446path.cubicTo(SkBits2Float(0x12102a10), SkBits2Float(0xe73a28d9), SkBits2Float(0xc8092763), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // 4.54902e-28f, -8.79114e+23f, -140446, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
10447path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x555b2d29)); // 4.03113e+24f, 1.50617e+13f
10448path.moveTo(SkBits2Float(0x1f2a212a), SkBits2Float(0x2d032108)); // 3.60263e-20f, 7.45382e-12f
10449path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // 4.03114e+24f, 1.89339e-13f
10450path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a528c5b), SkBits2Float(0x284f5b2d), SkBits2Float(0x218aa621), SkBits2Float(0x3f2d2db3), SkBits2Float(0x68293a2a)); // 5.73801e-19f, 1.87004e-13f, 1.15106e-14f, 9.39522e-19f, 0.676479f, 3.19661e+24f
10451
10452 SkPath path2(path);
10453 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10454}
10455
10456static void fuzz763_13(skiatest::Reporter* reporter, const char* filename) {
10457 SkPath path;
10458 path.setFillType((SkPath::FillType) 1);
10459
10460 SkPath path1(path);
10461 path.reset();
10462 path.setFillType((SkPath::FillType) 0);
10463path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10464path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a)); // 6.14991e+25f, 75739, 9.4495e-15f, 0.00170234f, 2.58753e+09f
10465path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10466path.close();
10467path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10468path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a8128), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f, 0.00241343f
10469path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10470path.close();
10471path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10472path.cubicTo(SkBits2Float(0x3b272927), SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 0.00255067f, 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
10473path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x68295b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.19905e+24f
10474path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10475path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
10476path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x6829292d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a291f)); // 5.73801e-19f, 2.06544e-13f, 3.19536e+24f, 9.6297e-12f, -1.05027e-31f, 1.51133e-13f
10477path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f, 1.99397e+36f
10478path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10479path.close();
10480path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10481path.lineTo(SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 4.88097e+16f, 5.7784e-19f
10482path.conicTo(SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a), SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b), SkBits2Float(0x29685b2d)); // -3.65895e-31f, 0.664569f, 9.16179e-12f, 1.5954e+13f, 5.15934e-14f
10483path.lineTo(SkBits2Float(0x68295b68), SkBits2Float(0x2d296855)); // 3.19906e+24f, 9.6297e-12f
10484path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10485path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x6aba7b03), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 1.12721e+26f, 6.77381e-19f
10486path.quadTo(SkBits2Float(0x6028282a), SkBits2Float(0x68292ddf), SkBits2Float(0x5b2d555b), SkBits2Float(0x68556829)); // 4.84679e+19f, 3.1957e+24f, 4.8789e+16f, 4.03114e+24f
10487
10488 SkPath path2(path);
10489 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10490}
10491
10492static void fuzz763_14(skiatest::Reporter* reporter, const char* filename) {
10493 SkPath path;
10494 path.setFillType((SkPath::FillType) 0);
10495
10496 SkPath path1(path);
10497 path.reset();
10498 path.setFillType((SkPath::FillType) 0);
10499path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0xf45b2d29)); // 4.03114e+24f, -6.94598e+31f
10500path.moveTo(SkBits2Float(0x1f2a302a), SkBits2Float(0xc8032108)); // 3.60387e-20f, -134276
10501path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf0db684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x302a5b25), SkBits2Float(0xf0685568)); // 3.4979e+24f, -5.43226e+29f, -1.64207e-31f, 5.76527e-19f, 6.19752e-10f, -2.87615e+29f
10502
10503 SkPath path2(path);
10504 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10505}
10506
10507static void fuzz763_15(skiatest::Reporter* reporter, const char* filename) {
10508 SkPath path;
10509 path.setFillType((SkPath::FillType) 1);
10510
10511 SkPath path1(path);
10512 path.reset();
10513 path.setFillType((SkPath::FillType) 0);
10514path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10515path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10516path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x2c6829c0), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 5.77848e-19f, 4.7323e-37f, 3.29924e-12f, 2.49282e-13f, 4.78969e-34f
10517path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10518path.close();
10519path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10520path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf218a28), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.16402e+19f, 2.58751e+09f
10521path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x283ac221), SkBits2Float(0xe6432a29), SkBits2Float(0x2a96812b)); // 0.00136978f, 1.03672e-14f, -2.3041e+23f, 2.6735e-13f
10522path.lineTo(SkBits2Float(0x5529272a), SkBits2Float(0x1eb03a2a)); // 1.16241e+13f, 1.86588e-20f
10523path.conicTo(SkBits2Float(0x2a272021), SkBits2Float(0x3ac52729), SkBits2Float(0xc422313b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27)); // 1.48437e-13f, 0.00150416f, -648.769f, -8.22676e+26f, 1.31706e-18f
10524path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10525path.close();
10526path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10527path.close();
10528path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10529path.quadTo(SkBits2Float(0xc82763e7), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // -171408, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
10530path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x8c555b2d)); // 4.03113e+24f, -1.64364e-31f
10531path.moveTo(SkBits2Float(0x081f2a21), SkBits2Float(0x252d0321)); // 4.78968e-34f, 1.50064e-16f
10532path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2df068)); // 1.59583e+13f, 4.89595e+16f
10533path.quadTo(SkBits2Float(0x2a1f2a8c), SkBits2Float(0x21482a21), SkBits2Float(0x4b7bc003), SkBits2Float(0x8ced3a6a)); // 1.41368e-13f, 6.78184e-19f, 1.64987e+07f, -3.65508e-31f
10534path.moveTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10535path.conicTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d155b2d), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 3.20982e+24f, 8.48991e-12f, 1.5954e+13f, 4.87407e+16f, 2.49685e-13f
10536path.lineTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10537path.close();
10538path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10539path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10540path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10541path.close();
10542path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10543path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x212aed7a), SkBits2Float(0x0321081f), SkBits2Float(0x293a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 5.79125e-19f, 4.7323e-37f, 4.14076e-14f, 6.77381e-19f
10544path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x292a8c55), SkBits2Float(0x21081f2a)); // 3.20001e+24f, 3.84878e-14f, 3.78693e-14f, 4.61198e-19f
10545path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.14991e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10546path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10547path.close();
10548path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10549path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a21df)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96194e-33f
10550path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10551path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10552path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10553path.close();
10554path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10555path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10556path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10557
10558 SkPath path2(path);
10559 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10560}
10561
10562static void fuzz763_16(skiatest::Reporter* reporter, const char* filename) {
10563 SkPath path;
10564 path.setFillType((SkPath::FillType) 0);
10565
10566 SkPath path1(path);
10567 path.reset();
10568 path.setFillType((SkPath::FillType) 0);
10569path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10570path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10571path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c552775), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64208e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10572path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10573path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10574path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10575path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10576path.close();
10577path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10578path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10579path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10580path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10581path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10582path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10583path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
10584path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10585path.close();
10586path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10587path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10588path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10589path.close();
10590path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10591path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10592path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10593path.close();
10594path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10595path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x681aed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 2.92648e+24f, 1.46617e+13f, 9.01175e-21f
10596path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
10597path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10598path.close();
10599path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10600path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10601path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
10602path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
10603path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10604path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10605path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10606path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10607path.close();
10608path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10609path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10610path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 5.76757e-19f
10611path.lineTo(SkBits2Float(0x8c558c55), SkBits2Float(0x212a1f2a)); // -1.64512e-31f, 5.76395e-19f
10612
10613 SkPath path2(path);
10614 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10615}
10616
10617static void fuzz763_17(skiatest::Reporter* reporter, const char* filename) {
10618 SkPath path;
10619 path.setFillType((SkPath::FillType) 0);
10620
10621 SkPath path1(path);
10622 path.reset();
10623 path.setFillType((SkPath::FillType) 0);
10624path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10625path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10626path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10627path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10628path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10629path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10630path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10631path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10632path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10633path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10634path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10635path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
10636path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10637path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10638path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10639path.close();
10640path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10641path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10642path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10643path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10644path.close();
10645path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10646path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10647path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10648path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10649path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10650path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10651path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10652path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10653path.close();
10654path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10655path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10656path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10657path.close();
10658path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10659path.conicTo(SkBits2Float(0x55086821), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2c6829), SkBits2Float(0x21218c55), SkBits2Float(0x2a6c1f03)); // 9.3738e+12f, 6.14991e+25f, 4.85282e+16f, 5.47346e-19f, 2.09718e-13f
10660path.lineTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10661path.close();
10662path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10663path.lineTo(SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a)); // 1.16348e+26f, 0.000209024f
10664
10665 SkPath path2(path);
10666 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10667}
10668
10669static void fuzz763_18(skiatest::Reporter* reporter, const char* filename) {
10670 SkPath path;
10671 path.setFillType((SkPath::FillType) 0);
10672
10673 SkPath path1(path);
10674 path.reset();
10675 path.setFillType((SkPath::FillType) 0);
10676path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10677path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10678path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10679path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10680path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10681path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10682path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10683path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10684path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10685path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10686path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10687path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
10688path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10689path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10690path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10691path.close();
10692path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10693path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10694path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10695path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10696path.close();
10697path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10698path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10699path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10700path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10701path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10702path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10703path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10704path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10705path.close();
10706path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10707path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10708
10709path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10710path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10711path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10712path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10713path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
10714path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
10715
10716 SkPath path2(path);
10717 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10718}
10719
10720static void fuzz763_19(skiatest::Reporter* reporter, const char* filename) {
10721 SkPath path;
10722 path.setFillType((SkPath::FillType) 1);
10723
10724 SkPath path1(path);
10725 path.reset();
10726 path.setFillType((SkPath::FillType) 0);
10727path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
10728path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 9.43289e-15f, 1.61207e+25f
10729path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10730path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10731path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10732path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10733path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
10734path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10735path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10736path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73105e-16f
10737path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10738path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10739path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10740path.close();
10741path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10742path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10743path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
10744path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10745path.close();
10746path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10747path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10748path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10749path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10750path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10751path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10752path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10753path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10754path.close();
10755path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10756path.lineTo(SkBits2Float(0x555b2c29), SkBits2Float(0x6c212a8c)); // 1.50614e+13f, 7.79352e+26f
10757path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0xf05b5568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -2.71522e+29f, 5.76757e-19f
10758path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2abe2a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 3.378e-13f, 1.99397e+36f
10759path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10760path.close();
10761path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10762path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
10763path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10764path.close();
10765
10766 SkPath path2(path);
10767 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10768}
10769
10770static void fuzz763_20(skiatest::Reporter* reporter, const char* filename) {
10771 SkPath path;
10772 path.setFillType((SkPath::FillType) 0);
10773
10774 SkPath path1(path);
10775 path.reset();
10776 path.setFillType((SkPath::FillType) 0);
10777path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10778path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10779path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10780path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10781path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10782path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8c552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.49281e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10783path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10784path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10785path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10786path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10787path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10788path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321182a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.73414e-37f, 6.14991e+25f, 75739
10789path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10790path.close();
10791path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10792path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10793path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10794path.close();
10795path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10796path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10797path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10798path.close();
10799path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10800path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10801path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x51282727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 4.51382e+10f
10802path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10803path.close();
10804path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10805path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x8c555b2d)); // 4.03114e+24f, -1.64364e-31f
10806path.moveTo(SkBits2Float(0x081f2a31), SkBits2Float(0xc0032921)); // 4.78969e-34f, -2.04939f
10807path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
10808path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x4329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77841e-19f, 169.032f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
10809path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10810path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x3a210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 0.000614217f, 1.99729e+36f
10811path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10812path.close();
10813path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10814path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10815path.lineTo(SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830)); // 4.88298e+16f, -2.64185e+29f
10816path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10817path.close();
10818path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10819path.conicTo(SkBits2Float(0x0321d90a), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x212a2a1f), SkBits2Float(0x4b7bc003)); // 4.75628e-37f, 1.50618e+13f, 2.49284e-13f, 5.7654e-19f, 1.64987e+07f
10820path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x212128c0)); // -1.31678e-31f, 5.46029e-19f
10821path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10822path.close();
10823
10824 SkPath path2(path);
10825 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10826}
10827
10828static void fuzz763_21(skiatest::Reporter* reporter, const char* filename) {
10829 SkPath path;
10830 path.setFillType((SkPath::FillType) 1);
10831path.moveTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10832path.cubicTo(SkBits2Float(0x68303469), SkBits2Float(0x661f92fc), SkBits2Float(0x6837d3c3), SkBits2Float(0x662b0eb2), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 3.32841e+24f, 1.88392e+23f, 3.4724e+24f, 2.01949e+23f, 3.61987e+24f, 2.16463e+23f
10833path.cubicTo(SkBits2Float(0x68c4391f), SkBits2Float(0x672c5c9f), SkBits2Float(0x688b20ab), SkBits2Float(0x6804b825), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 7.4131e+24f, 8.13956e+23f, 5.25609e+24f, 2.507e+24f, 2.98183e+24f, 3.49189e+24f
10834path.lineTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10835path.close();
10836path.moveTo(SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 3.0681e+24f, 1.65068e+23f
10837path.cubicTo(SkBits2Float(0x6823b0e1), SkBits2Float(0x660d990f), SkBits2Float(0x6824f6d5), SkBits2Float(0x660f668c), SkBits2Float(0x68263e4e), SkBits2Float(0x66113632)); // 3.09203e+24f, 1.67169e+23f, 3.11609e+24f, 1.69298e+23f, 3.14025e+24f, 1.71436e+23f
10838path.cubicTo(SkBits2Float(0x682715e4), SkBits2Float(0x6612676d), SkBits2Float(0x6827ee22), SkBits2Float(0x66139997), SkBits2Float(0x6828c709), SkBits2Float(0x6614cba5)); // 3.15616e+24f, 1.72843e+23f, 3.17211e+24f, 1.74255e+23f, 3.18812e+24f, 1.75667e+23f
10839path.lineTo(SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.1893e+24f, 1.56583e+23f
10840path.cubicTo(SkBits2Float(0x68270421), SkBits2Float(0x6601102c), SkBits2Float(0x68252b97), SkBits2Float(0x65fb1edd), SkBits2Float(0x68234ce5), SkBits2Float(0x65f4367f)); // 3.15485e+24f, 1.52371e+23f, 3.11998e+24f, 1.48235e+23f, 3.08466e+24f, 1.44158e+23f
10841path.conicTo(SkBits2Float(0x6822e012), SkBits2Float(0x6602acc5), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e), SkBits2Float(0x3f7ffa04)); // 3.07663e+24f, 1.54274e+23f, 3.0681e+24f, 1.65068e+23f, 0.999909f
10842path.close();
10843path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10844path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10845path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x68617414), SkBits2Float(0x66af1c42), SkBits2Float(0x68624f96), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 0, 4.25869e+24f, 4.13468e+23f, 4.27489e+24f, 1.01747e+24f, 4.14771e+24f
10846path.cubicTo(SkBits2Float(0x67a63a84), SkBits2Float(0x68fe1c37), SkBits2Float(0x67c05eed), SkBits2Float(0x69930962), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 1.56998e+24f, 9.60001e+24f, 1.81689e+24f, 2.22196e+25f, 0, 5.14279e+25f
10847path.close();
10848path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10849path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10850path.cubicTo(SkBits2Float(0x6a2c8798), SkBits2Float(0x68f7a144), SkBits2Float(0x6951f5ea), SkBits2Float(0x6796ad55), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 5.21439e+25f, 9.35519e+24f, 1.58642e+25f, 1.4231e+24f, 3.61987e+24f, 2.16463e+23f
10851path.cubicTo(SkBits2Float(0x683871e3), SkBits2Float(0x66253b4f), SkBits2Float(0x6830da01), SkBits2Float(0x66144d3e), SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.48407e+24f, 1.95071e+23f, 3.34063e+24f, 1.75084e+23f, 3.1893e+24f, 1.56583e+23f
10852path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x492bb324)); // 3.19904e+24f, 0, 0, 0, 703282
10853path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x677b84f0), SkBits2Float(0x00000000), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 0, 0, 1.18777e+24f, 0, 3.0681e+24f, 1.65068e+23f
10854path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68156829)); // 0, 2.82222e+24f
10855path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10856path.lineTo(SkBits2Float(0x673918f3), SkBits2Float(0x681b0f5f)); // 8.74098e+23f, 2.929e+24f
10857path.lineTo(SkBits2Float(0x67391759), SkBits2Float(0x681b0fae)); // 8.74068e+23f, 2.92902e+24f
10858path.cubicTo(SkBits2Float(0x674384e7), SkBits2Float(0x682e2068), SkBits2Float(0x674db698), SkBits2Float(0x6843893b), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 9.23313e+23f, 3.28916e+24f, 9.71453e+23f, 3.69357e+24f, 1.01747e+24f, 4.14771e+24f
10859path.cubicTo(SkBits2Float(0x67a63484), SkBits2Float(0x68556bdd), SkBits2Float(0x67f18c5f), SkBits2Float(0x6848eb25), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 1.56976e+24f, 4.03142e+24f, 2.28136e+24f, 3.79524e+24f, 2.98183e+24f, 3.49189e+24f
10860path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10861path.close();
10862
10863 SkPath path1(path);
10864 path.reset();
10865 path.setFillType((SkPath::FillType) 0);
10866
10867 SkPath path2(path);
10868 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10869}
10870
10871static void fuzz763_22(skiatest::Reporter* reporter, const char* filename) {
10872 SkPath path;
10873 path.setFillType((SkPath::FillType) 1);
10874path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10875path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10876path.lineTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x00000000)); // 5.63611e+25f, 0
10877path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a034b21)); // 0, 3.9681e+25f
10878path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10879path.close();
10880path.moveTo(SkBits2Float(0x6617da56), SkBits2Float(0x00000000)); // 1.79276e+23f, 0
10881path.conicTo(SkBits2Float(0x5e704d09), SkBits2Float(0x5e3a4dfd), SkBits2Float(0x00000000), SkBits2Float(0x65eb62ef), SkBits2Float(0x430fa5e6)); // 4.32888e+18f, 3.35617e+18f, 0, 1.38948e+23f, 143.648f
10882path.conicTo(SkBits2Float(0x5e798b32), SkBits2Float(0x627a95c0), SkBits2Float(0x61f5014c), SkBits2Float(0x61fba0fd), SkBits2Float(0x40f8a1a1)); // 4.49538e+18f, 1.15562e+21f, 5.64943e+20f, 5.80217e+20f, 7.76973f
10883path.conicTo(SkBits2Float(0x62743d2d), SkBits2Float(0x5e49b862), SkBits2Float(0x6617da56), SkBits2Float(0x00000000), SkBits2Float(0x410ef54c)); // 1.12635e+21f, 3.63387e+18f, 1.79276e+23f, 0, 8.93489f
10884path.close();
10885
10886 SkPath path1(path);
10887 path.reset();
10888 path.setFillType((SkPath::FillType) 0);
10889path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10890path.quadTo(SkBits2Float(0x4f9a3a8a), SkBits2Float(0xc28a0d28), SkBits2Float(0x273a3ab3), SkBits2Float(0x8b2a2928)); // 5.17506e+09f, -69.0257f, 2.58445e-15f, -3.27718e-32f
10891path.lineTo(SkBits2Float(0x63283ae6), SkBits2Float(0x27282a81)); // 3.1033e+21f, 2.33377e-15f
10892
10893 SkPath path2(path);
10894 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
10895}
10896
10897static void fuzz763_23(skiatest::Reporter* reporter, const char* filename) {
10898 SkPath path;
10899 path.setFillType((SkPath::FillType) 0);
10900
10901 SkPath path1(path);
10902 path.reset();
10903 path.setFillType((SkPath::FillType) 0);
10904path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10905path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10906path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x03210c2a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.73276e-37f, 6.14991e+25f
10907path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10908path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10909path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x29295b2d), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, 4.2514e-13f, 3.76046e-14f, 3.04146e+24f, 1.99729e+36f
10910path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10911path.close();
10912path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10913path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10914path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
10915path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10916path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10917path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x08211f72), SkBits2Float(0x032a2a21), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 4.84861e-34f, 5.00069e-37f, 6.14991e+25f, 1.73105e-16f
10918path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10919path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10920path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10921path.close();
10922path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10923path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10924path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
10925path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10926path.close();
10927path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10928path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10929path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10930path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10931path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
10932path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
10933
10934 SkPath path2(path);
10935 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10936}
10937
10938static void fuzz763_24(skiatest::Reporter* reporter, const char* filename) {
10939 SkPath path;
10940 path.setFillType((SkPath::FillType) 1);
10941
10942 SkPath path1(path);
10943 path.reset();
10944 path.setFillType((SkPath::FillType) 0);
10945path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
10946path.close();
10947path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
10948path.quadTo(SkBits2Float(0x9fb9c16e), SkBits2Float(0x27737375), SkBits2Float(0xb7c5ff00), SkBits2Float(0x00ff9908)); // -7.86706e-20f, 3.37856e-15f, -2.3603e-05f, 2.34729e-38f
10949path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10950path.cubicTo(SkBits2Float(0x1616ecec), SkBits2Float(0x2c321616), SkBits2Float(0x3516c616), SkBits2Float(0x6e161616), SkBits2Float(0x4c416033), SkBits2Float(0xf6000000)); // 1.21917e-25f, 2.53076e-12f, 5.61676e-07f, 1.16124e+28f, 5.06923e+07f, -6.49037e+32f
10951path.quadTo(SkBits2Float(0x04007f41), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec41ec)); // 1.51048e-36f, -2.2914e+27f, -2.2914e+27f, -2.28494e+27f
10952path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10953path.close();
10954path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10955path.quadTo(SkBits2Float(0x000000ec), SkBits2Float(0xececcc00), SkBits2Float(0x48ececec), SkBits2Float(0x0278806e)); // 3.30706e-43f, -2.29016e+27f, 485223, 1.8257e-37f
10956path.lineTo(SkBits2Float(0x72ececec), SkBits2Float(0xecec02ec)); // 9.38559e+30f, -2.28256e+27f
10957path.quadTo(SkBits2Float(0xec04007f), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec0400)); // -6.38322e+26f, -2.2914e+27f, -2.2914e+27f, -2.2826e+27f
10958path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10959path.close();
10960path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10961path.quadTo(SkBits2Float(0x000040ec), SkBits2Float(0x3a333300), SkBits2Float(0xecec3333), SkBits2Float(0xececdbec)); // 2.32896e-41f, 0.000683591f, -2.28439e+27f, -2.29076e+27f
10962path.lineTo(SkBits2Float(0x3300007f), SkBits2Float(0x33d83333)); // 2.98028e-08f, 1.00676e-07f
10963path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10964path.close();
10965path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10966path.quadTo(SkBits2Float(0x9e9ea900), SkBits2Float(0x33ececec), SkBits2Float(0xececec33), SkBits2Float(0xec336e6e)); // -1.67988e-20f, 1.10327e-07f, -2.29138e+27f, -8.67677e+26f
10967path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10968path.close();
10969path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10970path.lineTo(SkBits2Float(0xedededed), SkBits2Float(0xedededed)); // -9.20445e+27f, -9.20445e+27f
10971path.lineTo(SkBits2Float(0xecececec), SkBits2Float(0xecececec)); // -2.2914e+27f, -2.2914e+27f
10972path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10973path.close();
10974path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10975path.lineTo(SkBits2Float(0x01003300), SkBits2Float(0x33d83333)); // 2.35465e-38f, 1.00676e-07f
10976path.quadTo(SkBits2Float(0xecec3333), SkBits2Float(0x04eeedec), SkBits2Float(0xe0e0e0e0), SkBits2Float(0x9ee0e0e0)); // -2.28439e+27f, 5.6172e-36f, -1.29634e+20f, -2.38099e-20f
10977path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10978path.close();
10979path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10980path.cubicTo(SkBits2Float(0x299e9e9e), SkBits2Float(0xecececec), SkBits2Float(0xececb6ec), SkBits2Float(0xf0ececec), SkBits2Float(0x0000ecec), SkBits2Float(0x9ebe6e6e)); // 7.04413e-14f, -2.2914e+27f, -2.28936e+27f, -5.86599e+29f, 8.49916e-41f, -2.01627e-20f
10981path.cubicTo(SkBits2Float(0x9e9e9e9e), SkBits2Float(0xe8009e9e), SkBits2Float(0x9e9e9e9e), SkBits2Float(0xecec9e9e), SkBits2Float(0xec3333ec), SkBits2Float(0xececf0ec)); // -1.67945e-20f, -2.42956e+24f, -1.67945e-20f, -2.28844e+27f, -8.66572e+26f, -2.29155e+27f
10982
10983 SkPath path2(path);
10984 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
10985}
10986
10987static void fuzz763_25(skiatest::Reporter* reporter, const char* filename) {
10988 SkPath path;
10989 path.setFillType((SkPath::FillType) 1);
10990path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10991path.conicTo(SkBits2Float(0x653140d9), SkBits2Float(0x6a4b4f74), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3f6728a2)); // 5.23159e+22f, 6.14468e+25f, 8.52382e+22f, 5.00576e+25f, 0.902964f
10992path.cubicTo(SkBits2Float(0x68295bc5), SkBits2Float(0x00000000), SkBits2Float(0x682958ff), SkBits2Float(0x00000000), SkBits2Float(0x68286829), SkBits2Float(0x00000000)); // 3.19909e+24f, 0, 3.19889e+24f, 0, 3.18112e+24f, 0
10993path.lineTo(SkBits2Float(0x68555b29), SkBits2Float(0x00000000)); // 4.03018e+24f, 0
10994path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x682d2927), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6829686f)); // 0, 3.27091e+24f, 0, 0, 3.20003e+24f
10995path.lineTo(SkBits2Float(0xdf218a28), SkBits2Float(0x00000000)); // -1.16402e+19f, 0
10996path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10997path.close();
10998path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10999path.conicTo(SkBits2Float(0x6642c40c), SkBits2Float(0x00000000), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3edcd74d)); // 2.29939e+23f, 0, 8.52382e+22f, 5.00576e+25f, 0.43133f
11000path.conicTo(SkBits2Float(0x68295afa), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x4277a57b)); // 3.19903e+24f, 0, 0, 0, 61.9116f
11001path.close();
11002
11003 SkPath path1(path);
11004 path.reset();
11005 path.setFillType((SkPath::FillType) 0);
11006
11007 SkPath path2(path);
11008 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11009}
11010
11011
11012static void fuzz763_26(skiatest::Reporter* reporter, const char* filename) {
11013 SkPath path;
11014 path.setFillType((SkPath::FillType) 0);
11015
11016 SkPath path1(path);
11017 path.reset();
11018 path.setFillType((SkPath::FillType) 0);
11019path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11020path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc003210a)); // 3.60396e-20f, -2.04889f
11021path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
11022path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
11023path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11024path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11025path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11026path.close();
11027path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11028path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11029path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11030path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212121), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.73517e-37f, 1.43189e+16f
11031path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
11032path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11033path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
11034path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11035path.close();
11036path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11037path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
11038path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11039path.close();
11040path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11041path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2127ed29)); // 2.25206e-21f, 300.343f, 0.000650423f, 5.68957e-19f
11042path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
11043path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
11044path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11045path.close();
11046path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
11047path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x5b2d5529)); // 4.03114e+24f, 4.87888e+16f
11048path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
11049path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
11050path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
11051path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11052path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11053path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11054path.close();
11055path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11056path.lineTo(SkBits2Float(0x555b1b29), SkBits2Float(0x6c212a8c)); // 1.50569e+13f, 7.79352e+26f
11057path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x8c5bf055), SkBits2Float(0x1f212a3a)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -1.69435e-31f, 3.4128e-20f
11058path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2a212a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 1.43143e-13f, 1.99397e+36f
11059path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11060path.close();
11061path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11062path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
11063path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11064path.close();
11065
11066 SkPath path2(path);
11067 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11068}
11069
11070static void fuzz763_28(skiatest::Reporter* reporter, const char* filename) {
11071 SkPath path;
11072 path.setFillType((SkPath::FillType) 0);
11073
11074 SkPath path1(path);
11075 path.reset();
11076 path.setFillType((SkPath::FillType) 0);
11077path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11078path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11079path.cubicTo(SkBits2Float(0x68302d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6aa37bc0)); // 3.32789e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 9.88197e+25f
11080path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2d28ed84), SkBits2Float(0x5b2d2955)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.60243e-12f, 4.87406e+16f
11081path.moveTo(SkBits2Float(0x6c395b2d), SkBits2Float(0xf0682955)); // 8.96327e+26f, -2.87402e+29f
11082path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef8c55), SkBits2Float(0x68295b2d), SkBits2Float(0x21086855), SkBits2Float(0x4b7bc003)); // 5.76397e-19f, 4.25523e-13f, 3.19905e+24f, 4.62167e-19f, 1.64987e+07f
11083path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11084path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11085path.lineTo(SkBits2Float(0x8a283a28), SkBits2Float(0x284f1a3a)); // -8.09984e-33f, 1.14965e-14f
11086path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
11087path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
11088path.conicTo(SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
11089path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
11090path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
11091path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
11092path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
11093path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
11094path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11095path.close();
11096path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11097path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x1f212a55), SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a)); // 6.14991e+25f, 4.88097e+16f, 3.41281e-20f, -3.65895e-31f, 0.664569f
11098path.lineTo(SkBits2Float(0x5b2d212d), SkBits2Float(0x2d556829)); // 4.87316e+16f, 1.21308e-11f
11099path.moveTo(SkBits2Float(0x68552968), SkBits2Float(0x5568295b)); // 4.02651e+24f, 1.5954e+13f
11100path.moveTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11101path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11102path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a)); // 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 6.77381e-19f, 9.33503e-15f
11103
11104 SkPath path2(path);
11105 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11106}
11107
11108static void fuzz763_27(skiatest::Reporter* reporter, const char* filename) {
11109 SkPath path;
11110 path.setFillType((SkPath::FillType) 0);
11111
11112 SkPath path1(path);
11113 path.reset();
11114 path.setFillType((SkPath::FillType) 0);
11115path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11116path.quadTo(SkBits2Float(0x30309ab8), SkBits2Float(0x305b3030), SkBits2Float(0x00f53030), SkBits2Float(0x3a3a0000)); // 6.42483e-10f, 7.97402e-10f, 2.2517e-38f, 0.000709534f
11117path.quadTo(SkBits2Float(0xb8b8d5b8), SkBits2Float(0x0b0b0b03), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a0b0b)); // -8.81361e-05f, 2.67787e-32f, 2.67787e-32f, 0.000709698f
11118path.quadTo(SkBits2Float(0xb8b8b8b8), SkBits2Float(0x0b1203b8), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a2110)); // -8.80821e-05f, 2.81214e-32f, 2.67787e-32f, 0.000710026f
11119
11120 SkPath path2(path);
11121 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11122}
11123
11124static void fuzz763_29(skiatest::Reporter* reporter, const char* filename) {
11125 SkPath path;
11126 path.setFillType((SkPath::FillType) 1);
11127path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11128path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x743e0000)); // 0, 6.02134e+31f
11129path.cubicTo(SkBits2Float(0x74083cf1), SkBits2Float(0x74536e73), SkBits2Float(0x742ac4e4), SkBits2Float(0x7415f5be), SkBits2Float(0x7433ee3c), SkBits2Float(0x7405a69a)); // 4.31756e+31f, 6.70053e+31f, 5.41189e+31f, 4.75242e+31f, 5.70223e+31f, 4.23556e+31f
11130path.quadTo(SkBits2Float(0x74360ca0), SkBits2Float(0x7401e10c), SkBits2Float(0x7436a382), SkBits2Float(0x7401cc18)); // 5.76937e+31f, 4.11603e+31f, 5.78805e+31f, 4.11344e+31f
11131path.cubicTo(SkBits2Float(0x74374a91), SkBits2Float(0x7401ef19), SkBits2Float(0x74375c84), SkBits2Float(0x7404d9b9), SkBits2Float(0x7437868f), SkBits2Float(0x740bae8a)); // 5.80873e+31f, 4.11777e+31f, 5.81095e+31f, 4.2102e+31f, 5.81616e+31f, 4.42669e+31f
11132path.cubicTo(SkBits2Float(0x7437d6c1), SkBits2Float(0x7418b629), SkBits2Float(0x74387e9b), SkBits2Float(0x7433fbc5), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 5.82609e+31f, 4.83962e+31f, 5.84687e+31f, 5.7039e+31f, 6.02728e+31f, 7.26914e+31f
11133path.cubicTo(SkBits2Float(0x741ada75), SkBits2Float(0x74745717), SkBits2Float(0x73c106b4), SkBits2Float(0x74744e64), SkBits2Float(0x00000000), SkBits2Float(0x74744006)); // 4.9075e+31f, 7.74345e+31f, 3.05862e+31f, 7.74237e+31f, 0, 7.74059e+31f
11134path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x74746c7c), SkBits2Float(0x74244dce), SkBits2Float(0x7474733e), SkBits2Float(0x74400000), SkBits2Float(0x74747445)); // 0, 7.7461e+31f, 5.207e+31f, 7.74693e+31f, 6.08472e+31f, 7.74706e+31f
11135path.cubicTo(SkBits2Float(0x743f5854), SkBits2Float(0x746f3659), SkBits2Float(0x743ebe05), SkBits2Float(0x746a3017), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 6.06397e+31f, 7.58094e+31f, 6.04486e+31f, 7.42171e+31f, 6.02728e+31f, 7.26914e+31f
11136path.cubicTo(SkBits2Float(0x7447a582), SkBits2Float(0x74615dee), SkBits2Float(0x744f74f6), SkBits2Float(0x745c4903), SkBits2Float(0x7455e7e6), SkBits2Float(0x7455d751)); // 6.32705e+31f, 7.14216e+31f, 6.57457e+31f, 6.98112e+31f, 6.77895e+31f, 6.77689e+31f
11137path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x743750a4), SkBits2Float(0x74747474), SkBits2Float(0x73f46f0d), SkBits2Float(0x74747474), SkBits2Float(0x00000000)); // 7.74708e+31f, 5.80948e+31f, 7.74708e+31f, 3.87321e+31f, 7.74708e+31f, 0
11138path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11139path.close();
11140
11141 SkPath path1(path);
11142 path.reset();
11143 path.setFillType((SkPath::FillType) 0);
11144path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11145path.lineTo(SkBits2Float(0xf0682955), SkBits2Float(0x211f5b2d)); // -2.87402e+29f, 5.3992e-19f
11146path.moveTo(SkBits2Float(0x2d2aff2d), SkBits2Float(0x74747474)); // 9.72004e-12f, 7.74708e+31f
11147path.cubicTo(SkBits2Float(0x7474748e), SkBits2Float(0x74747490), SkBits2Float(0x8c722174), SkBits2Float(0x181f0080), SkBits2Float(0x74c0e520), SkBits2Float(0x747d7463)); // 7.7471e+31f, 7.7471e+31f, -1.86531e-31f, 2.05505e-24f, 1.22262e+32f, 8.0323e+31f
11148path.cubicTo(SkBits2Float(0x7b005e4b), SkBits2Float(0xdf3a6a3a), SkBits2Float(0x2a3a2848), SkBits2Float(0x2d2d7821), SkBits2Float(0x8c55212d), SkBits2Float(0x2d2d2d24)); // 6.66526e+35f, -1.34326e+19f, 1.65341e-13f, 9.86059e-12f, -1.64189e-31f, 9.84393e-12f
11149path.conicTo(SkBits2Float(0xde28804c), SkBits2Float(0x28e03721), SkBits2Float(0x3329df28), SkBits2Float(0x2d291515), SkBits2Float(0x0568295b)); // -3.03545e+18f, 2.48929e-14f, 3.95513e-08f, 9.61122e-12f, 1.09162e-35f
11150path.conicTo(SkBits2Float(0x556a2d21), SkBits2Float(0x21088c2a), SkBits2Float(0x3a333303), SkBits2Float(0x5b293a8a), SkBits2Float(0x6855683b)); // 1.60925e+13f, 4.62641e-19f, 0.000683591f, 4.76336e+16f, 4.03115e+24f
11151
11152 SkPath path2(path);
11153 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11154}
11155
11156static void fuzz763_30(skiatest::Reporter* reporter, const char* filename) {
11157 SkPath path;
11158 path.setFillType((SkPath::FillType) 1);
11159
11160 SkPath path1(path);
11161 path.reset();
11162 path.setFillType((SkPath::FillType) 0);
11163path.moveTo(SkBits2Float(0x1f2108c0), SkBits2Float(0x4b7b0321)); // 3.41003e-20f, 1.64503e+07f
11164path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11165path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
11166path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x2a4b7bc0), SkBits2Float(0x68295b2d)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 1.8073e-13f, 3.19905e+24f
11167path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11168path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x4b7b28c0)); // 4.7323e-37f, 1.646e+07f
11169path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x2d081f21)); // 2.50338e-13f, 7.73762e-12f
11170path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11171path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11172path.cubicTo(SkBits2Float(0x69392d55), SkBits2Float(0x2d5b684b), SkBits2Float(0x8c5527f0), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 1.39916e+25f, 1.24719e-11f, -1.64209e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
11173path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0xed7a6a1f), SkBits2Float(0x3a214793), SkBits2Float(0x3328282a), SkBits2Float(0x3a8a3adf)); // 5.77848e-19f, -4.84372e+27f, 0.000615233f, 3.91521e-08f, 0.00105461f
11174path.conicTo(SkBits2Float(0x4be80304), SkBits2Float(0xdcdcdc15), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x71dcdcdc), SkBits2Float(0x6c107164)); // 3.04102e+07f, -4.97332e+17f, -4.97339e+17f, 2.18732e+30f, 6.98483e+26f
11175path.conicTo(SkBits2Float(0x6c0f1d6c), SkBits2Float(0x8e406c6e), SkBits2Float(0x6c6c0200), SkBits2Float(0x6c6ce46c), SkBits2Float(0x6c6c6c6c)); // 6.92061e+26f, -2.3718e-30f, 1.14126e+27f, 1.14554e+27f, 1.14327e+27f
11176path.lineTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11177path.close();
11178path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11179path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x3ac22c21), SkBits2Float(0x6c401057), SkBits2Float(0x6d6d6b64)); // 0.00136978f, 0.00148142f, 9.28764e+26f, 4.59236e+27f
11180path.cubicTo(SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x286d6d6d), SkBits2Float(0x081d2a29), SkBits2Float(0x6d690321), SkBits2Float(0x6b6b026d)); // 4.59251e+27f, 4.59251e+27f, 1.31799e-14f, 4.7295e-34f, 4.50711e+27f, 2.84109e+26f
11181
11182 SkPath path2(path);
11183 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11184}
11185
11186static void fuzz763_31(skiatest::Reporter* reporter, const char* filename) {
11187 SkPath path;
11188 path.setFillType((SkPath::FillType) 1);
11189
11190 SkPath path1(path);
11191 path.reset();
11192 path.setFillType((SkPath::FillType) 0);
11193path.moveTo(SkBits2Float(0xd72a8c55), SkBits2Float(0x61081f2a)); // -1.8752e+14f, 1.56938e+20f
11194path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf3a2128), SkBits2Float(0x471ac575)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.3412e+19f, 39621.5f
11195path.lineTo(SkBits2Float(0x28404040), SkBits2Float(0x552a298a)); // 1.06721e-14f, 1.16935e+13f
11196path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11197path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x80ed7a3a), SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, -2.18089e-38f, 1.65317e-13f, -1.16126e+19f, 2.58751e+09f
11198path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11199path.close();
11200path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11201path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x432a2928), SkBits2Float(0x96812be6), SkBits2Float(0x272a1d2a), SkBits2Float(0x3a2a3529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 170.161f, -2.08688e-25f, 2.3608e-15f, 0.000649291f, 0.00241343f
11202path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11203path.close();
11204path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11205path.cubicTo(SkBits2Float(0xc5272927), SkBits2Float(0x22383b39), SkBits2Float(0x1051523a), SkBits2Float(0x2927b029), SkBits2Float(0x685b2d27), SkBits2Float(0x5b2d6855)); // -2674.57f, 2.4968e-18f, 4.12813e-29f, 3.72342e-14f, 4.14012e+24f, 4.88099e+16f
11206
11207 SkPath path2(path);
11208 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11209}
11210
11211static void fuzz763_33(skiatest::Reporter* reporter, const char* filename) {
11212 SkPath path;
11213 path.setFillType((SkPath::FillType) 1);
11214path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11215path.quadTo(SkBits2Float(0x724341bf), SkBits2Float(0x72433fc4), SkBits2Float(0x6d757575), SkBits2Float(0x6d6d6d6d)); // 3.86746e+30f, 3.86731e+30f, 4.74786e+27f, 4.59251e+27f
11216path.cubicTo(SkBits2Float(0x6d18b5e5), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6cbe03bd), SkBits2Float(0x6d4b455b), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 2.95385e+27f, 4.59251e+27f, 1.83771e+27f, 3.93183e+27f, 1.14323e+27f, 3.11171e+27f
11217path.conicTo(SkBits2Float(0x6c6c8b72), SkBits2Float(0x00000000), SkBits2Float(0x6c6c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x400812df)); // 1.14386e+27f, 0, 1.14327e+27f, 0, 2.12615f
11218path.quadTo(SkBits2Float(0x72432acb), SkBits2Float(0x72432295), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 3.86568e+30f, 3.86505e+30f, 7.66623e+30f, 7.66608e+30f
11219path.close();
11220path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11221path.cubicTo(SkBits2Float(0x74f97d76), SkBits2Float(0x74f97d90), SkBits2Float(0x75381628), SkBits2Float(0x7538182c), SkBits2Float(0x7538153b), SkBits2Float(0x75381835)); // 1.58133e+32f, 1.58133e+32f, 2.33357e+32f, 2.33367e+32f, 2.33353e+32f, 2.33368e+32f
11222path.cubicTo(SkBits2Float(0x7538144e), SkBits2Float(0x7538183f), SkBits2Float(0x74f9760f), SkBits2Float(0x74f97ddd), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 2.33348e+32f, 2.33368e+32f, 1.58115e+32f, 1.58134e+32f, 7.66623e+30f, 7.66608e+30f
11223path.close();
11224path.moveTo(SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.14323e+27f, 3.11171e+27f
11225path.conicTo(SkBits2Float(0x6c6c55ae), SkBits2Float(0x6d80b520), SkBits2Float(0x6c6c1071), SkBits2Float(0x6e0f1d6c), SkBits2Float(0x3f96e656)); // 1.14284e+27f, 4.97913e+27f, 1.14154e+27f, 1.1073e+28f, 1.1789f
11226path.lineTo(SkBits2Float(0x6a674231), SkBits2Float(0x6c0c3394)); // 6.98936e+25f, 6.77973e+26f
11227path.cubicTo(SkBits2Float(0x6b12c63f), SkBits2Float(0x6c881439), SkBits2Float(0x6bba4ae5), SkBits2Float(0x6ced1e23), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.77439e+26f, 1.31608e+27f, 4.50428e+26f, 2.29326e+27f, 1.14323e+27f, 3.11171e+27f
11228path.close();
11229
11230 SkPath path1(path);
11231 path.reset();
11232 path.setFillType((SkPath::FillType) 0);
11233path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11234path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11235path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11236path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
11237path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x95066b78)); // 2.01583e+34f, -2.71459e-26f
11238path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11239path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11240path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
11241path.lineTo(SkBits2Float(0x8787878f), SkBits2Float(0x87878787)); // -2.03922e-34f, -2.03922e-34f
11242path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11243path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11244path.lineTo(SkBits2Float(0x6c105778), SkBits2Float(0x6d406b64)); // 6.97994e+26f, 3.72193e+27f
11245path.cubicTo(SkBits2Float(0x7575756d), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x6d6d7575), SkBits2Float(0x6d6d6d6d)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 4.59312e+27f, 4.59251e+27f
11246path.cubicTo(SkBits2Float(0x6d696d6d), SkBits2Float(0x026d6d6d), SkBits2Float(0x80bc6b6b), SkBits2Float(0xaebcdfd0), SkBits2Float(0x7878bcac), SkBits2Float(0x78787878)); // 4.51514e+27f, 1.74434e-37f, -1.73036e-38f, -8.58901e-11f, 2.01799e+34f, 2.01583e+34f
11247path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11248path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11249path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11250path.lineTo(SkBits2Float(0xb4bcacbc), SkBits2Float(0xbcadbcbc)); // -3.51434e-07f, -0.0212082f
11251path.moveTo(SkBits2Float(0xa03aacbc), SkBits2Float(0x757575a0)); // -1.5812e-19f, 3.11157e+32f
11252path.close();
11253
11254 SkPath path2(path);
11255 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11256}
11257
11258static void fuzz763_32(skiatest::Reporter* reporter, const char* filename) {
11259 SkPath path;
11260 path.setFillType((SkPath::FillType) 1);
11261
11262 SkPath path1(path);
11263 path.reset();
11264 path.setFillType((SkPath::FillType) 0);
11265path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11266path.cubicTo(SkBits2Float(0xdedcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x55dcdcdc), SkBits2Float(0x29407d7f)); // -7.95742e+18f, -4.97339e+17f, -4.97339e+17f, -4.97339e+17f, 3.03551e+13f, 4.27414e-14f
11267path.cubicTo(SkBits2Float(0x7b93ed4b), SkBits2Float(0x29521472), SkBits2Float(0xdfc83c28), SkBits2Float(0x1a3a834e), SkBits2Float(0x6855e84f), SkBits2Float(0xf2f22a80)); // 1.53616e+36f, 4.66471e-14f, -2.88569e+19f, 3.857e-23f, 4.0406e+24f, -9.59318e+30f
11268path.moveTo(SkBits2Float(0xe0f2f210), SkBits2Float(0xc3f2eef2)); // -1.40049e+20f, -485.867f
11269path.cubicTo(SkBits2Float(0x108ced7a), SkBits2Float(0x7bc00308), SkBits2Float(0x287a6a3a), SkBits2Float(0x242847ed), SkBits2Float(0x2bcb302a), SkBits2Float(0xf21003e8)); // 5.55862e-29f, 1.99396e+36f, 1.39008e-14f, 3.64901e-17f, 1.44374e-12f, -2.85252e+30f
11270path.moveTo(SkBits2Float(0x556c0010), SkBits2Float(0x002a8768)); // 1.62178e+13f, 3.90567e-39f
11271path.quadTo(SkBits2Float(0xf2f22021), SkBits2Float(0xf2f2f56e), SkBits2Float(0xf2f2f2f2), SkBits2Float(0xf22040d9)); // -9.59158e+30f, -9.62459e+30f, -9.6242e+30f, -3.17414e+30f
11272path.lineTo(SkBits2Float(0xc013f2f2), SkBits2Float(0x0000294d)); // -2.3117f, 1.48159e-41f
11273
11274 SkPath path2(path);
11275 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11276}
11277
11278static void fuzz763_34(skiatest::Reporter* reporter, const char* filename) {
11279 SkPath path;
11280 path.setFillType((SkPath::FillType) 1);
11281path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11282path.quadTo(SkBits2Float(0x63690f37), SkBits2Float(0x6d0a3d9b), SkBits2Float(0x00000000), SkBits2Float(0x6d3e3e3e)); // 4.29919e+21f, 2.67396e+27f, 0, 3.67984e+27f
11283path.conicTo(SkBits2Float(0x6b9253fc), SkBits2Float(0x6c956a8b), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3e56eb72)); // 3.538e+26f, 1.44506e+27f, 1.13532e+27f, 1.28723e+25f, 0.209883f
11284path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11285path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11286path.conicTo(SkBits2Float(0x6c8c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6cc8e82a), SkBits2Float(0x5b684b68)); // 1.35809e+27f, 0, 0, 1.94305e+27f, 6.53851e+16f
11287path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11288path.close();
11289path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11290path.quadTo(SkBits2Float(0x641ae35f), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.14287e+22f, 0, 0, 0
11291path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11292path.conicTo(SkBits2Float(0x6c6ba1fc), SkBits2Float(0x688c9eb1), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3f7fec32)); // 1.13945e+27f, 5.31247e+24f, 1.13532e+27f, 1.28723e+25f, 0.999698f
11293path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11294path.close();
11295
11296 SkPath path1(path);
11297 path.reset();
11298 path.setFillType((SkPath::FillType) 0);
11299path.moveTo(SkBits2Float(0x6c3e3e3e), SkBits2Float(0x586c79ff)); // 9.19959e+26f, 1.04003e+15f
11300path.quadTo(SkBits2Float(0x6c6c4a6c), SkBits2Float(0x6c6c6c6c), SkBits2Float(0xc83e6c6c), SkBits2Float(0x3e313e3e)); // 1.14263e+27f, 1.14327e+27f, -194994, 0.173089f
11301
11302 SkPath path2(path);
11303 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11304}
11305
11306static void fuzz763_36(skiatest::Reporter* reporter, const char* filename) {
11307 SkPath path;
11308 path.setFillType((SkPath::FillType) 0);
11309
11310 SkPath path1(path);
11311 path.reset();
11312 path.setFillType((SkPath::FillType) 0);
11313path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11314path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11315path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
11316path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
11317path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11318path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11319path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11320path.close();
11321path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11322path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11323path.conicTo(SkBits2Float(0x212a081f), SkBits2Float(0x4b7bc003), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556839), SkBits2Float(0x2a8c555b)); // 5.7609e-19f, 1.64987e+07f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
11324path.conicTo(SkBits2Float(0xf42a212a), SkBits2Float(0x4b7bc003), SkBits2Float(0x2aed7a39), SkBits2Float(0x2108c08c), SkBits2Float(0x7b03211f)); // -5.39162e+31f, 1.64987e+07f, 4.21845e-13f, 4.63334e-19f, 6.80863e+35f
11325path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11326path.close();
11327path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11328path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11329path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11330path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x03210807), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 5.76399e-19f, 4.73229e-37f, 6.14984e+25f, 75739
11331path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11332path.close();
11333path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11334path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3adf21), SkBits2Float(0x284f1a3a), SkBits2Float(0x213ab38a)); // 9.4456e-15f, -8.99754e-33f, 1.14965e-14f, 6.32569e-19f
11335path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11336path.close();
11337path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11338path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a20002a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000610354f, 2.50336e-13f
11339path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11340path.close();
11341path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11342path.conicTo(SkBits2Float(0xed210830), SkBits2Float(0xc04b6a03), SkBits2Float(0x68297b27), SkBits2Float(0x55555b2d), SkBits2Float(0x2ab03a2a)); // -3.11481e+27f, -3.17835f, 3.20141e+24f, 1.46617e+13f, 3.13042e-13f
11343path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4341f20), SkBits2Float(0xecc52a22)); // 2.22225e-15f, 0.000713932f, -720.486f, -1.90686e+27f
11344path.cubicTo(SkBits2Float(0x5921c25d), SkBits2Float(0x29523a70), SkBits2Float(0x555b2d68), SkBits2Float(0x1f212a8c), SkBits2Float(0x0321d90a), SkBits2Float(0x5b2d6829)); // 2.8457e+15f, 4.66801e-14f, 1.50618e+13f, 3.41283e-20f, 4.75628e-37f, 4.88097e+16f
11345path.lineTo(SkBits2Float(0x1f2a2a8c), SkBits2Float(0x03210821)); // 3.60341e-20f, 4.7323e-37f
11346path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11347path.close();
11348path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11349path.conicTo(SkBits2Float(0x2eed6a7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.07964e-10f, 9.4495e-15f, 0.000617492f, 2.58753e+09f, 0.00136978f
11350path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11351path.close();
11352path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11353path.quadTo(SkBits2Float(0xe61d2a28), SkBits2Float(0x2a43962b), SkBits2Float(0x29272a81), SkBits2Float(0x2bb02a55)); // -1.85547e+23f, 1.73716e-13f, 3.71183e-14f, 1.25173e-12f
11354path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3ac52729), SkBits2Float(0xc4223b32), SkBits2Float(0x6c2a201f)); // 2.22225e-15f, 0.00150416f, -648.925f, 8.22676e+26f
11355
11356 SkPath path2(path);
11357 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11358}
11359
11360static void fuzz763_35(skiatest::Reporter* reporter, const char* filename) {
11361 SkPath path;
11362 path.setFillType((SkPath::FillType) 1);
11363
11364 SkPath path1(path);
11365 path.reset();
11366 path.setFillType((SkPath::FillType) 0);
11367path.moveTo(SkBits2Float(0x2aed2a8c), SkBits2Float(0x03210a1f)); // 4.21292e-13f, 4.73253e-37f
11368path.conicTo(SkBits2Float(0x0000007b), SkBits2Float(0x7474747f), SkBits2Float(0x74747474), SkBits2Float(0x747474c4), SkBits2Float(0x74747474)); // 1.7236e-43f, 7.74709e+31f, 7.74708e+31f, 7.74712e+31f, 7.74708e+31f
11369path.quadTo(SkBits2Float(0x74747474), SkBits2Float(0x74747474), SkBits2Float(0x20437474), SkBits2Float(0x43a52b02)); // 7.74708e+31f, 7.74708e+31f, 1.65557e-19f, 330.336f
11370path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11371path.lineTo(SkBits2Float(0x4b7bd603), SkBits2Float(0x6cf33b6a)); // 1.65043e+07f, 2.3524e+27f
11372path.conicTo(SkBits2Float(0x35778caa), SkBits2Float(0x0000002a), SkBits2Float(0x74742164), SkBits2Float(0x2a3a7474), SkBits2Float(0x4cc22157)); // 9.22194e-07f, 5.88545e-44f, 7.7368e+31f, 1.65605e-13f, 1.0178e+08f
11373path.cubicTo(SkBits2Float(0x21479321), SkBits2Float(0x23434cc2), SkBits2Float(0x3a214793), SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a)); // 6.76185e-19f, 1.05872e-17f, 0.000615233f, 5.69738e-19f, 1.08774e-08f, 3.42981e+33f
11374path.conicTo(SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474), SkBits2Float(0x74746474), SkBits2Float(0x74747474)); // 5.88545e-44f, 7.74706e+31f, 7.74708e+31f, 7.7451e+31f, 7.74708e+31f
11375path.cubicTo(SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35), SkBits2Float(0x74744000), SkBits2Float(0x2974e874)); // 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f, 7.74059e+31f, 5.43805e-14f
11376path.cubicTo(SkBits2Float(0x74647474), SkBits2Float(0x74747474), SkBits2Float(0x12ec7474), SkBits2Float(0x4cc22147), SkBits2Float(0x47932343), SkBits2Float(0x282a3a21)); // 7.24002e+31f, 7.74708e+31f, 1.49224e-27f, 1.0178e+08f, 75334.5f, 9.4495e-15f
11377path.lineTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11378path.close();
11379path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11380path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x4977291a), SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 0.000679893f, 1.01237e+06f, 5.88545e-44f, 7.74706e+31f, 7.74708e+31f
11381path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
11382path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x742974e8)); // 7.74706e+31f, 5.3703e+31f
11383path.cubicTo(SkBits2Float(0x74746474), SkBits2Float(0x74747474), SkBits2Float(0xd912ec74), SkBits2Float(0x553a3728), SkBits2Float(0x29202a8c), SkBits2Float(0x5555201b)); // 7.7451e+31f, 7.74708e+31f, -2.58471e+15f, 1.27966e+13f, 3.5564e-14f, 1.46459e+13f
11384path.moveTo(SkBits2Float(0x31292768), SkBits2Float(0x212d2aff)); // 2.46151e-09f, 5.86716e-19f
11385path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a), SkBits2Float(0x00002a49)); // 5.69738e-19f, 1.08774e-08f, 3.42981e+33f, 1.51691e-41f
11386path.moveTo(SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11387path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
11388path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11389path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x43747474), SkBits2Float(0xa52b0220), SkBits2Float(0x47812a43), SkBits2Float(0x282a3a21)); // 7.74708e+31f, 7.74708e+31f, 244.455f, -1.48326e-16f, 66132.5f, 9.4495e-15f
11390path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11391path.close();
11392path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11393path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x19433b1a), SkBits2Float(0x5921e7fc), SkBits2Float(0x1f2a212a), SkBits2Float(0x35032108)); // 0.000679893f, 1.00932e-23f, 2.84828e+15f, 3.60263e-20f, 4.88494e-07f
11394
11395 SkPath path2(path);
11396 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11397}
11398
11399static void fuzz763_37(skiatest::Reporter* reporter, const char* filename) {
11400 SkPath path;
11401 path.setFillType((SkPath::FillType) 0);
11402path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2d3368)); // 1.59583e+13f, 4.87517e+16f
11403path.conicTo(SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6ab485c0)); // 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 1.09119e+26f
11404path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
11405path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11406path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xee682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.50349e-13f, 3.27093e+24f, -1.79601e+28f, 1.64988e+07f
11407path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11408path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f, -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
11409path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0xed7ac039), SkBits2Float(0x2f218c08), SkBits2Float(0x1f037b2a)); // 4.73517e-37f, 1.65035e+07f, -4.85023e+27f, 1.46926e-10f, 2.78422e-20f
11410path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11411path.close();
11412path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11413path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11414path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11415path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 75739
11416path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11417path.close();
11418path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11419path.quadTo(SkBits2Float(0x28282a2a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.33502e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
11420path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x081f2a21)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 4.78968e-34f
11421path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11422path.close();
11423path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11424path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0xdf93ed7a), SkBits2Float(0x1a3a803a), SkBits2Float(0xb38a294f), SkBits2Float(0x3ac2213a)); // 6.14991e+25f, -2.13186e+19f, 3.85675e-23f, -6.43364e-08f, 0.00148109f
11425path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11426path.close();
11427path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11428path.conicTo(SkBits2Float(0xe62b291d), SkBits2Float(0x2a812a43), SkBits2Float(0x8ced093a), SkBits2Float(0xb38a5c5c), SkBits2Float(0x3ac2213a)); // -2.02071e+23f, 2.29443e-13f, -3.65212e-31f, -6.44293e-08f, 0.00148109f
11429path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11430path.close();
11431path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11432path.lineTo(SkBits2Float(0x8ced293a), SkBits2Float(0x5c5c5c5c)); // -3.65404e-31f, 2.48104e+17f
11433path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
11434path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
11435path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11436path.lineTo(SkBits2Float(0x682d2952), SkBits2Float(0xee682103)); // 3.27093e+24f, -1.79601e+28f
11437path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a3b0355)); // 4.85282e+16f, 1.66101e-13f
11438path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11439path.close();
11440path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11441path.conicTo(SkBits2Float(0x084b218c), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x1f2a8c55)); // 6.11275e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 3.6115e-20f
11442
11443 SkPath path1(path);
11444 path.reset();
11445 path.setFillType((SkPath::FillType) 0);
11446path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11447path.cubicTo(SkBits2Float(0xbcb4bcac), SkBits2Float(0x000029ff), SkBits2Float(0x010000bc), SkBits2Float(0x00bcbc00), SkBits2Float(0xbebcbcbc), SkBits2Float(0xb6aebcae)); // -0.0220626f, 1.50654e-41f, 2.35104e-38f, 1.73325e-38f, -0.368627f, -5.20757e-06f
11448
11449 SkPath path2(path);
11450 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11451}
11452
11453static void fuzz763_38(skiatest::Reporter* reporter, const char* filename) {
11454 SkPath path;
11455 path.setFillType((SkPath::FillType) 0);
11456path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11457path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0x5b292d11), SkBits2Float(0x212a8c55), SkBits2Float(0x555b2d2d), SkBits2Float(0x52525268)); // 6.53477e+16f, 4.76188e+16f, 5.7784e-19f, 1.50617e+13f, 2.25831e+11f
11458path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11459path.close();
11460path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11461path.close();
11462path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11463path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x2ac05252), SkBits2Float(0x727fb721)); // 4.80216e+30f, 2.25832e+11f, 3.41632e-13f, 5.06496e+30f
11464path.lineTo(SkBits2Float(0x73727322), SkBits2Float(0x555b2d29)); // 1.92088e+31f, 1.50617e+13f
11465path.lineTo(SkBits2Float(0xab2a212e), SkBits2Float(0x7a27872a)); // -6.04422e-13f, 2.17464e+35f
11466path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11467path.quadTo(SkBits2Float(0x52524852), SkBits2Float(0x72525228), SkBits2Float(0x72727272), SkBits2Float(0x3a727272)); // 2.25789e+11f, 4.16584e+30f, 4.80216e+30f, 0.000924862f
11468path.lineTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11469path.close();
11470path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11471path.quadTo(SkBits2Float(0x2a292827), SkBits2Float(0x962b0080), SkBits2Float(0x5252752a), SkBits2Float(0x72725252)); // 1.50241e-13f, -1.38134e-25f, 2.25977e+11f, 4.79967e+30f
11472path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79967e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11473path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda000072), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.00732e+15f, 2.25867e+11f, 2.25831e+11f
11474path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11475path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11476path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11477path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11478path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11479path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11480path.close();
11481path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11482path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x3a727272), SkBits2Float(0x28273ac2), SkBits2Float(0x00802a29)); // 4.80216e+30f, 0.000924862f, 9.2831e-15f, 1.17701e-38f
11483path.lineTo(SkBits2Float(0x52752a96), SkBits2Float(0x72525252)); // 2.63245e+11f, 4.16585e+30f
11484path.quadTo(SkBits2Float(0x72525272), SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272)); // 4.16586e+30f, 2.25966e+11f, 2.25831e+11f, 4.80216e+30f
11485path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
11486path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11487path.close();
11488path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11489path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11490path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x72525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 4.16585e+30f
11491path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x72727252), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada)); // 4.80216e+30f, 4.80215e+30f, -9.04113e+15f, 2.25867e+11f
11492path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11493path.close();
11494path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11495path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11496path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11497path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11498path.moveTo(SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 2.34994e+11f, 2.25831e+11f
11499path.close();
11500path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11501path.close();
11502path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11503path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11504path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11505path.quadTo(SkBits2Float(0x52525272), SkBits2Float(0x3b3b0052), SkBits2Float(0x5b2d553a), SkBits2Float(0x68556829)); // 2.25832e+11f, 0.00285341f, 4.87889e+16f, 4.03114e+24f
11506
11507 SkPath path1(path);
11508 path.reset();
11509 path.setFillType((SkPath::FillType) 0);
11510path.moveTo(SkBits2Float(0x52528c55), SkBits2Float(0x29215252)); // 2.26074e+11f, 3.58206e-14f
11511
11512 SkPath path2(path);
11513 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11514}
11515
11516static void fuzz763_41(skiatest::Reporter* reporter, const char* filename) {
11517 SkPath path;
11518 path.setFillType((SkPath::FillType) 0);
11519
11520 SkPath path1(path);
11521 path.reset();
11522 path.setFillType((SkPath::FillType) 0);
11523path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11524path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11525path.quadTo(SkBits2Float(0x00057272), SkBits2Float(0x72ff0000), SkBits2Float(0xba405e72), SkBits2Float(0x031b0074)); // 5.00233e-40f, 1.01016e+31f, -0.000733829f, 4.55509e-37f
11526path.lineTo(SkBits2Float(0x664af700), SkBits2Float(0x56397d39)); // 2.39619e+23f, 5.09869e+13f
11527path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300e4), SkBits2Float(0x257c0c9f), SkBits2Float(0x72400006)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 3.80295e+30f
11528path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x030000ff), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ec4000)); // -0.000836826f, 3.7617e-37f, 1.17894e+32f, -8.92527e+24f
11529path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11530path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x08727272), SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // -1.83687e-37f, 7.29588e-34f, 4.09355e-34f, 4.09355e-34f
11531path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11532path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11533path.conicTo(SkBits2Float(0x72728c08), SkBits2Float(0x5b5e7272), SkBits2Float(0x000074ba), SkBits2Float(0x03f8e300), SkBits2Float(0x5aff00e8)); // 4.80414e+30f, 6.26133e+16f, 4.18736e-41f, 1.46282e-36f, 3.58886e+16f
11534path.quadTo(SkBits2Float(0x00800039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 1.1755e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11535path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11536path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11537path.lineTo(SkBits2Float(0x666d0100), SkBits2Float(0x726efe62)); // 2.79805e+23f, 4.73376e+30f
11538path.lineTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11539path.close();
11540path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11541path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x475afc16), SkBits2Float(0x170100ad), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 56060.1f, 4.1683e-25f, 2.36017e-38f
11542path.quadTo(SkBits2Float(0x72057272), SkBits2Float(0x8c7a3472), SkBits2Float(0x72727272), SkBits2Float(0x00f6475e)); // 2.64319e+30f, -1.92751e-31f, 4.80216e+30f, 2.26171e-38f
11543path.moveTo(SkBits2Float(0x6d106d43), SkBits2Float(0x6efe6266)); // 2.79362e+27f, 3.93641e+28f
11544path.quadTo(SkBits2Float(0x72727a05), SkBits2Float(0xba5b7272), SkBits2Float(0x03000074), SkBits2Float(0x5aff00e8)); // 4.80274e+30f, -0.000837124f, 3.76163e-37f, 3.58886e+16f
11545path.quadTo(SkBits2Float(0x00da0039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 2.00202e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11546path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11547path.lineTo(SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // -4.56078e+36f, 50176.2f
11548path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62766d01)); // 1.03774e-38f, 1.13644e+21f
11549path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11550
11551 SkPath path2(path);
11552 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11553}
11554
11555static void fuzz763_40(skiatest::Reporter* reporter, const char* filename) {
11556 SkPath path;
11557 path.setFillType((SkPath::FillType) 1);
11558
11559 SkPath path1(path);
11560 path.reset();
11561 path.setFillType((SkPath::FillType) 0);
11562path.moveTo(SkBits2Float(0x10190004), SkBits2Float(0x7272727a)); // 3.01739e-29f, 4.80216e+30f
11563path.quadTo(SkBits2Float(0xf3db5e64), SkBits2Float(0x5b97fc16), SkBits2Float(0x000039fc), SkBits2Float(0x01008000)); // -3.47604e+31f, 8.55598e+16f, 2.08009e-41f, 2.36017e-38f
11564path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x41720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 15.1251f
11565path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11566path.lineTo(SkBits2Float(0x01000000), SkBits2Float(0x10010004)); // 2.35099e-38f, 2.54408e-29f
11567path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16), SkBits2Float(0x0000d07d), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 3.58785e+06f, 7.47915e-41f, 2.36017e-38f
11568path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11569path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11570path.lineTo(SkBits2Float(0x72000000), SkBits2Float(0x5b5e72b4)); // 2.5353e+30f, 6.26136e+16f
11571path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 1.13998e-35f, 4.80216e+30f, 6.26133e+16f
11572path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01727200), SkBits2Float(0x72727a00), SkBits2Float(0x5e8d7272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 4.45302e-38f, 4.80274e+30f, 5.09617e+18f
11573path.moveTo(SkBits2Float(0x72008972), SkBits2Float(0x458fe705)); // 2.54594e+30f, 4604.88f
11574path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xe8727272), SkBits2Float(0xba5b5e03), SkBits2Float(0x03000074)); // 1.73224e+35f, -4.5797e+24f, -0.00083682f, 3.76163e-37f
11575path.lineTo(SkBits2Float(0xf3dbff00), SkBits2Float(0x00397d16)); // -3.48598e+31f, 5.2795e-39f
11576path.cubicTo(SkBits2Float(0x7a101900), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x0197fc16), SkBits2Float(0x200c2010), SkBits2Float(0x20203620)); // 1.87049e+35f, 4.80216e+30f, -3.47604e+31f, 5.58304e-38f, 1.18691e-19f, 1.35704e-19f
11577
11578 SkPath path2(path);
11579 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11580}
11581
11582static void fuzz763_39(skiatest::Reporter* reporter, const char* filename) {
11583 SkPath path;
11584 path.setFillType((SkPath::FillType) 0);
11585
11586 SkPath path1(path);
11587 path.reset();
11588 path.setFillType((SkPath::FillType) 0);
11589path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11590path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11591path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11592path.lineTo(SkBits2Float(0x664aff00), SkBits2Float(0x56397d39)); // 2.39655e+23f, 5.09869e+13f
11593path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300ff), SkBits2Float(0x257c0c9f), SkBits2Float(0x72787257)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 4.92099e+30f
11594path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ecff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.95346e+24f
11595path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11596path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x72727272), SkBits2Float(0x724adf00), SkBits2Float(0x00397d39)); // -1.83687e-37f, 4.80216e+30f, 4.01828e+30f, 5.27954e-39f
11597path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x16f3abab), SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // 1.73224e+35f, 3.93671e-25f, -4.56078e+36f, 50176.2f
11598path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62767201)); // 1.03774e-38f, 1.13653e+21f
11599path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11600
11601 SkPath path2(path);
11602 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11603}
11604
11605
11606static void fuzz763_42(skiatest::Reporter* reporter, const char* filename) {
11607 SkPath path;
11608 path.setFillType((SkPath::FillType) 0);
11609
11610 SkPath path1(path);
11611 path.reset();
11612 path.setFillType((SkPath::FillType) 0);
11613path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11614path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x05720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 1.13789e-35f
11615path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11616path.lineTo(SkBits2Float(0x724aff00), SkBits2Float(0x56397d39)); // 4.02075e+30f, 5.09869e+13f
11617path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xfa8d00ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a)); // 1.73224e+35f, -3.66067e+35f, 2.10289e-16f, 4.80216e+30f
11618path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8e0ff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.50011e+24f
11619path.conicTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d), SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x4aff0072)); // 0.000231069f, 2.53975e+30f, 1.73224e+35f, 4.80216e+30f, 8.3559e+06f
11620path.quadTo(SkBits2Float(0x00397d39), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x385e7272)); // 5.27954e-39f, 1.13998e-35f, 4.80216e+30f, 5.30355e-05f
11621path.quadTo(SkBits2Float(0x057200ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.1379e-35f, 2.10289e-16f, 4.80216e+30f, 6.26133e+16f
11622path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e647272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.11534e+18f
11623path.quadTo(SkBits2Float(0x2b2d16f3), SkBits2Float(0x0039fc4d), SkBits2Float(0x68800000), SkBits2Float(0x0100fafa)); // 6.14938e-13f, 5.32513e-39f, 4.8357e+24f, 2.369e-38f
11624path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11625path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11626path.lineTo(SkBits2Float(0x72720000), SkBits2Float(0xff725b5e)); // 4.7933e+30f, -3.22148e+38f
11627path.moveTo(SkBits2Float(0x72720572), SkBits2Float(0x5b5e2572)); // 4.79373e+30f, 6.25286e+16f
11628path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x25727272), SkBits2Float(0x72728c7a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 2.10289e-16f, 4.80417e+30f, 6.26133e+16f
11629path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e827272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.69985e+18f
11630path.quadTo(SkBits2Float(0x97fc16f3), SkBits2Float(0x0039fc5b), SkBits2Float(0x00f6472e), SkBits2Float(0x01008000)); // -1.62909e-24f, 5.32515e-39f, 2.26171e-38f, 2.36017e-38f
11631path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11632
11633 SkPath path2(path);
11634 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11635}
11636
11637static void fuzz763_43(skiatest::Reporter* reporter, const char* filename) {
11638 SkPath path;
11639 path.setFillType((SkPath::FillType) 1);
11640
11641 SkPath path1(path);
11642 path.reset();
11643 path.setFillType((SkPath::FillType) 0);
11644path.moveTo(SkBits2Float(0x5c386c3a), SkBits2Float(0x4e691a3e)); // 2.07642e+17f, 9.77703e+08f
11645path.cubicTo(SkBits2Float(0x6f69f9f5), SkBits2Float(0x18ff8791), SkBits2Float(0x2492263c), SkBits2Float(0xbc6fdb48), SkBits2Float(0xc2f82107), SkBits2Float(0x729a18e1)); // 7.24122e+28f, 6.60528e-24f, 6.33822e-17f, -0.0146397f, -124.065f, 6.10442e+30f
11646path.cubicTo(SkBits2Float(0x07d729d1), SkBits2Float(0xdea6db48), SkBits2Float(0xcd1dfb88), SkBits2Float(0x90826769), SkBits2Float(0x1c20e5a4), SkBits2Float(0xa4c3ba9b)); // 3.23742e-34f, -6.01164e+18f, -1.65657e+08f, -5.14353e-29f, 5.32364e-22f, -8.48839e-17f
11647path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11648path.close();
11649path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11650path.cubicTo(SkBits2Float(0xdeea1d6e), SkBits2Float(0xc7774804), SkBits2Float(0x27cf0dcf), SkBits2Float(0x6ae8b99f), SkBits2Float(0x24ac3260), SkBits2Float(0x062fa93c)); // -8.43488e+18f, -63304, 5.7469e-15f, 1.40674e+26f, 7.46784e-17f, 3.30382e-35f
11651path.lineTo(SkBits2Float(0x438a0b9c), SkBits2Float(0x60a1d2c8)); // 276.091f, 9.32848e+19f
11652path.quadTo(SkBits2Float(0xe13fb902), SkBits2Float(0x07ee536f), SkBits2Float(0x971d8ac1), SkBits2Float(0x2f9f174b)); // -2.21041e+20f, 3.58593e-34f, -5.09046e-25f, 2.89385e-10f
11653path.lineTo(SkBits2Float(0x0f2cf5d8), SkBits2Float(0xe271654c)); // 8.5276e-30f, -1.11324e+21f
11654path.lineTo(SkBits2Float(0xe6cf24d2), SkBits2Float(0xd9537742)); // -4.89105e+23f, -3.72015e+15f
11655path.cubicTo(SkBits2Float(0x1aaaee04), SkBits2Float(0x9e3b804c), SkBits2Float(0x84cba87d), SkBits2Float(0x4e0e8ccc), SkBits2Float(0x2aec611a), SkBits2Float(0x7ae4b639)); // 7.06949e-23f, -9.92623e-21f, -4.78798e-36f, 5.97898e+08f, 4.19894e-13f, 5.9377e+35f
11656path.conicTo(SkBits2Float(0x73357921), SkBits2Float(0x6f163021), SkBits2Float(0x70ea542c), SkBits2Float(0xe008f404), SkBits2Float(0x1f6c5e52)); // 1.43778e+31f, 4.64809e+28f, 5.8017e+29f, -3.94741e+19f, 5.0053e-20f
11657path.lineTo(SkBits2Float(0xda45ad4e), SkBits2Float(0xedce4a04)); // -1.39103e+16f, -7.98042e+27f
11658path.lineTo(SkBits2Float(0xac0e45da), SkBits2Float(0x8f632841)); // -2.02182e-12f, -1.11997e-29f
11659path.lineTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11660path.close();
11661path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11662path.quadTo(SkBits2Float(0xf35c4ad5), SkBits2Float(0x0692f251), SkBits2Float(0x69632126), SkBits2Float(0xb927af67)); // -1.74534e+31f, 5.52751e-35f, 1.71614e+25f, -0.000159917f
11663path.moveTo(SkBits2Float(0x6534bff9), SkBits2Float(0x434a9986)); // 5.3348e+22f, 202.6f
11664path.quadTo(SkBits2Float(0x37c603e5), SkBits2Float(0xa0683953), SkBits2Float(0x751915e4), SkBits2Float(0x831c911a)); // 2.36053e-05f, -1.96701e-19f, 1.94059e+32f, -4.60108e-37f
11665path.cubicTo(SkBits2Float(0xba4f10f1), SkBits2Float(0x5a7571df), SkBits2Float(0x4ec67459), SkBits2Float(0x33c58827), SkBits2Float(0x10b78ccb), SkBits2Float(0xedbd2748)); // -0.000789895f, 1.72716e+16f, 1.66476e+09f, 9.19829e-08f, 7.23977e-29f, -7.31752e+27f
11666path.cubicTo(SkBits2Float(0x6d06f06a), SkBits2Float(0xe30465cf), SkBits2Float(0xc5458fe7), SkBits2Float(0xca488dc4), SkBits2Float(0x38f9021c), SkBits2Float(0x3e8d58db)); // 2.6101e+27f, -2.44231e+21f, -3160.99f, -3.28587e+06f, 0.000118736f, 0.276069f
11667
11668 SkPath path2(path);
11669 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11670}
11671
11672static void fuzz763_44(skiatest::Reporter* reporter, const char* filename) {
11673 SkPath path;
11674 path.setFillType((SkPath::FillType) 1);
11675path.moveTo(SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 3.36945e+36f, 1.01083e+37f
11676path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0x7ccaca6d), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 8.4236e+36f, 0, 0
11677path.lineTo(SkBits2Float(0x7d7d7d7d), SkBits2Float(0x00000000)); // 2.10591e+37f, 0
11678path.quadTo(SkBits2Float(0x7ccacab0), SkBits2Float(0x7d1817f4), SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 8.42364e+36f, 1.26354e+37f, 3.36945e+36f, 1.01083e+37f
11679path.close();
11680
11681 SkPath path1(path);
11682 path.reset();
11683 path.setFillType((SkPath::FillType) 0);
11684path.moveTo(SkBits2Float(0x109d0000), SkBits2Float(0xff7bc000)); // 6.19256e-29f, -3.34633e+38f
11685path.conicTo(SkBits2Float(0x979797ed), SkBits2Float(0x3a214797), SkBits2Float(0x28aa217a), SkBits2Float(0x01007272), SkBits2Float(0x00000072)); // -9.7965e-25f, 0.000615233f, 1.88883e-14f, 2.3592e-38f, 1.59748e-43f
11686path.quadTo(SkBits2Float(0x72728302), SkBits2Float(0x8b727272), SkBits2Float(0x72727272), SkBits2Float(0xc00308f6)); // 4.80344e+30f, -4.66936e-32f, 4.80216e+30f, -2.04742f
11687path.conicTo(SkBits2Float(0x7f52753a), SkBits2Float(0x8072ffff), SkBits2Float(0x67af2103), SkBits2Float(0x7d2a6847), SkBits2Float(0x7d7d7d7d)); // 2.79747e+38f, -1.05611e-38f, 1.65405e+24f, 1.41569e+37f, 2.10591e+37f
11688
11689 SkPath path2(path);
11690 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11691}
11692
11693static void fuzz763_45(skiatest::Reporter* reporter, const char* filename) {
11694 SkPath path;
11695 path.setFillType((SkPath::FillType) 0);
11696
11697 SkPath path1(path);
11698 path.reset();
11699 path.setFillType((SkPath::FillType) 0);
11700path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11701path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 2.28705e+35f, 6.40969e-10f
11702path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x74303030), SkBits2Float(0x74303030), SkBits2Float(0x30303030), SkBits2Float(0x74303030)); // 6.40969e-10f, 5.58363e+31f, 5.58363e+31f, 6.40969e-10f, 5.58363e+31f
11703path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11704path.moveTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11705path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11706path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a743030), SkBits2Float(0x74303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.16974e+35f, 5.58363e+31f, 6.40969e-10f
11707path.lineTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11708path.close();
11709path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11710path.lineTo(SkBits2Float(0x7f303030), SkBits2Float(0x7a303030)); // 2.34194e+38f, 2.28705e+35f
11711path.conicTo(SkBits2Float(0x77303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0xf9303030), SkBits2Float(0x7a303030)); // 3.57352e+33f, 6.40969e-10f, 6.40969e-10f, -5.71764e+34f, 2.28705e+35f
11712path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11713path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11714path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11715path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11716path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
11717path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
11718path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11719path.moveTo(SkBits2Float(0x77303030), SkBits2Float(0xff303030)); // 3.57352e+33f, -2.34194e+38f
11720path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7f773030), SkBits2Float(0x7a7a3030), SkBits2Float(0x7a303030)); // 6.40969e-10f, 6.40969e-10f, 3.2857e+38f, 3.24763e+35f, 2.28705e+35f
11721path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x77303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.57352e+33f, 6.40969e-10f
11722path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7b303030), SkBits2Float(0x73303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 9.14822e+35f, 1.39591e+31f, 6.40969e-10f
11723path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a7a3030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 3.24763e+35f
11724 SkPath path2(path);
11725 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11726}
11727
11728static void fuzz763_46(skiatest::Reporter* reporter, const char* filename) {
11729 SkPath path;
11730 path.setFillType((SkPath::FillType) 0);
11731
11732 SkPath path1(path);
11733 path.reset();
11734 path.setFillType((SkPath::FillType) 0);
11735path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11736 path.conicTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x44263030), SkBits2Float(0x44304430), SkBits2Float(0x4c444430)); // 785.067f, 785.067f, 664.753f, 705.065f, 5.145e+07f
11737path.moveTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444)); // 785.067f, 785.067f
11738path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x4444444c)); // 6.40969e-10f, 785.067f, 6.40969e-10f, 785.067f, 785.067f, 785.067f
11739 SkPath path2(path);
11740 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11741}
11742
11743static void fuzz763_47(skiatest::Reporter* reporter, const char* filename) {
11744 SkPath path;
11745 path.setFillType((SkPath::FillType) 1);
11746
11747 SkPath path1(path);
11748 path.reset();
11749 path.setFillType((SkPath::FillType) 0);
11750path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11751path.cubicTo(SkBits2Float(0x7272728e), SkBits2Float(0x52527272), SkBits2Float(0x2d555252), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29), SkBits2Float(0x2a212a8c)); // 4.80217e+30f, 2.25966e+11f, 1.21259e-11f, 4.03114e+24f, 1.50617e+13f, 1.43144e-13f
11752path.conicTo(SkBits2Float(0x00296808), SkBits2Float(0x00000002), SkBits2Float(0x52525252), SkBits2Float(0x72007272), SkBits2Float(0x52527272)); // 3.80257e-39f, 2.8026e-45f, 2.25831e+11f, 2.54416e+30f, 2.25966e+11f
11753path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11754path.close();
11755path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11756path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 1.43144e-13f, 4.79393e+30f
11757path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x5974fa80), SkBits2Float(0x00747474), SkBits2Float(0x59585264)); // 4.80216e+30f, 4.30971e+15f, 1.06947e-38f, 3.80557e+15f
11758path.cubicTo(SkBits2Float(0x64007474), SkBits2Float(0x088c5852), SkBits2Float(0x80808021), SkBits2Float(0x8c808080), SkBits2Float(0x80802108), SkBits2Float(0x80808080)); // 9.4783e+21f, 8.44671e-34f, -1.18009e-38f, -1.97989e-31f, -1.17668e-38f, -1.1801e-38f
11759path.quadTo(SkBits2Float(0x80807d80), SkBits2Float(0x80808080), SkBits2Float(0xff7f0000), SkBits2Float(0x80808080)); // -1.18e-38f, -1.1801e-38f, -3.38953e+38f, -1.1801e-38f
11760path.quadTo(SkBits2Float(0x80808080), SkBits2Float(0x80808080), SkBits2Float(0xed842b00), SkBits2Float(0x7252ff6d)); // -1.1801e-38f, -1.1801e-38f, -5.113e+27f, 4.17924e+30f
11761path.quadTo(SkBits2Float(0x72577200), SkBits2Float(0x55525352), SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 4.26733e+30f, 1.44535e+13f, 1.43144e-13f, 4.79393e+30f
11762path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x6f740080), SkBits2Float(0x8c556874), SkBits2Float(0x2982ffff)); // 4.80216e+30f, 7.55149e+28f, -1.64404e-31f, 5.81757e-14f
11763
11764 SkPath path2(path);
11765 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11766}
11767
11768static void fuzz763_48(skiatest::Reporter* reporter, const char* filename) {
11769 SkPath path;
11770 path.setFillType((SkPath::FillType) 1);
11771
11772 SkPath path1(path);
11773 path.reset();
11774 path.setFillType((SkPath::FillType) 0);
11775path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11776path.lineTo(SkBits2Float(0xed0081bc), SkBits2Float(0x1b2d8040)); // -2.48568e+27f, 1.43517e-22f
11777path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11778path.close();
11779path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11780path.conicTo(SkBits2Float(0x662d5576), SkBits2Float(0x2d804066), SkBits2Float(0x8068291b), SkBits2Float(0x740315ff), SkBits2Float(0x74747474)); // 2.04636e+23f, 1.45805e-11f, -9.56564e-39f, 4.15428e+31f, 7.74708e+31f
11781path.cubicTo(SkBits2Float(0x762d0529), SkBits2Float(0x72525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x52727252)); // 8.77316e+32f, 4.16585e+30f, 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 2.60325e+11f
11782path.lineTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11783path.close();
11784path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11785path.close();
11786path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11787path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52524872), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.2579e+11f, 4.16585e+30f, 4.80216e+30f
11788path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x80406666), SkBits2Float(0x68291b2d), SkBits2Float(0x0315ff80)); // 4.80215e+30f, -5.91421e-39f, 3.19432e+24f, 4.40805e-37f
11789path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x7b722974), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x72720052), SkBits2Float(0x72727272)); // 7.74708e+31f, 1.25738e+36f, 3.08006e+16f, 2.25831e+11f, 4.79333e+30f, 4.80216e+30f
11790path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11791path.close();
11792path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11793path.quadTo(SkBits2Float(0x72727227), SkBits2Float(0x72727272), SkBits2Float(0x74727272), SkBits2Float(0x55747421)); // 4.80214e+30f, 4.80216e+30f, 7.68345e+31f, 1.67987e+13f
11794path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11795path.close();
11796path.moveTo(SkBits2Float(0x724b0000), SkBits2Float(0x00725f72)); // 4.02083e+30f, 1.05035e-38f
11797path.lineTo(SkBits2Float(0x52525252), SkBits2Float(0x72725252)); // 2.25831e+11f, 4.79967e+30f
11798path.quadTo(SkBits2Float(0x26727272), SkBits2Float(0x0303a525), SkBits2Float(0x52005c03), SkBits2Float(0x72525252)); // 8.41157e-16f, 3.8687e-37f, 1.37825e+11f, 4.16585e+30f
11799path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x1ff07255), SkBits2Float(0x2a8c5572), SkBits2Float(0x21082a21)); // 4.80216e+30f, 1.01833e-19f, 2.49283e-13f, 4.61343e-19f
11800path.lineTo(SkBits2Float(0x2a2a3a21), SkBits2Float(0x29212828)); // 1.51192e-13f, 3.5784e-14f
11801
11802 SkPath path2(path);
11803 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11804}
11805
11806static void fuzz763_49(skiatest::Reporter* reporter, const char* filename) {
11807 SkPath path;
11808 path.setFillType((SkPath::FillType) 0);
11809
11810 SkPath path1(path);
11811 path.reset();
11812 path.setFillType((SkPath::FillType) 0);
11813path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11814path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x78303030), SkBits2Float(0x78787881), SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 6.40969e-10f, 1.42941e+34f, 2.01583e+34f, 2.01583e+34f, 6.40969e-10f
11815path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11816path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11817path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11818path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x78787878), SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 6.40969e-10f, 2.01583e+34f, 2.01583e+34f, 2.01583e+34f
11819path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11820path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11821path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11822path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11823path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11824path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11825path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11826path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11827path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11828path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11829path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11830path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11831path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11832path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x7878788d)); // 2.01583e+34f, 2.01584e+34f
11833path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 2.01583e+34f, 6.40969e-10f
11834
11835 SkPath path2(path);
11836 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11837}
11838
11839static void fuzz763_50(skiatest::Reporter* reporter, const char* filename) {
11840 SkPath path;
11841 path.setFillType((SkPath::FillType) 1);
11842path.moveTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11843path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x74fc5b97), SkBits2Float(0x7d458fe4)); // 0, 0, 0, 1.59951e+32f, 1.64128e+37f
11844path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11845path.lineTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11846path.close();
11847path.moveTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11848path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11849path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11850path.close();
11851
11852 SkPath path1(path);
11853 path.reset();
11854 path.setFillType((SkPath::FillType) 0);
11855
11856 SkPath path2(path);
11857 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11858}
11859
11860static void fuzz763_51(skiatest::Reporter* reporter, const char* filename) {
11861 SkPath path;
11862 path.setFillType((SkPath::FillType) 1);
11863
11864 SkPath path1(path);
11865 path.reset();
11866 path.setFillType((SkPath::FillType) 0);
11867path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11868path.quadTo(SkBits2Float(0x868b5aae), SkBits2Float(0x626c45ab), SkBits2Float(0xefea1ffe), SkBits2Float(0x0029fc76)); // -5.24192e-35f, 1.08961e+21f, -1.44916e+29f, 3.85582e-39f
11869path.moveTo(SkBits2Float(0xfacbff01), SkBits2Float(0x56fc5b97)); // -5.29604e+35f, 1.38735e+14f
11870path.cubicTo(SkBits2Float(0x7d4559c9), SkBits2Float(0xad801c39), SkBits2Float(0xfbe2091a), SkBits2Float(0x7268e394), SkBits2Float(0x7c800079), SkBits2Float(0xa1d75590)); // 1.63953e+37f, -1.45644e-11f, -2.34729e+36f, 4.61284e+30f, 5.31699e+36f, -1.45916e-18f
11871
11872 SkPath path2(path);
11873 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11874}
11875
11876static void fuzz763_52(skiatest::Reporter* reporter, const char* filename) {
11877 SkPath path;
11878 path.setFillType((SkPath::FillType) 1);
11879
11880 SkPath path1(path);
11881 path.reset();
11882 path.setFillType((SkPath::FillType) 0);
11883path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11884path.quadTo(SkBits2Float(0x29ff4bae), SkBits2Float(0xa1d75590), SkBits2Float(0x9fd6f6c3), SkBits2Float(0x70621ede)); // 1.13374e-13f, -1.45916e-18f, -9.10408e-20f, 2.79924e+29f
11885path.quadTo(SkBits2Float(0x57a839d3), SkBits2Float(0x1a80d34b), SkBits2Float(0x0147a31b), SkBits2Float(0xff7fffff)); // 3.69933e+14f, 5.32809e-23f, 3.66675e-38f, -3.40282e+38f
11886path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11887path.close();
11888path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11889path.conicTo(SkBits2Float(0x75757568), SkBits2Float(0x7575755e), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75756575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11077e+32f
11890path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11891path.close();
11892path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11893path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75917575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.68782e+32f, 3.11156e+32f
11894path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11895path.close();
11896path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11897path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x7575758f), SkBits2Float(0x7f757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11157e+32f, 3.26271e+38f, 3.11156e+32f, 3.11156e+32f
11898path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11899path.close();
11900
11901 SkPath path2(path);
11902 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11903}
11904
11905static void fuzz763_53(skiatest::Reporter* reporter, const char* filename) {
11906 SkPath path;
11907 path.setFillType((SkPath::FillType) 1);
11908path.moveTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11909path.lineTo(SkBits2Float(0x74fc5b97), SkBits2Float(0x77df944a)); // 1.59951e+32f, 9.06945e+33f
11910path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf8fbe3ff)); // 0, -4.08716e+34f
11911path.lineTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11912path.close();
11913
11914 SkPath path1(path);
11915 path.reset();
11916 path.setFillType((SkPath::FillType) 0);
11917path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11918path.quadTo(SkBits2Float(0x45ab86ae), SkBits2Float(0xd6d6626c), SkBits2Float(0xd6d6d6d6), SkBits2Float(0x7644d6d6)); // 5488.83f, -1.17859e+14f, -1.18109e+14f, 9.98093e+32f
11919path.moveTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
11920path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x64fed6d6), SkBits2Float(0x7644ef40), SkBits2Float(0x290877fc), SkBits2Float(0x447644b8), SkBits2Float(0x80fafc76)); // -1.18109e+14f, 3.76076e+22f, 9.98577e+32f, 3.03021e-14f, 985.074f, -2.30494e-38f
11921path.conicTo(SkBits2Float(0x87808080), SkBits2Float(0x764400ae), SkBits2Float(0x764400fc), SkBits2Float(0x450080fc), SkBits2Float(0x3636366c)); // -1.93348e-34f, 9.93852e+32f, 9.93858e+32f, 2056.06f, 2.71518e-06f
11922path.lineTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
11923path.close();
11924path.moveTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
11925path.conicTo(SkBits2Float(0x7644626c), SkBits2Float(0x088912fc), SkBits2Float(0xae8744ef), SkBits2Float(0x76571f5a), SkBits2Float(0x45ab86fc)); // 9.95788e+32f, 8.24985e-34f, -6.15133e-11f, 1.0908e+33f, 5488.87f
11926path.conicTo(SkBits2Float(0x4064fe62), SkBits2Float(0x290877ef), SkBits2Float(0x780080b8), SkBits2Float(0x553c7644), SkBits2Float(0x644eae87)); // 3.57803f, 3.03021e-14f, 1.04254e+34f, 1.2951e+13f, 1.52504e+22f
11927path.lineTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
11928path.close();
11929
11930 SkPath path2(path);
11931 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11932}
11933
11934// hangs 654939
11935static void fuzz763_54(skiatest::Reporter* reporter, const char* filename) {
11936 SkPath path;
11937 path.setFillType((SkPath::FillType) 0);
11938path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11939path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x212a8c55)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 5.7784e-19f
11940path.conicTo(SkBits2Float(0x68555b2d), SkBits2Float(0x28296869), SkBits2Float(0x5b252a08), SkBits2Float(0x5d68392a), SkBits2Float(0x29282780)); // 4.03018e+24f, 9.40402e-15f, 4.64896e+16f, 1.04584e+18f, 3.73378e-14f
11941path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11942path.close();
11943path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11944path.cubicTo(SkBits2Float(0x52727272), SkBits2Float(0x72727252), SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.60326e+11f, 4.80215e+30f, 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
11945path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5252525a), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // -4.79387e+14f, 2.25831e+11f, 4.16585e+30f, 4.80216e+30f
11946path.quadTo(SkBits2Float(0x48525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 215369, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
11947path.quadTo(SkBits2Float(0xdada007b), SkBits2Float(0x5252525a), SkBits2Float(0x72675252), SkBits2Float(0x72727272)); // -3.0681e+16f, 2.25831e+11f, 4.5818e+30f, 4.80216e+30f
11948path.quadTo(SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 2.25831e+11f, 3.36289e-15f, 4.80216e+30f, 4.80216e+30f
11949path.quadTo(SkBits2Float(0x1c292172), SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa), SkBits2Float(0x8c556a4b)); // 5.59606e-22f, 1.99397e+36f, -7.05861e-23f, -1.64409e-31f
11950path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
11951path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11952path.close();
11953path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11954path.close();
11955path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11956path.quadTo(SkBits2Float(0x72725570), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79991e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11957path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x555bb672), SkBits2Float(0x29686968), SkBits2Float(0x252a081f)); // 4.80215e+30f, 1.50985e+13f, 5.16058e-14f, 1.47479e-16f
11958path.moveTo(SkBits2Float(0x5d68392a), SkBits2Float(0x01002780)); // 1.04584e+18f, 2.35382e-38f
11959path.moveTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
11960path.quadTo(SkBits2Float(0x5adada00), SkBits2Float(0xa5252652), SkBits2Float(0x727272ad), SkBits2Float(0xda007b72)); // 3.08006e+16f, -1.43245e-16f, 4.80218e+30f, -9.04113e+15f
11961path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
11962path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
11963path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x74217472), SkBits2Float(0x005b5574), SkBits2Float(0x72680000)); // 4.80216e+30f, 5.11671e+31f, 8.38768e-39f, 4.59523e+30f
11964path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada)); // 4.80216e+30f, 2.25831e+11f, 1.13368e-38f, 2.34994e+11f
11965path.lineTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
11966path.close();
11967
11968 SkPath path1(path);
11969 path.reset();
11970 path.setFillType((SkPath::FillType) 0);
11971
11972 SkPath path2(path);
11973 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11974}
11975
11976
11977// afl crash
11978static void fuzz763_55(skiatest::Reporter* reporter, const char* filename) {
11979 SkPath path;
11980 path.setFillType((SkPath::FillType) 0);
11981path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11982path.lineTo(SkBits2Float(0x55555568), SkBits2Float(0x55555555)); // 1.46602e+13f, 1.46602e+13f
11983path.lineTo(SkBits2Float(0x98989898), SkBits2Float(0x55989898)); // -3.94452e-24f, 2.09726e+13f
11984path.lineTo(SkBits2Float(0xf6f65555), SkBits2Float(0x101006f6)); // -2.49812e+33f, 2.84044e-29f
11985path.quadTo(SkBits2Float(0xdca33f10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf621f6f6), SkBits2Float(0xf70ff6f6)); // -3.67598e+17f, -2.50452e+33f, -8.21259e+32f, -2.91995e+33f
11986path.lineTo(SkBits2Float(0x9400f6f6), SkBits2Float(0x10530000)); // -6.51105e-27f, 4.16124e-29f
11987path.quadTo(SkBits2Float(0x0f101010), SkBits2Float(0x00101010), SkBits2Float(0xf610f720), SkBits2Float(0xf6f6f6f6)); // 7.10284e-30f, 1.47513e-39f, -7.35062e+32f, -2.50452e+33f
11988path.lineTo(SkBits2Float(0x105352f6), SkBits2Float(0x1cf6ff10)); // 4.16763e-29f, 1.63448e-21f
11989path.lineTo(SkBits2Float(0xf6f6220a), SkBits2Float(0x003700f6)); // -2.49608e+33f, 5.0513e-39f
11990path.cubicTo(SkBits2Float(0x0000001e), SkBits2Float(0x00fff4f6), SkBits2Float(0xff101064), SkBits2Float(0xf6b6ac7f), SkBits2Float(0xf6f629f6), SkBits2Float(0x10f6f6f6)); // 4.2039e-44f, 2.35059e-38f, -1.91494e+38f, -1.85253e+33f, -2.4964e+33f, 9.74104e-29f
11991path.quadTo(SkBits2Float(0x10101007), SkBits2Float(0x10f7fd10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf6f645e0)); // 2.84113e-29f, 9.78142e-29f, -2.50452e+33f, -2.4975e+33f
11992path.lineTo(SkBits2Float(0xed9ef6f6), SkBits2Float(0x53535353)); // -6.14965e+27f, 9.07636e+11f
11993path.lineTo(SkBits2Float(0x53006cf6), SkBits2Float(0x53295353)); // 5.51584e+11f, 7.27247e+11f
11994path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11995path.close();
11996path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11997path.lineTo(SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5353d9f6)); // -2.50452e+33f, 9.09895e+11f
11998
11999 SkPath path1(path);
12000 path.reset();
12001 path.setFillType((SkPath::FillType) 0);
12002
12003 SkPath path2(path);
12004 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12005}
12006
12007// 656149
12008static void fuzz763_56(skiatest::Reporter* reporter, const char* filename) {
12009 SkPath path;
12010 path.setFillType((SkPath::FillType) 0);
12011path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12012path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x72725255)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 4.79967e+30f
12013path.quadTo(SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
12014path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x00005252)); // -4.79387e+14f, 3.08006e+16f, 2.25831e+11f, 2.9531e-41f
12015path.conicTo(SkBits2Float(0xadada525), SkBits2Float(0x52525ab4), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x52527272)); // -1.97412e-11f, 2.25866e+11f, 2.25831e+11f, 4.80216e+30f, 2.25966e+11f
12016path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12017path.close();
12018path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12019path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255), SkBits2Float(0xda007b72)); // 4.79967e+30f, 4.80216e+30f, 4.80215e+30f, -9.04113e+15f
12020path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
12021path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12022path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa)); // 1.99397e+36f, -7.05861e-23f
12023path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
12024path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12025path.close();
12026path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12027path.close();
12028path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12029path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
12030path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x26525ada), SkBits2Float(0x72ada525)); // 4.80215e+30f, -9.04113e+15f, 7.29815e-16f, 6.87879e+30f
12031path.quadTo(SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x72727252)); // 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 4.80215e+30f
12032path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72722772), SkBits2Float(0x72727272)); // 2.25966e+11f, 2.25831e+11f, 4.79636e+30f, 4.80216e+30f
12033path.quadTo(SkBits2Float(0x74727272), SkBits2Float(0x55747421), SkBits2Float(0x0000005b), SkBits2Float(0x72727268)); // 7.68345e+31f, 1.67987e+13f, 1.27518e-43f, 4.80216e+30f
12034path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x72557272)); // 2.25966e+11f, 2.25831e+11f, 4.80216e+30f, 4.22775e+30f
12035path.quadTo(SkBits2Float(0x5adada72), SkBits2Float(0x52525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272)); // 3.08009e+16f, 2.25831e+11f, 4.79967e+30f, 4.80216e+30f
12036
12037 SkPath path1(path);
12038 path.reset();
12039 path.setFillType((SkPath::FillType) 0);
12040
12041 SkPath path2(path);
12042 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12043}
12044
12045static void fuzz763_57(skiatest::Reporter* reporter, const char* filename) {
12046 SkPath path;
12047 path.setFillType((SkPath::FillType) 0);
12048
12049 SkPath path1(path);
12050 path.reset();
12051 path.setFillType((SkPath::FillType) 0);
12052path.moveTo(SkBits2Float(0x68546829), SkBits2Float(0x555b2d29)); // 4.01225e+24f, 1.50617e+13f
12053path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0x4b7b2108)); // 3.60404e-20f, 1.6458e+07f
12054path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
12055path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12056path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xce682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.50349e-13f, 3.27093e+24f, -9.73619e+08f, 1.64988e+07f
12057path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x3b2a8c55)); // 4.85282e+16f, 0.00260236f
12058path.lineTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12059path.close();
12060path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12061path.conicTo(SkBits2Float(0xd2c00321), SkBits2Float(0xc0394b7b), SkBits2Float(0x8c08ed7a), SkBits2Float(0x211f2f2a), SkBits2Float(0x704b7b03)); // -4.12343e+11f, -2.89523f, -1.05485e-31f, 5.39337e-19f, 2.51897e+29f
12062path.cubicTo(SkBits2Float(0x2d6829ed), SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 1.3197e-11f, 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 6.14991e+25f
12063path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
12064path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12065path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x228cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xee682103), SkBits2Float(0x287bc055)); // 5.76397e-19f, 3.82003e-18f, 3.27093e+24f, -1.79601e+28f, 1.3975e-14f
12066path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
12067path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f, -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
12068path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0xed7ac039), SkBits2Float(0x2f2a8c08), SkBits2Float(0x7b03211f)); // 4.73517e-37f, 1.65035e+07f, -4.85023e+27f, 1.55112e-10f, 6.80863e+35f
12069path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12070path.close();
12071path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12072path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
12073path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12074path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4797ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 77787
12075path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12076path.close();
12077path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12078path.quadTo(SkBits2Float(0x2828102a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.32938e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
12079path.cubicTo(SkBits2Float(0x683f2d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x211f2a21)); // 3.61123e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 5.39271e-19f
12080path.lineTo(SkBits2Float(0x3a803adf), SkBits2Float(0x8a294f1a)); // 0.000978317f, -8.15193e-33f
12081path.quadTo(SkBits2Float(0x291d9628), SkBits2Float(0x2a43e62b), SkBits2Float(0x093a2a81), SkBits2Float(0x5c5c8ced)); // 3.49912e-14f, 1.73993e-13f, 2.24089e-33f, 2.48318e+17f
12082path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12083path.close();
12084path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12085path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x291d9628), SkBits2Float(0x2a43e62b), SkBits2Float(0x293a2a81), SkBits2Float(0x5c5c8ced), SkBits2Float(0x5c5c6e5c)); // 0.00148109f, 3.49912e-14f, 1.73993e-13f, 4.13372e-14f, 2.48318e+17f, 2.48183e+17f
12086path.lineTo(SkBits2Float(0x1f212a8c), SkBits2Float(0xc0032108)); // 3.41283e-20f, -2.04889f
12087path.lineTo(SkBits2Float(0xed847b4b), SkBits2Float(0x2d552829)); // -5.12513e+27f, 1.21166e-11f
12088path.conicTo(SkBits2Float(0x552d5b5b), SkBits2Float(0x3b5a6839), SkBits2Float(0x5b2df068), SkBits2Float(0x2a212a1f), SkBits2Float(0x532a8cef)); // 1.1913e+13f, 0.00333263f, 4.89595e+16f, 1.43143e-13f, 7.32509e+11f
12089
12090 SkPath path2(path);
12091 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12092}
12093
12094static void fuzzhang_1(skiatest::Reporter* reporter, const char* filename) {
12095 SkPath path;
12096 path.setFillType((SkPath::FillType) 1);
12097path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12098path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x668ece09), SkBits2Float(0x00000000), SkBits2Float(0x6751c81a), SkBits2Float(0x61c4b0fb)); // 0, 0, 3.37188e+23f, 0, 9.90666e+23f, 4.53539e+20f
12099path.conicTo(SkBits2Float(0x66f837a9), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f823406)); // 5.86087e+23f, 0, 0, 0, 1.01721f
12100path.close();
12101path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12102path.quadTo(SkBits2Float(0x675b1bfe), SkBits2Float(0x00000000), SkBits2Float(0x67d76c42), SkBits2Float(0x6292c469)); // 1.03471e+24f, 0, 2.03461e+24f, 1.35369e+21f
12103path.cubicTo(SkBits2Float(0x6a16df68), SkBits2Float(0x651a2f15), SkBits2Float(0x6c1e7f31), SkBits2Float(0x67a1f9b4), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 4.55985e+25f, 4.55071e+22f, 7.66444e+26f, 1.52981e+24f, 0, 5.14279e+25f
12104path.conicTo(SkBits2Float(0x680dcb75), SkBits2Float(0x68dd898d), SkBits2Float(0x681a434a), SkBits2Float(0x6871046b), SkBits2Float(0x3fea0440)); // 2.67843e+24f, 8.36944e+24f, 2.91394e+24f, 4.55269e+24f, 1.82825f
12105path.quadTo(SkBits2Float(0x679e1b26), SkBits2Float(0x687703c4), SkBits2Float(0x00000000), SkBits2Float(0x687d2968)); // 1.49327e+24f, 4.66598e+24f, 0, 4.78209e+24f
12106path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12107path.close();
12108
12109 SkPath path1(path);
12110 path.reset();
12111 path.setFillType((SkPath::FillType) 0);
12112path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12113path.cubicTo(SkBits2Float(0x535353ec), SkBits2Float(0x98989898), SkBits2Float(0x98989898), SkBits2Float(0xf207f36e), SkBits2Float(0xf3f2f2f2), SkBits2Float(0xed3a9781)); // 9.07646e+11f, -3.94452e-24f, -3.94452e-24f, -2.69278e+30f, -3.84968e+31f, -3.60921e+27f
12114path.quadTo(SkBits2Float(0xf8f8c0ed), SkBits2Float(0xf8f8f8f8), SkBits2Float(0x9f9f9f9f), SkBits2Float(0x3014149f)); // -4.03626e+34f, -4.03981e+34f, -6.76032e-20f, 5.38714e-10f
12115
12116 SkPath path2(path);
12117 testPathOp(reporter, path1, path2, (SkPathOp) 0, filename);
12118}
12119
12120static void release_13(skiatest::Reporter* reporter, const char* filename) {
12121 SkPath path;
12122 path.setFillType((SkPath::FillType) 1);
12123path.setFillType(SkPath::kEvenOdd_FillType);
12124path.moveTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12125path.lineTo(SkBits2Float(0xd43a056e), SkBits2Float(0xd4851696)); // -3.19582e+12f, -4.57288e+12f
12126path.quadTo(SkBits2Float(0xd3d48e79), SkBits2Float(0xd49fb136), SkBits2Float(0x00000000), SkBits2Float(0xd4d4d4d4)); // -1.82585e+12f, -5.48698e+12f, 0, -7.31283e+12f
12127path.quadTo(SkBits2Float(0xd3d06670), SkBits2Float(0xd4a0bb38), SkBits2Float(0xd41d628f), SkBits2Float(0xd472c531)); // -1.79014e+12f, -5.52269e+12f, -2.70385e+12f, -4.17076e+12f
12128path.lineTo(SkBits2Float(0xd43a0559), SkBits2Float(0xd485168e)); // -3.19581e+12f, -4.57287e+12f
12129path.lineTo(SkBits2Float(0xd446958b), SkBits2Float(0xd4810278)); // -3.41165e+12f, -4.43274e+12f
12130path.lineTo(SkBits2Float(0xd443884a), SkBits2Float(0xd488cf65)); // -3.35922e+12f, -4.70076e+12f
12131path.quadTo(SkBits2Float(0xd47efa09), SkBits2Float(0xd49fd72a), SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -4.38047e+12f, -5.49208e+12f, -5.71218e+12f, -6.33007e+12f
12132path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12133path.lineTo(SkBits2Float(0xd459d4d4), SkBits2Float(0xd4c4d4d4)); // -3.74231e+12f, -6.76307e+12f
12134path.lineTo(SkBits2Float(0xd440daf9), SkBits2Float(0xd4c632d3)); // -3.31323e+12f, -6.81005e+12f
12135path.lineTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12136path.close();
12137path.moveTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12138path.lineTo(SkBits2Float(0xd4422174), SkBits2Float(0xd4d02069)); // -3.33514e+12f, -7.15118e+12f
12139path.lineTo(SkBits2Float(0xd440daa3), SkBits2Float(0xd4c632d9)); // -3.31321e+12f, -6.81005e+12f
12140path.lineTo(SkBits2Float(0xd41017bc), SkBits2Float(0xd4cb99b6)); // -2.47549e+12f, -6.99566e+12f
12141path.lineTo(SkBits2Float(0xd442213b), SkBits2Float(0xd4d02067)); // -3.33512e+12f, -7.15117e+12f
12142path.lineTo(SkBits2Float(0xd442d4d4), SkBits2Float(0xd4d4d4d4)); // -3.34718e+12f, -7.31283e+12f
12143path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12144path.close();
12145path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12146path.lineTo(SkBits2Float(0xd484e02c), SkBits2Float(0xd45fafcd)); // -4.56557e+12f, -3.84291e+12f
12147path.lineTo(SkBits2Float(0xd462c867), SkBits2Float(0xd45655f7)); // -3.8961e+12f, -3.68226e+12f
12148path.lineTo(SkBits2Float(0xd45ac463), SkBits2Float(0xd45ac505)); // -3.75839e+12f, -3.75843e+12f
12149path.lineTo(SkBits2Float(0xd43d2fa9), SkBits2Float(0xd43d2fb5)); // -3.25019e+12f, -3.2502e+12f
12150path.lineTo(SkBits2Float(0xd41d6287), SkBits2Float(0xd472c52a)); // -2.70385e+12f, -4.17076e+12f
12151path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xd3db1b95), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, -1.88212e+12f, 0, 0
12152path.quadTo(SkBits2Float(0xd4b7efac), SkBits2Float(0x00000000), SkBits2Float(0xd4d0e88f), SkBits2Float(0xd40b8b46)); // -6.32e+12f, 0, -7.17804e+12f, -2.39735e+12f
12153path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, 0
12154path.lineTo(SkBits2Float(0xdcdc154b), SkBits2Float(0x00000000)); // -4.95583e+17f, 0
12155path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4c4d477)); // -7.31283e+12f, -6.76303e+12f
12156path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d442)); // -7.31283e+12f, -7.31275e+12f
12157path.lineTo(SkBits2Float(0xd4d4a691), SkBits2Float(0xd4d4d442)); // -7.30662e+12f, -7.31275e+12f
12158path.lineTo(SkBits2Float(0xd454d4d4), SkBits2Float(0xd4d4aa30)); // -3.65641e+12f, -7.30711e+12f
12159path.lineTo(SkBits2Float(0xd4bd9def), SkBits2Float(0xd4d43df0)); // -6.51519e+12f, -7.29258e+12f
12160path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12161path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12162path.lineTo(SkBits2Float(0xd4bab953), SkBits2Float(0xd4c4d48e)); // -6.41579e+12f, -6.76304e+12f
12163path.lineTo(SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -5.71218e+12f, -6.33007e+12f
12164path.lineTo(SkBits2Float(0xd4ae61eb), SkBits2Float(0xd4ae61f4)); // -5.99174e+12f, -5.99174e+12f
12165path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12166path.close();
12167path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12168path.lineTo(SkBits2Float(0xd446965c), SkBits2Float(0xd4810237)); // -3.4117e+12f, -4.4327e+12f
12169path.lineTo(SkBits2Float(0xd45ac549), SkBits2Float(0xd45ac55f)); // -3.75845e+12f, -3.75846e+12f
12170path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12171path.close();
12172path.moveTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12173path.lineTo(SkBits2Float(0xd4cde20a), SkBits2Float(0xd434bb57)); // -7.07408e+12f, -3.10495e+12f
12174path.lineTo(SkBits2Float(0xd4c75ffe), SkBits2Float(0xd46f215d)); // -6.85047e+12f, -4.10823e+12f
12175path.lineTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12176path.close();
12177
12178 SkPath path1(path);
12179 path.reset();
12180 path.setFillType((SkPath::FillType) 0);
12181path.setFillType(SkPath::kWinding_FillType);
12182path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12183path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xa5a50000), SkBits2Float(0xd4d4a5a5), SkBits2Float(0xd4d4d4d4)); // 0, -2.86229e-16f, -7.3065e+12f, -7.31283e+12f
12184path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4), SkBits2Float(0xd4d41dd4)); // -7.31283e+12f, -7.31283e+12f, -7.14103e+12f, -7.28827e+12f
12185path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d432d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4a5a5d4)); // -7.31283e+12f, -7.29109e+12f, -7.31283e+12f, -5.69161e+12f
12186path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, 0
12187path.moveTo(SkBits2Float(0xa5a5a500), SkBits2Float(0xd4d4d4a5)); // -2.87347e-16f, -7.31281e+12f
12188path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x2ad4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4)); // -7.31283e+12f, 3.78064e-13f, -7.31283e+12f, -7.14103e+12f
12189path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12190path.quadTo(SkBits2Float(0xd4d40000), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.28426e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12191
12192 SkPath path2(path);
12193 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12194}
12195
12196static void fuzzhang_2(skiatest::Reporter* reporter, const char* filename) {
12197 SkPath path;
12198 path.setFillType((SkPath::FillType) 0);
12199path.setFillType(SkPath::kWinding_FillType);
12200path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12201path.quadTo(SkBits2Float(0xe0e02972), SkBits2Float(0xe0e060e0), SkBits2Float(0x728e4603), SkBits2Float(0x72727272)); // -1.29221e+20f, -1.29345e+20f, 5.63603e+30f, 4.80216e+30f
12202path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12203path.close();
12204path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12205path.quadTo(SkBits2Float(0x68720052), SkBits2Float(0x52527372), SkBits2Float(0x00527252), SkBits2Float(0x728e4601)); // 4.57127e+24f, 2.2597e+11f, 7.57152e-39f, 5.63603e+30f
12206path.quadTo(SkBits2Float(0x52ec7272), SkBits2Float(0x6265527f), SkBits2Float(0x8e460152), SkBits2Float(0x72ff8072)); // 5.07766e+11f, 1.05756e+21f, -2.4406e-30f, 1.01215e+31f
12207path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12208path.close();
12209path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12210path.lineTo(SkBits2Float(0x52626552), SkBits2Float(0x72727272)); // 2.43091e+11f, 4.80216e+30f
12211path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x62727272), SkBits2Float(0x39393939), SkBits2Float(0x728bc739)); // 4.80216e+30f, 1.11809e+21f, 0.000176643f, 5.53719e+30f
12212path.cubicTo(SkBits2Float(0x72728092), SkBits2Float(0x72727260), SkBits2Float(0x4d727272), SkBits2Float(0x5252522a), SkBits2Float(0x72735252), SkBits2Float(0x72707272)); // 4.80325e+30f, 4.80215e+30f, 2.54224e+08f, 2.2583e+11f, 4.81948e+30f, 4.76254e+30f
12213path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x56727272), SkBits2Float(0x72720152), SkBits2Float(0x72727270)); // 4.80216e+30f, 6.66433e+13f, 4.79341e+30f, 4.80216e+30f
12214path.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460300), SkBits2Float(0x72727272), SkBits2Float(0x52525272)); // 2.25894e+11f, -2.44068e-30f, 4.80216e+30f, 2.25832e+11f
12215path.conicTo(SkBits2Float(0xb5727272), SkBits2Float(0x7f2b727f), SkBits2Float(0x607272ff), SkBits2Float(0x72727276), SkBits2Float(0x2a527272)); // -9.03186e-07f, 2.27892e+38f, 6.98812e+19f, 4.80216e+30f, 1.86915e-13f
12216path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12217path.close();
12218path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12219path.lineTo(SkBits2Float(0x72727272), SkBits2Float(0x52525f72)); // 4.80216e+30f, 2.25886e+11f
12220path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12221path.close();
12222path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12223path.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x64655252), SkBits2Float(0x72c1c152), SkBits2Float(0x72727272)); // 2.60326e+11f, 1.69209e+22f, 7.67543e+30f, 4.80216e+30f
12224
12225 SkPath path1(path);
12226 path.reset();
12227 path.setFillType((SkPath::FillType) 0);
12228path.setFillType(SkPath::kWinding_FillType);
12229
12230 SkPath path2(path);
Cary Clarkafca4d62017-12-01 15:23:00 -050012231 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
Yuqian Li3154a532017-09-06 13:33:30 -040012232}
12233
12234static void fuzzhang_3(skiatest::Reporter* reporter, const char* filename) {
12235 SkPath path;
12236 path.setFillType((SkPath::FillType) 0);
12237path.setFillType(SkPath::kWinding_FillType);
12238
12239 SkPath path1(path);
12240 path.reset();
12241 path.setFillType((SkPath::FillType) 0);
12242path.setFillType(SkPath::kWinding_FillType);
12243path.moveTo(SkBits2Float(0x46090052), SkBits2Float(0x7270726c)); // 8768.08f, 4.76254e+30f
12244path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12245path.close();
12246path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12247path.lineTo(SkBits2Float(0x77727272), SkBits2Float(0x52520072)); // 4.91741e+33f, 2.25488e+11f
12248path.lineTo(SkBits2Float(0x46090052), SkBits2Float(0x727272ce)); // 8768.08f, 4.80219e+30f
12249path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12250path.lineTo(SkBits2Float(0x6c460900), SkBits2Float(0x72727072)); // 9.57639e+26f, 4.802e+30f
12251path.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x72943603), SkBits2Float(0x72777272), SkBits2Float(0x5c525200), SkBits2Float(0x46090052), SkBits2Float(0x727272ce)); // -1.29345e+20f, 5.87124e+30f, 4.90119e+30f, 2.368e+17f, 8768.08f, 4.80219e+30f
12252path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12253path.lineTo(SkBits2Float(0x0052ca00), SkBits2Float(0x728e4603)); // 7.60297e-39f, 5.63603e+30f
12254path.quadTo(SkBits2Float(0xff727272), SkBits2Float(0x52527272), SkBits2Float(0x39392072), SkBits2Float(0xe0393939)); // -3.22267e+38f, 2.25966e+11f, 0.000176551f, -5.3387e+19f
12255path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12256path.close();
12257path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12258path.cubicTo(SkBits2Float(0xdada7272), SkBits2Float(0x2dff7272), SkBits2Float(0x767272f0), SkBits2Float(0x72727272), SkBits2Float(0x21727f72), SkBits2Float(0x0b210929)); // -3.07437e+16f, 2.9041e-11f, 1.22936e+33f, 4.80216e+30f, 8.21615e-19f, 3.10144e-32f
12259path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x72a5d6d6), SkBits2Float(0x72553872), SkBits2Float(0xdada7072), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // -1.18109e+14f, 6.56957e+30f, 4.22327e+30f, -3.07426e+16f, 2.25831e+11f, 4.80215e+30f
12260path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12261path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xca005252), SkBits2Float(0x46030052), SkBits2Float(0x7272728e)); // 4.80216e+30f, -2.10242e+06f, 8384.08f, 4.80217e+30f
12262path.quadTo(SkBits2Float(0x7272ff72), SkBits2Float(0x20725252), SkBits2Float(0x39393939), SkBits2Float(0xd76ee039)); // 4.81307e+30f, 2.05254e-19f, 0.000176643f, -2.62647e+14f
12263path.cubicTo(SkBits2Float(0xdada7272), SkBits2Float(0x2dff7272), SkBits2Float(0x767272f0), SkBits2Float(0x72727272), SkBits2Float(0x21727f72), SkBits2Float(0x0b210929)); // -3.07437e+16f, 2.9041e-11f, 1.22936e+33f, 4.80216e+30f, 8.21615e-19f, 3.10144e-32f
12264path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x72a5d6d6), SkBits2Float(0x72553872), SkBits2Float(0xdada7072), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // -1.18109e+14f, 6.56957e+30f, 4.22327e+30f, -3.07426e+16f, 2.25831e+11f, 4.80215e+30f
12265path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12266path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12267path.quadTo(SkBits2Float(0x72667254), SkBits2Float(0x00000040), SkBits2Float(0x00a70155), SkBits2Float(0x726800ff)); // 4.56447e+30f, 8.96831e-44f, 1.5337e-38f, 4.59531e+30f
12268path.quadTo(SkBits2Float(0x7b727272), SkBits2Float(0xad000c52), SkBits2Float(0x1c10adad), SkBits2Float(0x72728d8a)); // 1.25886e+36f, -7.27869e-12f, 4.78701e-22f, 4.80425e+30f
12269path.quadTo(SkBits2Float(0xff056546), SkBits2Float(0x727205ff), SkBits2Float(0x524b5aff), SkBits2Float(0x64005252)); // -1.77313e+38f, 4.79377e+30f, 2.18351e+11f, 9.46846e+21f
12270path.quadTo(SkBits2Float(0x72524872), SkBits2Float(0xdada7272), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // 4.16508e+30f, -3.07437e+16f, 2.25831e+11f, 4.80215e+30f
12271path.quadTo(SkBits2Float(0x72724172), SkBits2Float(0xdad10072), SkBits2Float(0x52524b5a), SkBits2Float(0x725b8000)); // 4.79837e+30f, -2.94144e+16f, 2.25802e+11f, 4.34765e+30f
12272path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12273path.quadTo(SkBits2Float(0x72728372), SkBits2Float(0x00000040), SkBits2Float(0xf6a70147), SkBits2Float(0xc2c2c256)); // 4.80347e+30f, 8.96831e-44f, -1.69363e+33f, -97.3796f
12274path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12275path.close();
12276path.moveTo(SkBits2Float(0x7a787a7a), SkBits2Float(0x7a3a7a7a)); // 3.22543e+35f, 2.42063e+35f
12277path.lineTo(SkBits2Float(0x8f4603e0), SkBits2Float(0x72727272)); // -9.7629e-30f, 4.80216e+30f
12278path.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x46090052), SkBits2Float(0x7270726c), SkBits2Float(0x60e04372)); // 1.1796e-38f, 8768.08f, 4.76254e+30f, 1.29279e+20f
12279path.moveTo(SkBits2Float(0x943603e0), SkBits2Float(0x77727272)); // -9.18942e-27f, 4.91741e+33f
12280path.quadTo(SkBits2Float(0x5c525200), SkBits2Float(0x46090052), SkBits2Float(0x727272ce), SkBits2Float(0x5252ec72)); // 2.368e+17f, 8768.08f, 4.80219e+30f, 2.26478e+11f
12281
12282 SkPath path2(path);
Cary Clarkafca4d62017-12-01 15:23:00 -050012283 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
Yuqian Li3154a532017-09-06 13:33:30 -040012284}
12285
12286static void fuzz754434_1(skiatest::Reporter* reporter, const char* filename) {
12287 SkPath path;
12288 path.setFillType((SkPath::FillType) 0);
12289path.setFillType(SkPath::kWinding_FillType);
12290
12291 SkPath path1(path);
12292 path.reset();
12293 path.setFillType((SkPath::FillType) 0);
12294path.setFillType(SkPath::kWinding_FillType);
12295path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12296path.cubicTo(SkBits2Float(0x535e5372), SkBits2Float(0x53536153), SkBits2Float(0x79530f53), SkBits2Float(0x101b6c88), SkBits2Float(0x5353735e), SkBits2Float(0x006df653)); // 9.54883e+11f, 9.07871e+11f, 6.84928e+34f, 3.0652e-29f, 9.08174e+11f, 1.00984e-38f
12297path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5656f666), SkBits2Float(0x5a565656), SkBits2Float(0x00000056), SkBits2Float(0xf66e5600)); // -4.71318e+30f, -2.50452e+33f, 5.90884e+13f, 1.50826e+16f, 1.20512e-43f, -1.20851e+33f
12298path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12299path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12300path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf653f6f6), SkBits2Float(0x563ef666), SkBits2Float(0x56565656), SkBits2Float(0x65565656), SkBits2Float(0xf6765656)); // -4.71318e+30f, -1.07479e+33f, 5.24914e+13f, 5.89166e+13f, 6.32612e+22f, -1.24908e+33f
12301
12302 SkPath path2(path);
12303 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12304}
12305
12306static void fuzz754434_2(skiatest::Reporter* reporter, const char* filename) {
12307 SkPath path;
12308 path.setFillType((SkPath::FillType) 1);
12309path.setFillType(SkPath::kEvenOdd_FillType);
12310path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12311path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12312path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12313path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12314path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12315path.close();
12316
12317 SkPath path1(path);
12318 path.reset();
12319 path.setFillType((SkPath::FillType) 0);
12320path.setFillType(SkPath::kWinding_FillType);
12321path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12322path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12323path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12324path.conicTo(SkBits2Float(0x6c8879ff), SkBits2Float(0x08761b1b), SkBits2Float(0x7066662d), SkBits2Float(0x70707070), SkBits2Float(0x70707070)); // 1.31992e+27f, 7.40598e-34f, 2.8522e+29f, 2.97649e+29f, 2.97649e+29f
12325
12326 SkPath path2(path);
12327 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12328}
12329
12330static void fuzz754434_3(skiatest::Reporter* reporter, const char* filename) {
12331 SkPath path;
12332 path.setFillType((SkPath::FillType) 0);
12333path.setFillType(SkPath::kWinding_FillType);
12334
12335 SkPath path1(path);
12336 path.reset();
12337 path.setFillType((SkPath::FillType) 0);
12338path.setFillType(SkPath::kWinding_FillType);
12339path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12340path.cubicTo(SkBits2Float(0x535e5372), SkBits2Float(0x53536153), SkBits2Float(0x79530f53), SkBits2Float(0x101b6c88), SkBits2Float(0x5353735e), SkBits2Float(0x006df653)); // 9.54883e+11f, 9.07871e+11f, 6.84928e+34f, 3.0652e-29f, 9.08174e+11f, 1.00984e-38f
12341path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5656f666), SkBits2Float(0x5a565656), SkBits2Float(0x00000056), SkBits2Float(0xf66e5600)); // -4.71318e+30f, -2.50452e+33f, 5.90884e+13f, 1.50826e+16f, 1.20512e-43f, -1.20851e+33f
12342path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12343path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12344path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf653f6f6), SkBits2Float(0x563ef666), SkBits2Float(0x56565656), SkBits2Float(0x65565656), SkBits2Float(0xf6765656)); // -4.71318e+30f, -1.07479e+33f, 5.24914e+13f, 5.89166e+13f, 6.32612e+22f, -1.24908e+33f
12345
12346 SkPath path2(path);
12347 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12348}
12349
12350static void fuzz754434_4(skiatest::Reporter* reporter, const char* filename) {
12351 SkPath path;
12352 path.setFillType((SkPath::FillType) 1);
12353path.setFillType(SkPath::kEvenOdd_FillType);
12354path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12355path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12356path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12357path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12358path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12359path.close();
12360
12361 SkPath path1(path);
12362 path.reset();
12363 path.setFillType((SkPath::FillType) 0);
12364path.setFillType(SkPath::kWinding_FillType);
12365path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12366path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12367path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12368path.conicTo(SkBits2Float(0x6c8879ff), SkBits2Float(0x08761b1b), SkBits2Float(0x7066662d), SkBits2Float(0x70707070), SkBits2Float(0x70707070)); // 1.31992e+27f, 7.40598e-34f, 2.8522e+29f, 2.97649e+29f, 2.97649e+29f
12369
12370 SkPath path2(path);
12371 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12372}
12373
12374static struct TestDesc failTests[] = {
Cary Clarkafca4d62017-12-01 15:23:00 -050012375 TEST(fuzz767834),
Yuqian Li3154a532017-09-06 13:33:30 -040012376 TEST(fuzz754434_1),
12377 TEST(fuzz754434_2),
12378 TEST(fuzz754434_3),
12379 TEST(fuzz754434_4),
12380 TEST(fuzzhang_3),
12381 TEST(fuzzhang_2),
12382 TEST(release_13),
12383 TEST(fuzzhang_1),
12384 TEST(fuzz763_57),
12385 TEST(fuzz763_56),
12386 TEST(fuzz763_55),
12387 TEST(fuzz763_54),
12388 TEST(fuzz763_53),
12389 TEST(fuzz763_52),
12390 TEST(fuzz763_51),
12391 TEST(fuzz763_50),
12392 TEST(fuzz763_49),
12393 TEST(fuzz763_48),
12394 TEST(fuzz763_47),
12395 TEST(fuzz763_46),
12396 TEST(fuzz763_45),
12397 TEST(fuzz763_44),
12398 TEST(fuzz763_43),
12399 TEST(fuzz763_42),
12400 TEST(fuzz763_41),
12401 TEST(fuzz763_40),
12402 TEST(fuzz763_39),
12403 TEST(fuzz763_38),
12404 TEST(fuzz763_37),
12405 TEST(fuzz763_36),
12406 TEST(fuzz763_35),
12407 TEST(fuzz763_34),
12408 TEST(fuzz763_33),
12409 TEST(fuzz763_32),
12410 TEST(fuzz763_31),
12411 TEST(fuzz763_30),
12412 TEST(fuzz763_29),
12413 TEST(fuzz763_28),
12414 TEST(fuzz763_27),
12415 TEST(fuzz763_26),
12416 TEST(fuzz763_25),
12417 TEST(fuzz763_24),
12418 TEST(fuzz763_23),
12419 TEST(fuzz763_22),
12420 TEST(fuzz763_21),
12421 TEST(fuzz763_20),
12422 TEST(fuzz763_19),
12423 TEST(fuzz763_18),
12424 TEST(fuzz763_17),
12425 TEST(fuzz763_16),
12426 TEST(fuzz763_15),
12427 TEST(fuzz763_14),
12428 TEST(fuzz763_13),
12429 TEST(fuzz763_12),
12430 TEST(fuzz763_11),
12431 TEST(fuzz763_10),
12432 TEST(kfuzz2),
12433 TEST(fuzz763_7),
12434 TEST(fuzz763_6),
12435 TEST(fuzz763_2c),
12436 TEST(fuzz763_2b),
12437 TEST(fuzz763_2a),
12438 TEST(fuzz763_5a),
12439 TEST(fuzz763_3a),
12440 TEST(fuzz763_1a),
12441 TEST(fuzz763_1b),
12442 TEST(fuzz763_1c),
12443 TEST(fuzz763_2),
12444 TEST(fuzz763_5),
12445 TEST(fuzz763_3),
12446 TEST(fuzz763_4),
12447 TEST(fuzz763_9),
12448 TEST(fuzz1450_1),
12449 TEST(fuzz1450_0),
12450 TEST(bug597926_0),
12451 TEST(fuzz535151),
12452 TEST(fuzz753_91),
12453 TEST(fuzz714),
12454 TEST(fuzz487a),
12455 TEST(fuzz433),
12456 TEST(fuzz1),
12457 TEST(fuzz487b),
12458 TEST(fuzz433b),
12459 TEST(bufferOverflow),
12460};
12461
12462static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
12463
12464DEF_TEST(PathOpsFailOp, reporter) {
12465#if DEBUG_SHOW_TEST_NAME
12466 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
12467#endif
12468 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, false);
12469}
12470
12471static struct TestDesc repTests[] = {
12472 TEST(fuzz763_5a),
12473};
12474
12475DEF_TEST(PathOpsRepOp, reporter) {
Cary Clark4533f3d2018-08-08 09:48:09 -040012476 if (PathOpsDebug::gJson) {
12477 return;
12478 }
Yuqian Li3154a532017-09-06 13:33:30 -040012479 for (int index = 0; index < 1; ++index)
12480 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, nullptr, false);
12481}