/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "include/core/SkPath.h"
#include "include/core/SkPathTypes.h"
#include "include/pathops/SkPathOps.h"
#include "include/private/base/SkFloatBits.h"
#include "tests/PathOpsExtendedTest.h"
#include "tests/Test.h"

#include <array>
#include <cstddef>

#define TEST(name) { name, #name }

static void skpcheeseandburger_com225(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(555, 468);
    path.lineTo(555, 362);
    path.lineTo(872, 362);
    path.lineTo(872, 468);
    path.lineTo(555, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(859.11792f, 397.320343f);
    pathB.cubicTo(855.523071f, 399.691284f, 853.721191f, 402.40863f, 853.721191f, 405.552216f);
    pathB.cubicTo(853.721191f, 407.911163f, 854.727478f, 410.115387f, 857.043518f, 412.252716f);
    pathB.cubicTo(859.920532f, 414.916138f, 862.704773f, 417.086426f, 864.679382f, 418.852386f);
    pathB.cubicTo(866.382446f, 420.371765f, 867.19104f, 422.108795f, 867.19104f, 423.506378f);
    pathB.cubicTo(867.19104f, 424.551605f, 866.741821f, 425.539886f, 865.935242f, 426.281616f);
    pathB.cubicTo(865.250366f, 426.910553f, 864.662415f, 427.339813f, 864.139282f, 427.4646f);
    pathB.cubicTo(863.536377f, 427.605347f, 862.259521f, 426.491272f, 860.366821f, 424.208191f);
    pathB.cubicTo(858.345276f, 421.770355f, 857.317017f, 419.733856f, 857.317017f, 417.98587f);
    pathB.cubicTo(857.317017f, 417.198212f, 857.942993f, 415.930389f, 857.942993f, 415.930389f);
    pathB.cubicTo(857.942993f, 415.930389f, 852.106018f, 421.296173f, 852.279663f, 422.549042f);
    pathB.cubicTo(852.462402f, 423.890747f, 853.669312f, 425.703613f, 855.876465f, 428.252258f);
    pathB.cubicTo(858.038818f, 430.754944f, 859.4953f, 431.840088f, 860.190125f, 431.594513f);
    pathB.cubicTo(862.571045f, 430.754944f, 865.48999f, 429.237549f, 868.44397f, 427.018372f);
    pathB.cubicTo(870.505371f, 425.470032f, 871.582581f, 423.534332f, 871.582581f, 421.001678f);
    pathB.cubicTo(871.582581f, 417.945923f, 870.056213f, 415.171692f, 867.015381f, 412.640045f);
    pathB.cubicTo(863.683105f, 409.872803f, 861.445923f, 408.027954f, 860.551514f, 407.140503f);
    pathB.cubicTo(858.660767f, 405.264709f, 857.765259f, 403.50174f, 857.765259f, 402.187988f);
    pathB.cubicTo(857.765259f, 401.141785f, 858.339355f, 400.394073f, 859.476318f, 399.925873f);
    pathB.cubicTo(860.004395f, 399.704254f, 861.270264f, 400.515869f, 863.156006f, 402.36969f);
    pathB.cubicTo(865.094727f, 404.28241f, 866.203796f, 405.565186f, 866.383484f, 406.130219f);
    pathB.cubicTo(868.250244f, 404.305359f, 869.179688f, 403.397919f, 871.046509f, 401.58902f);
    pathB.cubicTo(868.26825f, 399.296967f, 864.431824f, 394.705841f, 863.156006f, 394.600037f);
    pathB.cubicTo(863.145996f, 394.600037f, 863.136108f, 394.59903f, 863.126099f, 394.59903f);
    pathB.cubicTo(862.352417f, 394.598022f, 859.909607f, 396.79425f, 859.11792f, 397.320343f);
    pathB.moveTo(832.164246f, 394.307526f);
    pathB.cubicTo(832.451721f, 394.425323f, 832.598511f, 394.486206f, 832.886963f, 394.605011f);
    pathB.cubicTo(834.078979f, 395.474518f, 834.674927f, 395.90979f, 835.867859f, 396.781281f);
    pathB.cubicTo(836.502808f, 397.325348f, 836.863159f, 398.000183f, 836.863159f, 398.964539f);
    pathB.lineTo(836.863159f, 419.740845f);
    pathB.cubicTo(836.863159f, 420.876923f, 836.319092f, 422.17868f, 835.055298f, 423.617188f);
    pathB.cubicTo(836.39502f, 424.512665f, 837.063843f, 424.961884f, 838.39856f, 425.864349f);
    pathB.cubicTo(839.477661f, 426.578125f, 841.37439f, 427.27594f, 842.275879f, 427.443634f);
    pathB.cubicTo(842.999634f, 427.574402f, 843.82019f, 427.513519f, 844.354309f, 427.216034f);
    pathB.cubicTo(846.956787f, 425.765503f, 848.689819f, 423.588257f, 848.58606f, 423.483429f);
    pathB.cubicTo(848.58606f, 423.483429f, 846.877991f, 423.327698f, 845.971558f, 422.807587f);
    pathB.cubicTo(845.253784f, 422.284485f, 844.892395f, 422.022949f, 844.171631f, 421.502838f);
    pathB.cubicTo(843.361023f, 420.915833f, 842.907837f, 420.308899f, 842.907837f, 419.350525f);
    pathB.lineTo(842.907837f, 399.445709f);
    pathB.cubicTo(842.907837f, 398.053101f, 843.272217f, 397.417175f, 843.812256f, 397.518005f);
    pathB.cubicTo(844.170654f, 397.583893f, 844.711731f, 398.122986f, 845.432495f, 398.782837f);
    pathB.cubicTo(846.116333f, 399.402771f, 846.459717f, 399.709259f, 847.14856f, 400.3302f);
    pathB.cubicTo(844.986206f, 402.099152f, 843.988892f, 403.926025f, 843.988892f, 405.932556f);
    pathB.cubicTo(843.988892f, 410.209229f, 848.272583f, 410.951935f, 849.576355f, 408.394348f);
    pathB.cubicTo(849.871826f, 407.816345f, 850.421875f, 406.214081f, 850.387939f, 406.196106f);
    pathB.cubicTo(850.387939f, 406.196106f, 849.305786f, 406.771118f, 848.495239f, 406.615387f);
    pathB.cubicTo(846.96582f, 406.316895f, 846.153198f, 405.46637f, 846.153198f, 403.89505f);
    pathB.cubicTo(846.153198f, 401.796661f, 848.50116f, 399.09729f, 852.279663f, 396.270142f);
    pathB.cubicTo(851.014893f, 395.315796f, 847.723511f, 391.546265f, 846.875f, 391.546265f);
    pathB.cubicTo(846.330933f, 391.546265f, 843.988892f, 394.403351f, 843.273193f, 394.972382f);
    pathB.cubicTo(840.889282f, 392.886963f, 839.700317f, 391.850739f, 837.312378f, 389.786285f);
    pathB.cubicTo(835.257935f, 391.589203f, 834.225708f, 392.491638f, 832.164246f, 394.307526f);
    pathB.moveTo(818.860107f, 392.707275f);
    pathB.cubicTo(819.857361f, 393.382111f, 822.302124f, 395.764038f, 824.387573f, 397.051819f);
    pathB.cubicTo(822.57666f, 398.249756f, 820.582092f, 399.687286f, 818.860107f, 400.827332f);
    pathB.lineTo(818.860107f, 392.707275f);
    pathB.close();
    pathB.moveTo(810.69812f, 391.096039f);
    pathB.cubicTo(810.69812f, 391.096039f, 812.786499f, 394.093903f, 812.786499f, 394.965393f);
    pathB.lineTo(812.786499f, 415.743713f);
    pathB.cubicTo(812.786499f, 417.753265f, 811.881042f, 418.497986f, 810.974609f, 419.769806f);
    pathB.cubicTo(813.948486f, 421.160431f, 815.437988f, 421.864197f, 818.404846f, 423.283783f);
    pathB.cubicTo(819.948181f, 423.95462f, 822.417969f, 424.592529f, 823.937317f, 423.782928f);
    pathB.cubicTo(827.905518f, 421.663544f, 831.53125f, 417.600525f, 832.255005f, 415.191681f);
    pathB.cubicTo(833.882263f, 409.877808f, 823.095825f, 411.495026f, 823.119751f, 411.518982f);
    pathB.cubicTo(823.119751f, 411.518982f, 832.000488f, 411.874359f, 830.537964f, 416.29776f);
    pathB.cubicTo(829.888123f, 418.253418f, 827.278564f, 420.292908f, 825.385864f, 419.55719f);
    pathB.cubicTo(821.14209f, 417.915985f, 818.861023f, 417.414856f, 818.861023f, 414.970032f);
    pathB.lineTo(818.861023f, 403.096436f);
    pathB.cubicTo(822.126404f, 399.132233f, 831.289673f, 395.897797f, 831.356567f, 395.657227f);
    pathB.cubicTo(831.356567f, 395.657227f, 823.022888f, 387.594055f, 821.763062f, 387.476257f);
    pathB.cubicTo(821.755066f, 387.47525f, 821.746094f, 387.47525f, 821.737061f, 387.47525f);
    pathB.cubicTo(820.793701f, 387.47525f, 810.72406f, 390.967255f, 810.69812f, 391.096039f);
    pathB.moveTo(624.254211f, 390.498077f);
    pathB.cubicTo(625.252502f, 390.893402f, 627.708252f, 392.592468f, 629.796692f, 393.307251f);
    pathB.cubicTo(627.978821f, 395.006317f, 625.980225f, 397.000916f, 624.254211f, 398.618134f);
    pathB.lineTo(624.254211f, 390.498077f);
    pathB.close();
    pathB.moveTo(627.160217f, 384.460449f);
    pathB.cubicTo(626.286743f, 384.51535f, 616.076233f, 390.993225f, 616.086243f, 391.141968f);
    pathB.cubicTo(616.086243f, 391.141968f, 618.173645f, 393.561798f, 618.173645f, 394.437317f);
    pathB.lineTo(618.173645f, 415.216614f);
    pathB.cubicTo(618.173645f, 417.222168f, 617.265198f, 418.219482f, 616.355774f, 419.742859f);
    pathB.cubicTo(619.331665f, 420.307892f, 620.824097f, 420.599396f, 623.802979f, 421.198364f);
    pathB.cubicTo(625.346313f, 421.437958f, 627.818115f, 421.39801f, 629.342468f, 420.166138f);
    pathB.cubicTo(633.340576f, 416.939667f, 636.982361f, 411.871368f, 637.714111f, 409.263855f);
    pathB.cubicTo(639.348267f, 403.500732f, 628.508911f, 408.111816f, 628.52887f, 408.126801f);
    pathB.cubicTo(628.52887f, 408.126801f, 637.468506f, 405.998444f, 635.985046f, 410.844147f);
    pathB.cubicTo(635.332153f, 412.984467f, 632.705688f, 415.748718f, 630.801941f, 415.541077f);
    pathB.cubicTo(626.537292f, 415.072876f, 624.257202f, 415.202667f, 624.257202f, 412.755859f);
    pathB.cubicTo(624.257202f, 408.007019f, 624.255188f, 405.636078f, 624.255188f, 400.884247f);
    pathB.cubicTo(627.525574f, 396.016602f, 636.801636f, 390.283447f, 636.801636f, 389.97995f);
    pathB.cubicTo(636.801636f, 389.97995f, 628.360168f, 384.458435f, 627.18219f, 384.458435f);
    pathB.cubicTo(627.174194f, 384.460449f, 627.167236f, 384.460449f, 627.160217f, 384.460449f);
    pathB.moveTo(796.530396f, 416.438538f);
    pathB.cubicTo(795.892517f, 416.365662f, 794.527832f, 415.589996f, 792.348572f, 414.036652f);
    pathB.lineTo(792.348572f, 391.425476f);
    pathB.cubicTo(792.348572f, 390.465118f, 792.530273f, 390.047852f, 792.89563f, 390.088776f);
    pathB.cubicTo(793.075317f, 390.109741f, 793.3479f, 390.317383f, 793.804077f, 390.629852f);
    pathB.cubicTo(795.113831f, 391.585205f, 795.768738f, 392.059387f, 797.077515f, 393.018738f);
    pathB.cubicTo(797.983948f, 393.648651f, 798.348267f, 394.219666f, 798.348267f, 394.742767f);
    pathB.lineTo(798.348267f, 413.253998f);
    pathB.cubicTo(798.348267f, 415.391327f, 797.783264f, 416.451508f, 796.728088f, 416.451508f);
    pathB.cubicTo(796.664185f, 416.4505f, 796.598267f, 416.446533f, 796.530396f, 416.438538f);
    pathB.moveTo(795.165771f, 383.714722f);
    pathB.cubicTo(794.022705f, 383.851471f, 783.959961f, 388.652252f, 783.880127f, 388.873871f);
    pathB.cubicTo(783.880127f, 388.873871f, 785.054077f, 389.871155f, 785.522339f, 390.606873f);
    pathB.cubicTo(786.000488f, 391.361603f, 786.246094f, 391.9935f, 786.246094f, 392.427765f);
    pathB.lineTo(786.246094f, 411.987183f);
    pathB.cubicTo(786.246094f, 413.733185f, 784.160645f, 416.428558f, 784.246521f, 416.759979f);
    pathB.cubicTo(784.258484f, 416.79892f, 785.432495f, 417.14032f, 785.793823f, 417.350952f);
    pathB.cubicTo(786.739258f, 417.937958f, 787.213379f, 418.228455f, 788.161804f, 418.821442f);
    pathB.cubicTo(789.342773f, 419.554199f, 790.619568f, 419.956482f, 791.892395f, 420.098236f);
    pathB.cubicTo(794.533813f, 420.390747f, 796.717102f, 419.337555f, 798.349304f, 416.999573f);
    pathB.lineTo(798.349304f, 425.212463f);
    pathB.cubicTo(797.94696f, 425.47702f, 797.750305f, 425.609772f, 797.356018f, 425.874329f);
    pathB.cubicTo(795.259583f, 423.619202f, 792.806824f, 422.286499f, 789.985657f, 421.984009f);
    pathB.cubicTo(785.157959f, 421.463898f, 780.409119f, 428.344086f, 780.423096f, 428.346069f);
    pathB.cubicTo(780.423096f, 428.346069f, 783.340088f, 424.960907f, 785.889709f, 425.218445f);
    pathB.cubicTo(789.25592f, 425.565857f, 793.166199f, 430.745972f, 793.805115f, 430.790894f);
    pathB.cubicTo(793.940857f, 430.798889f, 795.918457f, 429.091797f, 798.454102f, 427.383728f);
    pathB.cubicTo(801.049683f, 425.635742f, 804.230225f, 423.886749f, 806.619141f, 423.980591f);
    pathB.cubicTo(805.621826f, 423.586243f, 805.048828f, 423.074127f, 804.804199f, 422.609924f);
    pathB.cubicTo(804.616577f, 422.25354f, 804.616577f, 421.539764f, 804.616577f, 420.31488f);
    pathB.cubicTo(804.623535f, 411.732605f, 804.623535f, 403.147339f, 804.623535f, 394.562073f);
    pathB.cubicTo(804.623535f, 392.464691f, 805.970215f, 391.000183f, 805.984192f, 390.896362f);
    pathB.cubicTo(805.984192f, 390.896362f, 796.785034f, 383.7117f, 795.219666f, 383.7117f);
    pathB.cubicTo(795.19873f, 383.712708f, 795.181763f, 383.712708f, 795.165771f, 383.714722f);
    pathB.moveTo(648.092285f, 387.883545f);
    pathB.cubicTo(649.095581f, 388.312805f, 651.55835f, 390.099762f, 653.655701f, 390.884399f);
    pathB.cubicTo(651.831848f, 392.522583f, 649.82428f, 394.447296f, 648.092285f, 396.003601f);
    pathB.lineTo(648.092285f, 387.883545f);
    pathB.close();
    pathB.moveTo(651.009277f, 381.943756f);
    pathB.cubicTo(650.147766f, 381.983704f, 639.893372f, 388.105164f, 639.899353f, 388.254913f);
    pathB.cubicTo(639.899353f, 388.254913f, 641.987793f, 390.744659f, 641.987793f, 391.617157f);
    pathB.lineTo(641.987793f, 412.399475f);
    pathB.cubicTo(641.987793f, 414.409027f, 641.082336f, 415.369354f, 640.169861f, 416.864807f);
    pathB.cubicTo(643.155762f, 417.53064f, 644.650208f, 417.87207f, 647.638062f, 418.573853f);
    pathB.cubicTo(649.188416f, 418.865356f, 651.666138f, 418.908295f, 653.19751f, 417.725311f);
    pathB.cubicTo(657.204651f, 414.633636f, 660.859375f, 409.690125f, 661.590088f, 407.106567f);
    pathB.cubicTo(663.231262f, 401.397339f, 652.356934f, 405.644073f, 652.375916f, 405.663025f);
    pathB.cubicTo(652.375916f, 405.663025f, 661.338562f, 403.835175f, 659.857056f, 408.632935f);
    pathB.cubicTo(659.199219f, 410.748291f, 656.568726f, 413.424713f, 654.656982f, 413.151184f);
    pathB.cubicTo(650.381348f, 412.536224f, 648.092285f, 412.591125f, 648.092285f, 410.146332f);
    pathB.lineTo(648.092285f, 398.270721f);
    pathB.cubicTo(651.374634f, 393.5159f, 660.66571f, 388.09021f, 660.674683f, 387.791718f);
    pathB.cubicTo(660.674683f, 387.791718f, 652.188232f, 381.941772f, 651.022278f, 381.942749f);
    pathB.cubicTo(651.01825f, 381.942749f, 651.013245f, 381.942749f, 651.009277f, 381.943756f);
    pathB.moveTo(761.636353f, 385.965851f);
    pathB.cubicTo(761.927856f, 386.056702f, 762.071594f, 386.098633f, 762.363098f, 386.189453f);
    pathB.cubicTo(763.570007f, 386.938171f, 764.175964f, 387.311554f, 765.376892f, 388.066254f);
    pathB.cubicTo(766.019775f, 388.546417f, 766.384155f, 389.184326f, 766.384155f, 390.147675f);
    pathB.lineTo(766.384155f, 410.924011f);
    pathB.cubicTo(766.384155f, 412.057037f, 765.836121f, 413.410736f, 764.559326f, 414.979034f);
    pathB.cubicTo(765.911987f, 415.738739f, 766.579834f, 416.12207f, 767.934509f, 416.887756f);
    pathB.cubicTo(769.029602f, 417.495728f, 770.944336f, 418.000854f, 771.85675f, 418.075714f);
    pathB.cubicTo(772.58551f, 418.134613f, 773.413086f, 417.987854f, 773.950195f, 417.638458f);
    pathB.cubicTo(776.583618f, 415.917419f, 778.332642f, 413.564453f, 778.237793f, 413.473633f);
    pathB.cubicTo(778.237793f, 413.473633f, 776.507812f, 413.497559f, 775.596313f, 413.066315f);
    pathB.cubicTo(774.866577f, 412.61908f, 774.497253f, 412.39447f, 773.771484f, 411.951233f);
    pathB.cubicTo(772.947876f, 411.444092f, 772.493652f, 410.877075f, 772.493652f, 409.919708f);
    pathB.lineTo(772.493652f, 390.013885f);
    pathB.cubicTo(772.493652f, 388.618286f, 772.860046f, 387.949432f, 773.407104f, 387.995361f);
    pathB.cubicTo(773.771484f, 388.026306f, 774.318542f, 388.509491f, 775.049316f, 389.09848f);
    pathB.cubicTo(775.742065f, 389.646515f, 776.088501f, 389.923065f, 776.77533f, 390.470123f);
    pathB.cubicTo(774.590088f, 392.45871f, 773.589783f, 394.385376f, 773.589783f, 396.395935f);
    pathB.cubicTo(773.589783f, 400.673584f, 777.907349f, 401.008026f, 779.237122f, 398.292694f);
    pathB.cubicTo(779.539551f, 397.684723f, 780.089661f, 396.027557f, 780.058716f, 396.01358f);
    pathB.cubicTo(780.058716f, 396.01358f, 778.970581f, 396.694427f, 778.149963f, 396.618561f);
    pathB.cubicTo(776.598633f, 396.4758f, 775.775024f, 395.709106f, 775.775024f, 394.13681f);
    pathB.cubicTo(775.775024f, 392.042419f, 778.149963f, 389.103455f, 781.973389f, 385.892975f);
    pathB.cubicTo(780.697571f, 385.06839f, 777.326416f, 381.676208f, 776.506775f, 381.719147f);
    pathB.cubicTo(775.908813f, 381.747101f, 773.588806f, 384.868744f, 772.860046f, 385.506622f);
    pathB.cubicTo(770.451172f, 383.664795f, 769.248291f, 382.749359f, 766.843384f, 380.929504f);
    pathB.cubicTo(764.758972f, 382.934052f, 763.716736f, 383.940338f, 761.636353f, 385.965851f);
    pathB.moveTo(672.996521f, 379.821411f);
    pathB.cubicTo(672.123047f, 379.891266f, 669.7052f, 382.898132f, 668.887573f, 383.64682f);
    pathB.cubicTo(665.239868f, 386.999084f, 663.41095f, 390.213562f, 663.41095f, 393.356171f);
    pathB.cubicTo(663.41095f, 395.715118f, 664.439209f, 397.642792f, 666.785156f, 399.150208f);
    pathB.cubicTo(669.702148f, 401.02002f, 672.547302f, 402.439575f, 674.545837f, 403.655487f);
    pathB.cubicTo(676.261902f, 404.697693f, 677.105469f, 406.231049f, 677.105469f, 407.625671f);
    pathB.cubicTo(677.105469f, 408.671875f, 676.651245f, 409.777954f, 675.825684f, 410.7453f);
    pathB.cubicTo(675.12384f, 411.569885f, 674.538879f, 412.145905f, 673.997803f, 412.417419f);
    pathB.cubicTo(673.38385f, 412.724915f, 672.080078f, 411.958221f, 670.166382f, 410.198242f);
    pathB.cubicTo(668.113892f, 408.319458f, 667.062683f, 406.55249f, 667.062683f, 404.808502f);
    pathB.cubicTo(667.062683f, 404.020844f, 667.701599f, 402.580322f, 667.701599f, 402.580322f);
    pathB.cubicTo(667.701599f, 402.580322f, 661.773804f, 409.542358f, 661.951477f, 410.7453f);
    pathB.cubicTo(662.13916f, 412.037079f, 663.368042f, 413.524536f, 665.60321f, 415.469208f);
    pathB.cubicTo(667.791443f, 417.368927f, 669.261963f, 418.074738f, 669.983704f, 417.630493f);
    pathB.cubicTo(672.412537f, 416.138062f, 675.369446f, 413.822021f, 678.385254f, 410.790222f);
    pathB.cubicTo(680.485657f, 408.677856f, 681.587769f, 406.446686f, 681.587769f, 403.917023f);
    pathB.cubicTo(681.587769f, 400.859283f, 680.007446f, 398.490356f, 676.923767f, 396.806244f);
    pathB.cubicTo(673.540588f, 394.957428f, 671.257507f, 393.71756f, 670.351074f, 393.075653f);
    pathB.cubicTo(668.434326f, 391.71698f, 667.518921f, 390.193604f, 667.518921f, 388.88385f);
    pathB.cubicTo(667.518921f, 387.837646f, 668.101929f, 386.934204f, 669.25592f, 386.156525f);
    pathB.cubicTo(669.796997f, 385.788147f, 671.085815f, 386.257355f, 672.997498f, 387.592072f);
    pathB.cubicTo(674.966125f, 388.968689f, 676.104187f, 389.951019f, 676.284851f, 390.465118f);
    pathB.cubicTo(678.186584f, 388.130127f, 679.136963f, 386.966125f, 681.035706f, 384.646118f);
    pathB.cubicTo(678.244507f, 383.133728f, 674.247375f, 379.819397f, 673.044434f, 379.819397f);
    pathB.cubicTo(673.027466f, 379.819397f, 673.011475f, 379.820404f, 672.996521f, 379.821411f);
    pathB.moveTo(732.95459f, 384.60318f);
    pathB.cubicTo(733.246094f, 384.680054f, 733.391846f, 384.720001f, 733.689331f, 384.794861f);
    pathB.cubicTo(735.072937f, 385.500641f, 735.769714f, 385.856049f, 737.162354f, 386.563812f);
    pathB.cubicTo(737.891113f, 386.938171f, 738.164612f, 387.642975f, 738.164612f, 388.6073f);
    pathB.lineTo(738.164612f, 408.510132f);
    pathB.cubicTo(738.164612f, 410.257141f, 737.709412f, 411.893341f, 736.064209f, 413.416718f);
    pathB.cubicTo(737.635498f, 414.235321f, 738.419189f, 414.651611f, 739.991455f, 415.475189f);
    pathB.cubicTo(740.997742f, 416.034241f, 742.186707f, 416.344696f, 743.098145f, 416.379639f);
    pathB.cubicTo(743.830872f, 416.410583f, 744.476807f, 416.175964f, 745.019836f, 415.851532f);
    pathB.cubicTo(746.476318f, 414.977051f, 748.58075f, 413.571442f, 749.225647f, 413.079285f);
    pathB.cubicTo(751.012573f, 414.253296f, 751.907043f, 414.845276f, 753.69696f, 416.028229f);
    pathB.cubicTo(754.703247f, 416.610229f, 755.706543f, 416.84082f, 756.528076f, 416.892761f);
    pathB.cubicTo(757.259827f, 416.93866f, 757.996582f, 416.807892f, 758.537659f, 416.494446f);
    pathB.cubicTo(760.814758f, 415.174713f, 762.185425f, 413.509552f, 762.552734f, 412.830719f);
    pathB.cubicTo(761.637329f, 412.681976f, 759.633789f, 411.58786f, 759.263428f, 411.387207f);
    pathB.cubicTo(758.607544f, 410.994873f, 758.279114f, 410.803223f, 757.621216f, 410.413879f);
    pathB.cubicTo(756.983276f, 410.020538f, 756.616943f, 409.301788f, 756.616943f, 408.343445f);
    pathB.lineTo(756.616943f, 388.351746f);
    pathB.cubicTo(756.616943f, 387.387421f, 757.164978f, 386.548859f, 758.627502f, 385.067383f);
    pathB.cubicTo(755.523804f, 383.05484f, 753.97052f, 382.057556f, 750.862854f, 380.078949f);
    pathB.cubicTo(749.001038f, 382.112457f, 748.069641f, 383.130707f, 746.207825f, 385.174194f);
    pathB.cubicTo(746.501343f, 385.292999f, 746.647095f, 385.353912f, 746.939575f, 385.472687f);
    pathB.cubicTo(747.996765f, 386.183472f, 748.525879f, 386.538879f, 749.587036f, 387.257629f);
    pathB.cubicTo(750.224915f, 387.724823f, 750.498474f, 388.351746f, 750.498474f, 389.223267f);
    pathB.lineTo(750.498474f, 407.822327f);
    pathB.cubicTo(750.498474f, 408.694824f, 750.339722f, 409.955658f, 749.951416f, 410.847137f);
    pathB.cubicTo(749.550049f, 411.761566f, 749.039978f, 411.585876f, 748.487915f, 411.560913f);
    pathB.cubicTo(747.393799f, 411.503998f, 746.385498f, 410.53067f, 745.473083f, 410.022552f);
    pathB.cubicTo(744.760254f, 409.627228f, 744.380981f, 409.013275f, 744.380981f, 407.965088f);
    pathB.lineTo(744.380981f, 386.840363f);
    pathB.cubicTo(744.380981f, 385.791138f, 744.833191f, 384.763916f, 745.657776f, 383.839508f);
    pathB.cubicTo(742.656921f, 382.101501f, 741.161499f, 381.234985f, 738.162659f, 379.525909f);
    pathB.cubicTo(736.083191f, 381.548431f, 735.039978f, 382.562683f, 732.95459f, 384.60318f);
    pathB.moveTo(692.546936f, 385.171204f);
    pathB.cubicTo(693.552246f, 385.667358f, 696.018005f, 387.607025f, 698.122375f, 388.521454f);
    pathB.cubicTo(696.293518f, 390.043854f, 694.281982f, 391.844757f, 692.546936f, 393.294281f);
    pathB.lineTo(692.546936f, 385.171204f);
    pathB.close();
    pathB.moveTo(695.4729f, 379.417084f);
    pathB.cubicTo(694.635376f, 379.426086f, 684.32605f, 384.880707f, 684.322083f, 385.025452f);
    pathB.cubicTo(684.322083f, 385.025452f, 686.422485f, 387.645966f, 686.422485f, 388.521454f);
    pathB.lineTo(686.422485f, 409.300781f);
    pathB.cubicTo(686.422485f, 411.312347f, 685.51001f, 412.21579f, 684.595581f, 413.65033f);
    pathB.cubicTo(687.592468f, 414.504852f, 689.089905f, 414.945099f, 692.088745f, 415.833557f);
    pathB.cubicTo(693.645081f, 416.221893f, 696.128784f, 416.420563f, 697.667114f, 415.334412f);
    pathB.cubicTo(701.67926f, 412.494293f, 705.344971f, 407.783386f, 706.077698f, 405.240753f);
    pathB.cubicTo(707.721924f, 399.638367f, 696.822632f, 403.198273f, 696.845581f, 403.216248f);
    pathB.cubicTo(696.845581f, 403.216248f, 705.825134f, 401.960388f, 704.337708f, 406.658325f);
    pathB.cubicTo(703.683838f, 408.733765f, 701.044373f, 411.241455f, 699.129639f, 410.847137f);
    pathB.cubicTo(694.843018f, 409.968628f, 692.545959f, 409.876801f, 692.545959f, 407.432983f);
    pathB.lineTo(692.545959f, 395.563354f);
    pathB.cubicTo(695.838318f, 391.012177f, 705.134338f, 386.160522f, 705.162292f, 385.873993f);
    pathB.cubicTo(705.162292f, 385.873993f, 696.635925f, 379.416107f, 695.473938f, 379.417084f);
    pathB.cubicTo(695.474915f, 379.417084f, 695.473938f, 379.417084f, 695.4729f, 379.417084f);
    pathB.moveTo(570.463562f, 420.81601f);
    pathB.lineTo(570.463562f, 402.922729f);
    pathB.cubicTo(571.039551f, 402.800934f, 571.327087f, 402.743042f, 571.901123f, 402.625244f);
    pathB.lineTo(571.901123f, 423.142029f);
    pathB.cubicTo(570.911804f, 422.823578f, 570.463562f, 422.123779f, 570.463562f, 420.81601f);
    pathB.moveTo(570.463562f, 384.062134f);
    pathB.cubicTo(571.039551f, 384.149963f, 571.327087f, 384.198883f, 571.901123f, 384.290741f);
    pathB.lineTo(571.901123f, 401.580048f);
    pathB.cubicTo(571.327087f, 401.695862f, 571.039551f, 401.756744f, 570.463562f, 401.874542f);
    pathB.lineTo(570.463562f, 384.062134f);
    pathB.close();
    pathB.moveTo(573.880676f, 376.556f);
    pathB.cubicTo(572.483093f, 376.996246f, 561.476013f, 385.624451f, 561.482971f, 385.70929f);
    pathB.cubicTo(561.482971f, 385.70929f, 563.637268f, 388.554413f, 563.637268f, 389.688446f);
    pathB.lineTo(563.637268f, 398.423462f);
    pathB.cubicTo(556.411682f, 399.838043f, 555.429382f, 404.307373f, 555.418396f, 405.679993f);
    pathB.lineTo(555.418396f, 405.724915f);
    pathB.cubicTo(555.42041f, 405.94455f, 555.448364f, 406.073334f, 555.477295f, 406.083313f);
    pathB.cubicTo(555.477295f, 406.083313f, 558.070862f, 404.250458f, 563.637268f, 403.222229f);
    pathB.lineTo(563.637268f, 404.797516f);
    pathB.cubicTo(556.993713f, 406.233063f, 555.191772f, 412.494293f, 555.569153f, 412.614105f);
    pathB.cubicTo(555.569153f, 412.614105f, 561.572815f, 410.21521f, 563.637268f, 409.598267f);
    pathB.lineTo(563.637268f, 424.00354f);
    pathB.cubicTo(563.637268f, 426.357483f, 563.36676f, 427.901855f, 562.291565f, 429.70874f);
    pathB.cubicTo(565.448181f, 430.067139f, 567.028442f, 430.256805f, 570.192017f, 430.653137f);
    pathB.cubicTo(571.99292f, 430.893707f, 574.782166f, 430.669098f, 576.403381f, 429.136719f);
    pathB.cubicTo(580.960571f, 424.828125f, 586.135681f, 419.346527f, 586.135681f, 416.115082f);
    pathB.lineTo(586.135681f, 406.511566f);
    pathB.cubicTo(586.135681f, 405.377533f, 586.047791f, 404.608856f, 586.678711f, 403.271149f);
    pathB.cubicTo(584.151062f, 404.98819f, 582.888245f, 405.851715f, 580.362549f, 407.587738f);
    pathB.cubicTo(579.281433f, 408.320465f, 579.192566f, 409.2948f, 579.192566f, 410.955933f);
    pathB.lineTo(579.192566f, 421.869202f);
    pathB.cubicTo(579.192566f, 423.180969f, 577.746033f, 423.273804f, 577.392639f, 423.266815f);
    pathB.cubicTo(575.636658f, 423.228882f, 574.153259f, 423.295776f, 573.071106f, 423.077148f);
    pathB.lineTo(573.071106f, 384.663086f);
    pathB.cubicTo(575.230408f, 385.379852f, 576.309509f, 385.742249f, 578.473816f, 386.473999f);
    pathB.cubicTo(579.373291f, 386.996094f, 579.553955f, 387.490234f, 579.553955f, 388.013336f);
    pathB.cubicTo(581.861023f, 384.848785f, 583.015991f, 383.267487f, 585.325073f, 380.114899f);
    pathB.cubicTo(581.680298f, 379.229431f, 575.865295f, 376.520081f, 574.157227f, 376.521057f);
    pathB.cubicTo(574.047424f, 376.522064f, 573.955566f, 376.533051f, 573.880676f, 376.556f);
    pathB.moveTo(593.447083f, 375.096527f);
    pathB.cubicTo(592.363953f, 375.804291f, 591.821899f, 376.772644f, 591.821899f, 377.908691f);
    pathB.lineTo(591.821899f, 419.46933f);
    pathB.cubicTo(591.821899f, 420.517517f, 591.187012f, 422.018951f, 589.921143f, 423.991577f);
    pathB.cubicTo(591.2948f, 424.412842f, 591.982605f, 424.622467f, 593.354248f, 425.050751f);
    pathB.cubicTo(594.53125f, 425.462036f, 595.525513f, 425.555878f, 596.427979f, 425.404144f);
    pathB.cubicTo(597.150757f, 425.279358f, 597.785645f, 424.914978f, 598.326721f, 424.475739f);
    pathB.cubicTo(600.935242f, 422.385315f, 602.846985f, 419.809753f, 602.759094f, 419.749847f);
    pathB.cubicTo(602.759094f, 419.749847f, 601.582153f, 419.935516f, 600.59082f, 419.831696f);
    pathB.cubicTo(600.0448f, 419.74585f, 599.774231f, 419.700928f, 599.233154f, 419.615082f);
    pathB.cubicTo(598.416565f, 419.484314f, 597.965332f, 418.860382f, 597.965332f, 417.988861f);
    pathB.lineTo(597.965332f, 396.857147f);
    pathB.cubicTo(597.965332f, 395.376678f, 598.326721f, 394.617004f, 598.867798f, 394.528137f);
    pathB.cubicTo(599.232178f, 394.466248f, 599.773254f, 394.731812f, 600.59082f, 395.124115f);
    pathB.cubicTo(601.601074f, 395.589325f, 602.111206f, 395.819946f, 603.123474f, 396.288116f);
    pathB.cubicTo(603.93811f, 396.686432f, 603.93512f, 397.38324f, 603.93512f, 398.169891f);
    pathB.cubicTo(603.93512f, 405.971497f, 603.93512f, 413.768127f, 603.93811f, 421.569702f);
    pathB.cubicTo(603.93811f, 425.325256f, 601.109924f, 430.634155f, 601.133911f, 430.656128f);
    pathB.cubicTo(601.133911f, 430.656128f, 605.184937f, 427.222015f, 607.017822f, 424.414825f);
    pathB.cubicTo(609.118164f, 421.201355f, 610.280212f, 417.987854f, 610.280212f, 415.109802f);
    pathB.lineTo(610.280212f, 394.593048f);
    pathB.cubicTo(610.280212f, 393.890228f, 610.823242f, 393.112579f, 611.728699f, 392.020447f);
    pathB.cubicTo(608.827698f, 390.960266f, 604.000977f, 387.703857f, 602.759094f, 387.967407f);
    pathB.cubicTo(602.120239f, 388.104187f, 599.957947f, 391.29071f, 597.965332f, 393.27829f);
    pathB.lineTo(597.965332f, 374.422668f);
    pathB.cubicTo(597.965332f, 373.461334f, 598.326721f, 372.440063f, 598.867798f, 371.567566f);
    pathB.cubicTo(596.701538f, 372.96817f, 595.616394f, 373.677948f, 593.447083f, 375.096527f);
    pathB.moveTo(718.054138f, 409.318756f);
    pathB.cubicTo(717.461182f, 408.789673f, 716.867188f, 408.178711f, 716.867188f, 407.218353f);
    pathB.lineTo(716.867188f, 387.053986f);
    pathB.cubicTo(716.867188f, 385.305969f, 717.323425f, 385.566528f, 718.328674f, 386.013763f);
    pathB.cubicTo(719.645386f, 386.859314f, 720.307251f, 387.284576f, 721.622009f, 388.135132f);
    pathB.cubicTo(722.266907f, 388.4935f, 722.903809f, 388.934753f, 722.903809f, 389.721405f);
    pathB.lineTo(722.903809f, 407.794373f);
    pathB.cubicTo(722.903809f, 408.66687f, 722.746094f, 410.490753f, 722.259888f, 410.758301f);
    pathB.cubicTo(722.125122f, 410.83017f, 721.950439f, 410.862122f, 721.746826f, 410.862122f);
    pathB.cubicTo(720.655701f, 410.864105f, 718.747925f, 409.936707f, 718.054138f, 409.318756f);
    pathB.moveTo(711.928711f, 364.782227f);
    pathB.cubicTo(711.195923f, 365.134613f, 710.648865f, 365.834412f, 710.648865f, 366.794769f);
    pathB.lineTo(710.648865f, 407.392059f);
    pathB.cubicTo(710.648865f, 409.397614f, 708.519531f, 411.37323f, 708.547485f, 411.684692f);
    pathB.cubicTo(708.550476f, 411.745605f, 711.838867f, 413.067322f, 713.849365f, 414.368073f);
    pathB.cubicTo(717.766663f, 416.906738f, 720.162537f, 415.845551f, 722.354797f, 414.073608f);
    pathB.cubicTo(724.059875f, 412.69397f, 726.55957f, 410.981903f, 730.675537f, 410.124359f);
    pathB.cubicTo(729.75708f, 409.143066f, 729.213013f, 407.993042f, 729.213013f, 406.683289f);
    pathB.cubicTo(729.213013f, 399.630402f, 729.209045f, 396.103455f, 729.209045f, 389.047546f);
    pathB.cubicTo(729.209045f, 387.648956f, 730.577698f, 385.292023f, 730.583679f, 385.149261f);
    pathB.cubicTo(730.583679f, 385.149261f, 720.888306f, 378.762207f, 719.609497f, 378.947906f);
    pathB.cubicTo(719.275085f, 378.996826f, 717.872498f, 381.118164f, 716.868225f, 381.896851f);
    pathB.lineTo(716.868225f, 365.046783f);
    pathB.cubicTo(716.868225f, 363.740021f, 716.960083f, 363.043213f, 717.597961f, 362);
    pathB.cubicTo(715.331848f, 363.104095f, 714.19873f, 363.657166f, 711.928711f, 364.782227f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpeverytechpro_blogspot_com100(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1074.29285f, 627.292786f);
    path.quadTo(1074.58582f, 627, 1075, 627);
    path.lineTo(1117, 627);
    path.quadTo(1124.04163f, 627, 1129.02246f, 631.9776f);
    path.quadTo(1134, 636.958374f, 1134, 644);
    path.lineTo(1134, 645);
    path.quadTo(1134, 652.041626f, 1129.02246f, 657.0224f);
    path.quadTo(1124.04163f, 662, 1117, 662);
    path.lineTo(1075, 662);
    path.quadTo(1074.58582f, 662, 1074.29285f, 661.707214f);
    path.quadTo(1074, 661.414185f, 1074, 661);
    path.lineTo(1074, 628);
    path.quadTo(1074, 627.585815f, 1074.29285f, 627.292786f);
    path.close();
    path.moveTo(1076, 629);
    path.lineTo(1117, 629);
    path.cubicTo(1125.2843f, 629, 1132, 635.715698f, 1132, 644);
    path.lineTo(1132, 645);
    path.cubicTo(1132, 653.284302f, 1125.2843f, 660, 1117, 660);
    path.lineTo(1076, 660);
    path.lineTo(1076, 629);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1074, 627);
    pathB.lineTo(1075, 628);
    pathB.lineTo(1116.5f, 644.5f);
    pathB.lineTo(1134, 627);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpflite_com41(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(301.464081f, 424);
    path.lineTo(296, 433.46405f);
    path.lineTo(296, 433.810822f);
    path.lineTo(303.25589f, 438);
    path.lineTo(304.729736f, 438);
    path.lineTo(311, 427.139557f);
    path.lineTo(311, 426.305237f);
    path.lineTo(307.007202f, 424);
    path.lineTo(301.464081f, 424);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(302.849854f, 421.599762f);
    pathB.lineTo(311.510101f, 426.599762f);
    pathB.lineTo(304.510101f, 438.724121f);
    pathB.lineTo(295.849854f, 433.724121f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpilkoora_com37(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(818, 157);
    path.cubicTo(818, 148.715729f, 824.715698f, 142, 833, 142);
    path.lineTo(909, 142);
    path.lineTo(909, 143);
    path.lineTo(833, 143);
    path.cubicTo(825.268005f, 143, 819, 149.268005f, 819, 157);
    path.lineTo(819, 926);
    path.lineTo(818, 926);
    path.lineTo(818, 157);
    path.close();
    path.moveTo(1184, 926);
    path.lineTo(1185, 926);
    path.lineTo(1185, 157);
    path.cubicTo(1185, 148.715729f, 1178.2843f, 142, 1170, 142);
    path.lineTo(1093, 142);
    path.lineTo(1093, 143);
    path.lineTo(1170, 143);
    path.cubicTo(1177.73193f, 143, 1184, 149.268005f, 1184, 157);
    path.lineTo(1184, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1185, 142);
    pathB.lineTo(1001.5f, 325.5f);
    pathB.lineTo(1001.5f, 782.5f);
    pathB.lineTo(1185, 966);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmm4everfriends_com43(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(540.74231f, 215.922546f);
    path.cubicTo(540.893127f, 215.391159f, 541.443909f, 215.090134f, 541.972473f, 215.250168f);
    path.lineTo(581.213318f, 227.131104f);
    path.cubicTo(581.741882f, 227.291153f, 582.048157f, 227.851654f, 581.897339f, 228.383041f);
    path.lineTo(576.708923f, 246.663925f);
    path.cubicTo(576.558167f, 247.195297f, 576.007324f, 247.496338f, 575.47876f, 247.336288f);
    path.lineTo(536.237915f, 235.455353f);
    path.cubicTo(535.709351f, 235.295319f, 535.403137f, 234.734802f, 535.553894f, 234.20343f);
    path.lineTo(540.74231f, 215.922546f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(541.015381f, 214.960388f);
    pathB.lineTo(582.17041f, 227.420883f);
    pathB.lineTo(576.435852f, 247.626068f);
    pathB.lineTo(535.280823f, 235.165573f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmtrk_uz27(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(33, 787);
    path.lineTo(33, 412);
    path.lineTo(1233, 412);
    path.lineTo(1233, 787);
    path.quadTo(1233, 793.213196f, 1228.60803f, 797.607971f);
    path.quadTo(1224.21326f, 802, 1218, 802);
    path.lineTo(48, 802);
    path.quadTo(41.7867966f, 802, 37.3919983f, 797.607971f);
    path.quadTo(33, 793.213196f, 33, 787);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(33, 412);
    pathB.lineTo(1233, 412);
    pathB.lineTo(1233, 787);
    pathB.quadTo(1233, 793.213196f, 1228.60791f, 797.608032f);
    pathB.quadTo(1224.21313f, 802, 1218, 802);
    pathB.lineTo(48, 802);
    pathB.quadTo(41.7867432f, 802, 37.3919678f, 797.608032f);
    pathB.quadTo(33, 793.213196f, 33, 787);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpfrauen_magazin_com83(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(808, 886);
    path.cubicTo(805.581055f, 886, 803.563293f, 887.717773f, 803.100037f, 890);
    path.lineTo(1122.90002f, 890);
    path.cubicTo(1122.43677f, 887.717773f, 1120.41895f, 886, 1118, 886);
    path.lineTo(808, 886);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(808, 886);
    pathB.lineTo(1118, 886);
    pathB.cubicTo(1120.76147f, 886, 1123, 888.238586f, 1123, 891);
    pathB.lineTo(1123, 1521);
    pathB.cubicTo(1123, 1523.20911f, 1120.76147f, 1525, 1118, 1525);
    pathB.lineTo(808, 1525);
    pathB.cubicTo(805.238586f, 1525, 803, 1523.20911f, 803, 1521);
    pathB.lineTo(803, 891);
    pathB.cubicTo(803, 888.238586f, 805.238586f, 886, 808, 886);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpi_gino_com16(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(184, 734);
    path.quadTo(133.051727f, 734, 97.0258636f, 770.025879f);
    path.quadTo(61, 806.051758f, 61, 857);
    path.quadTo(61, 895.835083f, 81.9317017f, 926);
    path.lineTo(286.068298f, 926);
    path.quadTo(307, 895.835083f, 307, 857);
    path.quadTo(307, 806.051758f, 270.974121f, 770.025879f);
    path.quadTo(234.948273f, 734, 184, 734);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(185, 734);
    pathB.cubicTo(252.93103f, 734, 308, 789.06897f, 308, 857);
    pathB.cubicTo(308, 924.93103f, 252.93103f, 980, 185, 980);
    pathB.lineTo(184, 980);
    pathB.cubicTo(116.068977f, 980, 61, 924.93103f, 61, 857);
    pathB.cubicTo(61, 789.06897f, 116.068977f, 734, 184, 734);
    pathB.lineTo(185, 734);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppchappy_com_au102(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(363, 493);
    path.cubicTo(360.790863f, 493, 359, 494.790863f, 359, 497);
    path.lineTo(359, 656);
    path.cubicTo(359, 658.209106f, 360.790863f, 660, 363, 660);
    path.lineTo(623.001709f, 660);
    path.cubicTo(624.657776f, 659.999023f, 626, 658.65625f, 626, 657);
    path.lineTo(626, 496);
    path.cubicTo(626, 494.343872f, 624.657959f, 493.00116f, 623.002075f, 493);
    path.lineTo(363, 493);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(362, 494);
    pathB.lineTo(623, 494);
    pathB.cubicTo(624.65686f, 494, 626, 494.895416f, 626, 496);
    pathB.lineTo(626, 657);
    pathB.cubicTo(626, 658.65686f, 624.65686f, 660, 623, 660);
    pathB.lineTo(362, 660);
    pathB.cubicTo(360.34314f, 660, 359, 658.65686f, 359, 657);
    pathB.lineTo(359, 496);
    pathB.cubicTo(359, 494.895416f, 360.34314f, 494, 362, 494);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsciality_com161(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(656, 728);
    path.cubicTo(653.790833f, 728, 652, 729.790833f, 652, 732);
    path.lineTo(652, 789);
    path.cubicTo(652, 791.209106f, 653.790833f, 793, 656, 793);
    path.lineTo(769.001282f, 793);
    path.cubicTo(770.657532f, 792.999268f, 772, 791.656433f, 772, 790);
    path.lineTo(772, 731);
    path.cubicTo(772, 729.34314f, 770.65686f, 728, 769, 728);
    path.lineTo(656, 728);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(655, 729);
    pathB.lineTo(769, 729);
    pathB.cubicTo(770.65686f, 729, 772, 729.895447f, 772, 731);
    pathB.lineTo(772, 790);
    pathB.cubicTo(772, 791.65686f, 770.65686f, 793, 769, 793);
    pathB.lineTo(655, 793);
    pathB.cubicTo(653.34314f, 793, 652, 791.65686f, 652, 790);
    pathB.lineTo(652, 731);
    pathB.cubicTo(652, 729.895447f, 653.34314f, 729, 655, 729);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsudoestenegocios_com186(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 495);
    path.lineTo(1.23685242e-14f, 293);
    path.lineTo(44, 293);
    path.quadTo(45.6568527f, 293, 46.8288002f, 294.171204f);
    path.quadTo(48, 295.34314f, 48, 297);
    path.lineTo(48, 491);
    path.quadTo(48, 492.65686f, 46.8288002f, 493.828796f);
    path.quadTo(45.6568527f, 495, 44, 495);
    path.lineTo(0, 495);
    path.close();
    path.moveTo(1, 294);
    path.lineTo(44, 294);
    path.cubicTo(45.6568565f, 294, 47, 295.34314f, 47, 297);
    path.lineTo(47, 491);
    path.cubicTo(47, 492.65686f, 45.6568565f, 494, 44, 494);
    path.lineTo(1, 494);
    path.lineTo(1, 294);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(48, 495);
    pathB.lineTo(24, 471);
    pathB.lineTo(24, 317);
    pathB.lineTo(48, 293);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpthesuburbanite_com213(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(863.439026f, 692);
    path.lineTo(863.283264f, 692);
    path.lineTo(802, 708.420837f);
    path.lineTo(802, 718.773621f);
    path.lineTo(866, 701.624817f);
    path.lineTo(866, 701.557922f);
    path.lineTo(863.439026f, 692);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(783.256775f, 713.443054f);
    pathB.lineTo(863.428589f, 691.96106f);
    pathB.lineTo(866.016724f, 701.620361f);
    pathB.lineTo(785.84491f, 723.102356f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skphostloco_com11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(6.66133815e-16f, 648);
    path.lineTo(25.8522835f, 648);
    path.quadTo(27.5087376f, 647.999634f, 28.6807098f, 646.82843f);
    path.quadTo(29.8518829f, 645.656433f, 29.8522835f, 644);
    path.lineTo(29.8522835f, 467);
    path.quadTo(29.8518829f, 465.343536f, 28.6807098f, 464.17157f);
    path.quadTo(27.5087376f, 463.000397f, 25.8522835f, 463);
    path.lineTo(2.22044605e-16f, 463);
    path.lineTo(6.66133815e-16f, 648);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(0, 463);
    pathB.lineTo(30, 463);
    pathB.lineTo(30, 648);
    pathB.lineTo(0, 648);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsergeychunkevich_com8(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 926);
    path.lineTo(0, 0);
    path.lineTo(1265, 0);
    path.lineTo(1265, 926);
    path.lineTo(0, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(37, 374);
    pathB.lineTo(37, 535);
    pathB.cubicTo(37, 536.65686f, 35.6568565f, 538, 34, 538);
    pathB.lineTo(1.02866934e-14f, 538);
    pathB.lineTo(6.12303177e-17f, 371);
    pathB.lineTo(34, 371);
    pathB.cubicTo(35.6568565f, 371, 37, 372.34314f, 37, 374);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skptracksflow_com9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(16, 56);
    path.lineTo(32, 56);
    path.lineTo(32, 72);
    path.lineTo(16, 72);
    path.lineTo(16, 56);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(31.65625f, 70.0555649f);
    pathB.lineTo(31.65625f, 70.0554962f);
    pathB.lineTo(26.9727192f, 65.3615341f);
    pathB.cubicTo(27.6210003f, 64.4029694f, 28.0048752f, 63.2470932f, 28.0048752f, 62.0027809f);
    pathB.cubicTo(28.0048752f, 58.6875305f, 25.3199062f, 56, 22.0046558f, 56);
    pathB.cubicTo(18.6894073f, 56, 16.0031872f, 58.6875305f, 16.0031872f, 62.0027809f);
    pathB.cubicTo(16.0031872f, 65.3180008f, 18.6913433f, 68.0055618f, 22.0066261f, 68.0055618f);
    pathB.cubicTo(23.2509995f, 68.0055618f, 24.4072189f, 67.6187515f, 25.3657818f, 66.9704056f);
    pathB.lineTo(30.0599365f, 71.65625f);
    pathB.lineTo(30.0600014f, 71.65625f);
    pathB.cubicTo(30.2668133f, 71.875f, 30.5524693f, 71.9992828f, 30.868f, 71.9992828f);
    pathB.cubicTo(31.4994049f, 71.9992828f, 32.0014687f, 71.4909363f, 32.0014687f, 70.8595276f);
    pathB.cubicTo(32.0015335f, 70.5439072f, 31.875f, 70.2623444f, 31.65625f, 70.0555649f);
    pathB.close();
    pathB.moveTo(18.0054054f, 62.0027809f);
    pathB.cubicTo(18.0054054f, 59.7925949f, 19.7970943f, 58.0009079f, 22.0072823f, 58.0009079f);
    pathB.cubicTo(24.2174377f, 58.0009079f, 26.0091248f, 59.7925949f, 26.0091248f, 62.0027809f);
    pathB.cubicTo(26.0091248f, 64.2129364f, 24.2174377f, 66.0046234f, 22.0072803f, 66.0046234f);
    pathB.cubicTo(19.7970943f, 66.0045929f, 18.0054054f, 64.2129059f, 18.0054054f, 62.0027809f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpautobutler_dk29(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 926);
    path.lineTo(0, 0);
    path.lineTo(1265, 0);
    path.lineTo(1265, 926);
    path.lineTo(0, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(21, 162);
    pathB.lineTo(21, 301);
    pathB.lineTo(8.57224448e-15f, 301);
    pathB.lineTo(6.12303177e-17f, 162);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skponlinecollege_org144(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(179, 407);
    path.cubicTo(177.34314f, 407, 176, 408.34314f, 176, 410);
    path.lineTo(176, 436);
    path.cubicTo(176, 437.65686f, 177.34314f, 439, 179, 439);
    path.lineTo(337.002289f, 439);
    path.cubicTo(338.105835f, 438.998779f, 339, 438.103821f, 339, 437);
    path.lineTo(339, 409);
    path.cubicTo(339, 407.896362f, 338.10611f, 407.001526f, 337.002838f, 407);
    path.lineTo(179, 407);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(179, 408);
    pathB.lineTo(337, 408);
    pathB.cubicTo(338.65686f, 408, 340, 408.895416f, 340, 410);
    pathB.lineTo(340, 436);
    pathB.cubicTo(340, 437.65686f, 338.65686f, 439, 337, 439);
    pathB.lineTo(179, 439);
    pathB.cubicTo(177.895432f, 439, 177, 437.65686f, 177, 436);
    pathB.lineTo(177, 410);
    pathB.cubicTo(177, 408.895416f, 177.895432f, 408, 179, 408);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnational_com_au81(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(807, 817);
    path.quadTo(806.585876f, 817.000122f, 806.292908f, 817.292908f);
    path.quadTo(806.000122f, 817.585876f, 806, 818);
    path.lineTo(806, 881);
    path.lineTo(1111, 881);
    path.lineTo(1111, 818);
    path.quadTo(1110.99988f, 817.585876f, 1110.70715f, 817.292908f);
    path.quadTo(1110.41406f, 817.000122f, 1110, 817);
    path.lineTo(807, 817);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(807, 817);
    pathB.lineTo(1110, 817);
    pathB.cubicTo(1110.55225f, 817, 1111, 817.447693f, 1111, 818);
    pathB.lineTo(1111, 880);
    pathB.lineTo(806, 880);
    pathB.lineTo(806, 818);
    pathB.cubicTo(806, 817.447693f, 806.447693f, 817, 807, 817);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skprentacheat_com30(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(967, 263);
    path.quadTo(966.585876f, 263.000092f, 966.292908f, 263.292908f);
    path.quadTo(966.000122f, 263.585876f, 966, 264);
    path.lineTo(966, 301);
    path.lineTo(1214, 301);
    path.lineTo(1214, 264);
    path.quadTo(1213.99988f, 263.585876f, 1213.70715f, 263.292908f);
    path.quadTo(1213.41406f, 263.000092f, 1213, 263);
    path.lineTo(967, 263);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(967, 263);
    pathB.lineTo(1213, 263);
    pathB.cubicTo(1213.55225f, 263, 1214, 263.447723f, 1214, 264);
    pathB.lineTo(1214, 300);
    pathB.lineTo(966, 300);
    pathB.lineTo(966, 264);
    pathB.cubicTo(966, 263.447723f, 966.447693f, 263, 967, 263);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpbreakmystyle_com10(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(271.032867f, -5.32907052e-15f);
    path.lineTo(56.9671326f, -5.16253706e-15f);
    path.quadTo(52.7835083f, 3.69968891f, 48.7416f, 7.74160004f);
    path.quadTo(1, 55.4831848f, 1, 123);
    path.quadTo(1, 190.516815f, 48.7416f, 238.258392f);
    path.quadTo(96.4831848f, 286, 164, 286);
    path.quadTo(231.516815f, 286, 279.258392f, 238.258392f);
    path.quadTo(327, 190.516815f, 327, 123);
    path.quadTo(327, 55.4831848f, 279.258392f, 7.74160004f);
    path.quadTo(275.216431f, 3.69964004f, 271.032867f, -5.32907052e-15f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(327, 123);
    pathB.quadTo(327, 190.516815f, 279.258392f, 238.258392f);
    pathB.quadTo(231.516815f, 286, 164, 286);
    pathB.quadTo(96.4831848f, 286, 48.7416f, 238.258392f);
    pathB.quadTo(1, 190.516815f, 1, 123);
    pathB.quadTo(1, 55.4831848f, 48.7416f, 7.74160004f);
    pathB.quadTo(96.4831848f, -40, 164, -40);
    pathB.quadTo(231.516815f, -40, 279.258392f, 7.74160004f);
    pathB.quadTo(327, 55.4831848f, 327, 123);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsd_graphic_net104(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(475.421448f, 836.985962f);
    path.lineTo(461.280975f, 841.990662f);
    path.cubicTo(466.80899f, 857.609802f, 458.62854f, 874.752991f, 443.009399f, 880.281006f);
    path.cubicTo(435.199829f, 883.044983f, 427.009247f, 882.381897f, 420.080048f, 879.075378f);
    path.lineTo(413.620056f, 892.613037f);
    path.quadTo(430.419983f, 900.629761f, 447.96701f, 894.43811f);
    path.quadTo(448.00708f, 894.42395f, 448.014038f, 894.421509f);
    path.quadTo(448.043976f, 894.410889f, 448.061066f, 894.404846f);
    path.quadTo(465.596313f, 888.179932f, 473.613037f, 871.379944f);
    path.quadTo(477.351227f, 863.546143f, 478, 855.549866f);
    path.lineTo(478, 848.804321f);
    path.quadTo(477.528076f, 842.93811f, 475.421448f, 836.985962f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(405.592621f, 909.435547f);
    pathB.lineTo(390.578583f, 867.014099f);
    pathB.lineTo(433, 852.000061f);
    pathB.lineTo(490.435486f, 879.40741f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnaoxrane_ru23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(458.703552f, 275.050262f);
    path.quadTo(487.41687f, 273.000702f, 528, 273);
    path.lineTo(529, 273);
    path.quadTo(530.242371f, 273.000305f, 531.121338f, 273.878693f);
    path.quadTo(531.999695f, 274.75766f, 532, 276);
    path.lineTo(532, 378);
    path.quadTo(531.990173f, 380.898804f, 503.296448f, 382.949738f);
    path.quadTo(474.58313f, 384.999298f, 434, 385);
    path.lineTo(433, 385);
    path.quadTo(431.75766f, 384.999695f, 430.878693f, 384.121307f);
    path.quadTo(430.000305f, 383.24234f, 430, 382);
    path.lineTo(430, 280);
    path.quadTo(430.009796f, 277.101196f, 458.703552f, 275.050262f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(528, 278);
    pathB.lineTo(529, 278);
    pathB.cubicTo(530.65686f, 278, 532, 278, 532, 278);
    pathB.lineTo(532, 378);
    pathB.cubicTo(532, 379.104584f, 488.123932f, 380, 434, 380);
    pathB.lineTo(433, 380);
    pathB.cubicTo(431.34314f, 380, 430, 380, 430, 380);
    pathB.lineTo(430, 280);
    pathB.cubicTo(430, 278.895416f, 473.876068f, 278, 528, 278);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skptcmevents_org23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(465.503998f, 546);
    path.lineTo(347, 546);
    path.lineTo(347, 632);
    path.lineTo(469.104248f, 632);
    path.quadTo(470.79007f, 627.638672f, 471.833496f, 621.036255f);
    path.quadTo(474.902588f, 601.562866f, 470.591064f, 574.024353f);
    path.lineTo(468.507751f, 560.724426f);
    path.quadTo(467.275146f, 552.856262f, 465.84668f, 547.288391f);
    path.quadTo(465.670349f, 546.601501f, 465.503998f, 546);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(363.052246f, 542.495361f);
    pathB.lineTo(463.779907f, 542.671143f);
    pathB.cubicTo(464.829529f, 542.672974f, 466.946289f, 550.755676f, 468.507751f, 560.724426f);
    pathB.lineTo(470.591064f, 574.024353f);
    pathB.cubicTo(476.26178f, 610.226624f, 471.498932f, 639.557922f, 459.953003f, 639.537781f);
    pathB.lineTo(368.727936f, 639.378601f);
    pathB.cubicTo(351.933868f, 639.349304f, 337.053741f, 631.244324f, 335.492249f, 621.275574f);
    pathB.lineTo(325.968597f, 560.475708f);
    pathB.cubicTo(324.407104f, 550.506958f, 341.01001f, 542.456909f, 363.052246f, 542.495361f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpredbullskatearcade_es16(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(936.765625f, 458.965302f);
    path.cubicTo(937.028442f, 453.863251f, 933.145813f, 449.864502f, 928.093445f, 450.033905f);
    path.lineTo(661.882263f, 458.958862f);
    path.lineTo(661.875366f, 458.959106f);
    path.cubicTo(656.828369f, 459.13205f, 652.525085f, 463.399719f, 652.258545f, 468.496124f);
    path.lineTo(652.258179f, 468.503662f);
    path.lineTo(649.021729f, 531.322754f);
    path.cubicTo(648.75885f, 536.424805f, 652.641479f, 540.423523f, 657.693848f, 540.25415f);
    path.lineTo(923.905029f, 531.329163f);
    path.cubicTo(928.955017f, 531.159851f, 933.262268f, 526.890442f, 933.528809f, 521.791565f);
    path.lineTo(933.529175f, 521.784363f);
    path.lineTo(936.765625f, 458.965302f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(661.882263f, 458.958862f);
    pathB.lineTo(928.093445f, 450.033905f);
    pathB.cubicTo(929.103882f, 450, 929.709961f, 454.108612f, 929.447144f, 459.210663f);
    pathB.lineTo(926.210693f, 522.029724f);
    pathB.cubicTo(926.079224f, 524.58075f, 925.153442f, 526.676208f, 924.143066f, 526.710083f);
    pathB.lineTo(657.931885f, 535.635071f);
    pathB.cubicTo(652.879456f, 535.804443f, 648.890259f, 533.873779f, 649.021729f, 531.322754f);
    pathB.lineTo(652.258179f, 468.503662f);
    pathB.cubicTo(652.520996f, 463.401611f, 656.829834f, 459.128235f, 661.882263f, 458.958862f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpfinanzasdigital_com9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(156, 126);
    path.quadTo(154.343552f, 126.000397f, 153.17157f, 127.17157f);
    path.quadTo(152.000397f, 128.343552f, 152, 130);
    path.lineTo(152, 174);
    path.lineTo(1114, 174);
    path.lineTo(1114, 130);
    path.quadTo(1113.99963f, 128.343552f, 1112.82837f, 127.17157f);
    path.quadTo(1111.65649f, 126.000397f, 1110, 126);
    path.lineTo(156, 126);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(156, 126);
    pathB.lineTo(1110, 126);
    pathB.cubicTo(1111.65686f, 126, 1113, 127.790863f, 1113, 130);
    pathB.lineTo(1113, 174);
    pathB.lineTo(153, 174);
    pathB.lineTo(153, 130);
    pathB.cubicTo(153, 127.790863f, 154.34314f, 126, 156, 126);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppartainasdemo250_org56(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(182.000015f, 645);
    path.lineTo(182, 640);
    path.cubicTo(174.322327f, 640, 166.644669f, 637.071045f, 160.786804f, 631.213196f);
    path.cubicTo(149.071075f, 619.497437f, 149.071075f, 600.502563f, 160.786804f, 588.786804f);
    path.lineTo(157.251266f, 585.251221f);
    path.quadTo(147, 595.502502f, 147.000015f, 610);
    path.quadTo(147, 624.482605f, 157.230255f, 634.727722f);
    path.quadTo(157.251251f, 634.748779f, 157.251282f, 634.748779f);
    path.quadTo(157.282852f, 634.780334f, 157.272263f, 634.769775f);
    path.quadTo(167.517334f, 645, 182.000015f, 645);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(182, 659.497498f);
    pathB.lineTo(206.748749f, 634.748718f);
    pathB.lineTo(182.000015f, 610);
    pathB.lineTo(132.502533f, 610);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmlk_com326(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(154, 670);
    path.cubicTo(151.238571f, 670, 149, 672.238586f, 149, 675);
    path.lineTo(149, 710.001465f);
    path.cubicTo(149.000809f, 712.209961f, 150.791367f, 714, 153, 714);
    path.lineTo(189, 714);
    path.cubicTo(191.209137f, 714, 193, 712.209167f, 193, 710);
    path.lineTo(193, 675);
    path.cubicTo(193, 672.238586f, 190.761429f, 670, 188, 670);
    path.lineTo(154, 670);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(154, 671);
    pathB.lineTo(188, 671);
    pathB.cubicTo(190.761429f, 671, 193, 672.790833f, 193, 675);
    pathB.lineTo(193, 710);
    pathB.cubicTo(193, 712.761414f, 190.761429f, 715, 188, 715);
    pathB.lineTo(154, 715);
    pathB.cubicTo(151.238571f, 715, 149, 712.761414f, 149, 710);
    pathB.lineTo(149, 675);
    pathB.cubicTo(149, 672.790833f, 151.238571f, 671, 154, 671);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpcyclist_friends_gr52(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(50, 182);
    path.lineTo(1215, 182);
    path.lineTo(1215, 202);
    path.quadTo(1214.99951f, 204.070572f, 1213.53552f, 205.535538f);
    path.quadTo(1212.07056f, 206.999496f, 1210, 207);
    path.lineTo(55, 207);
    path.quadTo(52.9294319f, 206.999496f, 51.4644661f, 205.535538f);
    path.quadTo(50.0004997f, 204.070572f, 50, 202);
    path.lineTo(50, 182);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(50, 183);
    pathB.lineTo(1215, 183);
    pathB.lineTo(1215, 202);
    pathB.cubicTo(1215, 204.761429f, 1212.76147f, 207, 1210, 207);
    pathB.lineTo(55, 207);
    pathB.cubicTo(52.238575f, 207, 50, 204.761429f, 50, 202);
    pathB.lineTo(50, 183);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_fj_p_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(172, 201);
    path.lineTo(172, 202);
    path.lineTo(220, 202);
    path.cubicTo(221.65686f, 202, 223, 200.65686f, 223, 199);
    path.cubicTo(223, 200.104568f, 221.65686f, 201, 220, 201);
    path.lineTo(172, 201);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(161, 202);
    pathB.lineTo(161, 199);
    pathB.lineTo(223, 199.000015f);
    pathB.lineTo(223, 202);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lavoixdunord_fr_11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(806, 57);
    path.cubicTo(806, 55.3431473f, 807.34314f, 54, 809, 54);
    path.lineTo(930, 54);
    path.cubicTo(931.65686f, 54, 933, 55.3431473f, 933, 57);
    path.lineTo(933, 91);
    path.cubicTo(933, 92.6568527f, 931.65686f, 94, 930, 94);
    path.lineTo(809, 94);
    path.cubicTo(807.34314f, 94, 806, 92.6568527f, 806, 91);
    path.lineTo(806, 57);
    path.close();
    path.moveTo(808, 58);
    path.cubicTo(808, 56.8954315f, 808.895447f, 56, 810, 56);
    path.lineTo(929, 56);
    path.cubicTo(930.104553f, 56, 931, 56.8954315f, 931, 58);
    path.lineTo(931, 90);
    path.cubicTo(931, 91.1045685f, 930.104553f, 92, 929, 92);
    path.lineTo(810, 92);
    path.cubicTo(808.895447f, 92, 808, 91.1045685f, 808, 90);
    path.lineTo(808, 58);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(806, 54);
    pathB.lineTo(808, 56);
    pathB.lineTo(935.02002f, 56.0200005f);
    pathB.lineTo(933, 54);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppptv_com_62(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(173, 5342);
    path.quadTo(171.343536f, 5342.00049f, 170.17157f, 5343.17139f);
    path.quadTo(169.000397f, 5344.34375f, 169, 5346);
    path.lineTo(169, 5372);
    path.lineTo(234, 5372);
    path.lineTo(234, 5346);
    path.quadTo(233.999603f, 5344.34375f, 232.82843f, 5343.17139f);
    path.quadTo(231.656464f, 5342.00049f, 230, 5342);
    path.lineTo(173, 5342);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(173, 5342);
    pathB.lineTo(230, 5342);
    pathB.cubicTo(231.65686f, 5342, 233, 5343.79102f, 233, 5346);
    pathB.lineTo(233, 5372);
    pathB.lineTo(169, 5372);
    pathB.lineTo(169, 5346);
    pathB.cubicTo(169, 5343.79102f, 170.790863f, 5342, 173, 5342);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_booking_com_68(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90, 187);
    path.cubicTo(90, 185.34314f, 91.3431473f, 184, 93, 184);
    path.lineTo(588, 184);
    path.cubicTo(589.65686f, 184, 591, 185.34314f, 591, 187);
    path.lineTo(591, 218);
    path.cubicTo(591, 219.65686f, 589.65686f, 221, 588, 221);
    path.lineTo(93, 221);
    path.cubicTo(91.3431473f, 221, 90, 219.65686f, 90, 218);
    path.lineTo(90, 187);
    path.close();
    path.moveTo(92, 188);
    path.cubicTo(92, 186.895432f, 92.8954315f, 186, 94, 186);
    path.lineTo(587, 186);
    path.cubicTo(588.104553f, 186, 589, 186.895432f, 589, 188);
    path.lineTo(589, 217);
    path.cubicTo(589, 218.104568f, 588.104553f, 219, 587, 219);
    path.lineTo(94, 219);
    path.cubicTo(92.8954315f, 219, 92, 218.104568f, 92, 217);
    path.lineTo(92, 188);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 184);
    pathB.lineTo(92, 186);
    pathB.lineTo(593.02002f, 186.020004f);
    pathB.lineTo(591, 184);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_despegar_com_mx_272(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(635, 1788);
    path.cubicTo(635, 1786.34314f, 636.34314f, 1785, 638, 1785);
    path.lineTo(832, 1785);
    path.cubicTo(833.65686f, 1785, 835, 1786.34314f, 835, 1788);
    path.lineTo(835, 1812);
    path.cubicTo(835, 1813.65686f, 833.65686f, 1815, 832, 1815);
    path.lineTo(638, 1815);
    path.cubicTo(636.34314f, 1815, 635, 1813.65686f, 635, 1812);
    path.lineTo(635, 1788);
    path.close();
    path.moveTo(637, 1789);
    path.cubicTo(637, 1787.89539f, 637.895447f, 1787, 639, 1787);
    path.lineTo(831, 1787);
    path.cubicTo(832.104553f, 1787, 833, 1787.89539f, 833, 1789);
    path.lineTo(833, 1811);
    path.cubicTo(833, 1812.10461f, 832.104553f, 1813, 831, 1813);
    path.lineTo(639, 1813);
    path.cubicTo(637.895447f, 1813, 637, 1812.10461f, 637, 1811);
    path.lineTo(637, 1789);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(835, 1785);
    pathB.lineTo(833, 1787);
    pathB.lineTo(832.97998f, 1817.02002f);
    pathB.lineTo(835, 1815);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_joomla_org_23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(320, 347);
    path.cubicTo(320, 344.238586f, 322.238586f, 342, 325, 342);
    path.lineTo(416, 342);
    path.cubicTo(418.761414f, 342, 421, 344.238586f, 421, 347);
    path.cubicTo(421, 344.790863f, 418.761414f, 343, 416, 343);
    path.lineTo(325, 343);
    path.cubicTo(322.238586f, 343, 320, 344.790863f, 320, 347);
    path.close();
    path.moveTo(320, 378);
    path.cubicTo(320, 380.761414f, 322.238586f, 383, 325, 383);
    path.lineTo(416, 383);
    path.cubicTo(418.761414f, 383, 421, 380.761414f, 421, 378);
    path.cubicTo(421, 380.209137f, 418.761414f, 382, 416, 382);
    path.lineTo(325, 382);
    path.cubicTo(322.238586f, 382, 320, 380.209137f, 320, 378);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(320, 383);
    pathB.lineTo(320, 378);
    pathB.lineTo(421, 378.000031f);
    pathB.lineTo(421, 383);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_macrumors_com_131(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(136, 14089);
    path.lineTo(136, 14056);
    path.lineTo(778, 14056);
    path.lineTo(778, 14089);
    path.quadTo(777.999573f, 14090.6562f, 776.82843f, 14091.8281f);
    path.quadTo(775.656433f, 14093, 774, 14093);
    path.lineTo(140, 14093);
    path.quadTo(138.343552f, 14093, 137.17157f, 14091.8281f);
    path.quadTo(136.000397f, 14090.6562f, 136, 14089);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(136, 14057);
    pathB.lineTo(778, 14057);
    pathB.lineTo(778, 14089);
    pathB.cubicTo(778, 14091.209f, 776.209167f, 14093, 774, 14093);
    pathB.lineTo(140, 14093);
    pathB.cubicTo(137.790863f, 14093, 136, 14091.209f, 136, 14089);
    pathB.lineTo(136, 14057);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_leadpages_net_84(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(377.1716f, 5910.17139f);
    path.cubicTo(376.447723f, 5910.89551f, 376, 5911.89551f, 376, 5913);
    path.lineTo(376, 5972);
    path.cubicTo(376, 5974.20898f, 377.790863f, 5976, 380, 5976);
    path.cubicTo(378.34314f, 5976, 377, 5974.20898f, 377, 5972);
    path.lineTo(377, 5913);
    path.cubicTo(377, 5912.17139f, 377.335785f, 5911.42188f, 377.878693f, 5910.87891f);
    path.lineTo(377.1716f, 5910.17139f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(376, 5909);
    pathB.lineTo(378.481873f, 5909);
    pathB.lineTo(379.999878f, 5976);
    pathB.lineTo(376, 5976);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_briian_com_34(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(843, 216);
    path.cubicTo(843, 213.238571f, 845.238586f, 211, 848, 211);
    path.lineTo(1191, 211);
    path.cubicTo(1193.76147f, 211, 1196, 213.238571f, 1196, 216);
    path.lineTo(1196, 779);
    path.cubicTo(1196, 781.761414f, 1193.76147f, 784, 1191, 784);
    path.lineTo(848, 784);
    path.cubicTo(845.238586f, 784, 843, 781.761414f, 843, 779);
    path.lineTo(843, 216);
    path.close();
    path.moveTo(844, 217);
    path.cubicTo(844, 214.238571f, 846.238586f, 212, 849, 212);
    path.lineTo(1190, 212);
    path.cubicTo(1192.76147f, 212, 1195, 214.238571f, 1195, 217);
    path.lineTo(1195, 778);
    path.cubicTo(1195, 779.65686f, 1192.76147f, 781, 1190, 781);
    path.lineTo(849, 781);
    path.cubicTo(846.238586f, 781, 844, 779.65686f, 844, 778);
    path.lineTo(844, 217);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(843, 784);
    pathB.lineTo(843, 779);
    pathB.lineTo(1196, 779.000061f);
    pathB.lineTo(1196, 784);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_sciality_com_100(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(162, 468);
    path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
    path.lineTo(158, 528);
    path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
    path.lineTo(275, 532);
    path.cubicTo(277.209137f, 532, 279, 530.209106f, 279, 528);
    path.lineTo(279, 472);
    path.cubicTo(279, 469.790863f, 277.209137f, 468, 275, 468);
    path.lineTo(162, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(275, 468);
    pathB.cubicTo(276.65686f, 468, 278, 469.34314f, 278, 471);
    pathB.lineTo(278, 529);
    pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
    pathB.lineTo(161, 532);
    pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
    pathB.lineTo(158, 471);
    pathB.cubicTo(158, 469.34314f, 159.34314f, 468, 161, 468);
    pathB.lineTo(275, 468);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_sciality_com_101(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(162, 468);
    path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
    path.lineTo(158, 528);
    path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
    path.lineTo(275.009186f, 532);
    path.cubicTo(276.661774f, 531.994995f, 278, 530.653748f, 278, 529);
    path.lineTo(278, 471);
    path.cubicTo(278, 469.346375f, 276.662079f, 468.005249f, 275.009705f, 468);
    path.lineTo(162, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(161, 469);
    pathB.lineTo(275, 469);
    pathB.cubicTo(276.65686f, 469, 278, 469.895416f, 278, 471);
    pathB.lineTo(278, 529);
    pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
    pathB.lineTo(161, 532);
    pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
    pathB.lineTo(158, 471);
    pathB.cubicTo(158, 469.895416f, 159.34314f, 469, 161, 469);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_meb_gov_tr_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(137.34314f, 145.34314f);
    path.quadTo(139.687088f, 143.000793f, 143, 143);
    path.lineTo(242, 143);
    path.quadTo(245.312912f, 143.000793f, 247.65686f, 145.34314f);
    path.quadTo(249.999207f, 147.687088f, 250, 151);
    path.lineTo(250, 177);
    path.lineTo(135, 177);
    path.lineTo(135, 151);
    path.quadTo(135.000793f, 147.687088f, 137.34314f, 145.34314f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(135, 143);
    pathB.lineTo(250, 143);
    pathB.lineTo(250, 177);
    pathB.lineTo(135, 177);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_meb_gov_tr_6(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 143);
    path.quadTo(139.687088f, 143.000793f, 137.34314f, 145.34314f);
    path.quadTo(135.000793f, 147.687088f, 135, 151);
    path.lineTo(135, 177);
    path.lineTo(250, 177);
    path.lineTo(250, 151);
    path.quadTo(249.999207f, 147.687088f, 247.65686f, 145.34314f);
    path.quadTo(245.312912f, 143.000793f, 242, 143);
    path.lineTo(143, 143);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(143, 143);
    pathB.lineTo(242, 143);
    pathB.cubicTo(245.865997f, 143, 249, 146.581726f, 249, 151);
    pathB.lineTo(249, 177);
    pathB.lineTo(135, 177);
    pathB.lineTo(135, 151);
    pathB.cubicTo(135, 146.581726f, 138.581726f, 143, 143, 143);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpgithub_io_25(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1001.87866f, 14.8786793f);
    path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
    path.lineTo(1105, 14);
    path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
    path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
    path.lineTo(1108, 41);
    path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
    path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
    path.lineTo(1004, 44);
    path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
    path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
    path.lineTo(1001, 17);
    path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(1005, 16);
    pathB.lineTo(1104, 16);
    pathB.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
    pathB.lineTo(1106, 40);
    pathB.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
    pathB.lineTo(1005, 42);
    pathB.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
    pathB.lineTo(1003, 18);
    pathB.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpgithub_io_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1001.87866f, 14.8786793f);
    path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
    path.lineTo(1105, 14);
    path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
    path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
    path.lineTo(1108, 41);
    path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
    path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
    path.lineTo(1004, 44);
    path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
    path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
    path.lineTo(1001, 17);
    path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
    path.close();
    path.moveTo(1003, 18);
    path.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
    path.lineTo(1104, 16);
    path.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
    path.lineTo(1106, 40);
    path.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
    path.lineTo(1005, 42);
    path.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
    path.lineTo(1003, 18);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1108, 14);
    pathB.lineTo(1106, 16);
    pathB.lineTo(1105.97998f, 46.0200005f);
    pathB.lineTo(1108, 44);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpskpicture14(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 994);
    path.lineTo(0, 0);
    path.lineTo(512, 0);
    path.lineTo(512, 994);
    path.lineTo(0, 994);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(-317, 168);
    pathB.quadTo(-317, 166.757385f, -316.121338f, 165.878662f);
    pathB.quadTo(-315.242645f, 165, -314, 165);
    pathB.lineTo(320, 165);
    pathB.quadTo(321.242615f, 165, 322.121338f, 165.878662f);
    pathB.quadTo(323, 166.757385f, 323, 168);
    pathB.lineTo(323, 193);
    pathB.lineTo(-317, 193);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpskpicture15(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 193);
    path.lineTo(323, 193);
    path.lineTo(323, 168);
    path.quadTo(323, 166.757385f, 322.121338f, 165.878662f);
    path.quadTo(321.242615f, 165, 320, 165);
    path.lineTo(0, 165);
    path.lineTo(0, 193);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(-314, 165);
    pathB.lineTo(320, 165);
    pathB.cubicTo(321.65686f, 165, 323, 166.34314f, 323, 168);
    pathB.lineTo(323, 192);
    pathB.lineTo(-317, 192);
    pathB.lineTo(-317, 168);
    pathB.cubicTo(-317, 166.34314f, -315.65686f, 165, -314, 165);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpelpais_com_18(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(183, 8507);
    path.lineTo(552, 8506.99023f);
    path.lineTo(552, 8508);
    path.lineTo(183, 8508);
    path.lineTo(183, 8507);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(183, 8508);
    pathB.lineTo(183, 8506.99023f);
    pathB.lineTo(552, 8507);
    pathB.lineTo(552, 8508);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnamecheap_com_405(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(140, 1000);
    path.lineTo(140, 842);
    path.lineTo(141, 842);
    path.lineTo(141.14502f, 1000);
    path.lineTo(140, 1000);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(140, 842);
    pathB.lineTo(141.008835f, 837.9646f);
    pathB.lineTo(141.235291f, 1109.05884f);
    pathB.lineTo(140, 1114);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alrakoba_net_62(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(134.34314f, 9802.34277f);
    path.quadTo(132, 9804.68652f, 132, 9808);
    path.lineTo(132, 9822);
    path.quadTo(132, 9825.31348f, 134.34314f, 9827.65723f);
    path.quadTo(136.686295f, 9830, 140, 9830);
    path.lineTo(140.028473f, 9830);
    path.lineTo(139.877213f, 9828.90723f);
    path.quadTo(137.692032f, 9828.5332f, 136.050247f, 9826.65723f);
    path.quadTo(134, 9824.31348f, 134, 9821);
    path.lineTo(134, 9809);
    path.quadTo(134, 9806.10059f, 136.050247f, 9804.0498f);
    path.lineTo(134.34314f, 9802.34277f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(132, 9800);
    pathB.lineTo(135.962357f, 9800);
    pathB.lineTo(140, 9830);
    pathB.lineTo(132, 9830);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cityads_ru_249(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(817.464478f, 11.4644661f);
    path.quadTo(818.928955f, 10, 821, 10);
    path.lineTo(998, 10);
    path.quadTo(999.082947f, 10, 1000, 10.4003992f);
    path.lineTo(1000, 13.3527431f);
    path.quadTo(999.917603f, 13.2607508f, 999.82843f, 13.1715727f);
    path.quadTo(998.65686f, 12, 997, 12);
    path.lineTo(822, 12);
    path.quadTo(820.34314f, 12, 819.17157f, 13.1715727f);
    path.quadTo(818, 14.3431454f, 818, 16);
    path.lineTo(818, 28);
    path.quadTo(818, 29.6568546f, 819.17157f, 30.8284264f);
    path.quadTo(820.34314f, 32, 822, 32);
    path.lineTo(997, 32);
    path.quadTo(998.65686f, 32, 999.82843f, 30.8284264f);
    path.quadTo(999.917603f, 30.7392426f, 1000, 30.6472569f);
    path.lineTo(1000, 33.5996017f);
    path.quadTo(999.082947f, 34, 998, 34);
    path.lineTo(821, 34);
    path.quadTo(818.928955f, 34, 817.464478f, 32.5355339f);
    path.quadTo(816, 31.0710678f, 816, 29);
    path.lineTo(816, 15);
    path.quadTo(816, 12.9289322f, 817.464478f, 11.4644661f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1003, 10);
    pathB.lineTo(1000, 13);
    pathB.lineTo(999.969971f, 37.0299988f);
    pathB.lineTo(1003, 34);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_dealnews_com_315(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(966.464478f, 4261.46436f);
    path.quadTo(965, 4262.92871f, 965, 4265);
    path.lineTo(965, 4276);
    path.quadTo(965, 4278.07129f, 966.464478f, 4279.53564f);
    path.quadTo(967.928955f, 4281, 970, 4281);
    path.lineTo(970.020325f, 4281);
    path.lineTo(969.887512f, 4279.81641f);
    path.quadTo(968.928284f, 4279.48145f, 968.17157f, 4278.53564f);
    path.quadTo(967, 4277.07129f, 967, 4275);
    path.lineTo(967, 4266);
    path.quadTo(967, 4264.44287f, 968.035217f, 4263.31396f);
    path.lineTo(968, 4263);
    path.lineTo(966.464478f, 4261.46436f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(965, 4260);
    pathB.lineTo(967.716675f, 4260);
    pathB.lineTo(970, 4281);
    pathB.lineTo(965, 4281);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_inmotionhosting_com_9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(991.633911f, 1839);
    path.lineTo(964.265015f, 1839);
    path.lineTo(963.734985f, 1893.73242f);
    path.lineTo(991.3703f, 1894);
    path.lineTo(1018.23492f, 1894);
    path.lineTo(1018.76501f, 1839.2627f);
    path.lineTo(991.638184f, 1839);
    path.lineTo(991.633911f, 1839);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(964.267578f, 1838.73499f);
    pathB.lineTo(1019.26501f, 1839.26758f);
    pathB.lineTo(1018.73242f, 1894.26501f);
    pathB.lineTo(963.734985f, 1893.73242f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alucinados_net_101(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1129.53552f, 1164.46448f);
    path.lineTo(1128, 1166);
    path.lineTo(1128.12231f, 1166.49548f);
    path.quadTo(1129, 1167.56592f, 1129, 1169);
    path.lineTo(1129, 1170.05054f);
    path.lineTo(1130.34509f, 1175.49878f);
    path.quadTo(1131, 1174.38513f, 1131, 1173);
    path.lineTo(1131, 1168);
    path.quadTo(1131, 1165.92896f, 1129.53552f, 1164.46448f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1131, 1163);
    pathB.lineTo(-43515.8555f, -177415.594f);
    pathB.lineTo(1129.76465f, 1173.05884f);
    pathB.lineTo(1131, 1178);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_hairjobsearch_com_31(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143.292892f, 0.707106769f);
    path.quadTo(143, 0.414213538f, 143, 0);
    path.lineTo(1123, 0);
    path.quadTo(1123, 0.414213538f, 1122.70715f, 0.707106769f);
    path.quadTo(1122.41418f, 1, 1122, 1);
    path.lineTo(144, 1);
    path.quadTo(143.585785f, 1, 143.292892f, 0.707106769f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 1);
    pathB.lineTo(144, 0);
    pathB.lineTo(1122, 0);
    pathB.lineTo(1123, 1);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_heartiste_wordpress_com_86(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(741, 9432);
    path.lineTo(761, 9431.99023f);
    path.lineTo(761, 9433);
    path.lineTo(741, 9433);
    path.lineTo(741, 9432);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(741, 9433);
    pathB.lineTo(741, 9431.99023f);
    pathB.lineTo(761, 9432);
    pathB.lineTo(761, 9433);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_argus_presse_fr_41(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 343);
    path.lineTo(165, 343);
    path.lineTo(165, 364.869873f);
    path.lineTo(1000, 364.869873f);
    path.lineTo(1000, 343);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(165, 343.000031f);
    pathB.lineTo(1000, 343.000031f);
    pathB.lineTo(1000, 364.869904f);
    pathB.lineTo(165, 364.869904f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_320kbps_net_2231(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(838, 9125);
    path.lineTo(862, 9124.99023f);
    path.lineTo(862, 9126);
    path.lineTo(838, 9126);
    path.lineTo(838, 9125);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(838, 9126);
    pathB.lineTo(838, 9124.99023f);
    pathB.lineTo(862, 9125);
    pathB.lineTo(862, 9126);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_exystence_net_61(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 9075);
    path.lineTo(316, 9075);
    path.lineTo(316, 9073.99023f);
    path.lineTo(143, 9074);
    path.lineTo(143, 9075);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 9075);
    pathB.lineTo(143, 9073.99023f);
    pathB.lineTo(316, 9074);
    pathB.lineTo(316, 9075);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_trashness_com_36(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(541.5f, 4835.99512f);
    path.lineTo(91.5f, 4836);
    path.lineTo(91.5f, 4836.5f);
    path.lineTo(541.5f, 4836.5f);
    path.lineTo(541.5f, 4835.99512f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(91.5f, 4836.5f);
    pathB.lineTo(91.5f, 4835.99512f);
    pathB.lineTo(541.5f, 4836);
    pathB.lineTo(541.5f, 4836.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_getgold_jp_731(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(284.878693f, 10134.8789f);
    path.quadTo(284, 10135.7578f, 284, 10137);
    path.lineTo(284, 10216);
    path.quadTo(284, 10217.2422f, 284.878693f, 10218.1211f);
    path.quadTo(285.125122f, 10218.3672f, 285.40213f, 10218.5459f);
    path.lineTo(286, 10138);
    path.lineTo(286, 10136);
    path.lineTo(284.878693f, 10134.8789f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(284, 10134);
    pathB.lineTo(286.05957f, 10129.8809f);
    pathB.lineTo(285.399994f, 10216.2002f);
    pathB.lineTo(284, 10219);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_maturesupertube_com_21(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(3.17157292f, 11831.1719f);
    path.quadTo(4.34314585f, 11830, 6, 11830);
    path.lineTo(1259, 11830);
    path.quadTo(1260.65686f, 11830, 1261.82837f, 11831.1719f);
    path.quadTo(1263, 11832.3428f, 1263, 11834);
    path.lineTo(1263, 11848);
    path.quadTo(1263, 11849.6572f, 1261.82837f, 11850.8281f);
    path.quadTo(1260.65686f, 11852, 1259, 11852);
    path.lineTo(6, 11852);
    path.quadTo(4.34314585f, 11852, 3.17157292f, 11850.8281f);
    path.quadTo(2, 11849.6572f, 2, 11848);
    path.lineTo(2, 11834);
    path.quadTo(2, 11832.3428f, 3.17157292f, 11831.1719f);
    path.close();
    path.moveTo(3.87867975f, 11831.8789f);
    path.quadTo(4.7573595f, 11831, 6, 11831);
    path.lineTo(1259, 11831);
    path.quadTo(1260.24268f, 11831, 1261.12134f, 11831.8789f);
    path.quadTo(1262, 11832.7578f, 1262, 11834);
    path.lineTo(1262, 11848);
    path.quadTo(1262, 11849.2422f, 1261.12134f, 11850.1211f);
    path.quadTo(1260.24268f, 11851, 1259, 11851);
    path.lineTo(6, 11851);
    path.quadTo(4.7573595f, 11851, 3.87867975f, 11850.1211f);
    path.quadTo(3, 11849.2422f, 3, 11848);
    path.lineTo(3, 11834);
    path.quadTo(3, 11832.7578f, 3.87867975f, 11831.8789f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(2, 11830);
    pathB.lineTo(4.5f, 11832.5f);
    pathB.lineTo(1260.5f, 11832.5f);
    pathB.lineTo(1263, 11830);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_hubbyscook_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 902.329346f);
    path.quadTo(998, 905.250427f, 998, 909);
    path.lineTo(998, 910);
    path.quadTo(998, 913.749573f, 1000, 916.670654f);
    path.lineTo(1000, 902.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 910);
    pathB.lineTo(998, 909);
    pathB.quadTo(998, 904.029419f, 1001.51471f, 900.514709f);
    pathB.quadTo(1005.02942f, 897, 1010, 897);
    pathB.lineTo(1011, 897);
    pathB.quadTo(1015.14215f, 897, 1018.07104f, 900.514709f);
    pathB.quadTo(1021, 904.029419f, 1021, 909);
    pathB.lineTo(1021, 910);
    pathB.quadTo(1021, 914.142151f, 1018.07104f, 917.071045f);
    pathB.quadTo(1015.14215f, 920, 1011, 920);
    pathB.lineTo(1010, 920);
    pathB.quadTo(1005.02942f, 920, 1001.51471f, 917.071045f);
    pathB.quadTo(998, 914.142151f, 998, 910);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_gruposejaumdivulgador_com_br_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(610.5f, 5.78626502e-14f);
    path.lineTo(1083.5f, -6.12303177e-17f);
    path.lineTo(1083.5f, 469);
    path.lineTo(610.5f, 469);
    path.lineTo(610.5f, 5.78626502e-14f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(611, 0);
    pathB.lineTo(1084, 0);
    pathB.lineTo(1084, 469);
    pathB.lineTo(611, 469);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_phototransferapp_com_24(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(85.6091843f, 5.92893219f);
    path.quadTo(89.6041641f, 3, 93.7462997f, 3);
    path.lineTo(1212.74634f, 3);
    path.quadTo(1216.88843f, 3, 1218.75134f, 5.92893219f);
    path.quadTo(1220.61414f, 8.85775471f, 1219.10669f, 12.9996767f);
    path.quadTo(1220.46338f, 9.27196693f, 1218.4939f, 6.63603878f);
    path.quadTo(1216.52441f, 4, 1212.38232f, 4);
    path.lineTo(93.3823318f, 4);
    path.quadTo(89.2401962f, 4, 85.3518219f, 6.63603878f);
    path.quadTo(81.4634476f, 9.27207756f, 80.1065979f, 13);
    path.quadTo(81.614212f, 8.85786438f, 85.6091843f, 5.92893219f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(83.7462997f, 3);
    pathB.lineTo(1222.74634f, 3);
    pathB.lineTo(1219.10657f, 13);
    pathB.lineTo(80.1065979f, 13);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_phototransferapp_com_24x(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(85.6091843f, 5.92893219f);
    path.quadTo(89.6041641f, 3, 93.7462997f, 3);
    path.lineTo(112.74634f, 3);
    path.quadTo(116.88843f, 3, 118.75134f, 5.92893219f);
    path.quadTo(120.61414f, 8.85775471f, 119.10669f, 12.9996767f);
    path.quadTo(120.46338f, 9.27196693f, 118.4939f, 6.63603878f);
    path.quadTo(116.52441f, 4, 112.38232f, 4);
    path.lineTo(93.3823318f, 4);
    path.quadTo(89.2401962f, 4, 85.3518219f, 6.63603878f);
    path.quadTo(81.4634476f, 9.27207756f, 80.1065979f, 13);
    path.quadTo(81.614212f, 8.85786438f, 85.6091843f, 5.92893219f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(83.7462997f, 3);
    pathB.lineTo(122.74634f, 3);
    pathB.lineTo(119.10657f, 13);
    pathB.lineTo(80.1065979f, 13);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_helha_be_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(117.686981f, 3339.08423f);
    path.lineTo(109.533035f, 3350.72925f);
    path.quadTo(107.120552f, 3354.17456f, 103.879379f, 3354.41821f);
    path.quadTo(100.638504f, 3354.66187f, 98.4674301f, 3351.56177f);
    path.quadTo(100.87973f, 3355.00635f, 104.291222f, 3355.00635f);
    path.quadTo(107.70298f, 3355.00635f, 110.115463f, 3351.56104f);
    path.lineTo(118, 3340.30078f);
    path.lineTo(118, 3339.53125f);
    path.lineTo(117.686981f, 3339.08423f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(118.269409f, 3339.91602f);
    pathB.lineTo(117.686981f, 3339.08423f);
    pathB.lineTo(98.4669647f, 3351.56104f);
    pathB.lineTo(104.291214f, 3359.87891f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(509.34021f, 176);
    path.lineTo(505, 176);
    path.quadTo(500.964233f, 176, 497.299988f, 176.896912f);
    path.quadTo(493.678162f, 177.952286f, 490.183014f, 179.9702f);
    path.lineTo(489.316986f, 180.4702f);
    path.quadTo(485.175385f, 182.861359f, 482.115265f, 186.082397f);
    path.quadTo(479.69455f, 188.700821f, 477.995941f, 191.618286f);
    path.quadTo(476.316772f, 194.550476f, 475.258759f, 197.959335f);
    path.quadTo(474, 202.218979f, 474, 207);
    path.lineTo(474, 208);
    path.quadTo(474, 212.03569f, 474.896851f, 215.699799f);
    path.quadTo(475.950256f, 219.315002f, 477.962708f, 222.803986f);
    path.lineTo(477.970215f, 222.816986f);
    path.lineTo(478.470215f, 223.683014f);
    path.quadTo(478.474915f, 223.691162f, 478.479645f, 223.69931f);
    path.quadTo(480.867981f, 227.831055f, 484.082947f, 230.885254f);
    path.quadTo(486.701447f, 233.305939f, 489.61908f, 235.004517f);
    path.quadTo(492.550232f, 236.682983f, 495.957611f, 237.740738f);
    path.quadTo(500.217987f, 239, 505, 239);
    path.lineTo(509.482178f, 239);
    path.quadTo(515.299133f, 238.212051f, 520.801941f, 235.038513f);
    path.quadTo(520.809509f, 235.034164f, 520.817017f, 235.0298f);
    path.lineTo(521.683044f, 234.5298f);
    path.quadTo(521.692078f, 234.524582f, 521.701111f, 234.519348f);
    path.quadTo(532.80603f, 228.09938f, 536.126709f, 215.70639f);
    path.quadTo(539.450134f, 203.303314f, 533.029785f, 192.183014f);
    path.lineTo(532.529785f, 191.316986f);
    path.quadTo(526.109497f, 180.196686f, 513.706421f, 176.873276f);
    path.quadTo(511.503082f, 176.282898f, 509.34021f, 176);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(478.470215f, 223.683014f);
    pathB.lineTo(477.970215f, 222.816986f);
    pathB.quadTo(471.549896f, 211.696686f, 474.873322f, 199.293594f);
    pathB.quadTo(478.196686f, 186.890503f, 489.316986f, 180.4702f);
    pathB.lineTo(490.183014f, 179.9702f);
    pathB.quadTo(501.303345f, 173.549896f, 513.706421f, 176.873276f);
    pathB.quadTo(526.109497f, 180.196686f, 532.529785f, 191.316986f);
    pathB.lineTo(533.029785f, 192.183014f);
    pathB.quadTo(539.450134f, 203.303314f, 536.126709f, 215.70639f);
    pathB.quadTo(532.803345f, 228.109497f, 521.683044f, 234.5298f);
    pathB.lineTo(520.817017f, 235.0298f);
    pathB.quadTo(509.696686f, 241.450104f, 497.29361f, 238.126709f);
    pathB.quadTo(484.890533f, 234.803314f, 478.470215f, 223.683014f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_32a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(497.299988f, 176.896912f);
    path.quadTo(493.678162f, 177.952286f, 490.183014f, 179.9702f);
    path.lineTo(489.316986f, 180.4702f);
    path.quadTo(485.175385f, 182.861359f, 482.115265f, 186.082397f);
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(474.873322f, 199.293594f);
    pathB.quadTo(478.196686f, 186.890503f, 489.316986f, 180.4702f);
    pathB.lineTo(490.183014f, 179.9702f);
    pathB.quadTo(501.303345f, 173.549896f, 513.706421f, 176.873276f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_contextualnewsfeeds_com_346(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(460.257355f, 1202.27808f);
    path.lineTo(460.257355f, 1204.27808f);
    path.quadTo(461.081207f, 1204.27808f, 461.665161f, 1203.69873f);
    path.lineTo(461.67157f, 1203.69238f);
    path.lineTo(466.621307f, 1198.74268f);
    path.quadTo(466.623993f, 1198.73999f, 466.626648f, 1198.7373f);
    path.quadTo(466.914185f, 1198.44604f, 466.914185f, 1198.03552f);
    path.quadTo(466.914215f, 1197.62122f, 466.621307f, 1197.32837f);
    path.lineTo(465.914215f, 1196.62122f);
    path.lineTo(460.257355f, 1202.27808f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(460.257355f, 1205.10657f);
    pathB.lineTo(458.828979f, 1203.67822f);
    pathB.lineTo(465.914215f, 1196.62122f);
    pathB.lineTo(467.32843f, 1198.03552f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_pindosiya_com_99(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(899.17157f, 548.17157f);
    path.quadTo(898, 549.34314f, 898, 551);
    path.lineTo(898, 556);
    path.lineTo(899.027283f, 556);
    path.lineTo(900.02356f, 551.602844f);
    path.quadTo(900.06073f, 551.297058f, 900.156555f, 551.015747f);
    path.lineTo(900.5f, 549.5f);
    path.lineTo(899.17157f, 548.17157f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(898, 547);
    pathB.lineTo(901.086914f, 547);
    pathB.lineTo(899, 556);
    pathB.lineTo(898, 556);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_karnivool_com_au_11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 1431);
    path.lineTo(0, 775);
    path.lineTo(1265, 775);
    path.lineTo(1265, 1431);
    path.lineTo(0, 1431);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(32.3243904f, 851);
    pathB.lineTo(459.324402f, 851);
    pathB.lineTo(427, 1081);
    pathB.lineTo(-3.81469727e-06f, 1081);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_tunero_de_24(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1020.79303f, 2252);
    path.quadTo(1018.72198f, 2252, 1016.86798f, 2253.46436f);
    path.quadTo(1015.02032f, 2254.92383f, 1014.4668f, 2256.98584f);
    path.lineTo(1014.46301f, 2257);
    path.lineTo(1011.53705f, 2268);
    path.quadTo(1010.98615f, 2270.07104f, 1012.06104f, 2271.53564f);
    path.quadTo(1013.13599f, 2273, 1015.20703f, 2273);
    path.lineTo(1083.20703f, 2273);
    path.quadTo(1085.27808f, 2273, 1087.13208f, 2271.53564f);
    path.quadTo(1088.97144f, 2270.08252f, 1089.52832f, 2268.03271f);
    path.lineTo(1089.53711f, 2268);
    path.lineTo(1092.46301f, 2257);
    path.lineTo(1092.4679f, 2256.98145f);
    path.quadTo(1093.00916f, 2254.92236f, 1091.93909f, 2253.46436f);
    path.quadTo(1090.86414f, 2252, 1088.79297f, 2252);
    path.lineTo(1020.79303f, 2252);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1011.53705f, 2268);
    pathB.lineTo(1014.46301f, 2257);
    pathB.quadTo(1015.01392f, 2254.92896f, 1016.86798f, 2253.46436f);
    pathB.quadTo(1018.72198f, 2252, 1020.79303f, 2252);
    pathB.lineTo(1088.79297f, 2252);
    pathB.quadTo(1090.86414f, 2252, 1091.93909f, 2253.46436f);
    pathB.quadTo(1093.01392f, 2254.92896f, 1092.46301f, 2257);
    pathB.lineTo(1089.53711f, 2268);
    pathB.quadTo(1088.98608f, 2270.07104f, 1087.13208f, 2271.53564f);
    pathB.quadTo(1085.27808f, 2273, 1083.20703f, 2273);
    pathB.lineTo(1015.20703f, 2273);
    pathB.quadTo(1013.13599f, 2273, 1012.06104f, 2271.53564f);
    pathB.quadTo(1010.98615f, 2270.07104f, 1011.53705f, 2268);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_docgelo_com_66(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(22.5f, 24174.5f);
    path.lineTo(185.5f, 24174.498f);
    path.lineTo(185.5f, 24174.75f);
    path.lineTo(22.5f, 24174.75f);
    path.lineTo(22.5f, 24174.5f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(22.5f, 24174.75f);
    pathB.lineTo(22.5f, 24174.498f);
    pathB.lineTo(185.5f, 24174.5f);
    pathB.lineTo(185.5f, 24174.75f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kpopexplorer_net_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 866.329346f);
    path.quadTo(998, 869.250427f, 998, 873);
    path.lineTo(998, 874);
    path.quadTo(998, 877.749573f, 1000, 880.670654f);
    path.lineTo(1000, 866.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 874);
    pathB.lineTo(998, 873);
    pathB.quadTo(998, 868.029419f, 1001.51471f, 864.514709f);
    pathB.quadTo(1005.02942f, 861, 1010, 861);
    pathB.lineTo(1011, 861);
    pathB.quadTo(1015.14215f, 861, 1018.07104f, 864.514709f);
    pathB.quadTo(1021, 868.029419f, 1021, 873);
    pathB.lineTo(1021, 874);
    pathB.quadTo(1021, 878.142151f, 1018.07104f, 881.071045f);
    pathB.quadTo(1015.14215f, 884, 1011, 884);
    pathB.lineTo(1010, 884);
    pathB.quadTo(1005.02942f, 884, 1001.51471f, 881.071045f);
    pathB.quadTo(998, 878.142151f, 998, 874);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_artblart_com_8(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(22.5f, 24527.25f);
    path.lineTo(45, 24527.248f);
    path.lineTo(45, 24527.5f);
    path.lineTo(22.5f, 24527.5f);
    path.lineTo(22.5f, 24527.25f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(22.5f, 24527.5f);
    pathB.lineTo(22.5f, 24527.248f);
    pathB.lineTo(45, 24527.25f);
    pathB.lineTo(45, 24527.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_jessicaslens_wordpress_com_222(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 844.329346f);
    path.quadTo(998, 847.250427f, 998, 851);
    path.lineTo(998, 852);
    path.quadTo(998, 855.749573f, 1000, 858.670654f);
    path.lineTo(1000, 844.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 852);
    pathB.lineTo(998, 851);
    pathB.quadTo(998, 846.029419f, 1001.51471f, 842.514709f);
    pathB.quadTo(1005.02942f, 839, 1010, 839);
    pathB.lineTo(1011, 839);
    pathB.quadTo(1015.14215f, 839, 1018.07104f, 842.514709f);
    pathB.quadTo(1021, 846.029419f, 1021, 851);
    pathB.lineTo(1021, 852);
    pathB.quadTo(1021, 856.142151f, 1018.07104f, 859.071045f);
    pathB.quadTo(1015.14215f, 862, 1011, 862);
    pathB.lineTo(1010, 862);
    pathB.quadTo(1005.02942f, 862, 1001.51471f, 859.071045f);
    pathB.quadTo(998, 856.142151f, 998, 852);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_simplysaru_com_40(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 866.329346f);
    path.quadTo(998, 869.250427f, 998, 873);
    path.lineTo(998, 874);
    path.quadTo(998, 877.749573f, 1000, 880.670654f);
    path.lineTo(1000, 866.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 874);
    pathB.lineTo(998, 873);
    pathB.quadTo(998, 868.029419f, 1001.51471f, 864.514709f);
    pathB.quadTo(1005.02942f, 861, 1010, 861);
    pathB.lineTo(1011, 861);
    pathB.quadTo(1015.14215f, 861, 1018.07104f, 864.514709f);
    pathB.quadTo(1021, 868.029419f, 1021, 873);
    pathB.lineTo(1021, 874);
    pathB.quadTo(1021, 878.142151f, 1018.07104f, 881.071045f);
    pathB.quadTo(1015.14215f, 884, 1011, 884);
    pathB.lineTo(1010, 884);
    pathB.quadTo(1005.02942f, 884, 1001.51471f, 881.071045f);
    pathB.quadTo(998, 878.142151f, 998, 874);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_partsdata_de_53(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(407, 119);
    path.lineTo(407, 28);
    path.lineTo(647, 28);
    path.lineTo(647, 119);
    path.lineTo(407, 119);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(471.228394f, 64.443222f);
    pathB.cubicTo(471.193878f, 60.953373f, 470.234985f, 52.4797592f, 462.201569f, 46.6231461f);
    pathB.cubicTo(454.168152f, 40.7665405f, 446.592804f, 41.993145f, 443.033936f, 42.8568878f);
    pathB.cubicTo(439.475098f, 43.7206268f, 436.978638f, 45.4052658f, 436.304871f, 45.7851906f);
    pathB.cubicTo(435.631104f, 46.1651154f, 435.156006f, 45.8026352f, 434.957306f, 45.6384506f);
    pathB.cubicTo(434.758636f, 45.4742737f, 431.460999f, 42.0105858f, 430.916901f, 41.4664841f);
    pathB.cubicTo(430.372803f, 40.9223785f, 429.731628f, 41.3303604f, 429.375214f, 41.6996689f);
    pathB.cubicTo(429.375214f, 41.6996689f, 420.610016f, 50.5190887f, 419.918793f, 51.1754227f);
    pathB.cubicTo(419.22757f, 51.8321419f, 419.331482f, 52.2465706f, 419.884308f, 52.8339005f);
    pathB.cubicTo(420.437134f, 53.4212303f, 425.170624f, 58.0167313f, 425.619568f, 58.4660416f);
    pathB.cubicTo(426.068512f, 58.9153557f, 426.137878f, 59.2952805f, 426.137878f, 59.8136024f);
    pathB.cubicTo(426.137878f, 60.3319244f, 426.103394f, 103.141357f, 426.103394f, 103.970215f);
    pathB.cubicTo(426.103394f, 104.799835f, 426.310791f, 105.525177f, 427.17453f, 105.525177f);
    pathB.cubicTo(428.038269f, 105.525177f, 440.131409f, 105.491432f, 440.85675f, 105.491432f);
    pathB.cubicTo(441.582489f, 105.491432f, 441.996918f, 104.903343f, 441.996918f, 104.17762f);
    pathB.cubicTo(441.996918f, 103.452271f, 441.996918f, 89.5622559f, 441.996918f, 87.8002701f);
    pathB.cubicTo(441.996918f, 86.0382843f, 442.342712f, 86.2453079f, 442.826141f, 86.3491974f);
    pathB.cubicTo(443.309601f, 86.4530945f, 445.832184f, 87.040802f, 448.700195f, 87.040802f);
    pathB.cubicTo(466.87442f, 86.6949997f, 471.815338f, 69.4876556f, 471.228394f, 64.443222f);
    pathB.close();
    pathB.moveTo(448.873108f, 72.4595642f);
    pathB.cubicTo(444.636658f, 72.4595642f, 441.202545f, 69.0254517f, 441.202545f, 64.7890244f);
    pathB.cubicTo(441.202545f, 60.5525932f, 444.636658f, 57.1184845f, 448.873108f, 57.1184845f);
    pathB.cubicTo(453.109528f, 57.1184845f, 456.54364f, 60.552597f, 456.54364f, 64.7890244f);
    pathB.cubicTo(456.54364f, 69.0254517f, 453.109528f, 72.4595642f, 448.873108f, 72.4595642f);
    pathB.close();
    pathB.moveTo(520.242859f, 82.5275803f);
    pathB.cubicTo(519.733276f, 81.6547394f, 494.845154f, 41.3379478f, 494.263123f, 40.3923073f);
    pathB.cubicTo(493.681122f, 39.4462852f, 493.244324f, 39.5918846f, 492.807495f, 40.3195038f);
    pathB.cubicTo(492.515167f, 40.8071136f, 467.238037f, 81.6790085f, 466.528625f, 82.8373566f);
    pathB.cubicTo(465.819183f, 83.9945831f, 466.497528f, 84.2975311f, 466.904358f, 84.5792542f);
    pathB.cubicTo(466.904358f, 84.5792542f, 477.399689f, 91.2036743f, 478.235748f, 91.6981049f);
    pathB.cubicTo(479.071838f, 92.1929092f, 479.396393f, 91.9028473f, 479.669403f, 91.5104141f);
    pathB.cubicTo(479.942383f, 91.1175995f, 484.106384f, 84.1549606f, 484.481781f, 83.5570221f);
    pathB.cubicTo(484.857147f, 82.9602051f, 485.198792f, 82.8741379f, 485.966583f, 82.8741379f);
    pathB.cubicTo(486.734406f, 82.8741379f, 499.635925f, 82.8062668f, 500.830322f, 82.8062668f);
    pathB.cubicTo(502.024658f, 82.8062668f, 502.229797f, 83.4038391f, 502.400452f, 83.6427078f);
    pathB.cubicTo(502.571045f, 83.8815842f, 506.615631f, 90.7414703f, 506.990997f, 91.2870865f);
    pathB.cubicTo(507.651123f, 92.2475128f, 508.017395f, 92.1333847f, 508.672241f, 91.6962051f);
    pathB.cubicTo(509.327423f, 91.2597809f, 519.442444f, 85.0744324f, 520.243286f, 84.4920349f);
    pathB.cubicTo(521.042908f, 83.9100189f, 520.751709f, 83.4004211f, 520.242859f, 82.5275803f);
    pathB.close();
    pathB.moveTo(493.720551f, 72.4811783f);
    pathB.cubicTo(491.265442f, 72.4811783f, 489.275574f, 70.4905548f, 489.275574f, 68.0362091f);
    pathB.cubicTo(489.275574f, 65.5811005f, 491.265808f, 63.5912399f, 493.720551f, 63.5912399f);
    pathB.cubicTo(496.175262f, 63.5912399f, 498.165527f, 65.5814819f, 498.165527f, 68.0362091f);
    pathB.cubicTo(498.165894f, 70.4905548f, 496.175659f, 72.4811783f, 493.720551f, 72.4811783f);
    pathB.close();
    pathB.moveTo(526.561707f, 42.132679f);
    pathB.cubicTo(526.876404f, 41.786499f, 527.537292f, 41.1881752f, 528.512878f, 42.1956215f);
    pathB.cubicTo(529.488892f, 43.2030678f, 531.691833f, 45.2486725f, 531.881042f, 45.4693451f);
    pathB.cubicTo(532.07019f, 45.6896439f, 532.762939f, 46.2875862f, 533.517883f, 45.7525826f);
    pathB.cubicTo(534.272827f, 45.2172012f, 539.497681f, 41.9753265f, 545.384277f, 42.132679f);
    pathB.cubicTo(546.203247f, 42.2270889f, 546.580566f, 42.5421791f, 546.612f, 43.8324814f);
    pathB.cubicTo(546.643494f, 45.1227837f, 546.674561f, 55.1957283f, 546.612f, 56.2657356f);
    pathB.cubicTo(546.549072f, 57.3361206f, 546.549072f, 57.7452469f, 544.975525f, 57.8396568f);
    pathB.cubicTo(543.401978f, 57.9340706f, 538.742798f, 59.5709305f, 538.774658f, 64.6070251f);
    pathB.cubicTo(538.806458f, 69.6431122f, 538.806091f, 86.2631226f, 538.806091f, 86.9554901f);
    pathB.cubicTo(538.806091f, 87.6478424f, 538.585815f, 88.4349976f, 537.484314f, 88.4349976f);
    pathB.cubicTo(536.382446f, 88.4349976f, 524.79895f, 88.4031372f, 524.04364f, 88.4031372f);
    pathB.cubicTo(523.287964f, 88.4031372f, 522.910706f, 88.3402023f, 522.910706f, 86.8606949f);
    pathB.cubicTo(522.910706f, 85.3823242f, 522.910706f, 60.6094704f, 522.910706f, 60.0740852f);
    pathB.cubicTo(522.910706f, 59.5387039f, 522.81665f, 58.9092865f, 522.470093f, 58.6260452f);
    pathB.cubicTo(522.123901f, 58.3428116f, 517.465088f, 53.621048f, 517.181885f, 53.3378105f);
    pathB.cubicTo(516.898621f, 53.0545731f, 516.300659f, 52.330368f, 517.213318f, 51.5121231f);
    pathB.cubicTo(518.125977f, 50.6942635f, 526.561707f, 42.132679f, 526.561707f, 42.132679f);
    pathB.close();
    pathB.moveTo(550.169006f, 43.7373123f);
    pathB.cubicTo(550.169006f, 42.6358337f, 550.767334f, 42.2263336f, 551.49115f, 42.2263336f);
    pathB.cubicTo(552.214966f, 42.2263336f, 552.781433f, 42.2263336f, 552.938843f, 42.2263336f);
    pathB.cubicTo(553.096191f, 42.2263336f, 553.725586f, 41.8801537f, 553.662598f, 41.124855f);
    pathB.cubicTo(553.600098f, 40.369175f, 553.662598f, 31.4614124f, 553.662598f, 30.8005257f);
    pathB.cubicTo(553.662598f, 30.1396389f, 553.75708f, 29.1951332f, 555.110657f, 29.1951332f);
    pathB.cubicTo(556.463928f, 29.1951332f, 566.536865f, 29.1951332f, 567.859009f, 29.1951332f);
    pathB.cubicTo(569.180786f, 29.1951332f, 569.463623f, 30.1711082f, 569.463623f, 30.7690544f);
    pathB.cubicTo(569.463623f, 31.3670006f, 569.463623f, 40.2122002f, 569.463623f, 41.0619125f);
    pathB.cubicTo(569.463623f, 41.9116249f, 569.746887f, 42.3207474f, 570.659912f, 42.3207474f);
    pathB.cubicTo(571.572571f, 42.3207474f, 575.507568f, 42.2263336f, 576.199951f, 42.2263336f);
    pathB.cubicTo(576.892273f, 42.2263336f, 577.742004f, 42.5725098f, 577.742004f, 43.8631973f);
    pathB.cubicTo(577.742004f, 45.1538811f, 577.742004f, 55.8877106f, 577.742004f, 56.5800705f);
    pathB.cubicTo(577.742004f, 57.2724266f, 577.616455f, 58.0595779f, 576.45166f, 58.0595779f);
    pathB.cubicTo(575.286865f, 58.0595779f, 570.943115f, 58.0595779f, 570.471069f, 58.0595779f);
    pathB.cubicTo(569.999023f, 58.0595779f, 569.479919f, 57.8389015f, 569.479919f, 59.0510979f);
    pathB.cubicTo(569.479919f, 60.2629128f, 569.479919f, 66.2124176f, 569.479919f, 67.1880188f);
    pathB.cubicTo(569.479919f, 68.1636047f, 570.628418f, 73.6406708f, 575.917053f, 73.6406708f);
    pathB.cubicTo(577.018921f, 73.6406708f, 577.742737f, 73.9242859f, 577.742737f, 75.4348907f);
    pathB.cubicTo(577.742737f, 76.945488f, 577.742737f, 87.0813751f, 577.742737f, 87.8366699f);
    pathB.cubicTo(577.742737f, 88.5915909f, 577.648315f, 89.4416809f, 576.295044f, 89.4416809f);
    pathB.cubicTo(574.028809f, 89.6312714f, 553.978088f, 88.0254974f, 553.631897f, 65.928421f);
    pathB.cubicTo(553.631897f, 65.928421f, 553.631897f, 59.6964378f, 553.631897f, 58.972229f);
    pathB.cubicTo(553.631897f, 58.2484055f, 553.034363f, 58.0436554f, 552.703735f, 58.0436554f);
    pathB.cubicTo(552.372681f, 58.0436554f, 551.522949f, 58.0436554f, 551.208252f, 58.0436554f);
    pathB.cubicTo(550.893921f, 58.0436554f, 550.170105f, 58.0906677f, 550.170105f, 56.6115417f);
    pathB.cubicTo(550.170105f, 55.1324081f, 550.169006f, 43.7373123f, 550.169006f, 43.7373123f);
    pathB.close();
    pathB.moveTo(611.203857f, 39.5509338f);
    pathB.cubicTo(612.084961f, 39.5509338f, 612.620422f, 40.0544662f, 612.620422f, 40.8097687f);
    pathB.cubicTo(612.620422f, 41.5650673f, 612.620422f, 53.1486092f, 612.620422f, 53.6839905f);
    pathB.cubicTo(612.620422f, 54.2193718f, 612.651489f, 55.2264404f, 611.612976f, 55.2264404f);
    pathB.cubicTo(610.574463f, 55.2264404f, 604.404663f, 55.9817429f, 604.404663f, 61.899395f);
    pathB.cubicTo(604.404663f, 65.4878235f, 604.373169f, 66.6211548f, 604.373169f, 67.5338135f);
    pathB.cubicTo(604.373169f, 68.0684357f, 604.414124f, 74.3353043f, 599.934631f, 80.4702148f);
    pathB.cubicTo(596.765564f, 84.8109131f, 590.664368f, 89.3942871f, 582.150208f, 89.630127f);
    pathB.cubicTo(580.028015f, 89.630127f, 580.230469f, 88.5286484f, 580.230469f, 88.1820908f);
    pathB.cubicTo(580.230469f, 87.5845184f, 580.198975f, 75.8436279f, 580.198975f, 75.2142105f);
    pathB.cubicTo(580.198975f, 74.5844116f, 580.608154f, 73.8605804f, 581.58374f, 73.8605804f);
    pathB.cubicTo(583.40979f, 73.8605804f, 588.603271f, 72.7905731f, 588.603271f, 66.9043884f);
    pathB.cubicTo(588.603271f, 61.3958588f, 588.603271f, 61.8679237f, 588.603271f, 61.0496788f);
    pathB.cubicTo(588.603271f, 60.2314377f, 588.666565f, 54.3137856f, 593.230591f, 48.3961296f);
    pathB.cubicTo(597.794617f, 42.4784775f, 604.814087f, 39.5509338f, 611.203857f, 39.5509338f);
    pathB.close();
    pathB.moveTo(635.22937f, 81.9311447f);
    pathB.cubicTo(635.057617f, 81.6475296f, 634.869141f, 81.3851471f, 634.664429f, 81.1439972f);
    pathB.lineTo(635.039001f, 81.0385895f);
    pathB.cubicTo(635.447754f, 80.9233246f, 635.729858f, 80.5509796f, 635.729858f, 80.1263123f);
    pathB.lineTo(635.729858f, 78.6149597f);
    pathB.cubicTo(635.729858f, 78.3309631f, 635.602417f, 78.0617523f, 635.382935f, 77.8816452f);
    pathB.cubicTo(635.162598f, 77.7015381f, 634.873291f, 77.6295013f, 634.595764f, 77.6852341f);
    pathB.cubicTo(633.906799f, 77.8232498f, 633.194397f, 77.9017334f, 632.478149f, 77.9191818f);
    pathB.cubicTo(631.714844f, 77.9373779f, 630.851501f, 77.9464874f, 629.911133f, 77.9464874f);
    pathB.lineTo(615.131226f, 77.9464874f);
    pathB.cubicTo(614.607605f, 77.9464874f, 614.18335f, 78.3707733f, 614.18335f, 78.8944016f);
    pathB.lineTo(614.18335f, 81.1337585f);
    pathB.cubicTo(614.18335f, 81.6573868f, 614.607605f, 82.0816803f, 615.131226f, 82.0816803f);
    pathB.lineTo(619.693787f, 82.0816803f);
    pathB.cubicTo(619.680908f, 82.1423492f, 619.669128f, 82.2026367f, 619.657776f, 82.2629166f);
    pathB.cubicTo(619.571289f, 82.728157f, 619.529602f, 83.3200302f, 619.529602f, 84.0730591f);
    pathB.cubicTo(619.529602f, 86.3196259f, 620.260254f, 88.1236954f, 621.701477f, 89.4348602f);
    pathB.cubicTo(623.116516f, 90.7225037f, 625.163269f, 91.3754272f, 627.784058f, 91.3754272f);
    pathB.cubicTo(630.525024f, 91.3754272f, 632.517944f, 90.8669662f, 633.876099f, 89.8208466f);
    pathB.cubicTo(635.291565f, 88.7314987f, 636.009705f, 87.0798492f, 636.009705f, 84.9129181f);
    pathB.cubicTo(636.010071f, 83.7905807f, 635.747314f, 82.7873077f, 635.22937f, 81.9311447f);
    pathB.close();
    pathB.moveTo(631.880554f, 85.7326736f);
    pathB.cubicTo(631.690552f, 86.0545807f, 631.436157f, 86.307869f, 631.102844f, 86.5076904f);
    pathB.cubicTo(630.736206f, 86.7279816f, 630.277039f, 86.8906479f, 629.737854f, 86.9903717f);
    pathB.cubicTo(629.146362f, 87.1003265f, 628.488892f, 87.1564484f, 627.783997f, 87.1564484f);
    pathB.cubicTo(626.159668f, 87.1564484f, 624.996399f, 86.8656235f, 624.327881f, 86.293457f);
    pathB.cubicTo(623.693604f, 85.7489777f, 623.385315f, 84.995575f, 623.385315f, 83.9896393f);
    pathB.cubicTo(623.385315f, 83.3655396f, 623.431519f, 82.8718567f, 623.522583f, 82.5215149f);
    pathB.cubicTo(623.563477f, 82.3645325f, 623.616943f, 82.2189331f, 623.684448f, 82.0824356f);
    pathB.lineTo(630.008179f, 82.0824356f);
    pathB.cubicTo(630.758911f, 82.247757f, 631.311401f, 82.5256805f, 631.650757f, 82.9101562f);
    pathB.cubicTo(631.990112f, 83.2942505f, 632.154663f, 83.8303986f, 632.154663f, 84.549675f);
    pathB.cubicTo(632.154663f, 85.02742f, 632.062927f, 85.4251709f, 631.880554f, 85.7326736f);
    pathB.close();
    pathB.moveTo(635.667664f, 69.5979919f);
    pathB.cubicTo(635.518311f, 69.0645142f, 635.325684f, 68.5818329f, 635.093994f, 68.1620941f);
    pathB.cubicTo(634.940796f, 67.8856812f, 634.770569f, 67.6316376f, 634.586304f, 67.4026184f);
    pathB.lineTo(635.054565f, 67.2619476f);
    pathB.cubicTo(635.455322f, 67.1417542f, 635.729858f, 66.7724457f, 635.729858f, 66.3538437f);
    pathB.lineTo(635.729858f, 64.7021942f);
    pathB.cubicTo(635.729858f, 64.4045486f, 635.590332f, 64.1243439f, 635.3526f, 63.9449997f);
    pathB.cubicTo(635.115234f, 63.7660294f, 634.807373f, 63.7087784f, 634.521057f, 63.7906761f);
    pathB.cubicTo(634.059998f, 63.9226265f, 633.544678f, 64.0155258f, 632.988831f, 64.0659485f);
    pathB.cubicTo(631.578735f, 64.1941071f, 629.921387f, 64.1565704f, 628.141968f, 64.0632935f);
    pathB.cubicTo(627.067383f, 64.0068054f, 625.948853f, 63.9779854f, 624.81665f, 63.9779854f);
    pathB.cubicTo(624.253601f, 63.9779854f, 623.681396f, 64.0359955f, 623.116089f, 64.1512604f);
    pathB.cubicTo(622.479126f, 64.2809448f, 621.888367f, 64.5437012f, 621.35907f, 64.9315872f);
    pathB.cubicTo(620.807007f, 65.3365402f, 620.360352f, 65.9159088f, 620.031189f, 66.6548996f);
    pathB.cubicTo(619.712708f, 67.3722839f, 619.557983f, 68.2625656f, 619.557983f, 69.3769379f);
    pathB.cubicTo(619.557983f, 70.4655304f, 619.669128f, 71.5268097f, 619.887878f, 72.5323639f);
    pathB.cubicTo(620.11499f, 73.573555f, 620.473694f, 74.5040283f, 620.954468f, 75.2983856f);
    pathB.cubicTo(621.196411f, 75.6976471f, 621.693481f, 75.861824f, 622.124939f, 75.6847534f);
    pathB.lineTo(623.832336f, 74.9851913f);
    pathB.cubicTo(624.086365f, 74.8809204f, 624.282776f, 74.6716156f, 624.370728f, 74.4111328f);
    pathB.cubicTo(624.45874f, 74.15065f, 624.429138f, 73.8651276f, 624.290405f, 73.6281509f);
    pathB.cubicTo(624.166382f, 73.416954f, 624.051147f, 73.1644287f, 623.947205f, 72.875885f);
    pathB.cubicTo(623.836853f, 72.5702744f, 623.741333f, 72.2407837f, 623.663574f, 71.8968811f);
    pathB.cubicTo(623.584717f, 71.549942f, 623.522217f, 71.2018585f, 623.477417f, 70.8621292f);
    pathB.cubicTo(623.434937f, 70.5409775f, 623.41333f, 70.2391663f, 623.41333f, 69.9646454f);
    pathB.cubicTo(623.41333f, 68.8229752f, 623.672729f, 68.4748993f, 623.75116f, 68.3960266f);
    pathB.cubicTo(623.853577f, 68.2940369f, 624.20166f, 68.0574341f, 625.236755f, 68.0574341f);
    pathB.cubicTo(625.39679f, 68.0574341f, 625.566284f, 68.0616074f, 625.744446f, 68.0695648f);
    pathB.lineTo(625.744446f, 68.7331085f);
    pathB.cubicTo(625.744446f, 69.8065338f, 625.819153f, 70.8048782f, 625.967041f, 71.70047f);
    pathB.cubicTo(626.12323f, 72.6483841f, 626.392456f, 73.4825516f, 626.767456f, 74.1794586f);
    pathB.cubicTo(627.173523f, 74.9328613f, 627.730957f, 75.5292969f, 628.424438f, 75.9528198f);
    pathB.cubicTo(629.123596f, 76.3790054f, 629.981628f, 76.5951309f, 630.975464f, 76.5951309f);
    pathB.cubicTo(631.722046f, 76.5951309f, 632.406799f, 76.4597626f, 633.009644f, 76.1924591f);
    pathB.cubicTo(633.611816f, 75.9262848f, 634.136536f, 75.5543213f, 634.567688f, 75.0875626f);
    pathB.cubicTo(634.998779f, 74.6223297f, 635.333191f, 74.0672302f, 635.561096f, 73.4370575f);
    pathB.cubicTo(635.78479f, 72.8212891f, 635.898193f, 72.1520538f, 635.898193f, 71.4479446f);
    pathB.cubicTo(635.898193f, 70.7688599f, 635.820496f, 70.1462708f, 635.667664f, 69.5979919f);
    pathB.close();
    pathB.moveTo(631.656494f, 71.9905396f);
    pathB.cubicTo(631.416077f, 72.2574692f, 631.13739f, 72.3765259f, 630.751404f, 72.3765259f);
    pathB.cubicTo(630.390015f, 72.3765259f, 630.239502f, 72.2536774f, 630.190247f, 72.2127228f);
    pathB.cubicTo(630.002197f, 72.0587845f, 629.853149f, 71.8483429f, 629.735596f, 71.5704193f);
    pathB.cubicTo(629.594177f, 71.2348557f, 629.494507f, 70.8310394f, 629.439453f, 70.3714905f);
    pathB.cubicTo(629.379211f, 69.8607559f, 629.348511f, 69.3284073f, 629.348511f, 68.7892303f);
    pathB.cubicTo(629.348511f, 68.5765228f, 629.351929f, 68.3603973f, 629.357971f, 68.1416168f);
    pathB.lineTo(630.581177f, 68.1416168f);
    pathB.cubicTo(630.702515f, 68.2026672f, 630.831787f, 68.2841797f, 630.967163f, 68.3857956f);
    pathB.cubicTo(631.149902f, 68.523056f, 631.322815f, 68.703537f, 631.480225f, 68.922699f);
    pathB.cubicTo(631.639038f, 69.1437531f, 631.77478f, 69.4186478f, 631.884399f, 69.7390442f);
    pathB.cubicTo(631.989807f, 70.0488281f, 632.04364f, 70.4169922f, 632.04364f, 70.8329391f);
    pathB.cubicTo(632.042847f, 71.3228302f, 631.916565f, 71.7012329f, 631.656494f, 71.9905396f);
    pathB.close();
    pathB.moveTo(622.689575f, 63.4953079f);
    pathB.lineTo(620.72998f, 63.4953079f);
    pathB.cubicTo(620.206421f, 63.4953079f, 619.782104f, 63.0710182f, 619.782104f, 62.54739f);
    pathB.lineTo(619.782104f, 61.3116837f);
    pathB.lineTo(617.958679f, 61.3116837f);
    pathB.cubicTo(617.536255f, 61.3116837f, 617.164307f, 61.0318604f, 617.047913f, 60.6257744f);
    pathB.lineTo(616.404114f, 58.3864136f);
    pathB.cubicTo(616.321411f, 58.1001472f, 616.378662f, 57.7922592f, 616.557678f, 57.5541458f);
    pathB.cubicTo(616.737061f, 57.3164062f, 617.017212f, 57.1764946f, 617.31488f, 57.1764946f);
    pathB.lineTo(619.782104f, 57.1764946f);
    pathB.lineTo(619.782104f, 54.3171997f);
    pathB.cubicTo(619.782104f, 53.7935715f, 620.206421f, 53.3692818f, 620.730042f, 53.3692818f);
    pathB.lineTo(622.689575f, 53.3692818f);
    pathB.cubicTo(623.213196f, 53.3692818f, 623.637512f, 53.7935715f, 623.637512f, 54.3171997f);
    pathB.lineTo(623.637512f, 57.1764946f);
    pathB.lineTo(630.443176f, 57.1764946f);
    pathB.cubicTo(631.548828f, 57.1764946f, 631.921936f, 57.0028381f, 632.009888f, 56.9493713f);
    pathB.cubicTo(632.057617f, 56.9205589f, 632.154724f, 56.8621674f, 632.154724f, 56.5288773f);
    pathB.cubicTo(632.154724f, 56.139473f, 632.116821f, 55.8179398f, 632.04248f, 55.5737572f);
    pathB.cubicTo(631.949219f, 55.268528f, 631.822205f, 54.9193192f, 631.665588f, 54.5363579f);
    pathB.cubicTo(631.563599f, 54.288002f, 631.572327f, 54.0085602f, 631.688354f, 53.7670288f);
    pathB.cubicTo(631.804749f, 53.5251198f, 632.017456f, 53.3438797f, 632.274536f, 53.2680435f);
    pathB.lineTo(633.9823f, 52.7641296f);
    pathB.cubicTo(634.430115f, 52.6325607f, 634.90332f, 52.8437576f, 635.105042f, 53.2623596f);
    pathB.cubicTo(635.375f, 53.8235245f, 635.59491f, 54.4404297f, 635.758301f, 55.0956268f);
    pathB.cubicTo(635.925537f, 55.7656174f, 636.010498f, 56.4928589f, 636.010498f, 57.2565002f);
    pathB.cubicTo(636.010498f, 58.7109833f, 635.553589f, 59.7790947f, 634.653076f, 60.4316406f);
    pathB.cubicTo(633.835938f, 61.0235176f, 632.596069f, 61.311306f, 630.863647f, 61.311306f);
    pathB.lineTo(623.637878f, 61.311306f);
    pathB.lineTo(623.637878f, 62.5470123f);
    pathB.cubicTo(623.637451f, 63.071022f, 623.213196f, 63.4953079f, 622.689575f, 63.4953079f);
    pathB.close();
    pathB.moveTo(635.667664f, 46.2246475f);
    pathB.cubicTo(635.518311f, 45.6911545f, 635.325684f, 45.2084808f, 635.093994f, 44.7887421f);
    pathB.cubicTo(634.940796f, 44.5123291f, 634.770569f, 44.2582855f, 634.586304f, 44.029274f);
    pathB.lineTo(635.054565f, 43.8886032f);
    pathB.cubicTo(635.455322f, 43.7684059f, 635.729858f, 43.3990974f, 635.729858f, 42.9804955f);
    pathB.lineTo(635.729858f, 41.328846f);
    pathB.cubicTo(635.729858f, 41.0312004f, 635.590332f, 40.7509995f, 635.3526f, 40.5716515f);
    pathB.cubicTo(635.115234f, 40.3926849f, 634.807373f, 40.3354301f, 634.521057f, 40.4173279f);
    pathB.cubicTo(634.059998f, 40.5492783f, 633.544678f, 40.6421738f, 632.988831f, 40.6926041f);
    pathB.cubicTo(631.578735f, 40.8207626f, 629.921387f, 40.7836075f, 628.141968f, 40.689949f);
    pathB.cubicTo(627.067383f, 40.6334534f, 625.948853f, 40.6046371f, 624.81665f, 40.6046371f);
    pathB.cubicTo(624.253601f, 40.6046371f, 623.681396f, 40.6626511f, 623.116089f, 40.777916f);
    pathB.cubicTo(622.479126f, 40.9075928f, 621.888367f, 41.1703568f, 621.35907f, 41.5582428f);
    pathB.cubicTo(620.807007f, 41.963192f, 620.360352f, 42.5425606f, 620.031189f, 43.2815552f);
    pathB.cubicTo(619.712708f, 43.9989395f, 619.557983f, 44.8892212f, 619.557983f, 46.0035934f);
    pathB.cubicTo(619.557983f, 47.0921783f, 619.669128f, 48.1534653f, 619.887878f, 49.1590195f);
    pathB.cubicTo(620.11499f, 50.2002106f, 620.473694f, 51.1306839f, 620.954468f, 51.9250374f);
    pathB.cubicTo(621.196411f, 52.3243027f, 621.693481f, 52.4880981f, 622.124939f, 52.311409f);
    pathB.lineTo(623.832336f, 51.6118431f);
    pathB.cubicTo(624.086365f, 51.5075722f, 624.282776f, 51.2982712f, 624.370728f, 51.0377846f);
    pathB.cubicTo(624.45874f, 50.777298f, 624.429138f, 50.4917831f, 624.290405f, 50.2548065f);
    pathB.cubicTo(624.166382f, 50.0436096f, 624.051147f, 49.7910843f, 623.947205f, 49.5025406f);
    pathB.cubicTo(623.836853f, 49.1969299f, 623.741333f, 48.8674355f, 623.663574f, 48.5235291f);
    pathB.cubicTo(623.584717f, 48.1765938f, 623.522217f, 47.8285179f, 623.477417f, 47.4887848f);
    pathB.cubicTo(623.434937f, 47.1676331f, 623.41333f, 46.8658142f, 623.41333f, 46.5912971f);
    pathB.cubicTo(623.41333f, 45.4496269f, 623.672729f, 45.1015511f, 623.75116f, 45.0226822f);
    pathB.cubicTo(623.853577f, 44.9206886f, 624.20166f, 44.6840897f, 625.236755f, 44.6840897f);
    pathB.cubicTo(625.39679f, 44.6840897f, 625.566284f, 44.6882591f, 625.744446f, 44.6962204f);
    pathB.lineTo(625.744446f, 45.3597641f);
    pathB.cubicTo(625.744446f, 46.4331856f, 625.819153f, 47.43153f, 625.967041f, 48.3271217f);
    pathB.cubicTo(626.12323f, 49.2750397f, 626.392456f, 50.1092072f, 626.767456f, 50.8061142f);
    pathB.cubicTo(627.173523f, 51.5595169f, 627.730957f, 52.1559486f, 628.424438f, 52.5794754f);
    pathB.cubicTo(629.123596f, 53.005661f, 629.981628f, 53.2217865f, 630.975464f, 53.2217865f);
    pathB.cubicTo(631.722046f, 53.2217865f, 632.406799f, 53.086422f, 633.009644f, 52.8191147f);
    pathB.cubicTo(633.611816f, 52.5529366f, 634.136536f, 52.1809769f, 634.567688f, 51.7142181f);
    pathB.cubicTo(634.998779f, 51.2489815f, 635.333191f, 50.693882f, 635.561096f, 50.0637054f);
    pathB.cubicTo(635.78479f, 49.4479408f, 635.898193f, 48.7787094f, 635.898193f, 48.0746002f);
    pathB.cubicTo(635.898193f, 47.3958893f, 635.820496f, 46.7733002f, 635.667664f, 46.2246475f);
    pathB.close();
    pathB.moveTo(631.656494f, 48.6171875f);
    pathB.cubicTo(631.416077f, 48.8841209f, 631.13739f, 49.0031815f, 630.751404f, 49.0031815f);
    pathB.cubicTo(630.390015f, 49.0031815f, 630.239502f, 48.8803291f, 630.190247f, 48.8393784f);
    pathB.cubicTo(630.002197f, 48.6854401f, 629.853149f, 48.4749985f, 629.735596f, 48.1970711f);
    pathB.cubicTo(629.594177f, 47.8615112f, 629.494507f, 47.457695f, 629.439453f, 46.9981461f);
    pathB.cubicTo(629.379211f, 46.4874115f, 629.348511f, 45.9550591f, 629.348511f, 45.4158859f);
    pathB.cubicTo(629.348511f, 45.2031708f, 629.351929f, 44.9870453f, 629.357971f, 44.7682648f);
    pathB.lineTo(630.581177f, 44.7682648f);
    pathB.cubicTo(630.702515f, 44.8293152f, 630.831787f, 44.9108353f, 630.967163f, 45.0124512f);
    pathB.cubicTo(631.149902f, 45.1497116f, 631.322815f, 45.3301926f, 631.480225f, 45.5493507f);
    pathB.cubicTo(631.639038f, 45.7704048f, 631.77478f, 46.0453033f, 631.884399f, 46.3656998f);
    pathB.cubicTo(631.989807f, 46.6754761f, 632.04364f, 47.0436478f, 632.04364f, 47.4595947f);
    pathB.cubicTo(632.042847f, 47.949852f, 631.916565f, 48.3282623f, 631.656494f, 48.6171875f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_seopack_blogspot_com_2153(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(999.892212f, 246);
    path.lineTo(927.340759f, 245.505722f);
    path.quadTo(928.068054f, 246, 929, 246);
    path.lineTo(999.892212f, 246);
    path.close();
    path.moveTo(927.340759f, 245.505722f);
    path.lineTo(926.5f, 245.5f);
    path.lineTo(925.17157f, 246.82843f);
    path.quadTo(926.34314f, 248, 928, 248);
    path.lineTo(1000, 248);
    path.lineTo(1000, 246);
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(924, 248);
    pathB.lineTo(924, 245.472672f);
    pathB.lineTo(1143, 247);
    pathB.lineTo(1143, 248);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lokado_de_173(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 896.991394f);
    path.quadTo(999.789917f, 896.718872f, 999.535522f, 896.464478f);
    path.quadTo(998.071045f, 895, 996, 895);
    path.lineTo(956, 895);
    path.quadTo(951.857849f, 895, 948.928955f, 897.928955f);
    path.quadTo(946, 900.857849f, 946, 905);
    path.lineTo(946, 906);
    path.quadTo(946, 910.142151f, 948.928955f, 913.071045f);
    path.quadTo(951.857849f, 916, 956, 916);
    path.lineTo(996, 916);
    path.quadTo(998.071045f, 916, 999.535522f, 914.535522f);
    path.quadTo(999.789917f, 914.281128f, 1000, 914.008606f);
    path.lineTo(1000, 896.991394f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(946, 906);
    pathB.lineTo(946, 905);
    pathB.quadTo(946, 901.272095f, 948.928955f, 898.636047f);
    pathB.quadTo(951.857849f, 896, 956, 896);
    pathB.lineTo(996, 896);
    pathB.quadTo(998.071045f, 896, 999.535522f, 897.17157f);
    pathB.quadTo(1001, 898.34314f, 1001, 900);
    pathB.lineTo(1001, 911);
    pathB.quadTo(1001, 913.071045f, 999.535522f, 914.535522f);
    pathB.quadTo(998.071045f, 916, 996, 916);
    pathB.lineTo(956, 916);
    pathB.quadTo(951.857849f, 916, 948.928955f, 913.071045f);
    pathB.quadTo(946, 910.142151f, 946, 906);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_wartepop_blogspot_com_br_6(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90.9763107f, 153.309662f);
    path.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    path.lineTo(124.666664f, 152.333344f);
    path.quadTo(126.047379f, 152.333344f, 127.023689f, 153.309662f);
    path.quadTo(128, 154.285965f, 128, 155.666672f);
    path.lineTo(128, 163.666672f);
    path.lineTo(90, 163.666672f);
    path.lineTo(90, 155.666672f);
    path.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 163.666672f);
    pathB.lineTo(90, 155.666672f);
    pathB.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    pathB.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    pathB.lineTo(124.666672f, 152.333344f);
    pathB.quadTo(125.909309f, 152.333344f, 126.787994f, 153.309662f);
    pathB.quadTo(127.666672f, 154.285965f, 127.666672f, 155.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_wartepop_blogspot_com_br_6a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90.9763107f, 153.309662f);
    path.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    path.lineTo(124.666672f, 152.333344f);
    path.quadTo(126.047379f, 152.333344f, 127.023689f, 153.309662f);
    path.quadTo(128, 154.285965f, 128, 155.666672f);
    path.lineTo(128, 163.666672f);
    path.lineTo(90, 163.666672f);
    path.lineTo(90, 155.666672f);
    path.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 163.666672f);
    pathB.lineTo(90, 155.666672f);
    pathB.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    pathB.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    pathB.lineTo(124.666672f, 152.333344f);
    pathB.quadTo(125.909309f, 152.333344f, 126.787994f, 153.309662f);
    pathB.quadTo(127.666672f, 154.285965f, 127.666672f, 155.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_odia_com_br_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(360.740479f, 741.040771f);
    path.quadTo(360.378967f, 741, 360, 741);
    path.quadTo(359.159821f, 741, 358.403076f, 741.200745f);
    path.quadTo(357.649658f, 741.415833f, 356.92746f, 741.846436f);
    path.quadTo(356.600769f, 742.041199f, 356.310211f, 742.262268f);
    path.quadTo(356.025513f, 742.489197f, 355.757355f, 742.757385f);
    path.quadTo(355.16394f, 743.350769f, 354.770874f, 744.027283f);
    path.quadTo(354.389618f, 744.71283f, 354.183258f, 745.528564f);
    path.quadTo(354.090027f, 745.897095f, 354.040833f, 746.259277f);
    path.quadTo(354, 746.621216f, 354, 747);
    path.quadTo(354, 747.839844f, 354.200653f, 748.596497f);
    path.quadTo(354.415771f, 749.35022f, 354.846466f, 750.072632f);
    path.quadTo(355.040741f, 750.398438f, 355.261444f, 750.688721f);
    path.quadTo(355.488861f, 750.974121f, 355.757355f, 751.242615f);
    path.quadTo(356.352142f, 751.837402f, 357.030304f, 752.230896f);
    path.quadTo(357.714539f, 752.610901f, 358.528564f, 752.816833f);
    path.quadTo(358.895294f, 752.909607f, 359.25528f, 752.95874f);
    path.quadTo(359.618896f, 753, 360, 753);
    path.quadTo(360.842285f, 753, 361.600952f, 752.798157f);
    path.quadTo(362.352386f, 752.583008f, 363.072601f, 752.153625f);
    path.quadTo(363.397339f, 751.960022f, 363.686829f, 751.740051f);
    path.quadTo(363.973297f, 751.511963f, 364.242645f, 751.242615f);
    path.quadTo(364.837799f, 750.647461f, 365.231354f, 749.968933f);
    path.quadTo(365.610992f, 749.285034f, 365.816803f, 748.471497f);
    path.quadTo(365.909668f, 748.104431f, 365.958832f, 747.743713f);
    path.quadTo(366, 747.380371f, 366, 747);
    path.quadTo(366, 746.158997f, 365.798767f, 745.401367f);
    path.quadTo(365.583618f, 744.648682f, 365.153595f, 743.927429f);
    path.quadTo(364.959442f, 743.601807f, 364.738678f, 743.311462f);
    path.quadTo(364.511108f, 743.025818f, 364.242645f, 742.757385f);
    path.quadTo(363.649017f, 742.163757f, 362.972168f, 741.770569f);
    path.quadTo(362.286835f, 741.389526f, 361.471497f, 741.183289f);
    path.quadTo(361.102509f, 741.089966f, 360.740479f, 741.040771f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(355.654724f, 739.711792f);
    pathB.lineTo(367.288269f, 742.654724f);
    pathB.lineTo(364.345337f, 754.288269f);
    pathB.lineTo(352.711792f, 751.345337f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_evolvehq_com_210(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(172, 972);
    path.quadTo(170.757355f, 972, 169.878677f, 972.878662f);
    path.quadTo(169, 973.757385f, 169, 975);
    path.lineTo(169, 1171);
    path.quadTo(169, 1172.24268f, 169.878677f, 1173.12134f);
    path.quadTo(170.757355f, 1174, 172, 1174);
    path.lineTo(308, 1174);
    path.quadTo(309.242645f, 1174, 310.121307f, 1173.12134f);
    path.quadTo(310.337311f, 1172.9054f, 310.5f, 1172.66772f);
    path.lineTo(310.5f, 973.332336f);
    path.quadTo(310.337219f, 973.094604f, 310.121307f, 972.878662f);
    path.quadTo(309.242645f, 972, 308, 972);
    path.lineTo(172, 972);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(170, 1171);
    pathB.lineTo(170, 975);
    pathB.quadTo(170, 974.17157f, 170.585785f, 973.585815f);
    pathB.quadTo(171.17157f, 973, 172, 973);
    pathB.lineTo(308, 973);
    pathB.quadTo(309.242645f, 973, 310.121307f, 973.585815f);
    pathB.quadTo(311, 974.17157f, 311, 975);
    pathB.lineTo(311, 1171);
    pathB.quadTo(311, 1172.24268f, 310.121307f, 1173.12134f);
    pathB.quadTo(309.242645f, 1174, 308, 1174);
    pathB.lineTo(172, 1174);
    pathB.quadTo(171.17157f, 1174, 170.585785f, 1173.12134f);
    pathB.quadTo(170, 1172.24268f, 170, 1171);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_catingueiraonline_com_352(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(443, 8292);
    path.lineTo(443, 8140);
    path.lineTo(444, 8140);
    path.lineTo(444.01001f, 8292);
    path.lineTo(443, 8292);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(443, 8140);
    pathB.lineTo(444.01001f, 8140);
    pathB.lineTo(444, 8292);
    pathB.lineTo(443, 8292);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_galaxystwo_com_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(10105, 2510);
    path.lineTo(10123, 2509.98999f);
    path.lineTo(10123, 2511);
    path.lineTo(10105, 2511);
    path.lineTo(10105, 2510);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(10105, 2511);
    pathB.lineTo(10105, 2509.98999f);
    pathB.lineTo(10123, 2510);
    pathB.lineTo(10123, 2511);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_thaienews_blogspot_com_36(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(429.994995f, 6268);
    path.lineTo(430, 2187);
    path.lineTo(430.5f, 2187);
    path.lineTo(430.5f, 6268);
    path.lineTo(429.994995f, 6268);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(430.5f, 2187);
    pathB.lineTo(429.994995f, 2187);
    pathB.lineTo(430, 6268);
    pathB.lineTo(430.5f, 6268);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_fashionscandal_com_94(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(25.9107456f, 272.577423f);
    path.quadTo(26.1548233f, 272.333344f, 26.5000019f, 272.333344f);
    path.lineTo(131.166672f, 272.333344f);
    path.quadTo(131.511841f, 272.333344f, 131.75592f, 272.577423f);
    path.quadTo(132, 272.821503f, 132, 273.166687f);
    path.lineTo(132, 417.166656f);
    path.quadTo(132, 417.511841f, 131.75592f, 417.75592f);
    path.quadTo(131.511841f, 418, 131.166672f, 418);
    path.lineTo(26.5000019f, 418);
    path.quadTo(26.1548233f, 418, 25.9107456f, 417.75592f);
    path.quadTo(25.6666679f, 417.511841f, 25.6666679f, 417.166656f);
    path.lineTo(25.6666679f, 273.166687f);
    path.quadTo(25.6666679f, 272.821503f, 25.9107456f, 272.577423f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(25.833334f, 417.166656f);
    pathB.lineTo(25.833334f, 273.166656f);
    pathB.quadTo(25.833334f, 272.890533f, 26.0285969f, 272.695251f);
    pathB.quadTo(26.2238579f, 272.5f, 26.5f, 272.5f);
    pathB.lineTo(131.166672f, 272.5f);
    pathB.quadTo(131.442825f, 272.5f, 131.638077f, 272.695251f);
    pathB.quadTo(131.833344f, 272.890533f, 131.833344f, 273.166656f);
    pathB.lineTo(131.833344f, 417.166656f);
    pathB.quadTo(131.833344f, 417.511841f, 131.638077f, 417.75592f);
    pathB.quadTo(131.442825f, 418, 131.166672f, 418);
    pathB.lineTo(26.5f, 418);
    pathB.quadTo(26.2238579f, 418, 26.0285969f, 417.75592f);
    pathB.quadTo(25.833334f, 417.511841f, 25.833334f, 417.166656f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_kenlevine_blogspot_com_28(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(276, 9506);
    path.lineTo(276, 7531);
    path.lineTo(277, 7531);
    path.lineTo(277.01001f, 9506);
    path.lineTo(276, 9506);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(276, 7531);
    pathB.lineTo(277.01001f, 7531);
    pathB.lineTo(277, 9506);
    pathB.lineTo(276, 9506);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_defense_studies_blogspot_com_64(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(276, 9600);
    path.lineTo(276, 7703);
    path.lineTo(277, 7703);
    path.lineTo(277.01001f, 9600);
    path.lineTo(276, 9600);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(276, 7703);
    pathB.lineTo(277.01001f, 7703);
    pathB.lineTo(277, 9600);
    pathB.lineTo(276, 9600);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_uniquefx_net_442(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(960, 306);
    path.lineTo(960, 305);
    path.lineTo(1000, 305);
    path.lineTo(1000, 306.708527f);
    path.lineTo(960, 306);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(960, 305);
    pathB.lineTo(958.997253f, 306.002747f);
    pathB.lineTo(1017, 307);
    pathB.lineTo(1019, 305);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kitcheninspirations_wordpress_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(47.1666679f, 19651.334f);
    path.lineTo(65.8333359f, 19651.332f);
    path.lineTo(65.8333359f, 19651.5f);
    path.lineTo(47.1666679f, 19651.5f);
    path.lineTo(47.1666679f, 19651.334f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(47.1666679f, 19651.5f);
    pathB.lineTo(47.1666679f, 19651.332f);
    pathB.lineTo(65.8333359f, 19651.334f);
    pathB.lineTo(65.8333359f, 19651.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_educationalcraft_com_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(941, 1494);
    path.lineTo(941, 1464);
    path.lineTo(985, 1464);
    path.lineTo(985, 1494);
    path.lineTo(941, 1494);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(979.211975f, 1480.45496f);
    pathB.cubicTo(979.211975f, 1480.45496f, 976.348999f, 1479.68506f, 977.495972f, 1475.59497f);
    pathB.cubicTo(977.497009f, 1475.59497f, 981.072021f, 1477.88501f, 979.211975f, 1480.45496f);
    pathB.close();
    pathB.moveTo(977.854004f, 1484.453f);
    pathB.cubicTo(977.854004f, 1484.453f, 975.265991f, 1483.26099f, 976.713989f, 1479.35205f);
    pathB.cubicTo(976.713989f, 1479.35303f, 979.84198f, 1482.23499f, 977.854004f, 1484.453f);
    pathB.close();
    pathB.moveTo(980.226013f, 1476.229f);
    pathB.cubicTo(980.226013f, 1476.229f, 977.078003f, 1476.349f, 977.234985f, 1471.97095f);
    pathB.cubicTo(977.234985f, 1471.97095f, 980.666992f, 1473.12903f, 980.226013f, 1476.229f);
    pathB.close();
    pathB.moveTo(984.546021f, 1478.31494f);
    pathB.cubicTo(984.546021f, 1478.31494f, 983.187988f, 1481.93396f, 980.026001f, 1481.276f);
    pathB.cubicTo(980.026978f, 1481.276f, 979.554993f, 1478.38904f, 984.546021f, 1478.31494f);
    pathB.close();
    pathB.moveTo(978.989014f, 1484.198f);
    pathB.cubicTo(978.989014f, 1484.198f, 979.094971f, 1481.33496f, 983.786011f, 1481.823f);
    pathB.cubicTo(983.786011f, 1481.823f, 982.070007f, 1485.49805f, 978.989014f, 1484.198f);
    pathB.close();
    pathB.moveTo(976.393005f, 1486.86804f);
    pathB.cubicTo(976.393005f, 1486.86804f, 976.719971f, 1484.06494f, 981.679016f, 1485.37f);
    pathB.cubicTo(981.679016f, 1485.37f, 979.169983f, 1488.40796f, 976.393005f, 1486.86804f);
    pathB.close();
    pathB.moveTo(969.156982f, 1490.40002f);
    pathB.cubicTo(969.156982f, 1490.40002f, 971.478027f, 1488.23596f, 974.869995f, 1491.21399f);
    pathB.cubicTo(974.869995f, 1491.21497f, 970.828003f, 1493.026f, 969.156982f, 1490.40002f);
    pathB.close();
    pathB.moveTo(972.825012f, 1483.93701f);
    pathB.cubicTo(972.825012f, 1483.93701f, 973.971985f, 1487.98401f, 971.161987f, 1488.94604f);
    pathB.cubicTo(971.161987f, 1488.94495f, 969.278015f, 1486.37097f, 972.825012f, 1483.93701f);
    pathB.close();
    pathB.moveTo(965.60199f, 1489.98499f);
    pathB.cubicTo(965.60199f, 1489.98499f, 964.879028f, 1487.19202f, 969.864014f, 1486.75f);
    pathB.cubicTo(969.864014f, 1486.75f, 968.749023f, 1490.672f, 965.60199f, 1489.98499f);
    pathB.close();
    pathB.moveTo(970.666992f, 1492.81604f);
    pathB.cubicTo(970.666992f, 1492.81604f, 967.327026f, 1494.49695f, 964.999023f, 1491.56299f);
    pathB.cubicTo(964.999023f, 1491.56299f, 967.304016f, 1489.43896f, 970.666992f, 1492.81604f);
    pathB.close();
    pathB.moveTo(968.343994f, 1481.53796f);
    pathB.cubicTo(971.573975f, 1479.94995f, 971.687988f, 1476.78601f, 971.687988f, 1476.78601f);
    pathB.lineTo(971.393982f, 1466.83398f);
    pathB.lineTo(954.960999f, 1466.83398f);
    pathB.lineTo(954.666016f, 1476.78601f);
    pathB.cubicTo(954.666016f, 1476.78601f, 954.780029f, 1479.94995f, 958.008972f, 1481.53796f);
    pathB.cubicTo(960.781006f, 1482.90295f, 962.166992f, 1484.77698f, 962.166992f, 1484.77698f);
    pathB.cubicTo(962.166992f, 1484.77698f, 962.747986f, 1485.70105f, 963.177979f, 1485.70105f);
    pathB.cubicTo(963.606995f, 1485.70105f, 964.185974f, 1484.77698f, 964.185974f, 1484.77698f);
    pathB.cubicTo(964.185974f, 1484.77698f, 965.573975f, 1482.90295f, 968.343994f, 1481.53796f);
    pathB.close();
    pathB.moveTo(963.215027f, 1486.67004f);
    pathB.cubicTo(962.744995f, 1486.67004f, 962.106995f, 1485.65405f, 962.106995f, 1485.65405f);
    pathB.cubicTo(962.106995f, 1485.65405f, 960.585022f, 1483.59595f, 957.539001f, 1482.09705f);
    pathB.cubicTo(953.991028f, 1480.35205f, 953.867004f, 1476.87598f, 953.867004f, 1476.87598f);
    pathB.lineTo(954.190002f, 1465.94397f);
    pathB.lineTo(972.23999f, 1465.94397f);
    pathB.lineTo(972.565002f, 1476.87695f);
    pathB.cubicTo(972.565002f, 1476.87695f, 972.440979f, 1480.35303f, 968.891968f, 1482.09802f);
    pathB.cubicTo(965.846008f, 1483.59705f, 964.325012f, 1485.65503f, 964.325012f, 1485.65503f);
    pathB.cubicTo(964.325012f, 1485.65503f, 963.687012f, 1486.67004f, 963.215027f, 1486.67004f);
    pathB.close();
    pathB.moveTo(960.68103f, 1489.98499f);
    pathB.cubicTo(957.533997f, 1490.672f, 956.417969f, 1486.75f, 956.417969f, 1486.75f);
    pathB.cubicTo(961.403015f, 1487.19202f, 960.68103f, 1489.98499f, 960.68103f, 1489.98499f);
    pathB.close();
    pathB.moveTo(963.143005f, 1489.59802f);
    pathB.cubicTo(963.763f, 1489.59802f, 964.265015f, 1490.09998f, 964.265015f, 1490.72095f);
    pathB.cubicTo(964.265015f, 1491.34204f, 963.763f, 1491.84399f, 963.143005f, 1491.84399f);
    pathB.cubicTo(962.521973f, 1491.84399f, 962.02002f, 1491.34204f, 962.02002f, 1490.72095f);
    pathB.cubicTo(962.02002f, 1490.09998f, 962.521973f, 1489.59802f, 963.143005f, 1489.59802f);
    pathB.close();
    pathB.moveTo(961.283997f, 1491.56299f);
    pathB.cubicTo(958.953979f, 1494.49695f, 955.61499f, 1492.81604f, 955.61499f, 1492.81604f);
    pathB.cubicTo(958.97699f, 1489.43896f, 961.283997f, 1491.56299f, 961.283997f, 1491.56299f);
    pathB.close();
    pathB.moveTo(957.127014f, 1490.40002f);
    pathB.cubicTo(955.455017f, 1493.026f, 951.414001f, 1491.21399f, 951.414001f, 1491.21399f);
    pathB.cubicTo(954.802979f, 1488.23596f, 957.127014f, 1490.40002f, 957.127014f, 1490.40002f);
    pathB.close();
    pathB.moveTo(949.890991f, 1486.86804f);
    pathB.cubicTo(947.112976f, 1488.40796f, 944.604004f, 1485.37f, 944.604004f, 1485.37f);
    pathB.cubicTo(949.562012f, 1484.06494f, 949.890991f, 1486.86804f, 949.890991f, 1486.86804f);
    pathB.close();
    pathB.moveTo(947.070984f, 1480.45496f);
    pathB.cubicTo(945.211975f, 1477.88501f, 948.786011f, 1475.59497f, 948.786011f, 1475.59497f);
    pathB.cubicTo(949.934021f, 1479.68506f, 947.070984f, 1480.45496f, 947.070984f, 1480.45496f);
    pathB.close();
    pathB.moveTo(946.054016f, 1476.229f);
    pathB.cubicTo(945.61499f, 1473.12903f, 949.046997f, 1471.97095f, 949.046997f, 1471.97095f);
    pathB.cubicTo(949.205994f, 1476.349f, 946.054016f, 1476.229f, 946.054016f, 1476.229f);
    pathB.close();
    pathB.moveTo(948.427002f, 1484.453f);
    pathB.cubicTo(946.440002f, 1482.23499f, 949.567993f, 1479.35205f, 949.567993f, 1479.35205f);
    pathB.cubicTo(951.015991f, 1483.26099f, 948.427002f, 1484.453f, 948.427002f, 1484.453f);
    pathB.close();
    pathB.moveTo(947.294006f, 1484.198f);
    pathB.cubicTo(944.210999f, 1485.49805f, 942.495972f, 1481.823f, 942.495972f, 1481.823f);
    pathB.cubicTo(947.187988f, 1481.33496f, 947.294006f, 1484.198f, 947.294006f, 1484.198f);
    pathB.close();
    pathB.moveTo(946.255005f, 1481.276f);
    pathB.cubicTo(943.094971f, 1481.93396f, 941.736023f, 1478.31494f, 941.736023f, 1478.31494f);
    pathB.cubicTo(946.728027f, 1478.38904f, 946.255005f, 1481.276f, 946.255005f, 1481.276f);
    pathB.close();
    pathB.moveTo(945.312988f, 1478.18005f);
    pathB.cubicTo(942.052979f, 1477.80103f, 942.651001f, 1473.87805f, 942.651001f, 1473.87805f);
    pathB.cubicTo(946.562988f, 1475.66199f, 945.312988f, 1478.18005f, 945.312988f, 1478.18005f);
    pathB.close();
    pathB.moveTo(945.382019f, 1474.328f);
    pathB.cubicTo(942.924011f, 1472.729f, 944.492004f, 1469.48706f, 944.492004f, 1469.48706f);
    pathB.cubicTo(947.388977f, 1471.95703f, 945.382019f, 1474.328f, 945.382019f, 1474.328f);
    pathB.close();
    pathB.moveTo(946.797974f, 1470.27405f);
    pathB.cubicTo(944.664978f, 1467.90198f, 947.083984f, 1465.50598f, 947.083984f, 1465.50598f);
    pathB.cubicTo(949.145996f, 1468.82605f, 946.797974f, 1470.27405f, 946.797974f, 1470.27405f);
    pathB.close();
    pathB.moveTo(947.392029f, 1471.64197f);
    pathB.cubicTo(947.624023f, 1468.56299f, 951.361023f, 1468.29199f, 951.361023f, 1468.29199f);
    pathB.cubicTo(950.554016f, 1471.98499f, 947.392029f, 1471.64197f, 947.392029f, 1471.64197f);
    pathB.close();
    pathB.moveTo(948.64801f, 1468.15002f);
    pathB.cubicTo(948.638977f, 1465.22095f, 952.265991f, 1464.46399f, 952.265991f, 1464.46399f);
    pathB.cubicTo(951.672974f, 1468.53101f, 948.64801f, 1468.15002f, 948.64801f, 1468.15002f);
    pathB.close();
    pathB.moveTo(951.176025f, 1486.97803f);
    pathB.cubicTo(948.963013f, 1484.62f, 951.361023f, 1481.77698f, 951.361023f, 1481.77698f);
    pathB.cubicTo(953.734985f, 1485.48596f, 951.176025f, 1486.97803f, 951.176025f, 1486.97803f);
    pathB.close();
    pathB.moveTo(947.51001f, 1488.53101f);
    pathB.cubicTo(947.51001f, 1488.53101f, 951.596985f, 1486.32202f, 953.234009f, 1489.08997f);
    pathB.cubicTo(953.234009f, 1489.08997f, 951.158997f, 1491.03601f, 947.51001f, 1488.53101f);
    pathB.close();
    pathB.moveTo(955.120972f, 1488.94495f);
    pathB.cubicTo(952.309021f, 1487.98303f, 953.458984f, 1483.93604f, 953.458984f, 1483.93604f);
    pathB.cubicTo(957.004028f, 1486.37097f, 955.120972f, 1488.94495f, 955.120972f, 1488.94495f);
    pathB.close();
    pathB.moveTo(978.770996f, 1488.53101f);
    pathB.cubicTo(975.122986f, 1491.03601f, 973.047974f, 1489.08997f, 973.047974f, 1489.08997f);
    pathB.cubicTo(974.684998f, 1486.32202f, 978.770996f, 1488.53101f, 978.770996f, 1488.53101f);
    pathB.close();
    pathB.moveTo(975.106995f, 1486.97803f);
    pathB.cubicTo(975.106995f, 1486.97803f, 972.546997f, 1485.48706f, 974.919983f, 1481.77698f);
    pathB.cubicTo(974.919983f, 1481.776f, 977.31897f, 1484.61902f, 975.106995f, 1486.97803f);
    pathB.close();
    pathB.moveTo(974.016968f, 1464.46399f);
    pathB.cubicTo(974.016968f, 1464.46399f, 977.643982f, 1465.22095f, 977.633972f, 1468.15002f);
    pathB.cubicTo(977.633972f, 1468.15002f, 974.611023f, 1468.53101f, 974.016968f, 1464.46399f);
    pathB.close();
    pathB.moveTo(974.919983f, 1468.29199f);
    pathB.cubicTo(974.919983f, 1468.29199f, 978.658997f, 1468.56299f, 978.890015f, 1471.64197f);
    pathB.cubicTo(978.890015f, 1471.64197f, 975.72699f, 1471.98499f, 974.919983f, 1468.29199f);
    pathB.close();
    pathB.moveTo(979.197998f, 1465.50598f);
    pathB.cubicTo(979.197998f, 1465.50598f, 981.619019f, 1467.90198f, 979.481995f, 1470.27405f);
    pathB.cubicTo(979.481995f, 1470.27405f, 977.138f, 1468.82605f, 979.197998f, 1465.50598f);
    pathB.close();
    pathB.moveTo(980.900024f, 1474.328f);
    pathB.cubicTo(980.900024f, 1474.328f, 978.893005f, 1471.95703f, 981.791016f, 1469.48706f);
    pathB.cubicTo(981.791016f, 1469.48596f, 983.358032f, 1472.729f, 980.900024f, 1474.328f);
    pathB.close();
    pathB.moveTo(980.968994f, 1478.18005f);
    pathB.cubicTo(980.968994f, 1478.18005f, 979.718018f, 1475.66199f, 983.632019f, 1473.87805f);
    pathB.cubicTo(983.632019f, 1473.87805f, 984.229004f, 1477.80103f, 980.968994f, 1478.18005f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_narayana_publishers_com_194(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1083.34314f, 445.65686f);
    path.quadTo(1081, 443.313721f, 1081, 440);
    path.lineTo(1257, 440);
    path.quadTo(1257, 443.313721f, 1254.65686f, 445.65686f);
    path.quadTo(1252.31372f, 448, 1249, 448);
    path.lineTo(1089, 448);
    path.quadTo(1085.68628f, 448, 1083.34314f, 445.65686f);
    path.close();
    path.moveTo(1083, 441);
    path.lineTo(1255, 441);
    path.quadTo(1255, 443.071075f, 1253.53552f, 444.535522f);
    path.quadTo(1252.07104f, 446, 1250, 446);
    path.lineTo(1088, 446);
    path.quadTo(1085.92896f, 446, 1084.46448f, 444.535522f);
    path.quadTo(1083, 443.071075f, 1083, 441);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1081, 440);
    pathB.lineTo(1082, 440);
    pathB.lineTo(1090.01001f, 448);
    pathB.lineTo(1081, 448);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_17(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(170.340179f, 176);
    path.lineTo(166, 176);
    path.quadTo(161.964188f, 176, 158.299957f, 176.896912f);
    path.quadTo(154.678162f, 177.952271f, 151.183014f, 179.9702f);
    path.lineTo(150.316986f, 180.4702f);
    path.quadTo(146.175812f, 182.861099f, 143.115921f, 186.081696f);
    path.quadTo(140.693939f, 188.70134f, 138.99472f, 191.620407f);
    path.quadTo(137.316833f, 194.550888f, 136.259338f, 197.957367f);
    path.quadTo(135, 202.217865f, 135, 207);
    path.lineTo(135, 208);
    path.quadTo(135, 212.035751f, 135.896912f, 215.699997f);
    path.quadTo(136.952286f, 219.321869f, 138.9702f, 222.816986f);
    path.lineTo(139.4702f, 223.683014f);
    path.quadTo(141.861099f, 227.824188f, 145.081696f, 230.884079f);
    path.quadTo(147.70134f, 233.306061f, 150.620407f, 235.00528f);
    path.quadTo(153.550888f, 236.683167f, 156.957367f, 237.740662f);
    path.quadTo(161.217865f, 239, 166, 239);
    path.lineTo(170.482162f, 239);
    path.quadTo(176.307037f, 238.210968f, 181.816986f, 235.0298f);
    path.lineTo(182.683014f, 234.5298f);
    path.quadTo(182.686462f, 234.527817f, 182.689896f, 234.525818f);
    path.quadTo(193.804352f, 228.105652f, 197.126709f, 215.70639f);
    path.quadTo(200.450104f, 203.303314f, 194.0298f, 192.183014f);
    path.lineTo(193.5298f, 191.316986f);
    path.quadTo(187.109497f, 180.196686f, 174.706406f, 176.873276f);
    path.quadTo(172.503067f, 176.282898f, 170.340179f, 176);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(139.4702f, 223.683014f);
    pathB.lineTo(138.9702f, 222.816986f);
    pathB.quadTo(132.549896f, 211.696686f, 135.873291f, 199.293594f);
    pathB.quadTo(139.196686f, 186.890503f, 150.316986f, 180.4702f);
    pathB.lineTo(151.183014f, 179.9702f);
    pathB.quadTo(162.303314f, 173.549896f, 174.706406f, 176.873276f);
    pathB.quadTo(187.109497f, 180.196686f, 193.5298f, 191.316986f);
    pathB.lineTo(194.0298f, 192.183014f);
    pathB.quadTo(200.450104f, 203.303314f, 197.126709f, 215.70639f);
    pathB.quadTo(193.803314f, 228.109497f, 182.683014f, 234.5298f);
    pathB.lineTo(181.816986f, 235.0298f);
    pathB.quadTo(170.696686f, 241.450104f, 158.293594f, 238.126709f);
    pathB.quadTo(145.890503f, 234.803314f, 139.4702f, 223.683014f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_swapspacesystems_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(819.050781f, 5539.72412f);
    path.quadTo(819.651672f, 5539.1543f, 820.479858f, 5539.17578f);
    path.lineTo(1191.35278f, 5548.8877f);
    path.quadTo(1192.18091f, 5548.90918f, 1192.7511f, 5549.50977f);
    path.quadTo(1193.32141f, 5550.11133f, 1193.29968f, 5550.93945f);
    path.lineTo(1186.57214f, 5807.85107f);
    path.quadTo(1186.55054f, 5808.6792f, 1185.94958f, 5809.24951f);
    path.quadTo(1185.34863f, 5809.81982f, 1184.52051f, 5809.79834f);
    path.lineTo(813.647705f, 5800.08643f);
    path.quadTo(812.819519f, 5800.06494f, 812.249268f, 5799.46387f);
    path.quadTo(811.679016f, 5798.86279f, 811.700684f, 5798.03467f);
    path.lineTo(818.428162f, 5541.12305f);
    path.quadTo(818.44989f, 5540.29492f, 819.050781f, 5539.72412f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(818.48053f, 5539.12354f);
    pathB.lineTo(1193.35205f, 5548.93994f);
    pathB.lineTo(1186.5199f, 5809.85059f);
    pathB.lineTo(811.648376f, 5800.03418f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kitcheninspirations_wordpress_com_66(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(47.1666679f, 27820.668f);
    path.lineTo(60.8333359f, 27820.668f);
    path.lineTo(60.8333359f, 27820.498f);
    path.lineTo(47.1666679f, 27820.5f);
    path.lineTo(47.1666679f, 27820.668f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(47.1666679f, 27820.668f);
    pathB.lineTo(47.1666679f, 27820.498f);
    pathB.lineTo(60.8333359f, 27820.5f);
    pathB.lineTo(60.8333359f, 27820.668f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_etiqadd_com_2464(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(630.378662f, 1293.42896f);
    path.quadTo(631.257385f, 1292.55029f, 632.5f, 1292.55029f);
    path.quadTo(633.742615f, 1292.55029f, 634.621338f, 1293.42896f);
    path.lineTo(639.571045f, 1298.37866f);
    path.quadTo(640.449768f, 1299.25732f, 640.449707f, 1300.5f);
    path.quadTo(640.449768f, 1301.74268f, 639.571045f, 1302.62134f);
    path.lineTo(634.621338f, 1307.57104f);
    path.quadTo(633.742615f, 1308.44971f, 632.5f, 1308.44971f);
    path.quadTo(631.257385f, 1308.44971f, 630.378662f, 1307.57104f);
    path.lineTo(625.428955f, 1302.62134f);
    path.quadTo(624.550232f, 1301.74268f, 624.550293f, 1300.5f);
    path.quadTo(624.550232f, 1299.25732f, 625.428955f, 1298.37866f);
    path.lineTo(630.378662f, 1293.42896f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(632.5f, 1291.30762f);
    pathB.lineTo(641.692383f, 1300.5f);
    pathB.lineTo(632.5f, 1309.69238f);
    pathB.lineTo(623.307617f, 1300.5f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_narayana_verlag_de_194(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1083.34314f, 513.65686f);
    path.quadTo(1081, 511.313721f, 1081, 508);
    path.lineTo(1257, 508);
    path.quadTo(1257, 511.313721f, 1254.65686f, 513.65686f);
    path.quadTo(1252.31372f, 516, 1249, 516);
    path.lineTo(1089, 516);
    path.quadTo(1085.68628f, 516, 1083.34314f, 513.65686f);
    path.close();
    path.moveTo(1083, 509);
    path.lineTo(1255, 509);
    path.quadTo(1255, 511.071075f, 1253.53552f, 512.535522f);
    path.quadTo(1252.07104f, 514, 1250, 514);
    path.lineTo(1088, 514);
    path.quadTo(1085.92896f, 514, 1084.46448f, 512.535522f);
    path.quadTo(1083, 511.071075f, 1083, 509);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1081, 508);
    pathB.lineTo(1082, 508);
    pathB.lineTo(1090.01001f, 516);
    pathB.lineTo(1081, 516);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_americascup_com_108(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(999.454102f, 689.17157f);
    path.quadTo(1001.172f, 688, 1002.82886f, 688);
    path.lineTo(1013.82886f, 688);
    path.lineTo(1002.17114f, 713);
    path.lineTo(991.171143f, 713);
    path.quadTo(989.514282f, 713, 988.889038f, 711.82843f);
    path.quadTo(988.263794f, 710.65686f, 989.036377f, 709);
    path.lineTo(996.963623f, 692);
    path.quadTo(997.736206f, 690.34314f, 999.454102f, 689.17157f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998.828857f, 688);
    pathB.lineTo(1013.82886f, 688);
    pathB.lineTo(1002.17114f, 713);
    pathB.lineTo(987.171143f, 713);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_vantageproduction_com_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(794.514709f, 759.485291f);
    path.quadTo(791, 755.970581f, 791, 751);
    path.lineTo(1133, 751);
    path.quadTo(1133, 755.970581f, 1129.48523f, 759.485291f);
    path.quadTo(1125.97058f, 763, 1121, 763);
    path.lineTo(803, 763);
    path.quadTo(798.029419f, 763, 794.514709f, 759.485291f);
    path.close();
    path.moveTo(793, 752);
    path.lineTo(1131, 752);
    path.quadTo(1131, 755.727905f, 1128.36401f, 758.363953f);
    path.quadTo(1125.72791f, 761, 1122, 761);
    path.lineTo(802, 761);
    path.quadTo(798.272095f, 761, 795.636047f, 758.363953f);
    path.quadTo(793, 755.727905f, 793, 752);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(791, 751);
    pathB.lineTo(792, 751);
    pathB.lineTo(804.01001f, 763);
    pathB.lineTo(791, 763);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_aceinfographics_com_106(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(166.878677f, 7638.87891f);
    path.quadTo(166, 7639.75732f, 166, 7641);
    path.lineTo(166, 11577);
    path.quadTo(166, 11578.2422f, 166.878677f, 11579.1211f);
    path.quadTo(167.388f, 11579.6309f, 168.019989f, 11579.8447f);
    path.lineTo(168.019974f, 11576.2979f);
    path.quadTo(168, 11576.1533f, 168, 11576);
    path.lineTo(168, 7642);
    path.lineTo(168.000015f, 7641.99316f);
    path.lineTo(168, 7640);
    path.lineTo(166.878677f, 7638.87891f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(166, 7638);
    pathB.lineTo(168.020004f, 7635.97998f);
    pathB.lineTo(168, 11578);
    pathB.lineTo(166, 11580);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_tcmevents_org_13(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(465.951904f, 547.960144f);
    path.quadTo(465.66571f, 546.867371f, 465.404938f, 546);
    path.lineTo(465.504089f, 546);
    path.quadTo(465.670349f, 546.601257f, 465.84668f, 547.288391f);
    path.quadTo(467.274506f, 552.852356f, 468.506836f, 560.718567f);
    path.quadTo(467.336121f, 553.24585f, 465.951904f, 547.960144f);
    path.close();
    path.moveTo(470.591064f, 574.024353f);
    path.quadTo(474.844055f, 601.176025f, 471.728271f, 620.364502f);
    path.quadTo(470.567017f, 627.515991f, 468.635742f, 632);
    path.lineTo(469.106812f, 632);
    path.quadTo(470.791504f, 627.638672f, 471.833496f, 621.036255f);
    path.quadTo(474.905701f, 601.569519f, 470.591064f, 574.024353f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(322.992462f, 541.475708f);
    pathB.lineTo(465.531616f, 541.724426f);
    pathB.lineTo(468.507751f, 560.724426f);
    pathB.lineTo(325.968597f, 560.475708f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_paseoitaigara_com_br_56(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(633.147217f, 1247);
    path.lineTo(718, 1162.14722f);
    path.lineTo(802.852783f, 1247);
    path.lineTo(718, 1331.85278f);
    path.lineTo(633.147217f, 1247);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(635.268494f, 1244.87866f);
    pathB.lineTo(715.878662f, 1164.26855f);
    pathB.quadTo(716.757385f, 1163.38989f, 718, 1163.38989f);
    pathB.quadTo(719.242615f, 1163.38989f, 720.121338f, 1164.26855f);
    pathB.lineTo(800.731506f, 1244.87866f);
    pathB.quadTo(801.610168f, 1245.75732f, 801.610168f, 1247);
    pathB.quadTo(801.610229f, 1248.24268f, 800.731445f, 1249.12134f);
    pathB.lineTo(720.121338f, 1329.73145f);
    pathB.quadTo(719.242676f, 1330.61011f, 718, 1330.61011f);
    pathB.quadTo(716.757385f, 1330.61011f, 715.878723f, 1329.73145f);
    pathB.lineTo(635.268555f, 1249.12134f);
    pathB.quadTo(634.389832f, 1248.24268f, 634.389832f, 1247);
    pathB.quadTo(634.389832f, 1245.75732f, 635.268494f, 1244.87866f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_mortgagemarketguide_com_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(816.514709f, 781.485291f);
    path.quadTo(813, 777.970581f, 813, 773);
    path.lineTo(1133, 773);
    path.quadTo(1133, 777.970581f, 1129.48523f, 781.485291f);
    path.quadTo(1125.97058f, 785, 1121, 785);
    path.lineTo(825, 785);
    path.quadTo(820.029419f, 785, 816.514709f, 781.485291f);
    path.close();
    path.moveTo(815, 774);
    path.lineTo(1131, 774);
    path.quadTo(1131, 777.727905f, 1128.36401f, 780.363953f);
    path.quadTo(1125.72791f, 783, 1122, 783);
    path.lineTo(824, 783);
    path.quadTo(820.272095f, 783, 817.636047f, 780.363953f);
    path.quadTo(815, 777.727905f, 815, 774);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(813, 773);
    pathB.lineTo(814, 773);
    pathB.lineTo(826.01001f, 785);
    pathB.lineTo(813, 785);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_9to5mac_com_64(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(365, 5101);
    path.lineTo(365, 5082);
    path.lineTo(366, 5083);
    path.lineTo(367, 5092.96631f);
    path.lineTo(367, 5100);
    path.quadTo(367, 5101.50537f, 367.967712f, 5102.61084f);
    path.lineTo(368.278717f, 5105.71045f);
    path.quadTo(367.277618f, 5105.34863f, 366.464478f, 5104.53564f);
    path.quadTo(365, 5103.07129f, 365, 5101);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(365, 5082);
    pathB.lineTo(365.848175f, 5081.15186f);
    pathB.lineTo(368, 5103);
    pathB.lineTo(365, 5106);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_googleventures_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(725.911682f, 898.767456f);
    path.lineTo(741.232544f, 885.911682f);
    path.lineTo(754.088318f, 901.232544f);
    path.lineTo(738.767456f, 914.088318f);
    path.lineTo(725.911682f, 898.767456f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(728.37677f, 870.59082f);
    pathB.lineTo(754.088257f, 901.232605f);
    pathB.lineTo(738.767395f, 914.088379f);
    pathB.lineTo(713.055908f, 883.446594f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_devbridge_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(4915, 1523);
    path.quadTo(4887.24756f, 1523, 4867.62402f, 1542.6239f);
    path.quadTo(4848, 1562.24768f, 4848, 1590);
    path.quadTo(4848, 1617.75232f, 4867.62402f, 1637.3761f);
    path.quadTo(4887.24756f, 1657, 4915, 1657);
    path.quadTo(4942.75244f, 1657, 4962.37598f, 1637.3761f);
    path.quadTo(4982, 1617.75232f, 4982, 1590);
    path.quadTo(4982, 1562.24768f, 4962.37598f, 1542.6239f);
    path.quadTo(4942.75244f, 1523, 4915, 1523);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(4981.99902f, 1590);
    pathB.quadTo(4981.99902f, 1617.75232f, 4962.375f, 1637.3761f);
    pathB.quadTo(4942.75146f, 1657, 4914.99902f, 1657);
    pathB.quadTo(4887.24658f, 1657, 4867.62305f, 1637.3761f);
    pathB.quadTo(4847.99902f, 1617.75232f, 4847.99902f, 1590);
    pathB.quadTo(4847.99902f, 1562.24768f, 4867.62305f, 1542.6239f);
    pathB.quadTo(4887.24658f, 1523, 4914.99902f, 1523);
    pathB.quadTo(4942.75146f, 1523, 4962.375f, 1542.6239f);
    pathB.quadTo(4981.99902f, 1562.24768f, 4981.99902f, 1590);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alamdi_com_3(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(10210.8789f, 5315.87891f);
    path.quadTo(10211.7578f, 5315, 10213, 5315);
    path.lineTo(10230, 5315);
    path.quadTo(10231.2422f, 5315, 10232.1211f, 5315.87891f);
    path.quadTo(10233, 5316.75732f, 10233, 5318);
    path.lineTo(10233, 5338);
    path.quadTo(10233, 5339.24268f, 10232.1211f, 5340.12109f);
    path.quadTo(10231.2422f, 5341, 10230, 5341);
    path.lineTo(10213, 5341);
    path.quadTo(10211.7578f, 5341, 10210.8789f, 5340.12109f);
    path.quadTo(10210, 5339.24268f, 10210, 5338);
    path.lineTo(10210, 5318);
    path.quadTo(10210, 5316.75732f, 10210.8789f, 5315.87891f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(10213, 5315);
    pathB.lineTo(10230, 5315);
    pathB.cubicTo(10231.6572f, 5315, 10233, 5316.34326f, 10233, 5318);
    pathB.lineTo(10233, 5338);
    pathB.cubicTo(10233, 5339.10449f, 10231.6572f, 5340, 10230, 5340);
    pathB.lineTo(10213, 5340);
    pathB.cubicTo(10211.3428f, 5340, 10210, 5339.10449f, 10210, 5338);
    pathB.lineTo(10210, 5318);
    pathB.cubicTo(10210, 5316.34326f, 10211.3428f, 5315, 10213, 5315);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_familysurvivalprotocol_wordpress_com_61(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 14557);
    path.lineTo(165, 14557);
    path.lineTo(165, 14555.9902f);
    path.lineTo(143, 14556);
    path.lineTo(143, 14557);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 14557);
    pathB.lineTo(143, 14555.9902f);
    pathB.lineTo(165, 14556);
    pathB.lineTo(165, 14557);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_firstunitedbank_com_19(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(808.585815f, 11673.5859f);
    path.quadTo(809.17157f, 11673, 810, 11673);
    path.lineTo(1032, 11673);
    path.quadTo(1038.21326f, 11673, 1042.60657f, 11677.3936f);
    path.quadTo(1047, 11681.7871f, 1047, 11688);
    path.quadTo(1047, 11682.2012f, 1042.60657f, 11678.1006f);
    path.quadTo(1038.21326f, 11674, 1032, 11674);
    path.lineTo(810, 11674);
    path.quadTo(809.585815f, 11674, 809.292908f, 11674.293f);
    path.quadTo(809, 11674.5859f, 809, 11675);
    path.lineTo(809, 11701);
    path.quadTo(809, 11701.4141f, 809.292908f, 11701.707f);
    path.quadTo(809.585815f, 11702, 810, 11702);
    path.lineTo(1032, 11702);
    path.quadTo(1038.21326f, 11702, 1042.60657f, 11697.8994f);
    path.quadTo(1047, 11693.7988f, 1047, 11688);
    path.quadTo(1047, 11694.2129f, 1042.60657f, 11698.6064f);
    path.quadTo(1038.21326f, 11703, 1032, 11703);
    path.lineTo(810, 11703);
    path.quadTo(809.17157f, 11703, 808.585815f, 11702.4141f);
    path.quadTo(808, 11701.8281f, 808, 11701);
    path.lineTo(808, 11675);
    path.quadTo(808, 11674.1719f, 808.585815f, 11673.5859f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(808, 11703);
    pathB.lineTo(809.5f, 11701.5f);
    pathB.lineTo(1062.91907f, 11687.0811f);
    pathB.lineTo(1047, 11703);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_shinydemos_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(205.884888f, 648.203857f);
    path.lineTo(771.570374f, 82.5183716f);
    path.lineTo(1110.98169f, 421.929626f);
    path.lineTo(545.296143f, 987.615112f);
    path.lineTo(205.884888f, 648.203857f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(771.570374f, 82.5183716f);
    pathB.lineTo(1110.98169f, 421.929626f);
    pathB.lineTo(545.296204f, 987.615051f);
    pathB.lineTo(205.884949f, 648.203796f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lptemp_com_3(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(78.6429825f, 1394.30969f);
    path.quadTo(79.6192932f, 1393.33337f, 81.0000076f, 1393.33337f);
    path.lineTo(341, 1393.33337f);
    path.quadTo(342.380707f, 1393.33337f, 343.357025f, 1394.30969f);
    path.quadTo(344.333344f, 1395.28601f, 344.333344f, 1396.66675f);
    path.lineTo(344.333344f, 1465.66663f);
    path.quadTo(344.333344f, 1467.04736f, 343.357025f, 1468.02368f);
    path.quadTo(342.380707f, 1469, 341, 1469);
    path.lineTo(81.0000076f, 1469);
    path.quadTo(79.6192932f, 1469, 78.6429825f, 1468.02368f);
    path.quadTo(77.6666718f, 1467.04736f, 77.6666718f, 1465.66663f);
    path.lineTo(77.6666718f, 1396.66675f);
    path.quadTo(77.6666718f, 1395.28601f, 78.6429825f, 1394.30969f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(81, 1393.33337f);
    pathB.lineTo(341, 1393.33337f);
    pathB.cubicTo(342.840942f, 1393.33337f, 344.333344f, 1394.82568f, 344.333344f, 1396.66675f);
    pathB.lineTo(344.333344f, 1465.66675f);
    pathB.cubicTo(344.333344f, 1467.32361f, 342.840942f, 1468.66675f, 341, 1468.66675f);
    pathB.lineTo(81, 1468.66675f);
    pathB.cubicTo(79.15905f, 1468.66675f, 77.6666718f, 1467.32361f, 77.6666718f, 1465.66675f);
    pathB.lineTo(77.6666718f, 1396.66675f);
    pathB.cubicTo(77.6666718f, 1394.82568f, 79.15905f, 1393.33337f, 81, 1393.33337f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_shinydemos_com_15(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 310.947968f);
    path.lineTo(771.570374f, 82.5183716f);
    path.lineTo(205.884888f, 648.203857f);
    path.lineTo(448.68103f, 891);
    path.lineTo(641.911255f, 891);
    path.lineTo(1000, 532.911316f);
    path.lineTo(1000, 310.947968f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(771.570374f, 82.5183716f);
    pathB.lineTo(1110.98169f, 421.929626f);
    pathB.lineTo(545.296204f, 987.615051f);
    pathB.lineTo(205.884949f, 648.203796f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lptemp_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(78.6429825f, 3150.97632f);
    path.quadTo(79.6192932f, 3150, 81.0000076f, 3150);
    path.lineTo(341, 3150);
    path.quadTo(342.380707f, 3150, 343.357025f, 3150.97632f);
    path.quadTo(344.333344f, 3151.95264f, 344.333344f, 3153.33325f);
    path.lineTo(344.333344f, 5205.3335f);
    path.quadTo(344.333344f, 5206.71436f, 343.357025f, 5207.69092f);
    path.quadTo(342.380707f, 5208.66699f, 341, 5208.66699f);
    path.lineTo(81.0000076f, 5208.66699f);
    path.quadTo(79.6192932f, 5208.66699f, 78.6429825f, 5207.69092f);
    path.quadTo(77.6666718f, 5206.71436f, 77.6666718f, 5205.3335f);
    path.lineTo(77.6666718f, 3153.33325f);
    path.quadTo(77.6666718f, 3151.95264f, 78.6429825f, 3150.97632f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(81, 3150);
    pathB.lineTo(341, 3150);
    pathB.cubicTo(342.840942f, 3150, 344.333344f, 3151.49268f, 344.333344f, 3153.3335f);
    pathB.lineTo(344.333344f, 5205.3335f);
    pathB.cubicTo(344.333344f, 5206.99023f, 342.840942f, 5208.3335f, 341, 5208.3335f);
    pathB.lineTo(81, 5208.3335f);
    pathB.cubicTo(79.15905f, 5208.3335f, 77.6666718f, 5206.99023f, 77.6666718f, 5205.3335f);
    pathB.lineTo(77.6666718f, 3153.3335f);
    pathB.cubicTo(77.6666718f, 3151.49268f, 79.15905f, 3150, 81, 3150);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_educationalcraft_com_4a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(941, 1494);
    path.lineTo(941, 1464);
    path.lineTo(985, 1464);
    path.lineTo(985, 1494);
    path.lineTo(941, 1494);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);

pathB.moveTo(984.546021f, 1478.31494f);
pathB.cubicTo(984.546021f, 1478.31494f, 984.543213f, 1478.32239f, 984.537598f, 1478.33655f);
pathB.cubicTo(984.419006f, 1478.63477f, 983.044373f, 1481.90405f, 980.026001f, 1481.276f);
pathB.cubicTo(980.026001f, 1481.276f, 980.02594f, 1481.27576f, 980.025879f, 1481.27527f);
pathB.cubicTo(980.018494f, 1481.22131f, 979.602478f, 1478.38831f, 984.546021f, 1478.31494f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);

}

static void skpwww_woothemes_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x44472795), SkBits2Float(0x455cdb8d));  // 796.618f, 3533.72f
path.lineTo(SkBits2Float(0x44467c27), SkBits2Float(0x455cdb8d));  // 793.94f, 3533.72f
path.lineTo(SkBits2Float(0x44467c27), SkBits2Float(0x455d055d));  // 793.94f, 3536.34f
path.lineTo(SkBits2Float(0x44472795), SkBits2Float(0x455d055d));  // 796.618f, 3536.34f
path.lineTo(SkBits2Float(0x44472795), SkBits2Float(0x455cdb8d));  // 796.618f, 3533.72f
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x4446861c), SkBits2Float(0x455cdb8d));  // 794.095f, 3533.72f
path.cubicTo(SkBits2Float(0x4446a0d8), SkBits2Float(0x455cefbb), SkBits2Float(0x444727a5), SkBits2Float(0x455d055d), SkBits2Float(0x444727a5), SkBits2Float(0x455d055d));  // 794.513f, 3534.98f, 796.619f, 3536.34f, 796.619f, 3536.34f
path.cubicTo(SkBits2Float(0x4446c5b0), SkBits2Float(0x455cf8a4), SkBits2Float(0x444693af), SkBits2Float(0x455cedad), SkBits2Float(0x44467c1b), SkBits2Float(0x455ce4b8));  // 795.089f, 3535.54f, 794.308f, 3534.85f, 793.939f, 3534.29f
path.lineTo(SkBits2Float(0x44467d70), SkBits2Float(0x455ce016));  // 793.96f, 3534.01f
path.cubicTo(SkBits2Float(0x44467fa9), SkBits2Float(0x455cde82), SkBits2Float(0x444682b5), SkBits2Float(0x455cdd03), SkBits2Float(0x4446861c), SkBits2Float(0x455cdb8d));  // 793.995f, 3533.91f, 794.042f, 3533.81f, 794.095f, 3533.72f
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void skpwww_gorcraft_ru_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x44924000), SkBits2Float(0x458e7800));  // 1170, 4559
path.conicTo(SkBits2Float(0x44930000), SkBits2Float(0x458e7800), SkBits2Float(0x44930000), SkBits2Float(0x458ea800), SkBits2Float(0x3f3504f3));  // 1176, 4559, 1176, 4565, 0.707107f
path.lineTo(SkBits2Float(0x44930000), SkBits2Float(0x458f7000));  // 1176, 4590
path.conicTo(SkBits2Float(0x44930000), SkBits2Float(0x458f9800), SkBits2Float(0x44926000), SkBits2Float(0x458f9800), SkBits2Float(0x3f3504f3));  // 1176, 4595, 1171, 4595, 0.707107f
path.lineTo(SkBits2Float(0x42a60000), SkBits2Float(0x458f9800));  // 83, 4595
path.conicTo(SkBits2Float(0x429c0471), SkBits2Float(0x458f9800), SkBits2Float(0x429c0000), SkBits2Float(0x458f700c), SkBits2Float(0x3f352d2d));  // 78.0087f, 4595, 78, 4590.01f, 0.707721f
path.lineTo(SkBits2Float(0x429c0000), SkBits2Float(0x458ea800));  // 78, 4565
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458e7800), SkBits2Float(0x42a80000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 78, 4559, 84, 4559, 0.707107f
path.lineTo(SkBits2Float(0x44924000), SkBits2Float(0x458e7800));  // 1170, 4559
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x429c0000), SkBits2Float(0x458f7000));  // 78, 4590
path.lineTo(SkBits2Float(0x429c0000), SkBits2Float(0x458ea800));  // 78, 4565
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458e7800), SkBits2Float(0x42a80000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 78, 4559, 84, 4559, 0.707107f
path.lineTo(SkBits2Float(0x431e0000), SkBits2Float(0x458e7800));  // 158, 4559
path.conicTo(SkBits2Float(0x431e0000), SkBits2Float(0x458e7800), SkBits2Float(0x431e0000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 158, 4559, 158, 4559, 0.707107f
path.lineTo(SkBits2Float(0x431e0000), SkBits2Float(0x458fa000));  // 158, 4596
path.conicTo(SkBits2Float(0x431e0000), SkBits2Float(0x458fa000), SkBits2Float(0x431e0000), SkBits2Float(0x458fa000), SkBits2Float(0x3f3504f3));  // 158, 4596, 158, 4596, 0.707107f
path.lineTo(SkBits2Float(0x42a80000), SkBits2Float(0x458fa000));  // 84, 4596
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458fa000), SkBits2Float(0x429c0000), SkBits2Float(0x458f7000), SkBits2Float(0x3f3504f3));  // 78, 4596, 78, 4590, 0.707107f
path.close();

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
}

static void skpwww_neda_net_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x447a0000), SkBits2Float(0x00000000));  // 1000, 0
path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000));  // 0, 0
path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x44b6e000));  // 0, 1463
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x44b6e000));  // 1000, 1463
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x00000000));  // 1000, 0
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x366a410f), SkBits2Float(0x43a38000));  // 3.49066e-06f, 327
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x43a38001));  // 1000, 327
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x4435c000));  // 1000, 727
path.lineTo(SkBits2Float(0xb66a410d), SkBits2Float(0x4435c000));  // -3.49066e-06f, 727
path.lineTo(SkBits2Float(0x366a410f), SkBits2Float(0x43a38000));  // 3.49066e-06f, 327
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

// "http___www_neda_net.skp" dir=87
static void skpwww_neda_net_2(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x442fc000), SkBits2Float(0x4546a000));  // 703, 3178
path.lineTo(SkBits2Float(0x441f4000), SkBits2Float(0x4546a000));  // 637, 3178
path.lineTo(SkBits2Float(0x441f4000), SkBits2Float(0x454ab000));  // 637, 3243
path.lineTo(SkBits2Float(0x442fc000), SkBits2Float(0x454ab000));  // 703, 3243
path.lineTo(SkBits2Float(0x442fc000), SkBits2Float(0x4546a000));  // 703, 3178
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x44220e6e), SkBits2Float(0x45469c4c));  // 648.225f, 3177.77f
path.lineTo(SkBits2Float(0x442fc01c), SkBits2Float(0x45475696));  // 703.002f, 3189.41f
path.lineTo(SkBits2Float(0x442cf191), SkBits2Float(0x454aa3b5));  // 691.774f, 3242.23f
path.lineTo(SkBits2Float(0x441f3fe3), SkBits2Float(0x4549e96b));  // 636.998f, 3230.59f
path.lineTo(SkBits2Float(0x44220e6e), SkBits2Float(0x45469c4c));  // 648.225f, 3177.77f
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void skpwww_mybuilder_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(1000, 659);
path.lineTo(1000, 377);
path.lineTo(455, 377);
path.lineTo(455, 659);
path.lineTo(1000, 659);
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(921.472f, 414.086f);
path.lineTo(968.815f, 386.754f);
path.lineTo(993.069f, 428.761f);
path.lineTo(945.726f, 456.096f);
path.lineTo(921.471f, 414.086f);
path.lineTo(921.472f, 414.086f);
path.close();
path.moveTo(971.151f, 422.889f);
path.cubicTo(966.509f, 414.848f, 957.649f, 411.727f, 950.181f, 416.038f);
path.lineTo(947.224f, 417.746f);
path.lineTo(946.979f, 417.887f);
path.lineTo(947.838f, 419.371f);
path.lineTo(947.844f, 419.367f);
path.lineTo(947.868f, 419.353f);
path.lineTo(947.945f, 419.309f);
path.cubicTo(947.988f, 419.285f, 947.988f, 419.285f, 948.023f, 419.263f);
path.cubicTo(948.039f, 419.255f, 948.039f, 419.255f, 948.047f, 419.25f);
path.lineTo(948.052f, 419.247f);
path.lineTo(947.196f, 417.762f);
path.lineTo(947.195f, 417.762f);
path.lineTo(946.888f, 417.939f);
path.lineTo(943.39f, 419.959f);
path.lineTo(944.249f, 421.443f);
path.lineTo(947.745f, 419.424f);
path.lineTo(948.05f, 419.247f);
path.lineTo(948.052f, 419.247f);
path.lineTo(947.195f, 417.763f);
path.cubicTo(947.193f, 417.763f, 947.193f, 417.763f, 947.19f, 417.766f);
path.lineTo(947.166f, 417.779f);
path.lineTo(947.087f, 417.825f);
path.lineTo(947.011f, 417.868f);
path.lineTo(946.987f, 417.883f);
path.lineTo(946.982f, 417.886f);
path.lineTo(946.98f, 417.886f);
path.lineTo(947.839f, 419.37f);
path.lineTo(948.083f, 419.229f);
path.lineTo(951.039f, 417.522f);
path.cubicTo(957.631f, 413.716f, 965.471f, 416.477f, 969.669f, 423.746f);
path.lineTo(971.153f, 422.889f);
path.lineTo(971.151f, 422.889f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void skpwww_nimble_com_au_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(188.6f, 1988.8f);
path.lineTo(188.6f, 2041.6f);
path.cubicTo(188.6f, 2065.4f, 208, 2084.8f, 231.8f, 2084.8f);
path.cubicTo(255.6f, 2084.8f, 275, 2065.4f, 275, 2041.6f);
path.lineTo(275.2f, 2041.6f);
path.lineTo(275.2f, 1988.8f);
path.lineTo(188.6f, 1988.8f);
path.close();
    SkPath path1(path);
    path.reset();
path.setFillType(SkPathFillType::kWinding);
path.moveTo(275, 2041.6f);
path.conicTo(275, 2084.8f, 231.8f, 2084.8f, 0.707107f);
path.conicTo(188.6f, 2084.8f, 188.6f, 2041.6f, 0.707107f);
path.conicTo(188.6f, 1998.4f, 231.8f, 1998.4f, 0.707107f);
path.conicTo(275, 1998.4f, 275, 2041.6f, 0.707107f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void skpwww_tinytots_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(75.96f, 26.318f);
path.lineTo(70.337f, 26.318f);
path.lineTo(70.337f, 32.376f);
path.lineTo(75.96f, 32.376f);
path.lineTo(75.96f, 26.318f);
path.close();
    SkPath path1(path);
    path.reset();
path.setFillType(SkPathFillType::kWinding);
path.moveTo(75.88f, 27.873f);
path.cubicTo(75.929f, 28.138f, 75.956f, 29.196f, 75.96f, 31.046f);
path.lineTo(72.766f, 32.376f);
path.cubicTo(72.763f, 30.525f, 72.735f, 29.468f, 72.686f, 29.203f);
path.cubicTo(72.636f, 28.94f, 72.519f, 28.722f, 72.335f, 28.552f);
path.cubicTo(72.248f, 28.472f, 72.058f, 28.364f, 71.763f, 28.228f);
path.cubicTo(72.425f, 27.933f, 72.425f, 27.933f, 73.395f, 27.498f);
path.cubicTo(72.425f, 27.933f, 72.425f, 27.933f, 71.763f, 28.228f);
path.cubicTo(71.425f, 28.072f, 70.95f, 27.878f, 70.337f, 27.647f);
path.lineTo(73.531f, 26.317f);
path.cubicTo(74.144f, 26.547f, 74.619f, 26.741f, 74.957f, 26.898f);
path.cubicTo(74.475f, 27.113f, 73.993f, 27.329f, 73.511f, 27.544f);
path.cubicTo(73.993f, 27.329f, 74.475f, 27.114f, 74.957f, 26.898f);
path.cubicTo(75.252f, 27.034f, 75.442f, 27.142f, 75.529f, 27.222f);
path.cubicTo(75.713f, 27.393f, 75.83f, 27.61f, 75.88f, 27.873f);
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void http___www_emuleteca_cl_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x44370000));  // 1, 732
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000), SkBits2Float(0x42680000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 1, 675, 58, 675, 0.707107f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x4428c000), SkBits2Float(0x40400000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 3, 675, 3, 732, 0.707107f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x44444000), SkBits2Float(0x42680000), SkBits2Float(0x44444000), SkBits2Float(0x3f3504f3));  // 3, 785, 58, 785, 0.707107f
path.lineTo(SkBits2Float(0x446d0000), SkBits2Float(0x44444000));  // 948, 785
path.conicTo(SkBits2Float(0x447ac000), SkBits2Float(0x44444000), SkBits2Float(0x447ac000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1003, 785, 1003, 732, 0.707107f
path.conicTo(SkBits2Float(0x447ac000), SkBits2Float(0x4428c000), SkBits2Float(0x446d0000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 1003, 675, 948, 675, 0.707107f
path.conicTo(SkBits2Float(0x447b4000), SkBits2Float(0x4428c000), SkBits2Float(0x447b4000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1005, 675, 1005, 732, 0.707107f
path.conicTo(SkBits2Float(0x447b4000), SkBits2Float(0x44454000), SkBits2Float(0x446d0000), SkBits2Float(0x44454000), SkBits2Float(0x3f3504f3));  // 1005, 789, 948, 789, 0.707107f
path.lineTo(SkBits2Float(0x42680000), SkBits2Float(0x44454000));  // 58, 789
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000), SkBits2Float(0x3f800000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1, 789, 1, 732, 0.707107f
path.close();

    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x42680000), SkBits2Float(0x4428c000));  // 58, 675
path.lineTo(SkBits2Float(0x3fc8f676), SkBits2Float(0x44454000));  // 1.57002f, 789
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void http___www_emuleteca_cl_27(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x42680000), SkBits2Float(0x4428c000));  // 58, 675
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000), SkBits2Float(0x3f800000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1, 675, 1, 732, 0.707107f
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x443bd045), SkBits2Float(0x414acf56), SkBits2Float(0x443fa420), SkBits2Float(0x3f778612));  // 1, 751.254f, 12.6756f, 766.564f, 0.96689f
path.lineTo(SkBits2Float(0x41606e3d), SkBits2Float(0x443ef569));  // 14.0269f, 763.835f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x443b6c34), SkBits2Float(0x40400000), SkBits2Float(0x44370000), SkBits2Float(0x3f77ac46));  // 3, 749.691f, 3, 732, 0.967472f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x4428c000), SkBits2Float(0x42680000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 3, 675, 58, 675, 0.707107f
path.close();

    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x4c4a3de6), SkBits2Float(0xccca3d89));  // 5.30165e+07f, -1.06032e+08f
path.lineTo(SkBits2Float(0x41a71147), SkBits2Float(0x443b4eec));  // 20.8834f, 749.233f
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void http___www_emuleteca_cl_28(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);

    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kWinding);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x4c4a3de6), SkBits2Float(0xccca3d89));  // 5.30165e+07f, -1.06032e+08f
path.lineTo(SkBits2Float(0x41a71147), SkBits2Float(0x443b4eec));  // 20.8834f, 749.233f
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void http___www_project2061_org(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(751, 62);
path.lineTo(497, 62);
path.lineTo(497, 138);
path.lineTo(751, 138);
path.lineTo(751, 62);
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kWinding);
path.moveTo(699.889f, 115.29f);
path.cubicTo(699.889f, 114.913f, 699.627f, 114.723f, 699.111f, 114.723f);
path.cubicTo(698.604f, 114.723f, 697.843f, 114.671f, 697.096f, 114.423f);
path.cubicTo(695.94f, 114.094f, 694.53f, 113.168f, 692.746f, 108.775f);
path.cubicTo(690.469f, 103.12f, 685.644f, 90.563f, 682.761f, 83.061f);
path.lineTo(680.541f, 77.301f);
path.cubicTo(679.927f, 75.721f, 679.67f, 75.261f, 679.151f, 75.261f);
path.cubicTo(678.636f, 75.261f, 678.392f, 75.73f, 677.759f, 77.464f);
path.lineTo(665.868f, 109.881f);
path.cubicTo(664.861f, 112.669f, 663.852f, 114.339f, 661.675f, 114.622f);
path.cubicTo(661.675f, 114.622f, 661.551f, 114.631f, 661.378f, 114.642f);
path.cubicTo(661.072f, 114.597f, 660.75f, 114.531f, 660.427f, 114.424f);
path.cubicTo(659.272f, 114.095f, 657.861f, 113.169f, 656.078f, 108.776f);
path.cubicTo(653.797f, 103.112f, 648.967f, 90.541f, 646.08f, 83.029f);
path.lineTo(643.873f, 77.302f);
path.cubicTo(643.259f, 75.722f, 643.002f, 75.262f, 642.484f, 75.262f);
path.cubicTo(641.968f, 75.262f, 641.724f, 75.731f, 641.092f, 77.465f);
path.lineTo(629.2f, 109.879f);
path.cubicTo(628.193f, 112.667f, 627.184f, 114.337f, 625.007f, 114.62f);
path.cubicTo(625.007f, 114.62f, 624.884f, 114.629f, 624.71f, 114.64f);
path.cubicTo(624.404f, 114.595f, 624.081f, 114.529f, 623.759f, 114.422f);
path.cubicTo(622.603f, 114.093f, 621.193f, 113.167f, 619.409f, 108.774f);
path.cubicTo(617.132f, 103.119f, 612.307f, 90.562f, 609.424f, 83.06f);
path.lineTo(607.204f, 77.3f);
path.cubicTo(606.59f, 75.72f, 606.333f, 75.26f, 605.815f, 75.26f);
path.cubicTo(605.3f, 75.26f, 605.055f, 75.729f, 604.423f, 77.463f);
path.lineTo(592.531f, 109.879f);
path.cubicTo(591.524f, 112.667f, 590.514f, 114.337f, 588.338f, 114.62f);
path.cubicTo(588.337f, 114.62f, 586.852f, 114.722f, 586.852f, 114.722f);
path.cubicTo(586.418f, 114.722f, 586.126f, 114.95f, 586.126f, 115.289f);
path.cubicTo(586.126f, 115.96f, 586.97f, 115.96f, 587.376f, 115.96f);
path.lineTo(592.101f, 115.843f);
path.lineTo(593.295f, 115.804f);
path.lineTo(594.624f, 115.86f);
path.lineTo(597.381f, 115.961f);
path.cubicTo(598.241f, 115.961f, 598.422f, 115.596f, 598.422f, 115.29f);
path.cubicTo(598.422f, 115.078f, 598.321f, 114.723f, 597.643f, 114.723f);
path.lineTo(597.119f, 114.723f);
path.cubicTo(596.448f, 114.723f, 595.383f, 114.381f, 595.383f, 113.463f);
path.cubicTo(595.383f, 112.545f, 595.638f, 111.334f, 596.101f, 110.052f);
path.cubicTo(596.103f, 110.048f, 599.246f, 100.809f, 599.246f, 100.809f);
path.cubicTo(599.337f, 100.583f, 599.435f, 100.564f, 599.528f, 100.564f);
path.lineTo(610.791f, 100.564f);
path.cubicTo(610.929f, 100.564f, 610.958f, 100.585f, 611.035f, 100.737f);
path.cubicTo(611.035f, 100.741f, 615.896f, 113.554f, 615.896f, 113.554f);
path.cubicTo(615.972f, 113.754f, 616.01f, 113.942f, 616.01f, 114.105f);
path.cubicTo(616.01f, 114.228f, 615.988f, 114.338f, 615.945f, 114.429f);
path.cubicTo(615.876f, 114.573f, 615.779f, 114.619f, 615.741f, 114.631f);
path.cubicTo(615.272f, 114.748f, 615.2f, 115.061f, 615.2f, 115.237f);
path.cubicTo(615.2f, 115.766f, 615.792f, 115.796f, 616.772f, 115.844f);
path.lineTo(617.012f, 115.857f);
path.cubicTo(618.978f, 115.913f, 621.359f, 115.948f, 623.835f, 115.958f);
path.cubicTo(623.912f, 115.961f, 623.984f, 115.961f, 624.045f, 115.961f);
path.lineTo(624.118f, 115.959f);
path.cubicTo(624.494f, 115.961f, 624.871f, 115.961f, 625.25f, 115.961f);
path.cubicTo(625.47f, 115.961f, 625.662f, 115.946f, 625.827f, 115.917f);
path.lineTo(628.77f, 115.844f);
path.lineTo(629.965f, 115.805f);
path.lineTo(631.293f, 115.861f);
path.lineTo(634.051f, 115.962f);
path.cubicTo(634.911f, 115.962f, 635.092f, 115.597f, 635.092f, 115.291f);
path.cubicTo(635.092f, 115.079f, 634.991f, 114.724f, 634.313f, 114.724f);
path.lineTo(633.789f, 114.724f);
path.cubicTo(633.118f, 114.724f, 632.053f, 114.382f, 632.053f, 113.464f);
path.cubicTo(632.053f, 112.546f, 632.308f, 111.335f, 632.771f, 110.053f);
path.cubicTo(632.773f, 110.049f, 635.916f, 100.81f, 635.916f, 100.81f);
path.cubicTo(636.007f, 100.584f, 636.105f, 100.565f, 636.198f, 100.565f);
path.lineTo(647.46f, 100.565f);
path.cubicTo(647.598f, 100.565f, 647.627f, 100.586f, 647.704f, 100.737f);
path.cubicTo(647.704f, 100.741f, 652.565f, 113.554f, 652.565f, 113.554f);
path.cubicTo(652.641f, 113.754f, 652.679f, 113.942f, 652.679f, 114.105f);
path.cubicTo(652.679f, 114.228f, 652.657f, 114.338f, 652.613f, 114.43f);
path.cubicTo(652.544f, 114.574f, 652.447f, 114.619f, 652.409f, 114.632f);
path.cubicTo(651.94f, 114.749f, 651.868f, 115.062f, 651.868f, 115.238f);
path.cubicTo(651.868f, 115.767f, 652.46f, 115.797f, 653.44f, 115.845f);
path.lineTo(653.681f, 115.858f);
path.cubicTo(655.647f, 115.914f, 658.028f, 115.949f, 660.503f, 115.959f);
path.cubicTo(660.58f, 115.962f, 660.652f, 115.962f, 660.713f, 115.962f);
path.lineTo(660.787f, 115.96f);
path.cubicTo(661.162f, 115.962f, 661.54f, 115.962f, 661.918f, 115.962f);
path.cubicTo(662.139f, 115.962f, 662.33f, 115.947f, 662.496f, 115.918f);
path.lineTo(665.439f, 115.845f);
path.lineTo(666.633f, 115.806f);
path.lineTo(667.962f, 115.862f);
path.lineTo(670.719f, 115.963f);
path.cubicTo(671.579f, 115.963f, 671.76f, 115.598f, 671.76f, 115.292f);
path.cubicTo(671.76f, 115.08f, 671.659f, 114.725f, 670.981f, 114.725f);
path.lineTo(670.457f, 114.725f);
path.cubicTo(669.786f, 114.725f, 668.721f, 114.383f, 668.721f, 113.465f);
path.cubicTo(668.721f, 112.547f, 668.976f, 111.336f, 669.439f, 110.054f);
path.cubicTo(669.441f, 110.05f, 672.584f, 100.811f, 672.584f, 100.811f);
path.cubicTo(672.675f, 100.585f, 672.773f, 100.566f, 672.866f, 100.566f);
path.lineTo(684.128f, 100.566f);
path.cubicTo(684.266f, 100.566f, 684.295f, 100.587f, 684.372f, 100.739f);
path.cubicTo(684.372f, 100.743f, 689.233f, 113.556f, 689.233f, 113.556f);
path.cubicTo(689.309f, 113.756f, 689.347f, 113.944f, 689.347f, 114.107f);
path.cubicTo(689.347f, 114.23f, 689.325f, 114.34f, 689.281f, 114.431f);
path.cubicTo(689.212f, 114.575f, 689.115f, 114.621f, 689.077f, 114.633f);
path.cubicTo(688.608f, 114.75f, 688.536f, 115.063f, 688.536f, 115.239f);
path.cubicTo(688.536f, 115.768f, 689.128f, 115.798f, 690.108f, 115.846f);
path.lineTo(690.348f, 115.859f);
path.cubicTo(692.687f, 115.926f, 695.611f, 115.963f, 698.586f, 115.963f);
path.cubicTo(699.451f, 115.961f, 699.889f, 115.735f, 699.889f, 115.29f);
path.close();
path.moveTo(600.18f, 98.176f);
path.cubicTo(600.181f, 98.171f, 600.185f, 98.158f, 600.185f, 98.158f);
path.cubicTo(600.191f, 98.142f, 604.801f, 84.049f, 604.801f, 84.049f);
path.cubicTo(604.865f, 83.857f, 604.915f, 83.756f, 604.951f, 83.697f);
path.cubicTo(604.987f, 83.756f, 605.037f, 83.858f, 605.102f, 84.051f);
path.cubicTo(605.103f, 84.054f, 610.08f, 98.149f, 610.08f, 98.149f);
path.cubicTo(610.079f, 98.145f, 610.079f, 98.145f, 610.079f, 98.147f);
path.cubicTo(610.079f, 98.149f, 610.081f, 98.164f, 610.083f, 98.176f);
path.lineTo(600.18f, 98.176f);
path.close();
path.moveTo(636.849f, 98.176f);
path.cubicTo(636.851f, 98.171f, 636.854f, 98.158f, 636.854f, 98.158f);
path.cubicTo(636.859f, 98.142f, 641.469f, 84.049f, 641.469f, 84.049f);
path.cubicTo(641.533f, 83.857f, 641.584f, 83.756f, 641.62f, 83.697f);
path.cubicTo(641.656f, 83.756f, 641.706f, 83.857f, 641.771f, 84.051f);
path.cubicTo(641.773f, 84.054f, 646.749f, 98.149f, 646.749f, 98.149f);
path.cubicTo(646.749f, 98.145f, 646.748f, 98.145f, 646.748f, 98.147f);
path.cubicTo(646.748f, 98.15f, 646.75f, 98.165f, 646.751f, 98.176f);
path.lineTo(636.849f, 98.176f);
path.close();
path.moveTo(673.517f, 98.176f);
path.cubicTo(673.519f, 98.171f, 673.522f, 98.158f, 673.522f, 98.158f);
path.cubicTo(673.528f, 98.142f, 678.138f, 84.049f, 678.138f, 84.049f);
path.cubicTo(678.202f, 83.857f, 678.252f, 83.756f, 678.288f, 83.697f);
path.cubicTo(678.324f, 83.756f, 678.375f, 83.858f, 678.439f, 84.051f);
path.cubicTo(678.44f, 84.054f, 683.417f, 98.149f, 683.417f, 98.149f);
path.cubicTo(683.416f, 98.145f, 683.416f, 98.145f, 683.416f, 98.147f);
path.cubicTo(683.416f, 98.149f, 683.418f, 98.164f, 683.42f, 98.176f);
path.lineTo(673.517f, 98.176f);
path.close();
path.moveTo(702.086f, 115.256f);
path.lineTo(702.089f, 115.257f);
path.cubicTo(704.075f, 116.223f, 706.408f, 116.692f, 709.22f, 116.692f);
path.cubicTo(712.384f, 116.692f, 715.17f, 115.918f, 717.275f, 114.454f);
path.cubicTo(720.639f, 112.074f, 721.837f, 108.31f, 721.837f, 105.581f);
path.cubicTo(721.837f, 101.538f, 720.57f, 98.203f, 714.092f, 93.115f);
path.lineTo(712.625f, 91.966f);
path.cubicTo(707.567f, 87.838f, 706.331f, 86.155f, 706.331f, 83.396f);
path.cubicTo(706.331f, 79.927f, 708.819f, 77.595f, 712.519f, 77.595f);
path.cubicTo(716.925f, 77.595f, 718.41f, 79.437f, 718.843f, 80.229f);
path.cubicTo(719.131f, 80.754f, 719.442f, 82.122f, 719.494f, 82.739f);
path.cubicTo(719.543f, 83.13f, 719.608f, 83.65f, 720.167f, 83.65f);
path.cubicTo(720.789f, 83.65f, 720.789f, 82.704f, 720.789f, 82.195f);
path.cubicTo(720.789f, 79.413f, 720.918f, 77.758f, 720.973f, 77.052f);
path.lineTo(720.998f, 76.662f);
path.cubicTo(720.998f, 76.113f, 720.581f, 76.043f, 720.219f, 76.043f);
path.cubicTo(719.847f, 76.043f, 719.469f, 76.003f, 718.438f, 75.788f);
path.cubicTo(716.936f, 75.428f, 715.369f, 75.26f, 713.514f, 75.26f);
path.cubicTo(706.771f, 75.26f, 702.415f, 79.048f, 702.415f, 84.91f);
path.cubicTo(702.415f, 88.438f, 703.589f, 91.748f, 709.319f, 96.434f);
path.lineTo(711.676f, 98.365f);
path.cubicTo(716.332f, 102.196f, 717.607f, 104.172f, 717.607f, 107.564f);
path.cubicTo(717.607f, 110.888f, 715.121f, 114.253f, 710.371f, 114.253f);
path.cubicTo(708.428f, 114.253f, 703.808f, 113.754f, 702.868f, 109.132f);
path.cubicTo(702.716f, 108.424f, 702.716f, 107.718f, 702.716f, 107.25f);
path.cubicTo(702.716f, 106.94f, 702.716f, 106.422f, 702.094f, 106.422f);
path.cubicTo(701.519f, 106.422f, 701.455f, 107.116f, 701.421f, 107.488f);
path.cubicTo(701.421f, 107.495f, 701.375f, 108.117f, 701.375f, 108.117f);
path.cubicTo(701.293f, 109.171f, 701.158f, 110.933f, 701.158f, 113.044f);
path.cubicTo(701.16f, 114.432f, 701.197f, 114.813f, 702.086f, 115.256f);
path.close();
path.moveTo(501.274f, 129.973f);
path.lineTo(498.058f, 136.963f);
path.lineTo(498.62f, 136.963f);
path.lineTo(499.723f, 134.561f);
path.lineTo(503.124f, 134.561f);
path.lineTo(504.227f, 136.963f);
path.lineTo(504.788f, 136.963f);
path.lineTo(501.571f, 129.973f);
path.lineTo(501.274f, 129.973f);
path.close();
path.moveTo(499.926f, 134.114f);
path.lineTo(501.417f, 130.848f);
path.lineTo(502.918f, 134.114f);
path.lineTo(499.926f, 134.114f);
path.close();
path.moveTo(510.117f, 130.023f);
path.lineTo(507.677f, 130.023f);
path.lineTo(507.677f, 136.963f);
path.lineTo(510.209f, 136.963f);
path.cubicTo(512.966f, 136.963f, 513.916f, 135.101f, 513.916f, 133.493f);
path.cubicTo(513.916f, 131.967f, 513.078f, 130.023f, 510.117f, 130.023f);
path.close();
path.moveTo(510.178f, 136.515f);
path.lineTo(508.217f, 136.515f);
path.lineTo(508.217f, 130.471f);
path.lineTo(510.147f, 130.471f);
path.cubicTo(512.036f, 130.471f, 513.333f, 131.712f, 513.333f, 133.493f);
path.cubicTo(513.333f, 135.447f, 511.853f, 136.515f, 510.178f, 136.515f);
path.close();
path.moveTo(519.105f, 135.894f);
path.lineTo(516.634f, 130.023f);
path.lineTo(516.093f, 130.023f);
path.lineTo(519.024f, 137.034f);
path.lineTo(519.177f, 137.034f);
path.lineTo(522.098f, 130.023f);
path.lineTo(521.557f, 130.023f);
path.lineTo(519.105f, 135.894f);
path.close();
path.moveTo(526.817f, 129.973f);
path.lineTo(523.601f, 136.963f);
path.lineTo(524.162f, 136.963f);
path.lineTo(525.265f, 134.561f);
path.lineTo(528.665f, 134.561f);
path.lineTo(529.768f, 136.963f);
path.lineTo(530.33f, 136.963f);
path.lineTo(527.113f, 129.973f);
path.lineTo(526.817f, 129.973f);
path.close();
path.moveTo(525.469f, 134.114f);
path.lineTo(526.96f, 130.848f);
path.lineTo(528.461f, 134.114f);
path.lineTo(525.469f, 134.114f);
path.close();
path.moveTo(538.947f, 136.088f);
path.lineTo(533.668f, 130.024f);
path.lineTo(533.208f, 130.024f);
path.lineTo(533.208f, 136.964f);
path.lineTo(533.749f, 136.964f);
path.lineTo(533.749f, 130.899f);
path.lineTo(539.038f, 136.964f);
path.lineTo(539.487f, 136.964f);
path.lineTo(539.487f, 130.024f);
path.lineTo(538.946f, 130.024f);
path.lineTo(538.946f, 136.088f);
path.lineTo(538.947f, 136.088f);
path.close();
path.moveTo(543.41f, 133.503f);
path.cubicTo(543.41f, 131.743f, 544.717f, 130.43f, 546.453f, 130.43f);
path.cubicTo(547.28f, 130.43f, 548.067f, 130.644f, 548.934f, 131.102f);
path.lineTo(548.934f, 130.512f);
path.cubicTo(548.087f, 130.125f, 547.26f, 129.932f, 546.483f, 129.932f);
path.cubicTo(544.574f, 129.932f, 542.828f, 131.377f, 542.828f, 133.503f);
path.cubicTo(542.828f, 135.538f, 544.411f, 137.054f, 546.534f, 137.054f);
path.cubicTo(547.341f, 137.054f, 548.198f, 136.83f, 549.005f, 136.402f);
path.lineTo(549.005f, 135.843f);
path.cubicTo(548.055f, 136.341f, 547.31f, 136.555f, 546.523f, 136.555f);
path.cubicTo(544.707f, 136.556f, 543.41f, 135.294f, 543.41f, 133.503f);
path.close();
path.moveTo(552.079f, 136.963f);
path.lineTo(552.62f, 136.963f);
path.lineTo(552.62f, 130.023f);
path.lineTo(552.079f, 130.023f);
path.lineTo(552.079f, 136.963f);
path.close();
path.moveTo(561.984f, 136.088f);
path.lineTo(556.705f, 130.024f);
path.lineTo(556.245f, 130.024f);
path.lineTo(556.245f, 136.964f);
path.lineTo(556.786f, 136.964f);
path.lineTo(556.786f, 130.899f);
path.lineTo(562.075f, 136.964f);
path.lineTo(562.524f, 136.964f);
path.lineTo(562.524f, 130.024f);
path.lineTo(561.983f, 130.024f);
path.lineTo(561.983f, 136.088f);
path.lineTo(561.984f, 136.088f);
path.close();
path.moveTo(570.122f, 134.257f);
path.lineTo(571.592f, 134.257f);
path.lineTo(571.592f, 136.129f);
path.cubicTo(571.041f, 136.403f, 570.489f, 136.556f, 569.683f, 136.556f);
path.cubicTo(567.488f, 136.556f, 566.456f, 135.05f, 566.456f, 133.493f);
path.cubicTo(566.456f, 131.733f, 567.763f, 130.43f, 569.529f, 130.43f);
path.cubicTo(570.366f, 130.43f, 571.153f, 130.654f, 572, 131.132f);
path.lineTo(572, 130.522f);
path.cubicTo(571.02f, 130.084f, 570.397f, 129.932f, 569.61f, 129.932f);
path.cubicTo(567.455f, 129.932f, 565.873f, 131.438f, 565.873f, 133.473f);
path.cubicTo(565.873f, 135.529f, 567.496f, 137.055f, 569.661f, 137.055f);
path.cubicTo(570.468f, 137.055f, 571.305f, 136.862f, 572.132f, 136.465f);
path.lineTo(572.132f, 133.809f);
path.lineTo(570.121f, 133.809f);
path.lineTo(570.121f, 134.257f);
path.lineTo(570.122f, 134.257f);
path.close();
path.moveTo(580.681f, 131.753f);
path.cubicTo(580.681f, 131.001f, 581.314f, 130.43f, 582.151f, 130.43f);
path.cubicTo(582.631f, 130.43f, 582.998f, 130.552f, 583.713f, 130.959f);
path.lineTo(583.713f, 130.37f);
path.cubicTo(583.172f, 130.075f, 582.641f, 129.933f, 582.099f, 129.933f);
path.cubicTo(580.996f, 129.933f, 580.098f, 130.747f, 580.098f, 131.775f);
path.cubicTo(580.098f, 134.065f, 583.417f, 133.2f, 583.417f, 135.173f);
path.cubicTo(583.417f, 135.956f, 582.774f, 136.557f, 581.947f, 136.557f);
path.cubicTo(581.406f, 136.557f, 580.966f, 136.374f, 580.191f, 135.814f);
path.lineTo(580.191f, 136.445f);
path.cubicTo(580.804f, 136.852f, 581.406f, 137.055f, 581.978f, 137.055f);
path.cubicTo(583.111f, 137.055f, 584, 136.221f, 584, 135.152f);
path.cubicTo(584, 132.72f, 580.681f, 133.605f, 580.681f, 131.753f);
path.close();
path.moveTo(587.543f, 133.503f);
path.cubicTo(587.543f, 131.743f, 588.85f, 130.43f, 590.586f, 130.43f);
path.cubicTo(591.413f, 130.43f, 592.199f, 130.644f, 593.067f, 131.102f);
path.lineTo(593.067f, 130.512f);
path.cubicTo(592.22f, 130.125f, 591.393f, 129.932f, 590.616f, 129.932f);
path.cubicTo(588.707f, 129.932f, 586.96f, 131.377f, 586.96f, 133.503f);
path.cubicTo(586.96f, 135.538f, 588.543f, 137.054f, 590.667f, 137.054f);
path.cubicTo(591.473f, 137.054f, 592.331f, 136.83f, 593.138f, 136.402f);
path.lineTo(593.138f, 135.843f);
path.cubicTo(592.188f, 136.341f, 591.443f, 136.555f, 590.657f, 136.555f);
path.cubicTo(588.84f, 136.556f, 587.543f, 135.294f, 587.543f, 133.503f);
path.close();
path.moveTo(596.212f, 136.963f);
path.lineTo(596.753f, 136.963f);
path.lineTo(596.753f, 130.023f);
path.lineTo(596.212f, 130.023f);
path.lineTo(596.212f, 136.963f);
path.close();
path.moveTo(600.94f, 133.697f);
path.lineTo(604.116f, 133.697f);
path.lineTo(604.116f, 133.25f);
path.lineTo(600.94f, 133.25f);
path.lineTo(600.94f, 130.472f);
path.lineTo(604.198f, 130.472f);
path.lineTo(604.198f, 130.024f);
path.lineTo(600.399f, 130.024f);
path.lineTo(600.399f, 136.964f);
path.lineTo(604.279f, 136.964f);
path.lineTo(604.279f, 136.516f);
path.lineTo(600.94f, 136.516f);
path.lineTo(600.94f, 133.697f);
path.close();
path.moveTo(613.163f, 136.088f);
path.lineTo(607.884f, 130.024f);
path.lineTo(607.424f, 130.024f);
path.lineTo(607.424f, 136.964f);
path.lineTo(607.965f, 136.964f);
path.lineTo(607.965f, 130.899f);
path.lineTo(613.254f, 136.964f);
path.lineTo(613.703f, 136.964f);
path.lineTo(613.703f, 130.024f);
path.lineTo(613.162f, 130.024f);
path.lineTo(613.162f, 136.088f);
path.lineTo(613.163f, 136.088f);
path.close();
path.moveTo(617.625f, 133.503f);
path.cubicTo(617.625f, 131.743f, 618.932f, 130.43f, 620.668f, 130.43f);
path.cubicTo(621.495f, 130.43f, 622.281f, 130.644f, 623.149f, 131.102f);
path.lineTo(623.149f, 130.512f);
path.cubicTo(622.301f, 130.125f, 621.474f, 129.932f, 620.698f, 129.932f);
path.cubicTo(618.789f, 129.932f, 617.042f, 131.377f, 617.042f, 133.503f);
path.cubicTo(617.042f, 135.538f, 618.625f, 137.054f, 620.749f, 137.054f);
path.cubicTo(621.556f, 137.054f, 622.413f, 136.83f, 623.22f, 136.402f);
path.lineTo(623.22f, 135.843f);
path.cubicTo(622.27f, 136.341f, 621.525f, 136.555f, 620.739f, 136.555f);
path.cubicTo(618.922f, 136.556f, 617.625f, 135.294f, 617.625f, 133.503f);
path.close();
path.moveTo(626.856f, 133.697f);
path.lineTo(630.032f, 133.697f);
path.lineTo(630.032f, 133.25f);
path.lineTo(626.856f, 133.25f);
path.lineTo(626.856f, 130.472f);
path.lineTo(630.114f, 130.472f);
path.lineTo(630.114f, 130.024f);
path.lineTo(626.316f, 130.024f);
path.lineTo(626.316f, 136.964f);
path.lineTo(630.196f, 136.964f);
path.lineTo(630.196f, 136.516f);
path.lineTo(626.857f, 136.516f);
path.lineTo(626.857f, 133.697f);
path.lineTo(626.856f, 133.697f);
path.close();
path.moveTo(633.115f, 136.963f);
path.lineTo(633.33f, 136.963f);
path.cubicTo(633.33f, 137.309f, 633.299f, 137.523f, 633.115f, 137.797f);
path.lineTo(633.115f, 138.154f);
path.cubicTo(633.565f, 137.828f, 633.779f, 137.269f, 633.779f, 136.75f);
path.lineTo(633.779f, 135.976f);
path.lineTo(633.115f, 135.976f);
path.lineTo(633.115f, 136.963f);
path.close();
path.moveTo(641.511f, 131.753f);
path.cubicTo(641.511f, 131.001f, 642.144f, 130.43f, 642.981f, 130.43f);
path.cubicTo(643.461f, 130.43f, 643.828f, 130.552f, 644.544f, 130.959f);
path.lineTo(644.544f, 130.37f);
path.cubicTo(644.003f, 130.075f, 643.472f, 129.933f, 642.931f, 129.933f);
path.cubicTo(641.828f, 129.933f, 640.929f, 130.747f, 640.929f, 131.775f);
path.cubicTo(640.929f, 134.065f, 644.247f, 133.2f, 644.247f, 135.173f);
path.cubicTo(644.247f, 135.956f, 643.604f, 136.557f, 642.777f, 136.557f);
path.cubicTo(642.236f, 136.557f, 641.797f, 136.374f, 641.02f, 135.814f);
path.lineTo(641.02f, 136.445f);
path.cubicTo(641.633f, 136.852f, 642.235f, 137.055f, 642.807f, 137.055f);
path.cubicTo(643.941f, 137.055f, 644.829f, 136.221f, 644.829f, 135.152f);
path.cubicTo(644.829f, 132.72f, 641.511f, 133.605f, 641.511f, 131.753f);
path.close();
path.moveTo(648.649f, 133.697f);
path.lineTo(651.824f, 133.697f);
path.lineTo(651.824f, 133.25f);
path.lineTo(648.649f, 133.25f);
path.lineTo(648.649f, 130.472f);
path.lineTo(651.906f, 130.472f);
path.lineTo(651.906f, 130.024f);
path.lineTo(648.107f, 130.024f);
path.lineTo(648.107f, 136.964f);
path.lineTo(651.988f, 136.964f);
path.lineTo(651.988f, 136.516f);
path.lineTo(648.649f, 136.516f);
path.lineTo(648.649f, 133.697f);
path.close();
path.moveTo(657.91f, 133.503f);
path.cubicTo(658.799f, 133.177f, 659.237f, 132.618f, 659.237f, 131.814f);
path.cubicTo(659.237f, 130.888f, 658.635f, 130.023f, 656.929f, 130.023f);
path.lineTo(655.142f, 130.023f);
path.lineTo(655.142f, 136.963f);
path.lineTo(655.683f, 136.963f);
path.lineTo(655.683f, 133.635f);
path.lineTo(656.623f, 133.635f);
path.cubicTo(657.46f, 133.635f, 657.726f, 133.747f, 658.563f, 135.06f);
path.lineTo(659.778f, 136.963f);
path.lineTo(660.411f, 136.963f);
path.lineTo(658.838f, 134.561f);
path.cubicTo(658.513f, 134.073f, 658.237f, 133.676f, 657.91f, 133.503f);
path.close();
path.moveTo(656.838f, 133.188f);
path.lineTo(655.684f, 133.188f);
path.lineTo(655.684f, 130.472f);
path.lineTo(656.817f, 130.472f);
path.cubicTo(658.094f, 130.472f, 658.655f, 131.041f, 658.655f, 131.825f);
path.cubicTo(658.655f, 132.659f, 658.063f, 133.188f, 656.838f, 133.188f);
path.close();
path.moveTo(664.968f, 135.894f);
path.lineTo(662.497f, 130.023f);
path.lineTo(661.956f, 130.023f);
path.lineTo(664.887f, 137.034f);
path.lineTo(665.04f, 137.034f);
path.lineTo(667.961f, 130.023f);
path.lineTo(667.42f, 130.023f);
path.lineTo(664.968f, 135.894f);
path.close();
path.moveTo(670.829f, 136.963f);
path.lineTo(671.37f, 136.963f);
path.lineTo(671.37f, 130.023f);
path.lineTo(670.829f, 130.023f);
path.lineTo(670.829f, 136.963f);
path.close();
path.moveTo(680.734f, 136.088f);
path.lineTo(675.455f, 130.024f);
path.lineTo(674.995f, 130.024f);
path.lineTo(674.995f, 136.964f);
path.lineTo(675.536f, 136.964f);
path.lineTo(675.536f, 130.899f);
path.lineTo(680.826f, 136.964f);
path.lineTo(681.275f, 136.964f);
path.lineTo(681.275f, 130.024f);
path.lineTo(680.733f, 130.024f);
path.lineTo(680.733f, 136.088f);
path.lineTo(680.734f, 136.088f);
path.close();
path.moveTo(688.873f, 134.257f);
path.lineTo(690.343f, 134.257f);
path.lineTo(690.343f, 136.129f);
path.cubicTo(689.791f, 136.403f, 689.24f, 136.556f, 688.433f, 136.556f);
path.cubicTo(686.238f, 136.556f, 685.206f, 135.05f, 685.206f, 133.493f);
path.cubicTo(685.206f, 131.733f, 686.514f, 130.43f, 688.28f, 130.43f);
path.cubicTo(689.117f, 130.43f, 689.903f, 130.654f, 690.751f, 131.132f);
path.lineTo(690.751f, 130.522f);
path.cubicTo(689.771f, 130.084f, 689.148f, 129.932f, 688.362f, 129.932f);
path.cubicTo(686.207f, 129.932f, 684.624f, 131.438f, 684.624f, 133.473f);
path.cubicTo(684.624f, 135.529f, 686.247f, 137.055f, 688.413f, 137.055f);
path.cubicTo(689.219f, 137.055f, 690.057f, 136.862f, 690.884f, 136.465f);
path.lineTo(690.884f, 133.809f);
path.lineTo(688.873f, 133.809f);
path.lineTo(688.873f, 134.257f);
path.close();
path.moveTo(699.432f, 131.753f);
path.cubicTo(699.432f, 131.001f, 700.065f, 130.43f, 700.902f, 130.43f);
path.cubicTo(701.381f, 130.43f, 701.749f, 130.552f, 702.464f, 130.959f);
path.lineTo(702.464f, 130.37f);
path.cubicTo(701.923f, 130.075f, 701.391f, 129.933f, 700.85f, 129.933f);
path.cubicTo(699.747f, 129.933f, 698.849f, 130.747f, 698.849f, 131.775f);
path.cubicTo(698.849f, 134.065f, 702.168f, 133.2f, 702.168f, 135.173f);
path.cubicTo(702.168f, 135.956f, 701.525f, 136.557f, 700.698f, 136.557f);
path.cubicTo(700.156f, 136.557f, 699.718f, 136.374f, 698.941f, 135.814f);
path.lineTo(698.941f, 136.445f);
path.cubicTo(699.553f, 136.852f, 700.156f, 137.055f, 700.728f, 137.055f);
path.cubicTo(701.862f, 137.055f, 702.75f, 136.221f, 702.75f, 135.152f);
path.cubicTo(702.75f, 132.72f, 699.432f, 133.605f, 699.432f, 131.753f);
path.close();
path.moveTo(709.407f, 129.932f);
path.cubicTo(707.345f, 129.932f, 705.731f, 131.499f, 705.731f, 133.493f);
path.cubicTo(705.731f, 135.488f, 707.345f, 137.054f, 709.407f, 137.054f);
path.cubicTo(711.48f, 137.054f, 713.104f, 135.487f, 713.104f, 133.493f);
path.cubicTo(713.104f, 131.499f, 711.481f, 129.932f, 709.407f, 129.932f);
path.close();
path.moveTo(709.428f, 136.556f);
path.cubicTo(707.683f, 136.556f, 706.314f, 135.223f, 706.314f, 133.493f);
path.cubicTo(706.314f, 131.763f, 707.682f, 130.43f, 709.428f, 130.43f);
path.cubicTo(711.175f, 130.43f, 712.523f, 131.763f, 712.523f, 133.493f);
path.cubicTo(712.522f, 135.223f, 711.175f, 136.556f, 709.428f, 136.556f);
path.close();
path.moveTo(716.739f, 133.503f);
path.cubicTo(716.739f, 131.743f, 718.046f, 130.43f, 719.782f, 130.43f);
path.cubicTo(720.609f, 130.43f, 721.395f, 130.644f, 722.264f, 131.102f);
path.lineTo(722.264f, 130.512f);
path.cubicTo(721.416f, 130.125f, 720.589f, 129.932f, 719.813f, 129.932f);
path.cubicTo(717.903f, 129.932f, 716.157f, 131.377f, 716.157f, 133.503f);
path.cubicTo(716.157f, 135.538f, 717.74f, 137.054f, 719.863f, 137.054f);
path.cubicTo(720.67f, 137.054f, 721.528f, 136.83f, 722.335f, 136.402f);
path.lineTo(722.335f, 135.843f);
path.cubicTo(721.385f, 136.341f, 720.64f, 136.555f, 719.854f, 136.555f);
path.cubicTo(718.037f, 136.556f, 716.739f, 135.294f, 716.739f, 133.503f);
path.close();
path.moveTo(725.409f, 136.963f);
path.lineTo(725.95f, 136.963f);
path.lineTo(725.95f, 130.023f);
path.lineTo(725.409f, 130.023f);
path.lineTo(725.409f, 136.963f);
path.close();
path.moveTo(730.136f, 133.697f);
path.lineTo(733.312f, 133.697f);
path.lineTo(733.312f, 133.25f);
path.lineTo(730.136f, 133.25f);
path.lineTo(730.136f, 130.472f);
path.lineTo(733.393f, 130.472f);
path.lineTo(733.393f, 130.024f);
path.lineTo(729.595f, 130.024f);
path.lineTo(729.595f, 136.964f);
path.lineTo(733.475f, 136.964f);
path.lineTo(733.475f, 136.516f);
path.lineTo(730.136f, 136.516f);
path.lineTo(730.136f, 133.697f);
path.close();
path.moveTo(735.865f, 130.472f);
path.lineTo(738.479f, 130.472f);
path.lineTo(738.479f, 136.964f);
path.lineTo(739.02f, 136.964f);
path.lineTo(739.02f, 130.472f);
path.lineTo(741.634f, 130.472f);
path.lineTo(741.634f, 130.024f);
path.lineTo(735.865f, 130.024f);
path.lineTo(735.865f, 130.472f);
path.close();
path.moveTo(749.017f, 130.023f);
path.lineTo(746.699f, 132.771f);
path.lineTo(744.371f, 130.023f);
path.lineTo(743.717f, 130.023f);
path.lineTo(746.423f, 133.239f);
path.lineTo(746.423f, 136.963f);
path.lineTo(746.964f, 136.963f);
path.lineTo(746.964f, 133.239f);
path.lineTo(749.67f, 130.023f);
path.lineTo(749.017f, 130.023f);
path.close();
path.moveTo(578.773f, 115.549f);
path.lineTo(578.773f, 62.773f);
path.lineTo(557.571f, 62.773f);
path.cubicTo(562.752f, 67.658f, 575.797f, 106.652f, 578.773f, 115.549f);
path.close();
path.moveTo(544.754f, 62.861f);
path.lineTo(524.496f, 62.861f);
path.lineTo(524.496f, 115.55f);
path.lineTo(524.934f, 115.55f);
path.lineTo(544.544f, 64.169f);
path.lineTo(528.157f, 115.549f);
path.lineTo(528.682f, 115.549f);
path.lineTo(546.557f, 67.658f);
path.lineTo(531.675f, 115.548f);
path.lineTo(532.376f, 115.548f);
path.lineTo(548.57f, 71.846f);
path.lineTo(535.293f, 115.507f);
path.lineTo(535.906f, 115.507f);
path.lineTo(544.281f, 97.58f);
path.lineTo(542.267f, 97.58f);
path.lineTo(550.409f, 76.033f);
path.lineTo(544.281f, 97.578f);
path.lineTo(546.119f, 97.578f);
path.lineTo(538.678f, 115.551f);
path.lineTo(565.029f, 115.551f);
path.cubicTo(562.052f, 106.477f, 550.759f, 67.92f, 544.754f, 62.861f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void (*skipTest)(skiatest::Reporter* , const char* filename) = nullptr;
static void (*firstTest)(skiatest::Reporter* , const char* filename) = nullptr;
static void (*stopTest)(skiatest::Reporter* , const char* filename) = nullptr;

static struct TestDesc tests[] = {
    TEST(skpwww_gorcraft_ru_1),
    TEST(http___www_project2061_org),
    TEST(http___www_emuleteca_cl_27),
    TEST(http___www_emuleteca_cl_26),
    TEST(http___www_emuleteca_cl_28),
    TEST(skpwww_nimble_com_au_1),
    TEST(skpwww_mybuilder_com_1),
    TEST(skpwww_neda_net_2),
    TEST(skpwww_woothemes_com_1),
    TEST(skpwww_neda_net_1),
    TEST(skpwww_tinytots_com_1),
    TEST(skpwww_educationalcraft_com_4a),
    TEST(skpwww_lptemp_com_3),
    TEST(skpwww_shinydemos_com_5),
    TEST(skpwww_lptemp_com_5),
    TEST(skpwww_shinydemos_com_15),
    TEST(skpwww_familysurvivalprotocol_wordpress_com_61),
    TEST(skpwww_alamdi_com_3),
    TEST(skpwww_devbridge_com_22),
    TEST(skpwww_firstunitedbank_com_19),
    TEST(skpwww_googleventures_com_32),
    TEST(skpwww_9to5mac_com_64),
    TEST(skpwww_wartepop_blogspot_com_br_6),
    TEST(skpwww_wartepop_blogspot_com_br_6a),
    TEST(skpwww_cooksnaps_com_32a),
    TEST(skpwww_argus_presse_fr_41),
    TEST(skpwww_cooksnaps_com_17),
    TEST(skpwww_cooksnaps_com_32),
    TEST(skpwww_kitcheninspirations_wordpress_com_66),
    TEST(skpwww_tcmevents_org_13),
    TEST(skpwww_narayana_publishers_com_194),
    TEST(skpwww_swapspacesystems_com_5),
    TEST(skpwww_vantageproduction_com_109),
    TEST(skpwww_americascup_com_108),
    TEST(skpwww_narayana_verlag_de_194),
    TEST(skpwww_etiqadd_com_2464),
    TEST(skpwww_paseoitaigara_com_br_56),
    TEST(skpwww_mortgagemarketguide_com_109),
    TEST(skpwww_aceinfographics_com_106),
    TEST(skpwww_educationalcraft_com_4),
    TEST(skpwww_kitcheninspirations_wordpress_com_32),
    TEST(skpwww_artblart_com_8),
    TEST(skpwww_docgelo_com_66),
    TEST(skpwww_uniquefx_net_442),
    TEST(skpwww_defense_studies_blogspot_com_64),
    TEST(skpwww_kenlevine_blogspot_com_28),
    TEST(skpwww_fashionscandal_com_94),
    TEST(skpwww_thaienews_blogspot_com_36),
    TEST(skpwww_galaxystwo_com_4),
    TEST(skpwww_catingueiraonline_com_352),
    TEST(skpwww_evolvehq_com_210),
    TEST(skpwww_odia_com_br_26),
    TEST(skpwww_lokado_de_173),
    TEST(skpwww_seopack_blogspot_com_2153),
    TEST(skpwww_partsdata_de_53),
    TEST(skpwww_simplysaru_com_40),
    TEST(skpwww_jessicaslens_wordpress_com_222),
    TEST(skpwww_kpopexplorer_net_22),
    TEST(skpwww_tunero_de_24),
    TEST(skpwww_karnivool_com_au_11),
    TEST(skpwww_pindosiya_com_99),
    TEST(skpwww_contextualnewsfeeds_com_346),
    TEST(skpwww_helha_be_109),
    TEST(skpwww_phototransferapp_com_24),
    TEST(skpwww_phototransferapp_com_24x),
    TEST(skpwww_gruposejaumdivulgador_com_br_4),
    TEST(skpwww_hubbyscook_com_22),
    TEST(skpwww_maturesupertube_com_21),
    TEST(skpwww_getgold_jp_731),
    TEST(skpwww_trashness_com_36),
    TEST(skpwww_exystence_net_61),
    TEST(skpwww_320kbps_net_2231),
    TEST(skpwww_heartiste_wordpress_com_86),
    TEST(skpwww_hairjobsearch_com_31),
    TEST(skpwww_alucinados_net_101),
    TEST(skpnamecheap_com_405),
    TEST(skpelpais_com_18),
    TEST(skpwww_cityads_ru_249),
    TEST(skpwww_alrakoba_net_62),
    TEST(skpwww_dealnews_com_315),
    TEST(skpwww_inmotionhosting_com_9),
    TEST(skpskpicture14),
    TEST(skpskpicture15),
    TEST(skpwww_meb_gov_tr_6),
    TEST(skpwww_sciality_com_101),
    TEST(skpwww_booking_com_68),
    TEST(skpwww_despegar_com_mx_272),
    TEST(skpwww_lavoixdunord_fr_11),
    TEST(skppptv_com_62),
    TEST(skppchappy_com_au102),
    TEST(skpsciality_com161),
    TEST(skpi_gino_com16),
    TEST(skpnaoxrane_ru23),
    TEST(skptcmevents_org23),
    TEST(skpredbullskatearcade_es16),
    TEST(skpfinanzasdigital_com9),
    TEST(skpgithub_io_26),
    TEST(skpgithub_io_25),
    TEST(skpwww_meb_gov_tr_5),
    TEST(skpwww_sciality_com_100),
    TEST(skpwww_joomla_org_23),
    TEST(skpwww_macrumors_com_131),
    TEST(skpwww_briian_com_34),
    TEST(skpwww_leadpages_net_84),
    TEST(skpwww_fj_p_com_22),
    TEST(skppartainasdemo250_org56),
    TEST(skpsd_graphic_net104),
    TEST(skpbreakmystyle_com10),
    TEST(skpnational_com_au81),
    TEST(skprentacheat_com30),
    TEST(skptracksflow_com9),
    TEST(skpautobutler_dk29),
    TEST(skponlinecollege_org144),
    TEST(skphostloco_com11),
    TEST(skpsergeychunkevich_com8),
    TEST(skpmlk_com326),
    TEST(skpcyclist_friends_gr52),
    TEST(skpfrauen_magazin_com83),
    TEST(skpthesuburbanite_com213),
    TEST(skpsudoestenegocios_com186),
    TEST(skpmtrk_uz27),
    TEST(skpilkoora_com37),
    TEST(skpmm4everfriends_com43),
    TEST(skpflite_com41),
    TEST(skpcheeseandburger_com225),
    TEST(skpeverytechpro_blogspot_com100),
};

static const size_t testCount = std::size(tests);

static bool runReverse = false;

DEF_TEST(PathOpsSkp, reporter) {
    RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
}
